{"version":3,"file":"externals/now-requestor-chat-popover-app/index.min.js","mappings":"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Bh9N,UAAA5B,OAAA,QAAAS,IAAAmB,UAAA,GAAAA,UAAA,GAAG,CAAC,EAEtB,MAAMi9N,EAAqB,CAAC,EAE5B,IAAK,MAAMjnN,KAAKigN,EACfgH,EAAmBjnN,GAAK0mN,aACvBzG,EAAoBjgN,GACpB,CAACgnN,EAAmBhnN,GAAIszB,EAAM/a,WAAWvY,IACzCigN,EAAoBjgN,GAAGiiB,SAIzB,OAAOglM,CACP,CC7DM,MAAMC,YAAc,OACdC,YAAc,OACdC,YAAc,OACdC,YAAc,OACdC,aAAe,KAEfC,QAAU,CACtB,OACA,MACA,eACA,KACA,QACA,QACA,QACA,QACA,WAGYC,cAAgB,CAAC,YAAa,aAC9BC,8BAAgC,CAAC,YAAa,aAC9CC,kCAAoC,CAChDC,UAAW,0BACXC,UAAW,2BAECC,iCAAmC,CAC/CC,wBAAyB,YACzBC,wBAAyB,aAGbC,kBAAoB,oBACpBC,eAAiB,iBAEjBC,gBAAkB,CAC9B,OACA,UACA,mBACA,MACA,MACA,QACA,eACA,YACA,WACA,UACA,UACA,UACA,QACA,WACA,YACA,WACA,SACA,OACA,WACA,aACA,OACA,KACA,KACA,YACA,YACA,QACA,SACA,WACA,OACA,cACA,WACA,MACA,WACA,WACA,OACA,OACA,UACA,WACA,OACA,MACA,WACA,SACA,QACA,OACA,SAGYC,0BAA4B,IACrCD,gBACH,eACA,YACA,0BACA,0BACA,iCACA,4BAGYE,8BAAgC,IACzCF,gBACH,SACA,iBACA,YACA,SACA,QACA,QACA,iBACA,aACA,UACA,SACA,WACA,YACA,UACA,OACA,OACA,WACA,QACA,OACA,UACA,UACA,kBACA,cACA,WACA,SACA,cACA,WACA,WACA,MACA,UACA,WACA,UACA,MACA,OACA,aACA,cACA,aACA,iBACA,aACA,UACA,SACA,OACA,YACA,gBACA,YACA,QACA,WACA,UACA,OACA,QACA,OACA,WACA,OACA,OACA,MACA,WACA,MACA,MACA,QACA,aACA,OACA,UACA,UACA,OACA,SACA,UACA,aACA,iBACA,UACA,QACA,SACA,QACA,OACA,Q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R,EAAU/iN,GAAY8iN,WAAWv2R,GAEjCA,GACiB,iBAAVA,GACPA,EAAM0G,cAAgBoC,OAEtB0tR,EAAU/iN,GAAYluC,MAAMvlC,GAE5Bw2R,EAAU/iN,GAAYzzE,EAG5B,CAEA,OAAOw2R,CACT,CASA,SAASC,aACPhrQ,EACAsB,GAEA,KAAkB,OAAXtB,GAAiB,CACtB,MAAMid,EAAO16B,mCAAyByd,EAAQsB,GAE9C,GAAI2b,EAAM,CACR,GAAIA,EAAKhnC,IACP,OAAO4zR,QAAQ5sP,EAAKhnC,KAGtB,GAA0B,mBAAfgnC,EAAK1oC,MACd,OAAOs1R,QAAQ5sP,EAAK1oC,MAExB,CAEAyrB,EAASwkC,yBAAexkC,EAC1B,CAMA,OAJA,WACE,OAAO,IACT,CAGF,CC3MO,MAAMirQ,OAAOjoL,OAAO,CACzB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,UACA,SACA,SACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,QAGWkoL,MAAMloL,OAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,UAGWmoL,WAAanoL,OAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,iBAOWooL,cAAgBpoL,OAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,QAGWqoL,SAASroL,OAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,gBAKWsoL,iBAAmBtoL,OAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,SAGWpyF,eAAOoyF,OAAO,CAAC,UCpRf46H,KAAO56H,OAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,UACA,cACA,cACA,UACA,gBACA,sBACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,OACA,QACA,SAGWmwC,IAAMnwC,OAAO,CACxB,gBACA,aACA,WACA,qBACA,YACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,WACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,YACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,QACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,cACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,eACA,mBACA,mBACA,IACA,KACA,KACA,QACA,IACA,KACA,KACA,IACA,eAGWuoL,OAASvoL,OAAO,CAC3B,SACA,cACA,QACA,WACA,QACA,eACA,cACA,aACA,aACA,QACA,MACA,UACA,eACA,WACA,QACA,QACA,SACA,OACA,KACA,UACA,SA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","sources":["webpack:///@servicenow/ui-analytics-core/src/tctx.js","webpack:///@servicenow/ui-analytics-core/src/constants.js","webpack:///@servicenow/ui-analytics-core/src/EventEmitter.js","webpack:///@servicenow/ui-analytics-core/src/config.js","webpack:///@servicenow/ui-analytics-core/src/traceparent.js","webpack:///@servicenow/ui-analytics-core/src/user.js","webpack:///@servicenow/ui-analytics-core/src/page.js","webpack:///@servicenow/ui-analytics-core/src/application.js","webpack:///@servicenow/ui-analytics-core/src/getItemMetadata.js","webpack:///@servicenow/ui-analytics-core/src/createTracker.js","webpack:///@servicenow/ui-analytics-core/src/createMetrics.js","webpack:///@servicenow/ui-analytics-core/src/initInteractionsTracker.js","webpack:///@servicenow/ui-analytics-core/src/observers.js","webpack:///@servicenow/ui-analytics-core/src/queuedEvents.js","webpack:///@servicenow/ui-analytics-core/src/exporter.js","webpack:///@servicenow/ui-analytics-core/src/trace/context/types.js","webpack:///@servicenow/ui-analytics-core/src/trace/context/BaseContext.js","webpack:///@servicenow/ui-analytics-core/src/trace/constants.js","webpack:///@servicenow/ui-analytics-core/src/trace/context/StackContextManager.js","webpack:///@servicenow/ui-analytics-core/src/trace/context/NoopContextManager.js","webpack:///@servicenow/ui-analytics-core/src/trace/utils/interactionHandler.js","webpack:///@servicenow/ui-analytics-core/src/trace/utils/BrowserPatcher.js","webpack:///@servicenow/ui-analytics-core/src/trace/utils/isCustomEvent.js","webpack:///@servicenow/ui-analytics-core/src/trace/utils/isTracingEnabled.js","webpack:///@servicenow/ui-analytics-core/src/trace/context/Context.js","webpack:///@servicenow/ui-analytics-core/src/trace/context/TraceApi.js","webpack:///@servicenow/ui-analytics-core/src/trace/processor/BatchSpanProcessor.js","webpack:///@servicenow/ui-analytics-core/src/trace/processor/SpanProcessor.js","webpack:///@servicenow/ui-analytics-core/src/trace/spanKind.js","webpack:///@servicenow/ui-analytics-core/src/trace/span/NonRecordingSpan.js","webpack:///@servicenow/ui-analytics-core/src/trace/utils/userInteractionTracer.js","webpack:///@servicenow/ui-analytics-core/src/trace/utils/index.js","webpack:///@servicenow/ui-analytics-core/src/attributeValidator.js","webpack:///@servicenow/ui-analytics-core/src/trace/span/RecordingSpan.js","webpack:///@servicenow/ui-analytics-core/src/trace/sampler/sampler.js","webpack:///@servicenow/ui-analytics-core/src/trace/sampler/AlwaysOnSampler.js","webpack:///@servicenow/ui-analytics-core/src/trace/NoopTracer.js","webpack:///@servicenow/ui-analytics-core/src/trace/Tracer.js","webpack:///@servicenow/ui-analytics-core/src/trace/TracerProvider.js","webpack:///@servicenow/ui-analytics-api/src/index.js","webpack:///@servicenow/ui-analytics-core/src/createAnalyticsApi.js","webpack:///ajv/6.12.6/lib/ajv.js","webpack:///ajv/6.12.6/lib/cache.js","webpack:///ajv/6.12.6/lib/compile/async.js","webpack:///ajv/6.12.6/lib/compile/error_classes.js","webpack:///ajv/6.12.6/lib/compile/formats.js","webpack:///ajv/6.12.6/lib/compile/index.js","webpack:///ajv/6.12.6/lib/compile/resolve.js","webpack:///ajv/6.12.6/lib/compile/rules.js","webpack:///ajv/6.12.6/lib/compile/schema_obj.js","webpack:///ajv/6.12.6/lib/compile/ucs2length.js","webpack:///ajv/6.12.6/lib/compile/util.js","webpack:///ajv/6.12.6/lib/data.js","webpack:///ajv/6.12.6/lib/definition_schema.js","webpack:///ajv/6.12.6/lib/dotjs/_limit.js","webpack:///ajv/6.12.6/lib/dotjs/_limitItems.js","webpack:///ajv/6.12.6/lib/dotjs/_limitLength.js","webpack:///ajv/6.12.6/lib/dotjs/_limitProperties.js","webpack:///ajv/6.12.6/lib/dotjs/allOf.js","webpack:///ajv/6.12.6/lib/dotjs/anyOf.js","webpack:///ajv/6.12.6/lib/dotjs/comment.js","webpack:///ajv/6.12.6/lib/dotjs/const.js","webpack:///ajv/6.12.6/lib/dotjs/contains.js","webpack:///ajv/6.12.6/lib/dotjs/custom.js","webpack:///ajv/6.12.6/lib/dotjs/dependencies.js","webpack:///ajv/6.12.6/lib/dotjs/enum.js","webpack:///ajv/6.12.6/lib/dotjs/format.js","webpack:///ajv/6.12.6/lib/dotjs/if.js","webpack:///ajv/6.12.6/lib/dotjs/index.js","webpack:///ajv/6.12.6/lib/dotjs/items.js","webpack:///ajv/6.12.6/lib/dotjs/multipleOf.js","webpack:///ajv/6.12.6/lib/dotjs/not.js","webpack:///ajv/6.12.6/lib/dotjs/oneOf.js","webpack:///ajv/6.12.6/lib/dotjs/pattern.js","webpack:///ajv/6.12.6/lib/dotjs/properties.js","webpack:///ajv/6.12.6/lib/dotjs/propertyNames.js","webpack:///ajv/6.12.6/lib/dotjs/ref.js","webpack:///ajv/6.12.6/lib/dotjs/required.js","webpack:///ajv/6.12.6/lib/dotjs/uniqueItems.js","webpack:///ajv/6.12.6/lib/dotjs/validate.js","webpack:///ajv/6.12.6/lib/keyword.js","webpack:///amb-client-js/lib/amb.Channel.js","webpack:///amb-client-js/lib/amb.ChannelListener.js","webpack:///amb-client-js/lib/amb.ChannelRedirect.js","webpack:///amb-client-js/lib/amb.CrossClientChannel.js","webpack:///amb-client-js/lib/amb.EventManager.js","webpack:///amb-client-js/lib/amb.FunctionQueue.js","webpack:///amb-client-js/lib/amb.GraphQLSubscriptionExtension.js","webpack:///amb-client-js/lib/amb.Helper.js","webpack:///amb-client-js/lib/amb.Logger.js","webpack:///amb-client-js/lib/amb.MessageClient.js","webpack:///amb-client-js/lib/amb.MessageClientBuilder.js","webpack:///amb-client-js/lib/amb.Properties.js","webpack:///amb-client-js/lib/amb.ServerConnection.js","webpack:///amb-client-js/lib/amb.SessionExtension.js","webpack:///amb-client-js/lib/amb.SubscriptionCommandSender.js","webpack:///amb-client-js/lib/amb.TokenManagementExtension.js","webpack:///amb-client-js/lib/index.js","webpack:///call-bind-apply-helpers/1.0.2/actualApply.js","webpack:///call-bind-apply-helpers/1.0.2/functionApply.js","webpack:///call-bind-apply-helpers/1.0.2/functionCall.js","webpack:///call-bind-apply-helpers/1.0.2/index.js","webpack:///call-bind-apply-helpers/1.0.2/reflectApply.js","webpack:///call-bound/1.0.4/index.js","webpack:///cometd/3.1.4/cometd.js","webpack:///crypto-js/3.1.9-1/core.js","webpack:///crypto-js/3.1.9-1/enc-base64.js","webpack:///crypto-js/3.1.9-1/enc-utf8.js","webpack:///css-loader/6.7.1/dist/runtime/api.js","webpack:///css-loader/6.7.1/dist/runtime/noSourceMaps.js","webpack:///dunder-proto/1.0.1/get.js","webpack:///es-define-property/1.0.1/index.js","webpack:///es-errors/1.3.0/eval.js","webpack:///es-errors/1.3.0/index.js","webpack:///es-errors/1.3.0/range.js","webpack:///es-errors/1.3.0/ref.js","webpack:///es-errors/1.3.0/syntax.js","webpack:///es-errors/1.3.0/type.js","webpack:///es-errors/1.3.0/uri.js","webpack:///es-object-atoms/1.1.1/index.js","webpack:///fast-deep-equal/3.1.3/index.js","webpack:///fast-json-stable-stringify/2.1.0/index.js","webpack:///function-bind/1.1.2/implementation.js","webpack:///function-bind/1.1.2/index.js","webpack:///get-intrinsic/1.3.0/index.js","webpack:///get-proto/1.0.1/Object.getPrototypeOf.js","webpack:///get-proto/1.0.1/Reflect.getPrototypeOf.js","webpack:///get-proto/1.0.1/index.js","webpack:///gopd/1.2.0/gOPD.js","webpack:///gopd/1.2.0/index.js","webpack:///has-symbols/1.1.0/index.js","webpack:///has-symbols/1.1.0/shams.js","webpack:///hasown/2.0.2/index.js","webpack:///invariant/2.2.4/browser.js","webpack:///json-schema-traverse/0.4.1/index.js","webpack:///lodash/4.17.21/lodash.js","webpack:///lottie-web/5.13.0/build/player/lottie.js","webpack:///math-intrinsics/1.1.0/abs.js","webpack:///math-intrinsics/1.1.0/floor.js","webpack:///math-intrinsics/1.1.0/isNaN.js","webpack:///math-intrinsics/1.1.0/max.js","webpack:///math-intrinsics/1.1.0/min.js","webpack:///math-intrinsics/1.1.0/pow.js","webpack:///math-intrinsics/1.1.0/round.js","webpack:///math-intrinsics/1.1.0/sign.js","webpack:///object-inspect/1.13.4/index.js","webpack:///path-to-regexp/3.3.0/index.js","webpack:///qs/6.11.0/lib/formats.js","webpack:///qs/6.11.0/lib/index.js","webpack:///qs/6.11.0/lib/parse.js","webpack:///qs/6.11.0/lib/stringify.js","webpack:///qs/6.11.0/lib/utils.js","webpack:///side-channel-list/1.0.0/index.js","webpack:///side-channel-map/1.0.1/index.js","webpack:///side-channel-weakmap/1.0.2/index.js","webpack:///side-channel/1.1.0/index.js","webpack:///sn-http-request/29.3.0/src/batch/defaults.js","webpack:///uuid/9.0.1/dist/esm-browser/native.js","webpack:///uuid/9.0.1/dist/esm-browser/rng.js","webpack:///uuid/9.0.1/dist/esm-browser/stringify.js","webpack:///uuid/9.0.1/dist/esm-browser/v4.js","webpack:///sn-http-request/29.3.0/src/batch/utils/createBatchId.js","webpack:///sn-http-request/29.3.0/src/batch/constants.js","webpack:///sn-http-request/29.3.0/src/batch/utils/batchOptions.js","webpack:///sn-http-request/29.3.0/src/utils/utils.js","webpack:///sn-http-request/29.3.0/src/utils/shouldBatch.js","webpack:///sn-http-request/29.3.0/src/utils/buildUrl.js","webpack:///sn-http-request/29.3.0/src/batch/utils/embeddableBaseUrl.js","webpack:///sn-http-request/29.3.0/src/utils/buildFullPath.js","webpack:///sn-http-request/29.3.0/src/utils/headers.js","webpack:///sn-http-request/29.3.0/src/SnHttpError.js","webpack:///sn-http-request/29.3.0/src/utils/httpHeaders.js","webpack:///sn-http-request/29.3.0/src/utils/multipartParser.js","webpack:///sn-http-request/29.3.0/src/utils/parseBody.js","webpack:///fflate/0.7.1/esm/browser.js","webpack:///sn-http-request/29.3.0/src/utils/compressDataIfNeeded.js","webpack:///sn-http-request/29.3.0/src/utils/createExternalResponse.js","webpack:///sn-http-request/29.3.0/src/utils/shouldUseXhr.js","webpack:///sn-http-request/29.3.0/src/utils/transformUtils.js","webpack:///sn-http-request/29.3.0/src/utils/shouldStringifyRequestData.js","webpack:///sn-http-request/29.3.0/src/batch/utils/transformServicedRequest.js","webpack:///sn-http-request/29.3.0/src/batch/utils/b64DecodeUnicode.js","webpack:///sn-http-request/29.3.0/src/batch/utils/shouldStreamBatch.js","webpack:///sn-http-request/29.3.0/src/utils/enqueue.js","webpack:///sn-http-request/29.3.0/src/batch/batchStreamingResponseHandler.js","webpack:///sn-http-request/29.3.0/src/constants.js","webpack:///sn-http-request/29.3.0/src/batch/createHttpRequestBatcher.js","webpack:///sn-http-request/29.3.0/src/batch/modifiers/transaction-processor-uid-header/hash.js","webpack:///sn-http-request/29.3.0/src/batch/modifiers/transaction-processor-uid-header/constants.js","webpack:///sn-http-request/29.3.0/src/batch/modifiers/transaction-processor-uid-header/handlers/data-broker.js","webpack:///sn-http-request/29.3.0/src/batch/modifiers/transaction-processor-uid-header/handlers/default.js","webpack:///sn-http-request/29.3.0/src/batch/modifiers/transaction-processor-uid-header/index.js","webpack:///sn-http-request/29.3.0/src/batch/modifiers/transaction-processor-uid-header/handlers/gql.js","webpack:///sn-http-request/29.3.0/src/batch/modifiers/transaction-processor-uid-header/handlers/presence.js","webpack:///sn-http-request/29.3.0/src/batch/modifiers/transaction-processor-uid-header/handlers/table-api.js","webpack:///sn-http-request/29.3.0/src/batch/createBatchRequestInterceptor.js","webpack:///sn-http-request/29.3.0/src/batch/utils/b64EncodeUnicode.js","webpack:///sn-http-request/29.3.0/src/snHttpClientHandlers.js","webpack:///sn-http-request/29.3.0/src/batch/batchResponseHandlers.js","webpack:///sn-http-request/29.3.0/src/eSignatureHandlers.js","webpack:///sn-http-request/29.3.0/src/snHttpClient.js","webpack:///sn-http-request/29.3.0/src/utils/createRequestXhr.js","webpack:///sn-http-request/29.3.0/src/request/xhr.js","webpack:///sn-http-request/29.3.0/src/utils/createRequest.js","webpack:///sn-http-request/29.3.0/src/request/fetch.js","webpack:///sn-http-request/29.3.0/src/utils/resolveUserToken.js","webpack:///sn-http-request/29.3.0/src/utils/mergeRequestHeaders.js","webpack:///sn-http-request/29.3.0/src/utils/shouldRetryUnauthorizedRequest.js","webpack:///sn-http-request/29.3.0/src/utils/defaultEnqueueRequestPrioritizer.js","webpack:///sn-http-request/29.3.0/src/requestIdleCallback.js","webpack:///sn-http-request/29.3.0/src/snHttpFactory.js","webpack:///sn-http-request/29.3.0/src/instance.js","webpack:///snabbdom-signature/0.0.3/dist/index.js","webpack:///string-template/1.0.0/index.js","webpack:///ci-chat-components/29.7.4/src/util.ts","webpack:///ci-chat-components/29.7.4/src/regexps-uri.ts","webpack:///ci-chat-components/29.7.4/src/regexps-iri.ts","webpack:///ci-chat-components/29.7.4/node_modules/punycode/punycode.es6.js","webpack:///ci-chat-components/29.7.4/src/uri.ts","webpack:///ci-chat-components/29.7.4/src/schemes/http.ts","webpack:///ci-chat-components/29.7.4/src/schemes/https.ts","webpack:///ci-chat-components/29.7.4/src/schemes/ws.ts","webpack:///ci-chat-components/29.7.4/src/schemes/wss.ts","webpack:///ci-chat-components/29.7.4/src/schemes/mailto.ts","webpack:///ci-chat-components/29.7.4/src/schemes/urn.ts","webpack:///ci-chat-components/29.7.4/src/schemes/urn-uuid.ts","webpack:///ci-chat-components/29.7.4/src/index.ts","webpack:///now-requestor-chat-popover/src/_now-requestor-chat-popover.scss","webpack:///@servicenow/behavior-resizable/29.0.34/src/components/_resizable-target.scss","webpack:///@servicenow/now-badge/src/_now-badge.scss","webpack:///@servicenow/now-button/src/_now-button-bare.scss","webpack:///@servicenow/now-button/src/_now-button-circular.scss","webpack:///@servicenow/now-button/src/_now-button-iconic.scss","webpack:///@servicenow/now-button/src/_now-button-stateful.scss","webpack:///@servicenow/now-button/src/_now-button.scss","webpack:///@servicenow/now-icon/src/_now-icon-animated.scss","webpack:///@servicenow/now-icon/src/_now-icon.scss","webpack:///@servicenow/now-modeless-dialog/src/_now-modeless-dialog.scss","webpack:///@servicenow/now-popover/src/_now-popover-panel.scss","webpack:///@servicenow/now-tooltip/src/_now-tooltip.scss","webpack:///ci-chat-components/29.7.4/shared/chat-popover-shared/components/_sn-unread-preview.scss","webpack:///../../components/now-requestor-chat-popover/src/_now-requestor-chat-popover.scss?e606","webpack:///../../node_modules/.pnpm/@servicenow+behavior-resizable@29.0.34_@servicenow+now-tooltip@29.0.34/node_modules/@servicenow/behavior-resizable/src/components/_resizable-target.scss?097f","webpack:///../../node_modules/.pnpm/@servicenow+now-badge@29.0.34/node_modules/@servicenow/now-badge/src/_now-badge.scss?4ab1","webpack:///../../node_modules/.pnpm/@servicenow+now-button@29.0.34/node_modules/@servicenow/now-button/src/_now-button-bare.scss?7d3b","webpack:///../../node_modules/.pnpm/@servicenow+now-button@29.0.34/node_modules/@servicenow/now-button/src/_now-button-circular.scss?9bc8","webpack:///../../node_modules/.pnpm/@servicenow+now-button@29.0.34/node_modules/@servicenow/now-button/src/_now-button-iconic.scss?3007","webpack:///../../node_modules/.pnpm/@servicenow+now-button@29.0.34/node_modules/@servicenow/now-button/src/_now-button-stateful.scss?bc71","webpack:///../../node_modules/.pnpm/@servicenow+now-button@29.0.34/node_modules/@servicenow/now-button/src/_now-button.scss?537a","webpack:///../../node_modules/.pnpm/@servicenow+now-icon@29.0.34/node_modules/@servicenow/now-icon/src/_now-icon-animated.scss?4f13","webpack:///../../node_modules/.pnpm/@servicenow+now-icon@29.0.34/node_modules/@servicenow/now-icon/src/_now-icon.scss?9494","webpack:///../../node_modules/.pnpm/@servicenow+now-modeless-dialog@29.0.34_@servicenow+now-tooltip@29.0.34/node_modules/@servicenow/now-modeless-dialog/src/_now-modeless-dialog.scss?a85b","webpack:///../../node_modules/.pnpm/@servicenow+now-popover@29.0.34/node_modules/@servicenow/now-popover/src/_now-popover-panel.scss?140a","webpack:///../../node_modules/.pnpm/@servicenow+now-tooltip@29.0.34/node_modules/@servicenow/now-tooltip/src/_now-tooltip.scss?5af2","webpack:///../../shared/chat-popover-shared/components/_sn-unread-preview.scss?621d","webpack:///@babel/runtime/7.25.7/helpers/assertThisInitialized.js","webpack:///@babel/runtime/7.25.7/helpers/classCallCheck.js","webpack:///@babel/runtime/7.25.7/helpers/construct.js","webpack:///@babel/runtime/7.25.7/helpers/createClass.js","webpack:///@babel/runtime/7.25.7/helpers/defineProperty.js","webpack:///@babel/runtime/7.25.7/helpers/extends.js","webpack:///@babel/runtime/7.25.7/helpers/get.js","webpack:///@babel/runtime/7.25.7/helpers/getPrototypeOf.js","webpack:///@babel/runtime/7.25.7/helpers/inherits.js","webpack:///@babel/runtime/7.25.7/helpers/isNativeFunction.js","webpack:///@babel/runtime/7.25.7/helpers/isNativeReflectConstruct.js","webpack:///@babel/runtime/7.25.7/helpers/objectWithoutPropertiesLoose.js","webpack:///@babel/runtime/7.25.7/helpers/possibleConstructorReturn.js","webpack:///@babel/runtime/7.25.7/helpers/setPrototypeOf.js","webpack:///@babel/runtime/7.25.7/helpers/superPropBase.js","webpack:///@babel/runtime/7.25.7/helpers/toPrimitive.js","webpack:///@babel/runtime/7.25.7/helpers/toPropertyKey.js","webpack:///@babel/runtime/7.25.7/helpers/typeof.js","webpack:///@babel/runtime/7.25.7/helpers/wrapNativeSuper.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/create fake namespace object","webpack:///webpack/runtime/load script","webpack:///webpack/runtime/amd options","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/jsonp chunk loading","webpack:///@chat-components/common/29.7.4/src/unread-utils.js","webpack:///ci-chat-components/29.7.4/apps/src/callAsync.js","webpack:///ci-chat-components/29.7.4/apps/src/symbols.js","webpack:///ci-chat-components/29.7.4/apps/src/constants.js","webpack:///ci-chat-components/29.7.4/src/logHandler/constants.js","webpack:///ci-chat-components/29.7.4/src/logHandler/createLogContext.js","webpack:///ci-chat-components/29.7.4/apps/src/kebabCase.js","webpack:///ci-chat-components/29.7.4/apps/src/camelCase.js","webpack:///ci-chat-components/29.7.4/apps/src/toString.js","webpack:///ci-chat-components/29.7.4/apps/src/toLower.js","webpack:///ci-chat-components/29.7.4/apps/src/toUpper.js","webpack:///ci-chat-components/29.7.4/apps/src/memoize.js","webpack:///ci-chat-components/29.7.4/apps/src/findKey.js","webpack:///ci-chat-components/29.7.4/apps/src/splitPath.js","webpack:///ci-chat-components/29.7.4/apps/src/get.js","webpack:///ci-chat-components/29.7.4/apps/src/set.js","webpack:///ci-chat-components/29.7.4/apps/src/pick.js","webpack:///ci-chat-components/29.7.4/apps/src/omit.js","webpack:///ci-chat-components/29.7.4/apps/src/isEqual.js","webpack:///ci-chat-components/29.7.4/apps/src/isSelectiveEqual.js","webpack:///ci-chat-components/29.7.4/apps/src/isPlainObject.js","webpack:///ci-chat-components/29.7.4/apps/src/isEmpty.js","webpack:///ci-chat-components/29.7.4/apps/src/isThrottled.js","webpack:///ci-chat-components/29.7.4/apps/src/nextTick.js","webpack:///ci-chat-components/29.7.4/apps/src/deferMetrics.js","webpack:///ci-chat-components/29.7.4/apps/src/defer.js","webpack:///ci-chat-components/29.7.4/apps/src/requestIdleCallback.js","webpack:///ci-chat-components/29.7.4/apps/src/whenIdle.js","webpack:///ci-chat-components/29.7.4/apps/src/raf.js","webpack:///ci-chat-components/29.7.4/apps/src/createSnHttp.js","webpack:///ci-chat-components/29.7.4/apps/src/emitNowUiEvent.js","webpack:///ci-chat-components/29.7.4/src/configs/dev.js","webpack:///ci-chat-components/29.7.4/src/configs/prod.js","webpack:///ci-chat-components/29.7.4/src/configs/test.js","webpack:///ci-chat-components/29.7.4/src/configs/index.js","webpack:///ci-chat-components/29.7.4/apps/src/config.js","webpack:///ci-chat-components/29.7.4/src/config-embeddable/baseUrl.js","webpack:///ci-chat-components/29.7.4/apps/src/index.js","webpack:///ci-chat-components/29.7.4/src/logHandler/shouldLog.js","webpack:///ci-chat-components/29.7.4/src/logHandler/logObservers.js","webpack:///ci-chat-components/29.7.4/src/logHandler/observe.js","webpack:///ci-chat-components/29.7.4/src/logHandler/notifyLogObservers.js","webpack:///ci-chat-components/29.7.4/src/logHandler/index.js","webpack:///ci-chat-components/29.7.4/apps/src/createLogger.js","webpack:///ci-chat-components/29.7.4/apps/src/getHostInfo.js","webpack:///ci-chat-components/29.7.4/apps/src/memoizeProfiler.js","webpack:///ci-chat-components/29.7.4/apps/src/createInteractionId.js","webpack:///ci-chat-components/29.7.4/apps/src/applyInteractionId.js","webpack:///ci-chat-components/29.7.4/apps/src/validateMeta.js","webpack:///ci-chat-components/29.7.4/apps/src/getInteractionId.js","webpack:///ci-chat-components/29.7.4/apps/src/validateSetInteractionIdArguments.js","webpack:///ci-chat-components/29.7.4/apps/src/setInteractionId.js","webpack:///ci-chat-components/29.7.4/apps/src/createTraceId.js","webpack:///ci-chat-components/29.7.4/apps/src/levels.js","webpack:///ci-chat-components/29.7.4/apps/src/defineMetric.js","webpack:///ci-chat-components/29.7.4/apps/src/resolveContext.js","webpack:///ci-chat-components/29.7.4/apps/src/augmenters.js","webpack:///ci-chat-components/29.7.4/apps/src/augment.js","webpack:///ci-chat-components/29.7.4/apps/src/marks.js","webpack:///ci-chat-components/29.7.4/apps/src/counters.js","webpack:///ci-chat-components/29.7.4/apps/src/shouldMark.js","webpack:///ci-chat-components/29.7.4/apps/src/observers.js","webpack:///ci-chat-components/29.7.4/apps/src/validateMarkArguments.js","webpack:///ci-chat-components/29.7.4/apps/src/mark.js","webpack:///ci-chat-components/29.7.4/apps/src/getMarks.js","webpack:///ci-chat-components/29.7.4/apps/src/clearMarks.js","webpack:///ci-chat-components/29.7.4/apps/src/observe.js","webpack:///ci-chat-components/29.7.4/apps/src/getMetricTypes.js","webpack:///ci-chat-components/29.7.4/apps/src/addMarkAugmenter.js","webpack:///ci-chat-components/29.7.4/apps/src/timingMetrics.js","webpack:///ci-chat-components/29.7.4/apps/src/metrics.js","webpack:///ci-chat-components/29.7.4/apps/src/sandbox.js","webpack:///ci-chat-components/29.7.4/apps/src/guid.js","webpack:///ci-chat-components/29.7.4/apps/src/createAriaRef.js","webpack:///ci-chat-components/29.7.4/src/refs/isRef.js","webpack:///ci-chat-components/29.7.4/src/refs/createRef.js","webpack:///ci-chat-components/29.7.4/src/refs/subscribeToRef.js","webpack:///ci-chat-components/29.7.4/apps/src/pendingNetworkActionsRegistry.js","webpack:///ci-chat-components/29.7.4/apps/src/getSpanOptions.js","webpack:///ci-chat-components/29.7.4/apps/src/stats.js","webpack:///ci-chat-components/29.7.4/src/scheduler/queue.js","webpack:///ci-chat-components/29.7.4/src/scheduler/metrics.js","webpack:///ci-chat-components/29.7.4/src/scheduler/index.js","webpack:///ci-chat-components/29.7.4/apps/src/log.js","webpack:///ci-chat-components/29.7.4/apps/src/whenComponentIsIdle.js","webpack:///ci-chat-components/29.7.4/target/src/utils/schema/ajv.js","webpack:///ci-chat-components/29.7.4/target/src/utils/schema/getComponentName.js","webpack:///ci-chat-components/29.7.4/target/src/utils/schema/logValidationError.js","webpack:///ci-chat-components/29.7.4/src/utils/schema/validate/validateSchema.js","webpack:///ci-chat-components/29.7.4/src/utils/schema/build/buildActionPayloadValidator.js","webpack:///ci-chat-components/29.7.4/src/utils/schema/build/buildPropertiesValidator.js","webpack:///ci-chat-components/29.7.4/src/utils/getHostVariables.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/createInterceptors.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/normalizeModifiers.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/normalizeActionHandler.js","webpack:///ci-chat-components/29.7.4/target/src/actions/utils/appendToPayload.js","webpack:///ci-chat-components/29.7.4/src/utils/assertValidPropertyNames.js","webpack:///ci-chat-components/29.7.4/src/utils/resolveProperties.js","webpack:///ci-chat-components/29.7.4/src/constants/index.js","webpack:///ci-chat-components/29.7.4/src/utils/formatProps.js","webpack:///ci-chat-components/29.7.4/src/utils/formatChildren.js","webpack:///ci-chat-components/29.7.4/src/utils/flat.js","webpack:///ci-chat-components/29.7.4/src/package/vnode.ts","webpack:///ci-chat-components/29.7.4/src/package/is.ts","webpack:///ci-chat-components/29.7.4/src/package/htmldomapi.ts","webpack:///ci-chat-components/29.7.4/src/package/init.ts","webpack:///ci-chat-components/29.7.4/target/src/package/modules/class.ts","webpack:///ci-chat-components/29.7.4/target/src/package/modules/style.ts","webpack:///ci-chat-components/29.7.4/target/src/package/modules/eventlisteners.ts","webpack:///ci-chat-components/29.7.4/target/src/package/modules/dataset.ts","webpack:///ci-chat-components/29.7.4/src/modules/ref.js","webpack:///ci-chat-components/29.7.4/src/modules/props.js","webpack:///ci-chat-components/29.7.4/src/modules/attributes.js","webpack:///ci-chat-components/29.7.4/src/utils/patch.js","webpack:///ci-chat-components/29.7.4/src/utils/validateProps.js","webpack:///ci-chat-components/29.7.4/src/utils/hydrate.js","webpack:///ci-chat-components/29.7.4/src/package/tovnode.ts","webpack:///ci-chat-components/29.7.4/src/utils/toVNodeFromServerSideRenderedNode.js","webpack:///ci-chat-components/29.7.4/apps/src/createElementFromNode.js","webpack:///ci-chat-components/29.7.4/apps/src/onStateChange.js","webpack:///ci-chat-components/29.7.4/apps/src/onDisconnect.js","webpack:///ci-chat-components/29.7.4/src/package/h.ts","webpack:///ci-chat-components/29.7.4/apps/src/createElement.js","webpack:///ci-chat-components/29.7.4/apps/src/createSlot.js","webpack:///ci-chat-components/29.7.4/apps/src/createElementFromString.js","webpack:///ci-chat-components/29.7.4/apps/src/dangerouslyCreateElementFromString.js","webpack:///ci-chat-components/29.7.4/apps/src/fragment.js","webpack:///ci-chat-components/29.7.4/apps/src/defaults.js","webpack:///ci-chat-components/29.7.4/src/utils/resolveRenderer.js","webpack:///ci-chat-components/29.7.4/src/utils/toAttributeName.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/createAddMapping.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/createRemoveMappings.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/isSelectableProperty.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/createGetAffected.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/createGetComponentAffected.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/createAddResolvedPropertyMapping.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/createAddSelectablePropertyMapping.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/resolvedMappingHasKey.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/getResolvedPropertyValue.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/createRemoveResolvedPropertyMapping.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/createAddResolvedPropertyMappingWithKey.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/resolveSelectedProperty.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/resolveProviderSelectedProperty.js","webpack:///ci-chat-components/29.7.4/src/utils/getResolvedValue.js","webpack:///ci-chat-components/29.7.4/src/utils/shouldAddToResolvedPropertyMapping.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/resolveSelectedProperties.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/getSelectorParts.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/isSelector.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/updatePropertiesWithSelector.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/getPartsForNestedSelectableProps.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/applyUpdatesForSelectableProps.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/createUnstableResolvePropertySelectorValue.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/unstableAddRenderOnPropertySelectorValueChange.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/unstableRemoveRenderOnPropertySelectorValueChange.js","webpack:///ci-chat-components/29.7.4/src/property-selectors/index.js","webpack:///ci-chat-components/29.7.4/src/utils/getInitialPropertyValue.js","webpack:///ci-chat-components/29.7.4/src/utils/filterPropertyDefinitions.js","webpack:///ci-chat-components/29.7.4/src/utils/createStyleFragment.js","webpack:///ci-chat-components/29.7.4/src/utils/reflectQueue.js","webpack:///ci-chat-components/29.7.4/src/utils/isReflecting.js","webpack:///ci-chat-components/29.7.4/src/utils/clearReflection.js","webpack:///ci-chat-components/29.7.4/src/utils/isComputedProperty.js","webpack:///ci-chat-components/29.7.4/src/utils/toPropertyName.js","webpack:///ci-chat-components/29.7.4/src/utils/isReadOnlyProperty.js","webpack:///ci-chat-components/29.7.4/src/utils/shouldSetAttribute.js","webpack:///ci-chat-components/29.7.4/src/utils/shouldSetProperty.js","webpack:///ci-chat-components/29.7.4/src/utils/beforeNextTick.js","webpack:///ci-chat-components/29.7.4/src/utils/measure.js","webpack:///ci-chat-components/29.7.4/src/utils/selectablePropertyResolver.js","webpack:///ci-chat-components/29.7.4/src/utils/triggerPropertyChangeAction.js","webpack:///ci-chat-components/29.7.4/src/utils/isPropToSkipRender.js","webpack:///ci-chat-components/29.7.4/src/utils/triggerComponentUpdates.js","webpack:///ci-chat-components/29.7.4/src/utils/updateSelectedPropertyMappings.js","webpack:///ci-chat-components/29.7.4/target/src/utils/helpers/quickEquals.js","webpack:///ci-chat-components/29.7.4/src/utils/updateResolvedValue.js","webpack:///ci-chat-components/29.7.4/src/utils/updateResolvedSelectedPropertyMappings.js","webpack:///ci-chat-components/29.7.4/src/utils/createLifecycleFunctions.js","webpack:///ci-chat-components/29.7.4/src/utils/emitNowUiEvent.js","webpack:///ci-chat-components/29.7.4/src/utils/camelCaseProperties.js","webpack:///ci-chat-components/29.7.4/src/utils/unescapeReservedCharacters.js","webpack:///ci-chat-components/29.7.4/src/utils/isHoisted.js","webpack:///ci-chat-components/29.7.4/src/utils/getHoistTarget.js","webpack:///ci-chat-components/29.7.4/src/utils/getRootNode.js","webpack:///ci-chat-components/29.7.4/src/utils/normalizeActionMeta.js","webpack:///ci-chat-components/29.7.4/target/src/utils/helpers/deferHelperExecution.js","webpack:///@devsnc/sn-ui-logger/dist/exporter/consoleLogExporter.js","webpack:///@devsnc/sn-ui-logger/dist/utils/index.js","webpack:///@devsnc/sn-ui-logger/dist/logQueue.js","webpack:///@devsnc/sn-ui-logger/dist/logger.js","webpack:///@devsnc/sn-ui-logger/dist/loggerProvider/loggerProvider.js","webpack:///@devsnc/sn-ui-logger/dist/loggerProvider/noOpLoggerProvider.js","webpack:///@devsnc/sn-ui-logger/dist/subscriber.js","webpack:///ci-chat-components/29.7.4/target/src/utils/helpers/createComponentLogger.js","webpack:///ci-chat-components/29.7.4/src/utils/applyMetrics.js","webpack:///ci-chat-components/29.7.4/src/utils/filterComputedProperties.js","webpack:///ci-chat-components/29.7.4/src/utils/computeProperty.js","webpack:///ci-chat-components/29.7.4/src/utils/activeSpan.js","webpack:///ci-chat-components/29.7.4/src/utils/resolveComputedProperties.js","webpack:///ci-chat-components/29.7.4/src/utils/computeProperties.js","webpack:///ci-chat-components/29.7.4/src/utils/intersectionObserver.js","webpack:///ci-chat-components/29.7.4/src/utils/applyIntersectStyles.js","webpack:///ci-chat-components/29.7.4/target/src/utils/operators/assign.js","webpack:///ci-chat-components/29.7.4/target/src/utils/operators/merge.js","webpack:///ci-chat-components/29.7.4/target/src/utils/operators/operations.js","webpack:///ci-chat-components/29.7.4/src/utils/shouldOptOutOfDeepCompareForPage.js","webpack:///ci-chat-components/29.7.4/src/utils/styleSheetsContentCache.js","webpack:///ci-chat-components/29.7.4/src/utils/styleSheetsRequestCache.js","webpack:///ci-chat-components/29.7.4/src/utils/resolveStylesheetsContent.js","webpack:///ci-chat-components/29.7.4/src/utils/markComponentInteractive.js","webpack:///ci-chat-components/29.7.4/src/utils/createOnStateChangeArgs.js","webpack:///ci-chat-components/29.7.4/src/utils/getAncestorNode.js","webpack:///ci-chat-components/29.7.4/src/utils/updateCustomElement.js","webpack:///ci-chat-components/29.7.4/src/utils/getSpanOptions.js","webpack:///ci-chat-components/29.7.4/src/utils/resolveParentTraceId.js","webpack:///ci-chat-components/29.7.4/target/src/actions/utils/getComponentName.js","webpack:///ci-chat-components/29.7.4/target/src/actions/utils/createMetaData.js","webpack:///ci-chat-components/29.7.4/target/src/actions/utils/isPropertyUpdate.js","webpack:///ci-chat-components/29.7.4/target/src/actions/utils/validateActionPayload.js","webpack:///ci-chat-components/29.7.4/target/src/actions/utils/isInternalActionType.js","webpack:///ci-chat-components/29.7.4/target/src/actions/utils/getInternalActionName.js","webpack:///ci-chat-components/29.7.4/target/src/actions/utils/createEventActionDetails.js","webpack:///ci-chat-components/29.7.4/target/src/actions/utils/wrapDispatch.js","webpack:///ci-chat-components/29.7.4/target/src/actions/utils/isStoreUpdate.js","webpack:///ci-chat-components/29.7.4/target/src/actions/utils/hasActionHandlerForType.js","webpack:///ci-chat-components/29.7.4/target/src/actions/utils/wasActionDispatchedByDescendant.js","webpack:///ci-chat-components/29.7.4/src/actions/customEventActionHandler.js","webpack:///ci-chat-components/29.7.4/src/context/consumers.js","webpack:///ci-chat-components/29.7.4/src/context/contexts.js","webpack:///ci-chat-components/29.7.4/src/utils/schema/build/buildContextValidator.js","webpack:///ci-chat-components/29.7.4/src/context/createContext.js","webpack:///ci-chat-components/29.7.4/src/context/createContextProxy.js","webpack:///ci-chat-components/29.7.4/src/actions/createContext.js","webpack:///ci-chat-components/29.7.4/target/src/effects/modifiers/hostMap.js","webpack:///ci-chat-components/29.7.4/target/src/effects/modifiers/debounce.js","webpack:///ci-chat-components/29.7.4/target/src/effects/modifiers/takeLatest.js","webpack:///ci-chat-components/29.7.4/target/src/effects/modifiers/throttle.js","webpack:///ci-chat-components/29.7.4/target/src/effects/modifiers/getTargetElement.js","webpack:///ci-chat-components/29.7.4/target/src/effects/modifiers/types.js","webpack:///ci-chat-components/29.7.4/src/effects/runEffect.js","webpack:///ci-chat-components/29.7.4/src/effects/effectRunner.js","webpack:///ci-chat-components/29.7.4/src/actions/sandboxEffect.js","webpack:///ci-chat-components/29.7.4/src/actions/onActionHoisted.js","webpack:///ci-chat-components/29.7.4/src/actions/onAction.js","webpack:///ci-chat-components/29.7.4/target/src/actions/utils/applyRuntimeActionHandlers.js","webpack:///ci-chat-components/29.7.4/target/src/actions/utils/skipForDetachedComponent.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/lifeCycleFnsToHandlers.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/mergeBehaviorActionHandlers.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/mergeBehaviorInitialState.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/mergeBehaviorProperties.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/mergeLifeCycleActionHandlers.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/normalizeActionHandlers.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/normalizeBehaviors.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/getStopPropagation.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/mergeActions.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/mergeEventActionHandlers.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/applyPayloadValidators.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/mergeBehaviorActions.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/getActionsToDispatch.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/normalizeBehaviorEventHandlers.js","webpack:///ci-chat-components/29.7.4/src/accessibility/ariaLiveRegion.js","webpack:///ci-chat-components/29.7.4/target/src/utils/config/index.js","webpack:///ci-chat-components/29.7.4/src/context/validateContext.js","webpack:///ci-chat-components/29.7.4/target/src/utils/parse/isValuePropertySelector.js","webpack:///ci-chat-components/29.7.4/target/src/utils/parse/refProperty.js","webpack:///ci-chat-components/29.7.4/target/src/utils/parse/types.js","webpack:///ci-chat-components/29.7.4/target/src/utils/parse/parse.js","webpack:///ci-chat-components/29.7.4/target/src/utils/parse/property.js","webpack:///ci-chat-components/29.7.4/target/src/utils/parse/properties.js","webpack:///ci-chat-components/29.7.4/src/actions/customEventDispatcher.js","webpack:///ci-chat-components/29.7.4/src/actions/addActionHandlerForUnknownType.js","webpack:///ci-chat-components/29.7.4/src/actions/createDispatcher.js","webpack:///ci-chat-components/29.7.4/src/actions/createConditionalDispatch.js","webpack:///ci-chat-components/29.7.4/src/actions/addActionHandlers.js","webpack:///ci-chat-components/29.7.4/src/actions/removeActionHandlers.js","webpack:///ci-chat-components/29.7.4/apps/src/common.js","webpack:///ci-chat-components/29.7.4/apps/src/scope.js","webpack:///ci-chat-components/29.7.4/apps/src/es5.js","webpack:///ci-chat-components/29.7.4/apps/src/proxy.js","webpack:///ci-chat-components/29.7.4/apps/src/patches.js","webpack:///ci-chat-components/29.7.4/apps/src/immer.js","webpack:///ci-chat-components/29.7.4/target/src/utils/helpers/getStatePropsContext.js","webpack:///ci-chat-components/29.7.4/target/src/utils/helpers/utils.js","webpack:///ci-chat-components/29.7.4/target/src/utils/helpers/createUpdateState.js","webpack:///ci-chat-components/29.7.4/src/context/renderContextConsumers.js","webpack:///ci-chat-components/29.7.4/target/src/utils/helpers/createUpdateContext.js","webpack:///ci-chat-components/29.7.4/target/src/utils/helpers/createUpdateProperties.js","webpack:///ci-chat-components/29.7.4/target/src/utils/helpers/createDispatch.js","webpack:///ci-chat-components/29.7.4/target/src/utils/helpers/index.js","webpack:///ci-chat-components/29.7.4/apps/src/hoist.js","webpack:///ci-chat-components/29.7.4/apps/src/applyStyles.js","webpack:///ci-chat-components/29.7.4/apps/src/removeStyles.js","webpack:///ci-chat-components/29.7.4/src/shape-render-data/reflectProperties.js","webpack:///ci-chat-components/29.7.4/src/shape-render-data/index.js","webpack:///ci-chat-components/29.7.4/src/utils/addResolvedSelectedPropertyMappingWithResolvedValue.js","webpack:///ci-chat-components/29.7.4/src/utils/nowResolvedPropsHandler.js","webpack:///ci-chat-components/29.7.4/apps/src/createElementClass.js","webpack:///ci-chat-components/29.7.4/src/utils/schema/build/buildConfigValidator.js","webpack:///ci-chat-components/29.7.4/apps/src/validateConfig.js","webpack:///ci-chat-components/29.7.4/apps/src/createCustomElementFactory.js","webpack:///@devsnc/library-uxf/src/factory/constants.js","webpack:///@servicenow/behavior-theme/29.0.34/src/hooks/globals.js","webpack:///@servicenow/behavior-theme/29.0.34/src/hooks/system.colors.js","webpack:///@servicenow/behavior-theme/29.0.34/src/hooks/datavis.colors.js","webpack:///@servicenow/behavior-theme/29.0.34/src/hooks/categories.js","webpack:///@servicenow/behavior-theme/29.0.34/src/hooks/index.js","webpack:///@servicenow/behavior-theme/29.0.34/src/hooks/systemTokens.js","webpack:///@servicenow/behavior-theme/29.0.34/src/theme.js","webpack:///@servicenow/behavior-theme/29.0.34/src/behavior.js","webpack:///ci-chat-components/29.7.4/apps/src/getAMBClient.js","webpack:///ci-chat-components/29.7.4/src/utils/createSubscriptionId.js","webpack:///ci-chat-components/29.7.4/src/utils/createRegistryId.js","webpack:///ci-chat-components/29.7.4/src/utils/replaceChannelParameters.js","webpack:///ci-chat-components/29.7.4/src/utils/setInterval.js","webpack:///ci-chat-components/29.7.4/apps/src/createGarbageCollectorMap.js","webpack:///ci-chat-components/29.7.4/apps/src/ambSubscriptionEffect.js","webpack:///ci-chat-components/29.7.4/apps/src/ambPublishEffect.js","webpack:///ci-chat-components/29.7.4/apps/src/ambEventEffect.js","webpack:///ci-chat-components/29.7.4/shared/chat-popover-shared/constants.js","webpack:///ci-chat-components/29.7.4/shared/chat-popover-shared/actions/index.js","webpack:///now-requestor-chat-popover/src/constants.js","webpack:///now-requestor-chat-popover/src/utils/index.js","webpack:///now-requestor-chat-popover/src/actions/index.js","webpack:///now-requestor-chat-popover/src/event-handlers.js","webpack:///@servicenow/library-enhanced-element/29.0.34/src/cast.js","webpack:///ci-chat-components/29.7.4/apps/src/updateStateEffect.js","webpack:///@servicenow/library-enhanced-element/29.0.34/src/locals.js","webpack:///@servicenow/behavior-rtl/29.0.34/src/rtl.js","webpack:///@servicenow/library-enhanced-element/29.0.34/src/default-behaviors.js","webpack:///@servicenow/library-enhanced-element/29.0.34/src/scoped-action-name.js","webpack:///@servicenow/library-enhanced-element/29.0.34/src/constant-case.js","webpack:///@servicenow/library-enhanced-element/29.0.34/src/manageable-properties.js","webpack:///@servicenow/library-enhanced-element/29.0.34/src/on-render.js","webpack:///@servicenow/library-enhanced-element/29.0.34/src/create-enhanced-element.js","webpack:///@servicenow/now-badge/src/now-badge.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/extension-split.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/filter-aria-attributes.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/to-array.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/find-tabbable-nodes.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/get-active-element.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/get-shadow-root-host.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/make-redispatch-effect.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/measure-text-factory.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/text-transform.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/measure-text.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/match-search-term.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/layer-events.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/dom-purify-config.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/fit/dimensions.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/fit/get-axis-info.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/fit/content-area.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/fit/content-area-styles.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/fit/content.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/fit/content-styles.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/fit/overlap.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/fit/to-size-value.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/fit/constrain.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/fit/calculate-fit.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/fit/fit-info.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/fit/normalize-position.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/resolve-fit-properties.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/ariaLiveConstants.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/to-embeddable-url.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/get-caret-coordinates.js","webpack:///sn-translate/src/index.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/handle-error-messages.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/motion.js","webpack:///@servicenow/library-enhanced-utils/29.0.34/src/index.js","webpack:///@servicenow/now-icon/src/utils/import-icon-set.js","webpack:///ci-chat-components/29.7.4/apps/src/utils.ts","webpack:///ci-chat-components/29.7.4/apps/src/tags.ts","webpack:///ci-chat-components/29.7.4/apps/src/attrs.ts","webpack:///ci-chat-components/29.7.4/apps/src/regexp.ts","webpack:///ci-chat-components/29.7.4/apps/src/purify.ts","webpack:///@servicenow/now-icon/src/utils/cache.js","webpack:///@servicenow/now-icon/src/utils/maps.js","webpack:///@servicenow/now-icon/src/utils/decode-icon.js","webpack:///@servicenow/library-schemas/29.0.34/src/aria-config.js","webpack:///@servicenow/now-icon/src/now-icon.js","webpack:///@servicenow/now-icon/src/utils/localize-presence.js","webpack:///@servicenow/now-icon/src/now-icon-presence.js","webpack:///ci-chat-components/29.7.4/apps/src/createHttpErrorAction.js","webpack:///ci-chat-components/29.7.4/apps/src/resolveDomainContext.js","webpack:///ci-chat-components/29.7.4/src/cache/getUserSysId.js","webpack:///ci-chat-components/29.7.4/target/src/cache/cachePolicies/lruCachePolicy.js","webpack:///ci-chat-components/29.7.4/src/cache/store.js","webpack:///ci-chat-components/29.7.4/src/cache/cache.js","webpack:///ci-chat-components/29.7.4/apps/src/getGlobalObject.js","webpack:///ci-chat-components/29.7.4/apps/src/isBatchingEnabled.js","webpack:///ci-chat-components/29.7.4/apps/src/snHttp.js","webpack:///ci-chat-components/29.7.4/apps/src/filterHeaders.js","webpack:///ci-chat-components/29.7.4/apps/src/sendRequest.js","webpack:///ci-chat-components/29.7.4/apps/src/replacePathParams.js","webpack:///ci-chat-components/29.7.4/apps/src/httpEffect.js","webpack:///@servicenow/behavior-reduce-motion/29.0.34/src/utils/constants.js","webpack:///sn-ux-core/27.0.1/src/context/userPrefs.js","webpack:///sn-ux-core/27.0.1/src/context/sysProps.js","webpack:///sn-ux-core/27.0.1/src/context/constants.js","webpack:///sn-canvas-common/26.0.33/src/behaviors/render-skip/renderSkipBehavior.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/utils/createBlob.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/utils/serializer.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/utils/normalizeKey.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/utils/isWebStorageValid.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/utils/runCallback.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/utils/getCallback.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/utils/constants.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/evictions/helpers/lru.adapter.helpers.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/evictions/lru.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/evictions/ttl.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/evictions/evictionPolicies.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/utils/getKeyPrefix.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/adapters/localStorage.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/adapters/IndexedDBCache.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/adapters/indexedDB.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/adapters/sessionStorage.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/adapters/cacheAPI.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/adapters/InMemoryCache.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/adapters/inMemory.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/stats/cacheStatsProxyHandler.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/utils/isArray.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/utils/extend.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/utils/includes.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/utils/runTwoCallbacks.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/utils/cacheVersion.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/utils/setGlobalCacheStats.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/utils/sumObjectsByKey.js","webpack:///@devsnc/library-unified-cache/26.0.0-webux.0/src/cache/unifiedCache.js","webpack:///sn-canvas-common/26.0.33/src/getUnifiedCacheInstance.js","webpack:///sn-canvas-common/26.0.33/src/constants.js","webpack:///sn-canvas-common/26.0.33/src/experienceConfigs/get-experience-config.js","webpack:///sn-canvas-common/26.0.33/src/urlParsing/router-config.js","webpack:///sn-canvas-common/26.0.33/src/urlParsing/url-parser-utils.js","webpack:///sn-canvas-common/26.0.33/src/urlParsing/url-parser.js","webpack:///sn-ux-core/27.0.1/src/url-to-selected-content/convert-url-to-payload.js","webpack:///@servicenow/behavior-reduce-motion/29.0.34/src/reduce-motion.js","webpack:///@servicenow/behavior-reduce-motion/29.0.34/src/index.js","webpack:///@servicenow/now-icon/src/now-icon-animated.js","webpack:///@servicenow/now-icon/src/index.js","webpack:///@servicenow/now-tooltip/src/scheduler/store.js","webpack:///@servicenow/now-tooltip/src/scheduler/index.js","webpack:///@servicenow/behavior-tooltip/29.0.34/src/utils/constants.js","webpack:///@servicenow/behavior-tooltip/29.0.34/src/utils/get-tooltip.js","webpack:///@servicenow/behavior-tooltip/29.0.34/src/utils/scheduler.js","webpack:///@servicenow/behavior-tooltip/29.0.34/src/utils/register.js","webpack:///@servicenow/behavior-tooltip/29.0.34/src/tooltip.js","webpack:///@servicenow/now-tooltip/src/utils/dom.js","webpack:///@servicenow/now-tooltip/src/utils/scroll-listener.js","webpack:///@servicenow/now-tooltip/src/now-tooltip.js","webpack:///@servicenow/now-tooltip/src/index.js","webpack:///@servicenow/behavior-focus/29.0.34/src/utils/get-focusable-nodes.js","webpack:///@servicenow/behavior-focus/29.0.34/src/utils/handle-focus.js","webpack:///@servicenow/behavior-focus/29.0.34/src/utils/handle-tab-keydown.js","webpack:///@servicenow/behavior-focus/29.0.34/src/focus.js","webpack:///@servicenow/now-button/src/behaviors/index.js","webpack:///@servicenow/behavior-ripple/29.0.34/src/constants.js","webpack:///@servicenow/behavior-ripple/29.0.34/src/utils.js","webpack:///@servicenow/behavior-ripple/29.0.34/src/ripple.js","webpack:///@servicenow/behavior-css-property-registration/29.0.34/src/css-property-registration.js","webpack:///@servicenow/now-button/src/now-button.js","webpack:///@servicenow/now-button/src/now-button-bare.js","webpack:///@servicenow/now-button/src/now-button-iconic.js","webpack:///@servicenow/now-button/src/now-button-stateful.js","webpack:///@servicenow/now-button/src/now-button-circular.js","webpack:///@servicenow/now-button/src/index.js","webpack:///@servicenow/behavior-modal/29.0.34/src/utils/constants.js","webpack:///@servicenow/behavior-modal/29.0.34/src/utils/update-elements.js","webpack:///@servicenow/behavior-modal/29.0.34/src/utils/tree-origin-node.js","webpack:///@servicenow/behavior-modal/29.0.34/src/modal.js","webpack:///resize-observer-polyfill/1.5.1/dist/ResizeObserver.es.js","webpack:///@servicenow/behavior-resize/29.0.34/src/resize.js","webpack:///@servicenow/behavior-resizable/29.0.34/src/components/utils/index.js","webpack:///@servicenow/behavior-resizable/29.0.34/src/components/resizable-target.js","webpack:///@servicenow/behavior-resizable/29.0.34/src/resizable.js","webpack:///@servicenow/now-modeless-dialog/src/utils/constants.js","webpack:///@servicenow/now-modeless-dialog/src/utils/helper.js","webpack:///@servicenow/now-modeless-dialog/src/utils/voiceover.js","webpack:///@servicenow/now-modeless-dialog/src/now-modeless-dialog.js","webpack:///@servicenow/now-modeless-dialog/src/index.js","webpack:///@servicenow/now-popover/src/utils/tail.js","webpack:///@servicenow/now-popover/src/utils/dom.js","webpack:///@servicenow/now-popover/src/utils/global-event-listener.js","webpack:///@servicenow/now-popover/src/utils/observer.js","webpack:///@servicenow/now-popover/src/utils/scroll-listener.js","webpack:///@servicenow/now-popover/src/now-popover.js","webpack:///@servicenow/now-popover/src/now-popover-panel.js","webpack:///@servicenow/now-popover/src/index.js","webpack:///ci-chat-components/29.7.4/shared/chat-popover-shared/components/sn-unread-preview.js","webpack:///now-requestor-chat-popover/src/view.js","webpack:///now-requestor-chat-popover/src/now-requestor-chat-popover.js","webpack:///now-requestor-chat-popover-app/29.7.4/src/main/plugins/com.now_requestor_chat_popover_app/ui.html/scripts/index.js"],"sourcesContent":["const random = (len) => crypto.getRandomValues(new Uint8Array(len));\n\nlet IDX = 256,\n\tHEX = [];\nfor (; IDX--; ) HEX[IDX] = (IDX + 256).toString(16).substring(1);\n\n/*#__INLINE__*/\nconst to_hex = (arr) => {\n\tlet i = 0,\n\t\toutput = '';\n\t// @ts-ignore\n\tfor (; i < arr.length; i++) output += HEX[arr[i]];\n\treturn output;\n};\n\n/*\nAnatomy of a Traceparent\n\n00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01\n^  ^                                ^                ^ \n|  |                                |                |\n|  |                                |                flags (2 hex)\n|  |                                parent-id (16 hex)\n|  trace-id (32 hex)\nversion (2 hex)\n*/\n\nconst trace_id_size = 16;\nconst parent_id_size = 8;\n\nconst W3C_TRACEPARENT_VERSION = '00';\n\nconst SAMPLED_FLAG = 0b00000001;\n\nconst traceparent = (version, trace_id, parent_id, flags) => ({\n\tversion,\n\ttrace_id,\n\tparent_id,\n\tflags,\n\n\tchild(sampled) {\n\t\treturn traceparent(\n\t\t\tthis.version,\n\t\t\tthis.trace_id,\n\t\t\tto_hex(random(parent_id_size)),\n\t\t\tsampled === undefined\n\t\t\t\t? this.flags\n\t\t\t\t: sampled\n\t\t\t\t\t? this.flags | SAMPLED_FLAG\n\t\t\t\t\t: this.flags & ~SAMPLED_FLAG\n\t\t);\n\t},\n\n\ttoString() {\n\t\tconst flags = this.flags.toString(16).padStart(2, '0');\n\t\treturn `${this.version}-${this.trace_id}-${this.parent_id}-${flags}`;\n\t},\n});\n\nexport function make(sampled) {\n\tconst total_size = trace_id_size + parent_id_size;\n\tconst id = random(total_size);\n\n\treturn traceparent(\n\t\tW3C_TRACEPARENT_VERSION,\n\t\tto_hex(id.slice(0, trace_id_size)),\n\t\tto_hex(id.slice(trace_id_size, total_size)),\n\t\tsampled ? SAMPLED_FLAG : 0b00000000\n\t);\n}\n\nexport function parse(value) {\n\tif (value.length > 55) return null;\n\tconst segs = value.split('-');\n\treturn traceparent(segs[0], segs[1], segs[2], parseInt(segs[3], 16));\n}\n\n// ~> Utils\n\nexport function is_sampled(id) {\n\treturn !!(id.flags & SAMPLED_FLAG);\n}\n","// Invalid span\nexport const INVALID_TRACE_ID = '00000000000000000000000000000000';\nexport const INVALID_SPAN_ID = '0000000000000000';\nexport const APP_NAME = 'web-analytics';\nexport const CONFIG_CHANGED = 'configChanged';\n","export class EventEmitter {\n    constructor() {\n        this.listeners = {};\n    }\n\n    on(event, fn) {\n        if (!this.listeners[event]) {\n            this.listeners[event] = [];\n        }\n        this.listeners[event].push(fn);\n    }\n\n    emit(event, ...args) {\n        const eventListeners = this.listeners[event];\n        if (eventListeners) {\n            eventListeners.forEach(fn => fn(...args));\n        }\n    }\n}\nexport const eventEmitter = new EventEmitter();\n","import { CONFIG_CHANGED } from './constants';\nimport { eventEmitter } from './EventEmitter';\nconst config = {\n\tdebug: false,\n\tenableTrace: false,\n\tenableCounter: false,\n\tenableGauge: false,\n\tenableHistogram: false,\n\tenableInteractions: false,\n\tenableTrack: false,\n\tenableMousemoveInteractions: false,\n\tenableScrollInteractions: false,\n\tenableKeypressInteractions: false,\n\tenableClickInteractions: false,\n};\n\nexport const set = (key, value) => {\n    const oldValue = config[key];\n    config[key] = value;\n\tif(eventEmitter)\n    \teventEmitter.emit(CONFIG_CHANGED, { key, value, oldValue });\n};\nexport const get = (key) => config[key];\n\n/*\n\tinteractionScrollElements: []\n*/\n","import { parse, make } from './tctx';\n\nconst metaEl = Array.from(document.getElementsByTagName('meta')).find(\n\t(e) => e.getAttribute('name') === 'traceparent'\n);\nconst traceparent = metaEl && metaEl.content ? parse(metaEl.content) : make();\n\nexport const defaultParentId = traceparent.parent_id;\nexport const defaultTraceId = traceparent.trace_id;\nexport const defaultTraceFlag = traceparent.flags;\nexport const defaultTraceParent = traceparent.toString();\nexport const createSpanId = () => make().parent_id;\nexport const createTraceId = () => make().trace_id;\nexport const createTraceParentHeader = (spanId, traceId) =>\n\t`${traceparent.version}-${traceId}-${spanId}-${traceparent.flags.toString(16).padStart(2, '0')}`;\n","let user = {};\n\nexport const set = (id, attributes = {}) => {\n\tuser = { ...attributes, id };\n};\n\nexport const get = () => ({ ...user });\n","let page = {};\n\nexport const set = (id, attributes = {}) => {\n\tpage = {\n\t\t...attributes,\n\t\tid: id || location.href.replace(location.origin, ''),\n\t};\n};\n\nexport const get = () => ({ ...page });\n","let application = {};\n\nexport const set = (name, version, attributes = {}) => {\n\tapplication = { ...attributes, name, version };\n};\n\nexport const get = () => ({ ...application });\n","import { get as getUser } from './user';\nimport { get as getPage } from './page';\nimport { get as getApplication } from './application';\n\nexport default function getItemMetadata() {\n\treturn {\n\t\tapplication: getApplication(),\n\t\tuser: getUser(),\n\t\tpage: getPage(),\n\t};\n}\n","import { defaultTraceParent, createTraceId } from './traceparent';\nimport { get as getConfigValue } from './config';\nimport getItemMetadata from './getItemMetadata';\n\nexport default function createTracker(exporter) {\n\treturn function track(name, options = {}) {\n\t\tif (!getConfigValue('enableTrack')) return;\n\n\t\tconst { attributes, time = Date.now(), traceId } = options;\n\t\tconst { page, user, application } = getItemMetadata();\n\t\tconst event = {\n\t\t\tname,\n\t\t\ttype: 'usage',\n\t\t\tattributes,\n\t\t\tapplication,\n\t\t\tuser,\n\t\t\tpage,\n\t\t\ttimestamp: time,\n\t\t\ttraceId: traceId || createTraceId(),\n\t\t\tdocumentTraceParent: defaultTraceParent,\n\t\t};\n\n\t\texporter(event);\n\t};\n}\n","import { defaultTraceParent, createTraceId } from './traceparent';\nimport { make } from './tctx';\nimport { get as getConfigValue } from './config';\nimport getItemMetadata from './getItemMetadata';\n\nconst isEnabled = (type) => {\n\tswitch (type) {\n\t\tcase 'counter':\n\t\t\treturn getConfigValue('enableCounter');\n\t\t\tbreak;\n\t\tcase 'gauge':\n\t\t\treturn getConfigValue('enableGauge');\n\t\t\tbreak;\n\t\tcase 'histogram':\n\t\t\treturn getConfigValue('enableHistogram');\n\t\t\tbreak;\n\t}\n};\n\nconst createMetric = (name, options, type, cb) => {\n\tconst id = make().parent_id;\n\n\treturn function metric(value, attributes) {\n\t\tif (!isEnabled(type)) return;\n\n\t\tif (attributes)\n\t\t\toptions.attributes = { ...options.attributes, ...attributes };\n\n\t\tcb({\n\t\t\t...options,\n\t\t\tid,\n\t\t\tname,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\ttraceId: options.traceId || createTraceId(),\n\t\t});\n\t};\n};\n\nconst applyAppUserAttributes = (metric) => {\n\tif (!metric.attributes) metric.attributes = {};\n\n\tconst { page, application, user } = getItemMetadata();\n\n\tmetric.timestamp = Date.now();\n\tmetric.application = application;\n\tmetric.user = user;\n\tmetric.page = page;\n\tmetric.documentTraceParent = defaultTraceParent;\n\n\treturn metric;\n};\n\nexport default function createMetrics(exporter) {\n\tconst metricCallback = (metric) => exporter(applyAppUserAttributes(metric));\n\n\treturn {\n\t\tcreateCounter(name, options = {}) {\n\t\t\treturn createMetric(name, options, 'counter', metricCallback);\n\t\t},\n\t\tcreateGauge(name, options = {}) {\n\t\t\treturn createMetric(name, options, 'gauge', metricCallback);\n\t\t},\n\t\tcreateHistogram(name, options = {}) {\n\t\t\treturn createMetric(name, options, 'histogram', metricCallback);\n\t\t},\n\t};\n}\n","import { defaultTraceParent, createTraceId } from './traceparent';\nimport { get as getConfigValue } from './config';\nimport getItemMetadata from './getItemMetadata';\n\nconst observedScrollElements = new Set();\nobservedScrollElements.add(window);\n\nconst isEnabled = (type) => {\n\tif (!getConfigValue('enableInteractions')) return false;\n\n\tswitch (type) {\n\t\tcase 'move':\n\t\t\treturn getConfigValue('enableMousemoveInteractions');\n\t\tcase 'scroll':\n\t\t\treturn getConfigValue('enableScrollInteractions');\n\t\tcase 'keypress':\n\t\t\treturn getConfigValue('enableKeypressInteractions');\n\t\tcase 'click':\n\t\t\treturn getConfigValue('enableClickInteractions');\n\t}\n};\n\nexport default function initInteractionsTracker(exporter) {\n\tif (!getConfigValue('enableInteractions')) return false;\n\tconst movementInterval = 100;\n\tconst resizeInterval = 100;\n\tconst scrollInterval = 100;\n\n\tlet lastResize = 0;\n\tlet windowWidth = window.innerWidth;\n\tlet windowHeight = window.innerHeight;\n\tlet pageWidth = document.documentElement.scrollWidth;\n\tlet pageHeight = document.documentElement.scrollHeight;\n\n\twindow.addEventListener('resize', () => {\n\t\tconst now = Date.now();\n\t\tif (now > lastResize + resizeInterval) {\n\t\t\twindowWidth = window.innerWidth;\n\t\t\twindowHeight = window.innerHeight;\n\t\t\tpageWidth = document.documentElement.scrollWidth;\n\t\t\tpageHeight = document.documentElement.scrollHeight;\n\t\t\tlastResize = now;\n\t\t}\n\t});\n\n\tconst createEvent = (name, e) => {\n\t\tconst { clientX, clientY, pageX, pageY, screenX, screenY, target } = e;\n\t\tconst { page, user, application } = getItemMetadata();\n\n\t\treturn {\n\t\t\tattributes: {\n\t\t\t\tclientX,\n\t\t\t\tclientY,\n\t\t\t\tpageX,\n\t\t\t\tpageY,\n\t\t\t\tscreenX,\n\t\t\t\tscreenY,\n\t\t\t\ttarget: target.tagName.toLowerCase(),\n\t\t\t\twindowWidth,\n\t\t\t\twindowHeight,\n\t\t\t\tpageWidth,\n\t\t\t\tpageHeight,\n\t\t\t\tscrollTop: name === 'scroll' ? target.scrollTop : undefined,\n\t\t\t},\n\t\t\tname,\n\t\t\tapplication,\n\t\t\tuser,\n\t\t\tpage,\n\t\t\ttype: 'interaction',\n\t\t\ttimestamp: Date.now(),\n\t\t\ttraceId: createTraceId(),\n\t\t\tdocumentTraceParent: defaultTraceParent,\n\t\t};\n\t};\n\n\tobservedScrollElements.forEach((el) => {\n\t\tlet lastScroll = 0;\n\t\tel.addEventListener('scroll', (e) => {\n\t\t\tif (!isEnabled('scroll')) return;\n\t\t\tconst now = Date.now();\n\t\t\tif (now > lastScroll + scrollInterval) {\n\t\t\t\tconst event = createEvent('scroll', e);\n\t\t\t\tlastScroll = now;\n\t\t\t\texporter(event);\n\t\t\t}\n\t\t});\n\t});\n\n\tlet lastMovement = 0;\n\tdocument.addEventListener('mousemove', (e) => {\n\t\tif (!isEnabled('move')) return;\n\t\tconst now = Date.now();\n\t\tif (now > lastMovement + movementInterval) {\n\t\t\tconst event = createEvent('mousemove', e);\n\t\t\tlastMovement = now;\n\t\t\texporter(event);\n\t\t}\n\t});\n\n\tdocument.addEventListener('click', (e) => {\n\t\tif (!isEnabled('click')) return;\n\t\tconst event = createEvent('click', e);\n\t\texporter(event);\n\t});\n\n\tdocument.addEventListener('keypress', (e) => {\n\t\tif (!isEnabled('keypress')) return;\n\t\tconst event = createEvent('keypress', e);\n\t\texporter(event);\n\t});\n}\n","// const observers = new Set();\n// export default observers;\n\nconst globalKey = 'now.__SNANALYTICS_OBSERVER_SET__';\nconst globalObj = typeof window !== 'undefined' ? window : globalThis;\n\nif (!globalObj[globalKey]) {\n\tglobalObj[globalKey] = new Set();\n}\n\nconst observers = globalObj[globalKey];\n\nexport default observers;\n","const values = {\n\tevents: [],\n\tflushed: false,\n};\n\nexport const set = (key, value) => (values[key] = value);\n\nexport const get = (key) => values[key];\n","import { get as getConfigValue } from './config';\nimport observers from './observers';\nimport { get } from './queuedEvents';\n\n/**\n * Notify trace subscribers with a trace event\n * @private\n */\nconst notifyTraceSubscriber = (span) => {\n\tif (!span) return;\n\n\tconst _span = {\n\t\ttype: 'trace',\n\t\tid: span.id,\n\t\ttraceId: span.traceId,\n\t\tparentSpanId: span.parentSpanId,\n\t\tname: span.name,\n\t\tkind: span.kind,\n\t\tstartTime: span.startTime,\n\t\tendTime: span.endTime,\n\t\tduration: span.duration,\n\t\tattributes: span.attributes,\n\t\tevents: span.events,\n\t\tlinks: span.links,\n\t\tstatus: span.status,\n\t\tapplication: span.application,\n\t\tuser: span.user,\n\t\tpage: span.page,\n\t\tdocumentTraceParent: span.documentTraceParent,\n\t\trelativeStartTime: span.relativeStartTime,\n\t\trelativeEndTime: span.relativeEndTime,\n\t\ttimeOrigin: span.timeOrigin\n\t};\n\n\tobservers.forEach((observer) => {\n\t\ttry {\n\t\t\tobserver(_span);\n\t\t} catch (err) {\n\t\t\tconsole.error('Error in trace subscriber:', err);\n\t\t}\n\t});\n};\n\n/**\n * Processes trace events, handling both single spans and batches\n * @private\n */\nconst handleTraceEvents = (event) => {\n\t// Handle missing/invalid events\n\tif (!event) return false;\n\n\t// Handle array of spans (batch)\n\tif (Array.isArray(event)) {\n\t\t// Only process if all items are span events\n\t\tif (event.length > 0 && event.every(e => e && e.type === 'trace')) {\n\t\t\tevent.forEach(span => notifyTraceSubscriber(span));\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t// Handle single span\n\tif (event.type === 'trace') {\n\t\tnotifyTraceSubscriber(event);\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nexport default function exporter(event) {\n\tconst debug = getConfigValue('debug');\n\tconst hasBeenFlushed = get('flushed');\n\tconst queuedEvents = get('events');\n\n\tif (debug) console.dir(event);\n\n\tif (handleTraceEvents(event)) {\n\t\treturn;\n\t}\n\n\tif (event.type !== 'trace') {\n\t\tobservers.forEach((observer) => {\n\t\t\ttry {\n\t\t\t\tobserver(event);\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error('Error in event observer:', err);\n\t\t\t}\n\t\t});\n\n\t\tif (!hasBeenFlushed && event) {\n\t\t\tqueuedEvents.push(event);\n\t\t}\n\t}\n}","\n/**\n * Abstract base class for context.\n */\nexport class Context {\n\n    constructor() {\n        if(this.constructor === Context) {\n            throw new Error('Context is abstract and cannot be instantiated directly');\n        }\n    }\n    /**\n     * Get a value from the context.\n     *\n     * @param key key which identifies a context value\n     */\n    getValue(key) {\n        throw new Error('Not implemented');\n    }\n  \n    /**\n     * Create a new context which inherits from this context and has\n     * the given key set to the given value.\n     *\n     * @param key context key for which to set the value\n     * @param value value to set for the given key\n     */\n    setValue(key, value) {\n        throw new Error('Not implemented');\n    }\n  \n    /**\n     * Return a new context which inherits from this context but does\n     * not contain a value for the given key.\n     *\n     * @param key context key for which to clear a value\n     */\n    deleteValue(key) {\n       throw new Error('Not implemented');\n    }\n}\n\n/**\n * Abstract base class for context manager.\n */\nexport class ContextManager {\n    constructor(name) {\n        this.name = name;\n        if(this.constructor === ContextManager) {\n            throw new Error('ContextManager is abstract and cannot be instantiated directly');\n        }\n    }\n    /**\n     * Get the current context.\n     */\n    active() {\n        throw new Error('Not implemented');\n    }\n    /**\n     * Run the given function in the given context.\n     *\n     * @param {Context} _context context to use\n     * @param {Function} _fn function to run\n     * @param {Object} _thisArg optional receiver to be used for calling fn\n     * @param {Array} _args optional arguments forwarded to fn\n     * @returns {any} result of fn\n     */\n    with(\n        _context,\n        _fn,\n        _thisArg,\n        ..._args\n      ) {\n        throw new Error('Not implemented');\n    }\n    /**\n     * Bind an object as the current context (or a specific one)\n     *\n     * @param {Context} _context Optionally specify the context which you want to assign\n     * @param {Object} _target Any object to which a context need to be set\n     * @returns {Object} target\n     */\n    bind(_target, _context) {\n        throw new Error('Not implemented');\n    }\n    /**\n     * Enable context management\n     */\n    enable() {\n        throw new Error('Not implemented');\n    }\n    /**\n     * Disable context management\n     */\n    disable() {\n        throw new Error('Not implemented');\n    }\n\n    enter() {\n        throw new Error('Not implemented');\n    }\n\n    leave() {\n        throw new Error('Not implemented');\n    }\n}","import { Context } from \"./types\";\n\n/**\n * Represents a base context that manages a map of key-value pairs.\n * Allows for the creation of a new context that can optionally inherit\n * from a parent context.\n */\nclass BaseContext extends Context {\n    constructor(parentContext) {\n        super();\n        const self = this;\n\n        self._currentContext = parentContext ? new Map(parentContext) : new Map();\n\n        self.getValue = (key) => self._currentContext.get(key);\n\n        self.setValue = (key, value) => {\n            const context = new BaseContext(self._currentContext);\n            context._currentContext.set(key, value);\n            return context;\n        };\n\n        self.deleteValue = (key) => {\n            const context = new BaseContext(self._currentContext);\n            context._currentContext.delete(key);\n            return context;\n        };\n    }\n}\n\nconst ROOT_CONTEXT = new BaseContext();\n\nexport { ROOT_CONTEXT };\n","// Our own namespace for context keys, following OTEL's pattern\nexport const SPAN_CONTEXT_KEY = Symbol.for('sn.analytics.trace.span');\nexport const ROOT_LEVEL_EVENTS = [\n    'click',     // User wants to activate something\n    'submit',    // User wants to submit form  \n    'keydown',   // User is typing/using keyboard shortcuts\n    'input',     // User is entering data\n    'change'\n];\n\nexport const SPAN_KIND_CLIENT = 3;\nexport const ROOT_SPAN_CLOSE_WAIT_MS = 200;","import { ROOT_CONTEXT } from './BaseContext';\nimport { ContextManager } from './types';\n\n/**\n * A context manager that propagates context through asynchronous operations\n * by delegating patching to a BrowserPatcher.\n */\nclass StackContextManager extends ContextManager {\n  constructor() {\n    super(\"stackContextManager\");\n    this._contextStack = [ROOT_CONTEXT]; \n    this._enabled = false; \n    this.enable();\n  }\n\n  _bindFunction(context = ROOT_CONTEXT, target) {\n    const manager = this;\n    const contextWrapper = function (...args) {\n      return manager.with(context, () => target.apply(this, args));\n    };\n    Object.defineProperty(contextWrapper, 'length', {\n      enumerable: false,\n      configurable: true,\n      writable: false,\n      value: target.length,\n    });\n    return contextWrapper;\n  }\n\n\n  /**\n   * Return a function that will enter the given context and execute the given function.\n   * This is the core of the context propagation mechanism.\n   * @param {function} target A function to be executed in the given context.\n   * @param {*} [context] The context to enter before the function is executed. Defaults to the current active context.\n   * @returns {function} The wrapped function.\n   */\n  bind(target, context) {\n    if (!this._enabled) {\n      return target;\n    }\n    if (context === undefined) {\n      context = this.active();\n    }\n    if (typeof target === 'function') {\n      return this._bindFunction(context, target);\n    }\n    return target;\n  }\n\n  /**\n   * Manually enters a context, pushing it onto the stack.\n   * Must be paired with a call to leave().\n   * @param {*} context The context to enter.\n   */\n  enter(context) {\n    this._contextStack.push(context);\n  }\n\n  /**\n   * Manually leaves a context, popping it from the stack.\n   */\n  leave() {\n    if (this._contextStack.length > 1) { // Do not pop the root context\n        this._contextStack.pop();\n    }\n  }\n\n  /**\n   * Runs a function within a specific context.\n   * @param {*} activeContext The context to run the function in.\n   * @param {function} fn The function to execute.\n   * @param {*} [thisArg] The `this` context for the function.\n   * @param {...*} [args] Arguments to pass to the function.\n   * @returns {*} The result of the function.\n   */\n  with(activeContext, fn, thisArg, ...args) {\n    this.enter(activeContext);\n    try {\n      return fn.apply(thisArg, args);\n    } catch (error) {\n      console.error('StackContextManager.with error running provided function', error);\n      throw error;\n    } finally {\n      this.leave();\n    }\n  }\n\n  /**\n   * @returns {*} The active context.\n   */\n  active() {\n    return this._contextStack[this._contextStack.length - 1];\n  }\n\n  hasActiveContext() {\n    return this.active() !== ROOT_CONTEXT;\n  }\n\n  enable() {\n    if (this._enabled) return;\n    this._enabled = true;\n  }\n\n  disable() {\n    if (!this._enabled) return;\n    this._contextStack = [ROOT_CONTEXT];\n    this._enabled = false;\n  }\n\n  toString() {\n    return this.name;\n  }\n\n}\nexport default StackContextManager;","import { ContextManager } from \"./types\";\nimport { ROOT_CONTEXT } from \"./BaseContext\";\n\nclass NoopContextManager extends ContextManager {\n    constructor() {\n        super(\"noopContextManager\");\n        this._enabled = false;\n    }\n    \n    active() {\n      return ROOT_CONTEXT;\n    }\n  \n    with(_, fn, thisArg, ...args) {\n      return fn.call(thisArg, ...args);\n    }\n  \n    bind(target, _context) {\n      return target;\n    }\n  \n    enable() {\n      return this;\n    }\n  \n    disable() {\n      return this;\n    }\n\n    enter() {\n        return this;\n    }\n\n    leave() {\n        return this;\n    }\n\n    toString() {\n        return this.name;\n    }\n  }\nexport default NoopContextManager;\n","let handler = null;\n\nexport function setInteractionHandler(handlerFn) {\n    handler = handlerFn;\n}\n\nexport function getInteractionHandler() {\n    return handler;\n}\n\nexport function clearInteractionHandler() {\n    handler = null;\n}\n","import { ROOT_LEVEL_EVENTS } from '../constants';\nimport { ROOT_CONTEXT } from '../context/BaseContext';\nimport { getInteractionHandler } from './interactionHandler';\nimport { isCustomEvent } from './isCustomEvent';\n\n/**\n * A class responsible for patching native browser APIs to propagate context.\n * It is designed to be used by a context manager.\n */\nexport class BrowserPatcher {\n  constructor() {\n    this._originalAPIs = {};\n    this._patched = new Set();\n    this.processedEvents = new WeakSet();\n    this._manager = null;\n  }\n\n  setManager(manager) {\n    this._manager = manager;\n  }\n\n  patchAll() {\n    if (typeof window === 'undefined' || typeof document === 'undefined') return;\n    if (this._patched.size > 0) return;\n\n    const apisToPatch = [\n      { name: 'fetch', type: 'function' },\n      { name: 'setTimeout', type: 'callback', alwaysBind: true },\n      { name: 'setInterval', type: 'callback', alwaysBind: true },\n      { name: 'requestIdleCallback', type: 'callback', alwaysBind: true },\n      { name: 'requestAnimationFrame', type: 'callback', alwaysBind: true },\n      { name: 'MutationObserver', type: 'constructor' },\n      { name: 'ResizeObserver', type: 'constructor' },\n      { name: 'IntersectionObserver', type: 'constructor' },\n    ];\n\n    apisToPatch.forEach(api => this._patchAPI(api));\n\n    this._patchPromise();\n    this._patchEventTarget();\n    this._patchDOMAPIs();\n    this._patchMessageChannel();\n    console.debug('Patched async browser APIs for trace context propagation...');\n\n  }\n\n  unpatchAll() {\n    if (typeof window === 'undefined' || typeof document === 'undefined') return;\n    if (this._patched.size === 0) return;\n\n    for (const key of this._patched) {\n      const original = this._originalAPIs[key];\n      if (!original) continue;\n\n      if (original.isDescriptor) {\n        const [className, propName] = key.split('.prototype.');\n        if (window[className] && window[className].prototype) {\n            Object.defineProperty(window[className].prototype, propName, original.value);\n        }\n      } else if (key.includes('.prototype.')) {\n        const [className, propName] = key.split('.prototype.');\n        if (window[className] && window[className].prototype) {\n            window[className].prototype[propName] = original;\n        }\n      } else {\n        window[key] = original;\n      }\n    }\n    this._patched.clear();\n    this._originalAPIs = {};\n    console.debug('Unpatched async browser APIs for trace context propagation...');\n  }\n\n  _patchAPI({ name, type: patchType, alwaysBind = false }) {\n    if (this._patched.has(name) || typeof window[name] === 'undefined') return;\n\n    const original = window[name];\n    this._originalAPIs[name] = original;\n    this._patched.add(name);\n\n    const manager = this._manager;\n\n    if (patchType === 'constructor') {\n      window[name] = class extends original {\n        constructor(fn) {\n          const context = manager.active();\n          // Only wrap the function if there's a real context to propagate.\n          // The ROOT_CONTEXT is the default and doesn't need to be propagated explicitly.\n          if (manager._enabled && typeof fn === 'function' && context !== ROOT_CONTEXT) {\n            const boundFn = manager.bind(fn, context);\n            super(boundFn);\n          } else {\n            super(fn);\n          }\n        }\n      };\n    } else if (patchType === 'callback') {\n      window[name] = function (fn, ...args) {\n        const context = manager.active();\n        const shouldBind = manager._enabled && typeof fn === 'function' && (alwaysBind || context !== ROOT_CONTEXT);\n        const boundFn = shouldBind ? manager.bind(fn, context) : fn;\n        return original.call(this, boundFn, ...args);\n      };\n    } else {\n      window[name] = function (...args) {\n        if (!manager._enabled) return original.apply(this, args);\n        const context = manager.active();\n        const boundFn = manager.bind(original, context);\n        return boundFn.apply(this, args);\n      };\n    }\n  }\n\n  _patchPromise() {\n    if (this._patched.has('Promise.prototype.then')) return;\n    this._patched.add('Promise.prototype.then');\n\n    const manager = this._manager;\n    const originalThen = Promise.prototype.then;\n    this._originalAPIs['Promise.prototype.then'] = originalThen;\n\n    Promise.prototype.then = function (onFulfilled, onRejected) {\n      if (!manager._enabled) return originalThen.call(this, onFulfilled, onRejected);\n      const context = manager.active();\n      const wrappedFulfilled = onFulfilled && context ? manager.bind(onFulfilled, context) : onFulfilled;\n      const wrappedRejected = onRejected && context ? manager.bind(onRejected, context) : onRejected;\n      return originalThen.call(this, wrappedFulfilled, wrappedRejected);\n    };\n  }\n\n  _patchEventTarget() {\n    if (this._patched.has('EventTarget.prototype.addEventListener')) return;\n    this._patched.add('EventTarget.prototype.addEventListener');\n    const manager = this._manager;\n    const originalAddEventListener = EventTarget.prototype.addEventListener;\n    this._originalAPIs['EventTarget.prototype.addEventListener'] = originalAddEventListener;\n    const self = this;\n    EventTarget.prototype.addEventListener = function (type, listener, options) {\n      // Do not wrap listeners on custom elements to avoid interfering with framework internals.\n      const isCustomElement = this.tagName && this.tagName.includes('-');\n\n      if (!manager._enabled || typeof listener !== 'function' || listener._isContextWrapped || isCustomElement) {\n        return originalAddEventListener.call(this, type, listener, options);\n      }\n\n      const wrappedListener = function (...args) {\n        const event = args[0];\n\n        if (isCustomEvent(event)) {\n          return listener.apply(this, args);\n        }\n\n        if (self._isUserInteractionEvent(type)) {\n          if (event.eventPhase === Event.CAPTURING_PHASE) {\n            return listener.apply(this, args);\n          }\n\n          if (!self.processedEvents.has(event)) {\n            self.processedEvents.add(event);\n            return self._handleUserInteraction(type, event, listener, this, args);\n          }\n          return listener.apply(this, args);\n        } else {\n          const context = manager.active();\n          return context === ROOT_CONTEXT ? listener.apply(this, args) : manager.with(context, () => listener.apply(this, args));\n        }\n      };\n\n      wrappedListener._isContextWrapped = true;\n      return originalAddEventListener.call(this, type, wrappedListener, options);\n    };\n\n    const originalRemoveEventListener = EventTarget.prototype.removeEventListener;\n    this._originalAPIs['EventTarget.prototype.removeEventListener'] = originalRemoveEventListener;\n\n    EventTarget.prototype.removeEventListener = function (type, listener, options) {\n      if (!this._listeners || !this._listeners[type]) {\n        return originalRemoveEventListener.call(this, type, listener, options);\n      }\n      const wrappedListener = this._listeners[type].get(listener);\n      return originalRemoveEventListener.call(this, type, wrappedListener || listener, options);\n    };\n  }\n\n  _patchDOMAPIs() {\n    const manager = this._manager;\n    const domAPIs = ['appendChild', 'insertBefore', 'removeChild', 'replaceChild'];\n\n    domAPIs.forEach(method => {\n      if (this._patched.has(method)) return;\n      const original = Element.prototype[method];\n      this._originalAPIs[method] = original;\n      this._patched.add(method);\n\n      Element.prototype[method] = function (...args) {\n        if (!manager._enabled) return original.apply(this, args);\n        return manager.with(manager.active(), () => original.apply(this, args));\n      };\n    });\n  }\n\n  _patchMessageChannel() {\n    if (this._patched.has('MessagePort.prototype.onmessage')) return;\n    if (typeof MessagePort === 'undefined') return;\n\n    this._patched.add('MessagePort.prototype.onmessage');\n    const manager = this._manager;\n    const originalDescriptor = Object.getOwnPropertyDescriptor(MessagePort.prototype, 'onmessage');\n    if (originalDescriptor) {\n        this._originalAPIs['MessagePort.prototype.onmessage'] = { isDescriptor: true, value: originalDescriptor };\n\n        Object.defineProperty(MessagePort.prototype, 'onmessage', {\n            ...originalDescriptor,\n            set(value) {\n                const context = manager.active();\n                const boundFn = manager._enabled && typeof value === 'function' && context !== ROOT_CONTEXT\n                    ? manager.bind(value, context)\n                    : value;\n                originalDescriptor.set.call(this, boundFn);\n            },\n        });\n    }\n  }\n\n  _isUserInteractionEvent(type) {\n    return ROOT_LEVEL_EVENTS.includes(type);\n  }\n\n  _handleUserInteraction(type, event, listener, context, args) {\n    const handler = getInteractionHandler();\n    if (typeof handler === 'function') {\n      try {\n        return handler(type, event, () => {\n          return listener.apply(context, args);\n        });\n      } catch (error) {\n        console.error('Error in interaction handler:', error);\n      }\n    }\n  }\n}\n","export function isCustomEvent(event) {\n    return event && (event instanceof CustomEvent || event.constructor.name === 'CustomEvent' || event.isTrusted === false);\n}","\nimport { get as getConfigValue } from '../../config';\nexport function isTracingEnabled() {\n    return Boolean(getConfigValue('enableTrace'));\n}","import StackContextManager from \"./StackContextManager\";\nimport NoopContextManager from \"./NoopContextManager\";\nimport { BrowserPatcher } from \"../utils/BrowserPatcher\";\nimport { isTracingEnabled } from \"../utils/isTracingEnabled\";\nimport { eventEmitter } from \"../../EventEmitter\";\nimport { CONFIG_CHANGED } from \"../../constants\";\n\n/**\n * A dynamic context manager that can switch between a real (Stack) and a no-op\n * implementation at runtime based on the current configuration.\n */\nclass DynamicContextManager {\n    constructor() {\n        this._patcher = new BrowserPatcher();\n        this._stackManager = new StackContextManager();\n        this._noopManager = new NoopContextManager();\n        this._enabled = false; \n        this._patcher.setManager(this);\n\n        this.onConfigUpdate(isTracingEnabled());\n\n        eventEmitter.on(CONFIG_CHANGED, ({ key, value }) => {\n            if (key === 'enableTrace') {\n                this.onConfigUpdate(value);\n            }\n        });\n    }\n\n    onConfigUpdate(enabled) {\n        this._enabled = enabled;\n        this._manager = enabled ? this._stackManager : this._noopManager;\n        if (enabled) {\n            this._patcher.patchAll();\n        } else {\n            this._patcher.unpatchAll();\n        }\n    }\n\n    active() {\n        return this._manager.active();\n    }\n\n    bind(target, context = this.active()) {\n        return this._manager.bind(target, context);\n    }\n\n    with(context, fn, thisArg, span) {\n        return this._manager.with(context, fn, thisArg, span);\n    }\n    \n    enter(context) {\n        return this._manager.enter(context);\n    }\n    \n    leave() {\n        return this._manager.leave();\n    }\n    \n    toString() {\n        return this.constructor.name;\n    }\n}\nconst context = new DynamicContextManager();\nexport { context };","import {contextManager} from '.';\nimport { SPAN_CONTEXT_KEY } from '../constants';\n\n/**\n * Manages span context operations.\n * Follows OpenTelemetry's TracerProvider pattern.\n */\nexport class TraceApi {\n    getSpan(context) {\n        return context?.getValue(SPAN_CONTEXT_KEY);\n    }\n   \n    setSpan(context, span) {\n        return context?.setValue(SPAN_CONTEXT_KEY, span);\n    }\n   \n    getActiveSpan() {\n        const activeContext = contextManager.active();\n        return this.getSpan(activeContext);\n    }\n}\n\n// Export singleton instance\nconst traceApi = new TraceApi();\nexport default traceApi;","import { SpanProcessor } from './SpanProcessor';\nimport { isTracingEnabled } from '../utils/isTracingEnabled';\n\n// Default values for batch processing\nconst DEFAULT_MAX_QUEUE_SIZE = 200;\nconst DEFAULT_SCHEDULED_DELAY = 2000; // 2 seconds\n\n/**\n * BatchSpanProcessor batches ended spans and pushes them to the configured span exporter.\n */\nexport class BatchSpanProcessor extends SpanProcessor {\n    constructor(exporter, config = {}) {\n        super();\n        this._exporter = exporter;\n        this._maxQueueSize = config.maxQueueSize || DEFAULT_MAX_QUEUE_SIZE;\n        this._scheduledDelayMillis = config.scheduledDelayMillis || DEFAULT_SCHEDULED_DELAY;\n        this._queue = [];\n        this._timer = null;\n        this._isShutdown = false;\n    }\n\n    onStart(span) {\n        // Do nothing as spans are only processed when they end\n    }\n\n    onEnd(span) {\n        if (this._isShutdown || !isTracingEnabled()) {\n            return; \n        }\n\n        this._queue.push(span);\n        if (this._queue.length >= this._maxQueueSize) {\n            this._flush();\n        } else {\n            this._scheduleFlush();\n        }\n    }\n\n    async forceFlush() {\n        if (this._isShutdown || !isTracingEnabled()) {\n            return; \n        }\n\n        if (this._timer) {\n            clearTimeout(this._timer);\n            this._timer = null;\n        }\n\n        try {\n            await this._flush();\n        } catch (e) {\n            console.error('Error flushing spans:', e);\n        }\n    }\n\n    async shutdown() {\n        if (this._isShutdown || !isTracingEnabled()) {\n            return; \n        }\n\n        this._isShutdown = true;\n\n        if (this._timer) {\n            clearTimeout(this._timer);\n            this._timer = null;\n        }\n\n        // Flush any remaining spans\n        await this.forceFlush();\n\n        // Shutdown the exporter\n        if (this._exporter.shutdown) {\n            await this._exporter.shutdown();\n        }\n    }\n\n    _scheduleFlush() {\n        if (this._timer || this._isShutdown) {\n            return;\n        }\n\n        this._timer = setTimeout(() => {\n            this._flush();\n        }, this._scheduledDelayMillis);\n    }\n\n    async _flush() {\n        if (this._timer) {\n            clearTimeout(this._timer);\n            this._timer = null;\n        }\n\n        if (this._isShutdown || this._queue.length === 0) {\n            return;\n        }\n\n        const spans = this._queue.slice();\n        this._queue = [];\n\n        try {\n            await this._exporter(spans);\n        } catch (e) {\n            console.error('Error exporting spans:', e);\n            // Put spans back in the queue if export failed\n            this._queue.unshift(...spans);\n        }\n    }\n\n    toString() {\n        return this.constructor.name;\n    }\n}","/**\n * SpanProcessor is the interface Tracer SDK uses to batch and convert spans\n * to exportable representation and send them to the configured exporter.\n */\nexport class SpanProcessor {\n    /**\n     * Called when a Span is started, if the {@link Span#isRecording()} returns true.\n     * @param {Span} span The started Span.\n     */\n    onStart(_span) {\n        throw new Error('onStart must be implemented');\n    }\n\n    /**\n     * Called when a Span is ended, if the {@link Span#isRecording()} returns true.\n     * @param {Span} span The ended Span.\n     */\n    onEnd(_span) {\n        throw new Error('onEnd must be implemented');\n    }\n\n    /**\n     * Shuts down the processor. Called when SDK is shut down.\n     * @returns {Promise<void>}\n     */\n    async shutdown() {\n        throw new Error('shutdown must be implemented');\n    }\n\n    /**\n     * Forces the processor to flush all spans to the configured exporter.\n     * @returns {Promise<void>}\n     */\n    async forceFlush() {\n        throw new Error('forceFlush must be implemented');\n    }\n\n    toString() {\n        return this.constructor.name;\n    }\n}","export const SPAN_KIND = {\n\t// Unspecified. Do NOT use as default.\n\t// Implementations MAY assume SpanKind to be INTERNAL when receiving UNSPECIFIED.\n\tUNSPECIFIED: 0,\n\n\t// Indicates that the span represents an internal operation within an application,\n\t// as opposed to an operation happening at the boundaries. Default value.\n\tINTERNAL: 1,\n\n\t// Indicates that the span covers server-side handling of an RPC or other\n\t// remote network request.\n\tSERVER: 2,\n\n\t// Indicates that the span describes a request to some remote service.\n\tCLIENT: 3,\n\n\t// Indicates that the span describes a producer sending a message to a broker.\n\t// Unlike CLIENT and SERVER, there is often no direct critical path latency relationship\n\t// between producer and consumer spans. A PRODUCER span ends when the message was accepted\n\t// by the broker while the logical processing of the message might span a much longer time.\n\tPRODUCER: 4,\n\n\t// Indicates that the span describes consumer receiving a message from a broker.\n\t// Like the PRODUCER kind, there is often no direct critical path latency relationship\n\t// between producer and consumer spans.\n\tCONSUMER: 5,\n};\n","import { INVALID_SPAN_ID, INVALID_TRACE_ID } from '../../constants';\nimport { SPAN_KIND } from '../spanKind';\n\nexport default class NonRecordingSpan {\n    // Static values to avoid any initialization cost\n    id = INVALID_SPAN_ID;\n    traceId = INVALID_TRACE_ID;\n    parentSpanId = null;\n    name = '';\n    kind = SPAN_KIND.INTERNAL;\n    startTime = null;\n    endTime = null;\n    duration = null;\n    status = { code: 0 };\n    attributes = {};\n    events = [];\n    links = [];\n\n    // No-op methods\n    isRecording() { return false; }\n    spanContext() { return { traceId: this.traceId, spanId: this.id, traceFlags: 0 }; }\n    setAttribute() { return this; }\n    setAttributes() { return this; }\n    addEvent() { return this; }\n    setStatus() { return this; }\n    updateName() { return this; }\n    end() { return this; }\n    endSpan() { return this; }\n    recordException() { return this; }\n    addLink() { return this; }\n}","import { ROOT_CONTEXT } from \"../context\";\nimport { \n    SPAN_CONTEXT_KEY, \n    SPAN_KIND_CLIENT, \n    ROOT_SPAN_CLOSE_WAIT_MS } from \"../constants\";\nimport { setInteractionHandler, clearInteractionHandler } from './interactionHandler';\n\nfunction getElementLabel(element) {\n    if (!element) return 'undefined';\n\n    const ariaLabel = element.getAttribute('aria-label');\n    if (ariaLabel) return ariaLabel.trim();\n\n    if (element.tagName === 'IMG' && element.alt) return element.alt.trim();\n\n    if (element.tagName === 'INPUT' && ['button', 'submit', 'reset'].includes(element.type)) {\n        return element.value.trim();\n    }\n    const textContent = element.textContent?.trim();\n    if (textContent) return textContent;\n\n    if (element.placeholder) return element.placeholder.trim();\n\n    const title = element.getAttribute('title');\n    if (title) return title.trim();\n\n    return 'undefined';\n}\n\nexport default function createEventTracer(tracer, contextManager) {\n    function handleUserEvent(type, event, fn) {\n        const target = event.target;\n        const rootSpan = tracer.startSpan(`USER_${type.toUpperCase()}`, {\n            attributes: {\n                'event.type': type,\n                'element.target': target?.tagName?.toLowerCase(),\n                'element.id': target?.id,\n                'element.className': target?.className,\n                'user_interaction': true,\n                'componentId': target?.nowId || 'undefined',\n                'tagName': target?.localName || 'undefined',\n                'element.label': getElementLabel(target),\n            },\n            kind: SPAN_KIND_CLIENT\n        });\n\n        const newRootContext = ROOT_CONTEXT.setValue(SPAN_CONTEXT_KEY, rootSpan);\n\n        contextManager.enter(newRootContext);\n\n        try {\n            return fn();\n        } catch (error) {\n            rootSpan.setStatus({ code: 'ERROR', message: error.message });\n            contextManager.leave();\n            rootSpan.end();\n            throw error;\n        } finally {\n            setTimeout(() => {\n                if (contextManager.active() === newRootContext) {\n                    contextManager.leave();\n                }\n                rootSpan.end();\n            }, window.nowAnalytics?.rootSpanTimeout || ROOT_SPAN_CLOSE_WAIT_MS);\n        }\n    }\n\n    function init() {\n        if (typeof window !== 'undefined') {\n            setInteractionHandler(handleUserEvent);\n        }\n    }\n\n    function destroy() {\n        if (typeof window !== 'undefined') {\n            clearInteractionHandler();\n        }\n    }\n\n    return {\n        init,\n        destroy\n    }\n}\n","\nimport { INVALID_SPAN_ID, INVALID_TRACE_ID } from '../../constants';\nimport createEventTracer from './userInteractionTracer';\n\nconst VALID_TRACE_ID_REGEX = /^([0-9a-f]{32})$/i;\nconst VALID_SPAN_ID_REGEX = /^[0-9a-f]{16}$/i;\n\nexport function isValidTraceId(traceId) {\n    return VALID_TRACE_ID_REGEX.test(traceId) && traceId !== INVALID_TRACE_ID;\n}\n\nexport function isValidSpanId(spanId) {\n    return VALID_SPAN_ID_REGEX.test(spanId) && spanId !== INVALID_SPAN_ID;\n}\n\nexport function isSpanContextValid(spanContext) {\n    return (\n        isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId)\n    );\n}\n \nexport { createEventTracer }\n\n","export function sanitizeAttributes(attributes) {\n\tconst sanitizeAttributes = {};\n\n\tif (typeof attributes !== 'object' || attributes == null) {\n\t\treturn sanitizeAttributes;\n\t}\n\n\tfor (const [key, val] of Object.entries(attributes)) {\n\t\tif (!isValidAttributeKey(key)) {\n\t\t\tconsole.warn(`Invalid attribute key: ${key}`);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!isValidAttributeValue(val)) {\n\t\t\tconsole.warn(`Invalid attribute value set for key: ${key}`);\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(val)) {\n\t\t\tsanitizeAttributes[key] = val.slice();\n\t\t} else {\n\t\t\tsanitizeAttributes[key] = val;\n\t\t}\n\t}\n\n\treturn sanitizeAttributes;\n}\n\nexport function isValidAttributeKey(key) {\n\treturn typeof key === 'string' && key.length > 0;\n}\n\nexport function isValidAttributeValue(val) {\n\tif (val == null) {\n\t\treturn true;\n\t}\n\n\tif (Array.isArray(val)) {\n\t\treturn val.every((e) => e == null || isValidPrimitiveAttributeValue(e));\n\t}\n\n\treturn isValidPrimitiveAttributeValue(val);\n}\n\nexport function isValidPrimitiveAttributeValue(val) {\n\treturn (\n\t\ttypeof val === 'string' ||\n\t\ttypeof val === 'number' ||\n\t\ttypeof val === 'boolean'\n\t);\n}\n","import { isValidTraceId } from '../utils';\nimport getItemMetadata from '../../getItemMetadata';\nimport { sanitizeAttributes } from '../../attributeValidator';\nimport traceApi from '../context/TraceApi';\nimport { SPAN_KIND } from '../spanKind';\nimport { defaultTraceParent, createSpanId, createTraceId } from '../../traceparent';\n\nconst timeOrigin = typeof performance !== 'undefined' ? performance.timeOrigin : 0;\nconst getCurrentTime = () => timeOrigin + performance.now();\n\nconst MAX_ATTRIBUTES_COUNT = 50;\nconst MAX_ATTRIBUTE_VALUE_LENGTH = 16384;\nconst MAX_EVENTS_COUNT = 50;\nconst MAX_LINKS_COUNT = 50;\n\nexport default class RecordingSpan {\n    constructor(name, options, context, spanProcessor) {\n        const { attributes = {}, root = false, links = [], parentSpan, kind = SPAN_KIND.INTERNAL } = options || {};\n        const parentContext = parentSpan || traceApi.getSpan(context);\n\n        let traceId;\n        let parentSpanId = null;\n\n        if (!parentContext || root) {\n            traceId = createTraceId();\n        } else {\n            traceId = isValidTraceId(parentContext.traceId) ? parentContext.traceId : createTraceId();\n            parentSpanId = parentContext.id;\n        }\n        \n        const { page, user, application } = getItemMetadata();\n\n        this.type = 'trace';\n        this.id = createSpanId();\n        this.traceId = traceId;\n        this.parentSpanId = parentSpanId;\n        this.name = name;\n        this.kind = kind;\n        this.startTime = getCurrentTime();\n        this.attributes = sanitizeAttributes(attributes);\n        this.events = [];\n        this.links = links;\n        this.status = { code: 0 }; \n        this.application = application;\n        this.user = user;\n        this.page = page;\n        this.documentTraceParent = defaultTraceParent;\n        this.relativeStartTime = typeof performance !== 'undefined' ? performance.now() : 0;\n        this._spanProcessor = spanProcessor;\n        this._ended = false;\n\n        if (this._spanProcessor) {\n            this._spanProcessor.onStart(this);\n        }\n    }\n\n    isRecording() {\n        return !this._ended;\n    }\n\n    spanContext() {\n        return {\n            traceId: this.traceId,\n            spanId: this.id,\n            traceFlags: 0,\n        };\n    }\n\n    setStatus(status) {\n        if (!this.isRecording()) {\n            return this; \n        }\n        this.status = status;\n        return this;\n    }\n\n    addEvent(name, attributes, now = getCurrentTime()) {\n        if (!this.isRecording()) {\n            return this; \n        }\n        \n        if (this.events.length >= MAX_EVENTS_COUNT) {\n            console.warn(`Span event limit (${MAX_EVENTS_COUNT}) exceeded. Dropping event: ${name}`);\n            return this;\n        }\n        \n        this.events.push({ name, attributes, time: now });\n        return this;\n    }\n\n    end() {\n        if (!this.isRecording()) {\n            return; \n        }\n        this._ended = true;\n        this.endTime = getCurrentTime();\n        this.relativeEndTime = typeof performance !== 'undefined' ? performance.now() : 0;\n        this.duration = this.endTime - this.startTime;\n\n        if (this._spanProcessor) {\n            this._spanProcessor.onEnd(this);\n        }\n    }\n\n    endSpan() {\n        this.end();\n    }\n\n    recordException(exception, now = getCurrentTime()) {\n        if (!this.isRecording()) {\n            return this; \n        }\n        this.addEvent('exception', {\n            exception,\n            timestamp: now\n        });\n        return this;\n    }\n\n    setAttribute(key, value) {\n        if (!this.isRecording()) {\n            return this; \n        }\n        if (value !== undefined && value !== null) {\n            if (Object.keys(this.attributes).length >= MAX_ATTRIBUTES_COUNT && !(key in this.attributes)) {\n                console.warn(`Span attribute limit (${MAX_ATTRIBUTES_COUNT}) exceeded. Dropping attribute: ${key}`);\n                return this;\n            }\n            \n            let processedValue = value;\n            if (typeof value === 'function') {\n                processedValue = '[Function]';\n                console.warn(`Attribute value for key '${key}' is a function and has been sanitized. Functions are not serializable.`)\n            }\n            else if (typeof value === 'string' && value.length > MAX_ATTRIBUTE_VALUE_LENGTH) {\n                processedValue = value.substring(0, MAX_ATTRIBUTE_VALUE_LENGTH) + '...';\n                console.warn(`Attribute value truncated for key: ${key}`);\n            }\n            this.attributes[key] = processedValue;\n        }\n        return this;\n    }\n\n    setAttributes(attributes) {\n        if (!this.isRecording() || !attributes) {\n            return this;\n        }\n        Object.keys(attributes).forEach(key => {\n            this.setAttribute(key, attributes[key]);\n        });\n        return this;\n    }\n\n    updateName(name) {\n        if (!this.isRecording()) {\n            return this; \n        }\n        this.name = name;\n        return this;\n    }\n\n    addLink(link) {\n        if (!this.isRecording()) {\n            return this; \n        }\n        \n        if (this.links.length >= MAX_LINKS_COUNT) {\n            console.warn(`Span link limit (${MAX_LINKS_COUNT}) exceeded. Dropping link`);\n            return this;\n        }\n        \n        this.links.push(link);\n        return this;\n    }\n}","export const SamplingDecision = {\n    NOT_RECORD: 0, \n    RECORD: 1,\n    RECORD_AND_SAMPLED: 2,\n};\n  ","import { SamplingDecision } from \"./sampler\";\n\nclass AlwaysOnSampler {\n    shouldSample(_options) {\n        return SamplingDecision.RECORD_AND_SAMPLED;\n    }\n\n    toString() {\n        return this.constructor.name;\n    }\n}\n\nexport default AlwaysOnSampler;","import { contextManager, SPAN_CONTEXT_KEY } from './context';\nimport { NonRecordingSpan } from './span';\n\n/**\n * A no-op implementation of the Tracer interface. This tracer returns\n * non-recording spans and does not interact with a SpanProcessor.\n */\nclass NoopTracer {\n  /**\n   * Starts a new `NonRecordingSpan`.\n   */\n  startSpan(_name, _options = {}, context = contextManager.active()) {\n    const parentSpan = context.getValue(SPAN_CONTEXT_KEY);\n\n    // If the parent context is a valid recording span, we still want to\n    // propagate its context, even if we aren't recording a new span.\n    if (parentSpan && parentSpan.isRecording()) {\n      return parentSpan;\n    }\n\n    return new NonRecordingSpan();\n  }\n\n  /**\n   * Starts a new active span and runs the given function.\n   */\n  startActiveSpan(name, options, fn , context) {\n    if (!fn) {\n      throw new Error('No function provided to startActiveSpan');\n    }\n    const span = this.startSpan(name, options, context);\n    const newContext = contextManager.active().setValue(SPAN_CONTEXT_KEY, span);\n    return contextManager.with(newContext, fn, null, span);\n  }\n\n  withSpan(span, fn) {\n    if (!fn) {\n      throw new Error('No function provided to withSpan');\n    }\n    return fn(span);\n  }\n\n  getActiveSpan() {\n    return null;\n  }\n}\n\nexport const noopTracer = new NoopTracer();\n","import { contextManager, traceApi } from './context/';\nimport { NonRecordingSpan, RecordingSpan } from './span/';\nimport { SamplingDecision } from './sampler';\nimport { noopTracer } from './NoopTracer';\nimport { isTracingEnabled } from './utils/isTracingEnabled';\nimport { CONFIG_CHANGED } from '../constants';\nimport { eventEmitter } from '../EventEmitter';\n\nclass TracerImpl {\n    constructor(spanProcessor, sampler, instrumentationScope) {\n        this._spanProcessor = spanProcessor;\n        this._sampler = sampler;\n        this._instrumentationScope = instrumentationScope;\n    }\n\n    startSpan(name, options = {}, context = contextManager.active()) {\n        const samplingDecision = this._sampler.shouldSample({ name, options, context });\n        if (samplingDecision === SamplingDecision.NOT_RECORD) {\n            return new NonRecordingSpan();\n        }\n        return new RecordingSpan(name, options, context, this._spanProcessor, this._instrumentationScope);\n    }\n\n    startActiveSpan(name, options = {}, fn, parentContext = contextManager.active()) {\n        if (!fn) {\n            throw new Error('No function provided to startActiveSpan');\n        }\n        const activeSpan = this.startSpan(name, options, parentContext);\n\n        if (activeSpan instanceof NonRecordingSpan) {\n            try {\n                return fn(activeSpan);\n            } finally {\n                activeSpan.end();\n            }\n        }\n\n        const contextWithCurrentSpan = traceApi.setSpan(parentContext, activeSpan);\n\n        try {\n            return contextManager.with(contextWithCurrentSpan, fn, undefined, activeSpan);\n        } finally {\n            if (!activeSpan._ended) {\n                activeSpan.end();\n            }\n        }\n    }\n\n    withSpan(span, fn) {\n        if (span instanceof NonRecordingSpan) {\n            return fn(span);\n        }\n        return contextManager.with(traceApi.setSpan(contextManager.active(), span), fn, undefined, span);\n    }\n\n    getActiveSpan() {\n        return traceApi.getSpan(contextManager.active());\n    }\n}\n\n/**\n * The Tracer is responsible for creating spans. It acts as a proxy, delegating\n * to a real or no-op implementation based on whether tracing is enabled or not.\n */\nexport class Tracer {\n    constructor(spanProcessor, sampler, instrumentationScope) {\n        this._noOpTracer = noopTracer;\n        this._realTracer = new TracerImpl(spanProcessor, sampler, instrumentationScope);\n        this._enabled = isTracingEnabled();\n        this._setCurrentTracer(this._enabled ? this._realTracer : this._noOpTracer);\n        eventEmitter.on(CONFIG_CHANGED, ({ key, value }) => {\n            if (key === 'enableTrace') {\n                this._enabled = value;\n                this._setCurrentTracer(this._enabled ? this._realTracer : this._noOpTracer);\n            }\n        });\n    }\n\n    _setCurrentTracer(currentImpl) {\n        this._impl = currentImpl;\n    }\n\n    startSpan(name, options, context) {\n        return this._impl.startSpan(name, options, context);\n    }\n\n    startActiveSpan(name, options, fn, context) {\n        return this._impl.startActiveSpan(name, options, fn, context);\n    }\n\n    withSpan(span, fn) {\n        return this._impl.withSpan(span, fn);\n    }\n\n    getActiveSpan() {\n        return this._impl.getActiveSpan();\n    }\n}","import { BatchSpanProcessor } from './processor';\nimport { Tracer } from './Tracer';\nimport { AlwaysOnSampler } from './sampler';\n\n/**\n * A TracerProvider is the entry point of the API.\n * It provides Tracers that are responsible for creating spans.\n */\nexport default class TracerProvider {\n    _spanProcessor;\n    _sampler;\n\n    /**\n     * @param {object} config The configuration object for the TracerProvider.\n     */\n    constructor(config = {}) {\n        const { spanProcessor, sampler } = config;\n        this._spanProcessor = spanProcessor || new BatchSpanProcessor(config.exporter);\n        this._sampler = sampler || new AlwaysOnSampler();\n    }\n\n    /**\n     * Gets a Tracer instance.\n     * @param {string} name The name of the instrumentation library (e.g., 'ui-framework')\n     * @param {string} [version] The version of the instrumentation library.\n     * @returns {Tracer}\n     */\n    getTracer(name, version = '1.0.0') {\n        return new Tracer(this._spanProcessor, this._sampler, { name, version });\n    }\n}","import {\n\tcreateAnalyticsApi,\n\tsetUser,\n\tgetUser,\n\tsetPage,\n\tgetPage,\n\tsetConfigValue,\n\tgetConfigValue,\n\tonEvent,\n\tcreateTraceParent,\n\tcreateTraceId,\n\tcreateTraceParentHeader,\n\tgetQueuedEvents,\n\tsetApplication,\n\tgetApplication,\n\tisSpanContextValid,\n\tisValidSpanId,\n\tisValidTraceId,\n} from '@servicenow/ui-analytics-core';\nconst {trace, tracer, context, track, metrics: {createCounter, createGauge, createHistogram}} = createAnalyticsApi();\nexport {tracer};\nexport {trace};\nexport {context};\nexport {track};\nexport {createCounter};\nexport {createGauge};\nexport {createHistogram};\nexport {setUser};\nexport {getUser};\nexport {setPage};\nexport {getPage};\nexport {setConfigValue};\nexport {getConfigValue};\nexport {onEvent};\nexport {createTraceParent};\nexport {createTraceId};\nexport {createTraceParentHeader};\nexport {getQueuedEvents};\nexport {setApplication};\nexport {getApplication};\nexport {isSpanContextValid};\nexport {isValidSpanId};\nexport {isValidTraceId};\n","import { set as setConfigValue } from './config';\nimport createTracker from './createTracker';\nimport createMetrics from './createMetrics';\nimport { set as setPage } from './page';\nimport initInteractionsTracker from './initInteractionsTracker';\nimport exporter from './exporter';\nimport {contextManager} from './trace/context';\nimport TracerProvider from './trace/TracerProvider';\nimport { createEventTracer } from './trace/utils/';\nimport {AlwaysOnSampler} from './trace/sampler';\nimport {BatchSpanProcessor} from './trace/processor';\nimport { APP_NAME } from './constants';\n\nexport { setPage as page };\n\nexport default function createAnalyticsApi(apiConfig) {\n\tfor (const k in apiConfig) setConfigValue(k, apiConfig[k]);\n\n\tsetPage();\n\n\tinitInteractionsTracker(exporter);\n\t// trace & trace context bootstrap\n\tconst tracerProvider = new TracerProvider({\n\t\tspanProcessor: new BatchSpanProcessor(exporter),\n\t\tsampler: new AlwaysOnSampler(),\n\t});\n\tconst tracer = tracerProvider.getTracer(APP_NAME);\n\tconst eventTracer = createEventTracer(tracer, contextManager);\n\teventTracer.init();\n\t\n\treturn {\n\t\ttrace: tracer.startSpan.bind(tracer),\n\t\ttracer,\n\t\tcontext: {\n\t\t\tactive: contextManager.active.bind(contextManager),\n\t\t\tbind: contextManager.bind.bind(contextManager),\n\t\t\twith: contextManager.with.bind(contextManager)\n\t\t},\n\t\ttrack: createTracker(exporter),\n\t\tmetrics: createMetrics(exporter),\n\t};\n}\n","'use strict';\n\nvar compileSchema = require('./compile')\n  , resolve = require('./compile/resolve')\n  , Cache = require('./cache')\n  , SchemaObject = require('./compile/schema_obj')\n  , stableStringify = require('fast-json-stable-stringify')\n  , formats = require('./compile/formats')\n  , rules = require('./compile/rules')\n  , $dataMetaSchema = require('./data')\n  , util = require('./compile/util');\n\nmodule.exports = Ajv;\n\nAjv.prototype.validate = validate;\nAjv.prototype.compile = compile;\nAjv.prototype.addSchema = addSchema;\nAjv.prototype.addMetaSchema = addMetaSchema;\nAjv.prototype.validateSchema = validateSchema;\nAjv.prototype.getSchema = getSchema;\nAjv.prototype.removeSchema = removeSchema;\nAjv.prototype.addFormat = addFormat;\nAjv.prototype.errorsText = errorsText;\n\nAjv.prototype._addSchema = _addSchema;\nAjv.prototype._compile = _compile;\n\nAjv.prototype.compileAsync = require('./compile/async');\nvar customKeyword = require('./keyword');\nAjv.prototype.addKeyword = customKeyword.add;\nAjv.prototype.getKeyword = customKeyword.get;\nAjv.prototype.removeKeyword = customKeyword.remove;\nAjv.prototype.validateKeyword = customKeyword.validate;\n\nvar errorClasses = require('./compile/error_classes');\nAjv.ValidationError = errorClasses.Validation;\nAjv.MissingRefError = errorClasses.MissingRef;\nAjv.$dataMetaSchema = $dataMetaSchema;\n\nvar META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema';\n\nvar META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes', 'strictDefaults' ];\nvar META_SUPPORT_DATA = ['/properties'];\n\n/**\n * Creates validator instance.\n * Usage: `Ajv(opts)`\n * @param {Object} opts optional options\n * @return {Object} ajv instance\n */\nfunction Ajv(opts) {\n  if (!(this instanceof Ajv)) return new Ajv(opts);\n  opts = this._opts = util.copy(opts) || {};\n  setLogger(this);\n  this._schemas = {};\n  this._refs = {};\n  this._fragments = {};\n  this._formats = formats(opts.format);\n\n  this._cache = opts.cache || new Cache;\n  this._loadingSchemas = {};\n  this._compilations = [];\n  this.RULES = rules();\n  this._getId = chooseGetId(opts);\n\n  opts.loopRequired = opts.loopRequired || Infinity;\n  if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true;\n  if (opts.serialize === undefined) opts.serialize = stableStringify;\n  this._metaOpts = getMetaSchemaOptions(this);\n\n  if (opts.formats) addInitialFormats(this);\n  if (opts.keywords) addInitialKeywords(this);\n  addDefaultMetaSchema(this);\n  if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);\n  if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}});\n  addInitialSchemas(this);\n}\n\n\n\n/**\n * Validate data using schema\n * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize.\n * @this   Ajv\n * @param  {String|Object} schemaKeyRef key, ref or schema object\n * @param  {Any} data to be validated\n * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).\n */\nfunction validate(schemaKeyRef, data) {\n  var v;\n  if (typeof schemaKeyRef == 'string') {\n    v = this.getSchema(schemaKeyRef);\n    if (!v) throw new Error('no schema with key or ref \"' + schemaKeyRef + '\"');\n  } else {\n    var schemaObj = this._addSchema(schemaKeyRef);\n    v = schemaObj.validate || this._compile(schemaObj);\n  }\n\n  var valid = v(data);\n  if (v.$async !== true) this.errors = v.errors;\n  return valid;\n}\n\n\n/**\n * Create validating function for passed schema.\n * @this   Ajv\n * @param  {Object} schema schema object\n * @param  {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords.\n * @return {Function} validating function\n */\nfunction compile(schema, _meta) {\n  var schemaObj = this._addSchema(schema, undefined, _meta);\n  return schemaObj.validate || this._compile(schemaObj);\n}\n\n\n/**\n * Adds schema to the instance.\n * @this   Ajv\n * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.\n * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead.\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n * @return {Ajv} this for method chaining\n */\nfunction addSchema(schema, key, _skipValidation, _meta) {\n  if (Array.isArray(schema)){\n    for (var i=0; i<schema.length; i++) this.addSchema(schema[i], undefined, _skipValidation, _meta);\n    return this;\n  }\n  var id = this._getId(schema);\n  if (id !== undefined && typeof id != 'string')\n    throw new Error('schema id must be string');\n  key = resolve.normalizeId(key || id);\n  checkUnique(this, key);\n  this._schemas[key] = this._addSchema(schema, _skipValidation, _meta, true);\n  return this;\n}\n\n\n/**\n * Add schema that will be used to validate other schemas\n * options in META_IGNORE_OPTIONS are alway set to false\n * @this   Ajv\n * @param {Object} schema schema object\n * @param {String} key optional schema key\n * @param {Boolean} skipValidation true to skip schema validation, can be used to override validateSchema option for meta-schema\n * @return {Ajv} this for method chaining\n */\nfunction addMetaSchema(schema, key, skipValidation) {\n  this.addSchema(schema, key, skipValidation, true);\n  return this;\n}\n\n\n/**\n * Validate schema\n * @this   Ajv\n * @param {Object} schema schema to validate\n * @param {Boolean} throwOrLogError pass true to throw (or log) an error if invalid\n * @return {Boolean} true if schema is valid\n */\nfunction validateSchema(schema, throwOrLogError) {\n  var $schema = schema.$schema;\n  if ($schema !== undefined && typeof $schema != 'string')\n    throw new Error('$schema must be a string');\n  $schema = $schema || this._opts.defaultMeta || defaultMeta(this);\n  if (!$schema) {\n    this.logger.warn('meta-schema not available');\n    this.errors = null;\n    return true;\n  }\n  var valid = this.validate($schema, schema);\n  if (!valid && throwOrLogError) {\n    var message = 'schema is invalid: ' + this.errorsText();\n    if (this._opts.validateSchema == 'log') this.logger.error(message);\n    else throw new Error(message);\n  }\n  return valid;\n}\n\n\nfunction defaultMeta(self) {\n  var meta = self._opts.meta;\n  self._opts.defaultMeta = typeof meta == 'object'\n                            ? self._getId(meta) || meta\n                            : self.getSchema(META_SCHEMA_ID)\n                              ? META_SCHEMA_ID\n                              : undefined;\n  return self._opts.defaultMeta;\n}\n\n\n/**\n * Get compiled schema from the instance by `key` or `ref`.\n * @this   Ajv\n * @param  {String} keyRef `key` that was passed to `addSchema` or full schema reference (`schema.id` or resolved id).\n * @return {Function} schema validating function (with property `schema`).\n */\nfunction getSchema(keyRef) {\n  var schemaObj = _getSchemaObj(this, keyRef);\n  switch (typeof schemaObj) {\n    case 'object': return schemaObj.validate || this._compile(schemaObj);\n    case 'string': return this.getSchema(schemaObj);\n    case 'undefined': return _getSchemaFragment(this, keyRef);\n  }\n}\n\n\nfunction _getSchemaFragment(self, ref) {\n  var res = resolve.schema.call(self, { schema: {} }, ref);\n  if (res) {\n    var schema = res.schema\n      , root = res.root\n      , baseId = res.baseId;\n    var v = compileSchema.call(self, schema, root, undefined, baseId);\n    self._fragments[ref] = new SchemaObject({\n      ref: ref,\n      fragment: true,\n      schema: schema,\n      root: root,\n      baseId: baseId,\n      validate: v\n    });\n    return v;\n  }\n}\n\n\nfunction _getSchemaObj(self, keyRef) {\n  keyRef = resolve.normalizeId(keyRef);\n  return self._schemas[keyRef] || self._refs[keyRef] || self._fragments[keyRef];\n}\n\n\n/**\n * Remove cached schema(s).\n * If no parameter is passed all schemas but meta-schemas are removed.\n * If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n * Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n * @this   Ajv\n * @param  {String|Object|RegExp} schemaKeyRef key, ref, pattern to match key/ref or schema object\n * @return {Ajv} this for method chaining\n */\nfunction removeSchema(schemaKeyRef) {\n  if (schemaKeyRef instanceof RegExp) {\n    _removeAllSchemas(this, this._schemas, schemaKeyRef);\n    _removeAllSchemas(this, this._refs, schemaKeyRef);\n    return this;\n  }\n  switch (typeof schemaKeyRef) {\n    case 'undefined':\n      _removeAllSchemas(this, this._schemas);\n      _removeAllSchemas(this, this._refs);\n      this._cache.clear();\n      return this;\n    case 'string':\n      var schemaObj = _getSchemaObj(this, schemaKeyRef);\n      if (schemaObj) this._cache.del(schemaObj.cacheKey);\n      delete this._schemas[schemaKeyRef];\n      delete this._refs[schemaKeyRef];\n      return this;\n    case 'object':\n      var serialize = this._opts.serialize;\n      var cacheKey = serialize ? serialize(schemaKeyRef) : schemaKeyRef;\n      this._cache.del(cacheKey);\n      var id = this._getId(schemaKeyRef);\n      if (id) {\n        id = resolve.normalizeId(id);\n        delete this._schemas[id];\n        delete this._refs[id];\n      }\n  }\n  return this;\n}\n\n\nfunction _removeAllSchemas(self, schemas, regex) {\n  for (var keyRef in schemas) {\n    var schemaObj = schemas[keyRef];\n    if (!schemaObj.meta && (!regex || regex.test(keyRef))) {\n      self._cache.del(schemaObj.cacheKey);\n      delete schemas[keyRef];\n    }\n  }\n}\n\n\n/* @this   Ajv */\nfunction _addSchema(schema, skipValidation, meta, shouldAddSchema) {\n  if (typeof schema != 'object' && typeof schema != 'boolean')\n    throw new Error('schema should be object or boolean');\n  var serialize = this._opts.serialize;\n  var cacheKey = serialize ? serialize(schema) : schema;\n  var cached = this._cache.get(cacheKey);\n  if (cached) return cached;\n\n  shouldAddSchema = shouldAddSchema || this._opts.addUsedSchema !== false;\n\n  var id = resolve.normalizeId(this._getId(schema));\n  if (id && shouldAddSchema) checkUnique(this, id);\n\n  var willValidate = this._opts.validateSchema !== false && !skipValidation;\n  var recursiveMeta;\n  if (willValidate && !(recursiveMeta = id && id == resolve.normalizeId(schema.$schema)))\n    this.validateSchema(schema, true);\n\n  var localRefs = resolve.ids.call(this, schema);\n\n  var schemaObj = new SchemaObject({\n    id: id,\n    schema: schema,\n    localRefs: localRefs,\n    cacheKey: cacheKey,\n    meta: meta\n  });\n\n  if (id[0] != '#' && shouldAddSchema) this._refs[id] = schemaObj;\n  this._cache.put(cacheKey, schemaObj);\n\n  if (willValidate && recursiveMeta) this.validateSchema(schema, true);\n\n  return schemaObj;\n}\n\n\n/* @this   Ajv */\nfunction _compile(schemaObj, root) {\n  if (schemaObj.compiling) {\n    schemaObj.validate = callValidate;\n    callValidate.schema = schemaObj.schema;\n    callValidate.errors = null;\n    callValidate.root = root ? root : callValidate;\n    if (schemaObj.schema.$async === true)\n      callValidate.$async = true;\n    return callValidate;\n  }\n  schemaObj.compiling = true;\n\n  var currentOpts;\n  if (schemaObj.meta) {\n    currentOpts = this._opts;\n    this._opts = this._metaOpts;\n  }\n\n  var v;\n  try { v = compileSchema.call(this, schemaObj.schema, root, schemaObj.localRefs); }\n  catch(e) {\n    delete schemaObj.validate;\n    throw e;\n  }\n  finally {\n    schemaObj.compiling = false;\n    if (schemaObj.meta) this._opts = currentOpts;\n  }\n\n  schemaObj.validate = v;\n  schemaObj.refs = v.refs;\n  schemaObj.refVal = v.refVal;\n  schemaObj.root = v.root;\n  return v;\n\n\n  /* @this   {*} - custom context, see passContext option */\n  function callValidate() {\n    /* jshint validthis: true */\n    var _validate = schemaObj.validate;\n    var result = _validate.apply(this, arguments);\n    callValidate.errors = _validate.errors;\n    return result;\n  }\n}\n\n\nfunction chooseGetId(opts) {\n  switch (opts.schemaId) {\n    case 'auto': return _get$IdOrId;\n    case 'id': return _getId;\n    default: return _get$Id;\n  }\n}\n\n/* @this   Ajv */\nfunction _getId(schema) {\n  if (schema.$id) this.logger.warn('schema $id ignored', schema.$id);\n  return schema.id;\n}\n\n/* @this   Ajv */\nfunction _get$Id(schema) {\n  if (schema.id) this.logger.warn('schema id ignored', schema.id);\n  return schema.$id;\n}\n\n\nfunction _get$IdOrId(schema) {\n  if (schema.$id && schema.id && schema.$id != schema.id)\n    throw new Error('schema $id is different from id');\n  return schema.$id || schema.id;\n}\n\n\n/**\n * Convert array of error message objects to string\n * @this   Ajv\n * @param  {Array<Object>} errors optional array of validation errors, if not passed errors from the instance are used.\n * @param  {Object} options optional options with properties `separator` and `dataVar`.\n * @return {String} human readable string with all errors descriptions\n */\nfunction errorsText(errors, options) {\n  errors = errors || this.errors;\n  if (!errors) return 'No errors';\n  options = options || {};\n  var separator = options.separator === undefined ? ', ' : options.separator;\n  var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;\n\n  var text = '';\n  for (var i=0; i<errors.length; i++) {\n    var e = errors[i];\n    if (e) text += dataVar + e.dataPath + ' ' + e.message + separator;\n  }\n  return text.slice(0, -separator.length);\n}\n\n\n/**\n * Add custom format\n * @this   Ajv\n * @param {String} name format name\n * @param {String|RegExp|Function} format string is converted to RegExp; function should return boolean (true when valid)\n * @return {Ajv} this for method chaining\n */\nfunction addFormat(name, format) {\n  if (typeof format == 'string') format = new RegExp(format);\n  this._formats[name] = format;\n  return this;\n}\n\n\nfunction addDefaultMetaSchema(self) {\n  var $dataSchema;\n  if (self._opts.$data) {\n    $dataSchema = require('./refs/data.json');\n    self.addMetaSchema($dataSchema, $dataSchema.$id, true);\n  }\n  if (self._opts.meta === false) return;\n  var metaSchema = require('./refs/json-schema-draft-07.json');\n  if (self._opts.$data) metaSchema = $dataMetaSchema(metaSchema, META_SUPPORT_DATA);\n  self.addMetaSchema(metaSchema, META_SCHEMA_ID, true);\n  self._refs['http://json-schema.org/schema'] = META_SCHEMA_ID;\n}\n\n\nfunction addInitialSchemas(self) {\n  var optsSchemas = self._opts.schemas;\n  if (!optsSchemas) return;\n  if (Array.isArray(optsSchemas)) self.addSchema(optsSchemas);\n  else for (var key in optsSchemas) self.addSchema(optsSchemas[key], key);\n}\n\n\nfunction addInitialFormats(self) {\n  for (var name in self._opts.formats) {\n    var format = self._opts.formats[name];\n    self.addFormat(name, format);\n  }\n}\n\n\nfunction addInitialKeywords(self) {\n  for (var name in self._opts.keywords) {\n    var keyword = self._opts.keywords[name];\n    self.addKeyword(name, keyword);\n  }\n}\n\n\nfunction checkUnique(self, id) {\n  if (self._schemas[id] || self._refs[id])\n    throw new Error('schema with key or id \"' + id + '\" already exists');\n}\n\n\nfunction getMetaSchemaOptions(self) {\n  var metaOpts = util.copy(self._opts);\n  for (var i=0; i<META_IGNORE_OPTIONS.length; i++)\n    delete metaOpts[META_IGNORE_OPTIONS[i]];\n  return metaOpts;\n}\n\n\nfunction setLogger(self) {\n  var logger = self._opts.logger;\n  if (logger === false) {\n    self.logger = {log: noop, warn: noop, error: noop};\n  } else {\n    if (logger === undefined) logger = console;\n    if (!(typeof logger == 'object' && logger.log && logger.warn && logger.error))\n      throw new Error('logger must implement log, warn and error methods');\n    self.logger = logger;\n  }\n}\n\n\nfunction noop() {}\n","'use strict';\n\n\nvar Cache = module.exports = function Cache() {\n  this._cache = {};\n};\n\n\nCache.prototype.put = function Cache_put(key, value) {\n  this._cache[key] = value;\n};\n\n\nCache.prototype.get = function Cache_get(key) {\n  return this._cache[key];\n};\n\n\nCache.prototype.del = function Cache_del(key) {\n  delete this._cache[key];\n};\n\n\nCache.prototype.clear = function Cache_clear() {\n  this._cache = {};\n};\n","'use strict';\n\nvar MissingRefError = require('./error_classes').MissingRef;\n\nmodule.exports = compileAsync;\n\n\n/**\n * Creates validating function for passed schema with asynchronous loading of missing schemas.\n * `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n * @this  Ajv\n * @param {Object}   schema schema object\n * @param {Boolean}  meta optional true to compile meta-schema; this parameter can be skipped\n * @param {Function} callback an optional node-style callback, it is called with 2 parameters: error (or null) and validating function.\n * @return {Promise} promise that resolves with a validating function.\n */\nfunction compileAsync(schema, meta, callback) {\n  /* eslint no-shadow: 0 */\n  /* global Promise */\n  /* jshint validthis: true */\n  var self = this;\n  if (typeof this._opts.loadSchema != 'function')\n    throw new Error('options.loadSchema should be a function');\n\n  if (typeof meta == 'function') {\n    callback = meta;\n    meta = undefined;\n  }\n\n  var p = loadMetaSchemaOf(schema).then(function () {\n    var schemaObj = self._addSchema(schema, undefined, meta);\n    return schemaObj.validate || _compileAsync(schemaObj);\n  });\n\n  if (callback) {\n    p.then(\n      function(v) { callback(null, v); },\n      callback\n    );\n  }\n\n  return p;\n\n\n  function loadMetaSchemaOf(sch) {\n    var $schema = sch.$schema;\n    return $schema && !self.getSchema($schema)\n            ? compileAsync.call(self, { $ref: $schema }, true)\n            : Promise.resolve();\n  }\n\n\n  function _compileAsync(schemaObj) {\n    try { return self._compile(schemaObj); }\n    catch(e) {\n      if (e instanceof MissingRefError) return loadMissingSchema(e);\n      throw e;\n    }\n\n\n    function loadMissingSchema(e) {\n      var ref = e.missingSchema;\n      if (added(ref)) throw new Error('Schema ' + ref + ' is loaded but ' + e.missingRef + ' cannot be resolved');\n\n      var schemaPromise = self._loadingSchemas[ref];\n      if (!schemaPromise) {\n        schemaPromise = self._loadingSchemas[ref] = self._opts.loadSchema(ref);\n        schemaPromise.then(removePromise, removePromise);\n      }\n\n      return schemaPromise.then(function (sch) {\n        if (!added(ref)) {\n          return loadMetaSchemaOf(sch).then(function () {\n            if (!added(ref)) self.addSchema(sch, ref, undefined, meta);\n          });\n        }\n      }).then(function() {\n        return _compileAsync(schemaObj);\n      });\n\n      function removePromise() {\n        delete self._loadingSchemas[ref];\n      }\n\n      function added(ref) {\n        return self._refs[ref] || self._schemas[ref];\n      }\n    }\n  }\n}\n","'use strict';\n\nvar resolve = require('./resolve');\n\nmodule.exports = {\n  Validation: errorSubclass(ValidationError),\n  MissingRef: errorSubclass(MissingRefError)\n};\n\n\nfunction ValidationError(errors) {\n  this.message = 'validation failed';\n  this.errors = errors;\n  this.ajv = this.validation = true;\n}\n\n\nMissingRefError.message = function (baseId, ref) {\n  return 'can\\'t resolve reference ' + ref + ' from id ' + baseId;\n};\n\n\nfunction MissingRefError(baseId, ref, message) {\n  this.message = message || MissingRefError.message(baseId, ref);\n  this.missingRef = resolve.url(baseId, ref);\n  this.missingSchema = resolve.normalizeId(resolve.fullPath(this.missingRef));\n}\n\n\nfunction errorSubclass(Subclass) {\n  Subclass.prototype = Object.create(Error.prototype);\n  Subclass.prototype.constructor = Subclass;\n  return Subclass;\n}\n","'use strict';\n\nvar util = require('./util');\n\nvar DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/;\nvar DAYS = [0,31,28,31,30,31,30,31,31,30,31,30,31];\nvar TIME = /^(\\d\\d):(\\d\\d):(\\d\\d)(\\.\\d+)?(z|[+-]\\d\\d(?::?\\d\\d)?)?$/i;\nvar HOSTNAME = /^(?=.{1,253}\\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\\.?$/i;\nvar URI = /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\nvar URIREF = /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\n// uri-template: https://tools.ietf.org/html/rfc6570\nvar URITEMPLATE = /^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i;\n// For the source: https://gist.github.com/dperini/729294\n// For test cases: https://mathiasbynens.be/demo/url-regex\n// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.\n// var URL = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!10(?:\\.\\d{1,3}){3})(?!127(?:\\.\\d{1,3}){3})(?!169\\.254(?:\\.\\d{1,3}){2})(?!192\\.168(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-)*[a-z\\u{00a1}-\\u{ffff}0-9]+)(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-)*[a-z\\u{00a1}-\\u{ffff}0-9]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu;\nvar URL = /^(?:(?:http[s\\u017F]?|ftp):\\/\\/)(?:(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+(?::(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?@)?(?:(?!10(?:\\.[0-9]{1,3}){3})(?!127(?:\\.[0-9]{1,3}){3})(?!169\\.254(?:\\.[0-9]{1,3}){2})(?!192\\.168(?:\\.[0-9]{1,3}){2})(?!172\\.(?:1[6-9]|2[0-9]|3[01])(?:\\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)(?:\\.(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)*(?:\\.(?:(?:[a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\\/(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?$/i;\nvar UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;\nvar JSON_POINTER = /^(?:\\/(?:[^~/]|~0|~1)*)*$/;\nvar JSON_POINTER_URI_FRAGMENT = /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;\nvar RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/;\n\n\nmodule.exports = formats;\n\nfunction formats(mode) {\n  mode = mode == 'full' ? 'full' : 'fast';\n  return util.copy(formats[mode]);\n}\n\n\nformats.fast = {\n  // date: http://tools.ietf.org/html/rfc3339#section-5.6\n  date: /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/,\n  // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n  time: /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n  'date-time': /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n  // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n  uri: /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n  'uri-reference': /^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n  'uri-template': URITEMPLATE,\n  url: URL,\n  // email (sources from jsen validator):\n  // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n  // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')\n  email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n  hostname: HOSTNAME,\n  // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n  ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n  // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses\n  ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n  regex: regex,\n  // uuid: http://tools.ietf.org/html/rfc4122\n  uuid: UUID,\n  // JSON-pointer: https://tools.ietf.org/html/rfc6901\n  // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n  'json-pointer': JSON_POINTER,\n  'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n  // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n  'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nformats.full = {\n  date: date,\n  time: time,\n  'date-time': date_time,\n  uri: uri,\n  'uri-reference': URIREF,\n  'uri-template': URITEMPLATE,\n  url: URL,\n  email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n  hostname: HOSTNAME,\n  ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n  ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n  regex: regex,\n  uuid: UUID,\n  'json-pointer': JSON_POINTER,\n  'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n  'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nfunction isLeapYear(year) {\n  // https://tools.ietf.org/html/rfc3339#appendix-C\n  return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\n\nfunction date(str) {\n  // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n  var matches = str.match(DATE);\n  if (!matches) return false;\n\n  var year = +matches[1];\n  var month = +matches[2];\n  var day = +matches[3];\n\n  return month >= 1 && month <= 12 && day >= 1 &&\n          day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]);\n}\n\n\nfunction time(str, full) {\n  var matches = str.match(TIME);\n  if (!matches) return false;\n\n  var hour = matches[1];\n  var minute = matches[2];\n  var second = matches[3];\n  var timeZone = matches[5];\n  return ((hour <= 23 && minute <= 59 && second <= 59) ||\n          (hour == 23 && minute == 59 && second == 60)) &&\n         (!full || timeZone);\n}\n\n\nvar DATE_TIME_SEPARATOR = /t|\\s/i;\nfunction date_time(str) {\n  // http://tools.ietf.org/html/rfc3339#section-5.6\n  var dateTime = str.split(DATE_TIME_SEPARATOR);\n  return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true);\n}\n\n\nvar NOT_URI_FRAGMENT = /\\/|:/;\nfunction uri(str) {\n  // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n  return NOT_URI_FRAGMENT.test(str) && URI.test(str);\n}\n\n\nvar Z_ANCHOR = /[^\\\\]\\\\Z/;\nfunction regex(str) {\n  if (Z_ANCHOR.test(str)) return false;\n  try {\n    new RegExp(str);\n    return true;\n  } catch(e) {\n    return false;\n  }\n}\n","'use strict';\n\nvar resolve = require('./resolve')\n  , util = require('./util')\n  , errorClasses = require('./error_classes')\n  , stableStringify = require('fast-json-stable-stringify');\n\nvar validateGenerator = require('../dotjs/validate');\n\n/**\n * Functions below are used inside compiled validations function\n */\n\nvar ucs2length = util.ucs2length;\nvar equal = require('fast-deep-equal');\n\n// this error is thrown by async schemas to return validation errors via exception\nvar ValidationError = errorClasses.Validation;\n\nmodule.exports = compile;\n\n\n/**\n * Compiles schema to validation function\n * @this   Ajv\n * @param  {Object} schema schema object\n * @param  {Object} root object with information about the root schema for this schema\n * @param  {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution\n * @param  {String} baseId base ID for IDs in the schema\n * @return {Function} validation function\n */\nfunction compile(schema, root, localRefs, baseId) {\n  /* jshint validthis: true, evil: true */\n  /* eslint no-shadow: 0 */\n  var self = this\n    , opts = this._opts\n    , refVal = [ undefined ]\n    , refs = {}\n    , patterns = []\n    , patternsHash = {}\n    , defaults = []\n    , defaultsHash = {}\n    , customRules = [];\n\n  root = root || { schema: schema, refVal: refVal, refs: refs };\n\n  var c = checkCompiling.call(this, schema, root, baseId);\n  var compilation = this._compilations[c.index];\n  if (c.compiling) return (compilation.callValidate = callValidate);\n\n  var formats = this._formats;\n  var RULES = this.RULES;\n\n  try {\n    var v = localCompile(schema, root, localRefs, baseId);\n    compilation.validate = v;\n    var cv = compilation.callValidate;\n    if (cv) {\n      cv.schema = v.schema;\n      cv.errors = null;\n      cv.refs = v.refs;\n      cv.refVal = v.refVal;\n      cv.root = v.root;\n      cv.$async = v.$async;\n      if (opts.sourceCode) cv.source = v.source;\n    }\n    return v;\n  } finally {\n    endCompiling.call(this, schema, root, baseId);\n  }\n\n  /* @this   {*} - custom context, see passContext option */\n  function callValidate() {\n    /* jshint validthis: true */\n    var validate = compilation.validate;\n    var result = validate.apply(this, arguments);\n    callValidate.errors = validate.errors;\n    return result;\n  }\n\n  function localCompile(_schema, _root, localRefs, baseId) {\n    var isRoot = !_root || (_root && _root.schema == _schema);\n    if (_root.schema != root.schema)\n      return compile.call(self, _schema, _root, localRefs, baseId);\n\n    var $async = _schema.$async === true;\n\n    var sourceCode = validateGenerator({\n      isTop: true,\n      schema: _schema,\n      isRoot: isRoot,\n      baseId: baseId,\n      root: _root,\n      schemaPath: '',\n      errSchemaPath: '#',\n      errorPath: '\"\"',\n      MissingRefError: errorClasses.MissingRef,\n      RULES: RULES,\n      validate: validateGenerator,\n      util: util,\n      resolve: resolve,\n      resolveRef: resolveRef,\n      usePattern: usePattern,\n      useDefault: useDefault,\n      useCustomRule: useCustomRule,\n      opts: opts,\n      formats: formats,\n      logger: self.logger,\n      self: self\n    });\n\n    sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode)\n                   + vars(defaults, defaultCode) + vars(customRules, customRuleCode)\n                   + sourceCode;\n\n    if (opts.processCode) sourceCode = opts.processCode(sourceCode, _schema);\n    // console.log('\\n\\n\\n *** \\n', JSON.stringify(sourceCode));\n    var validate;\n    try {\n      var makeValidate = new Function(\n        'self',\n        'RULES',\n        'formats',\n        'root',\n        'refVal',\n        'defaults',\n        'customRules',\n        'equal',\n        'ucs2length',\n        'ValidationError',\n        sourceCode\n      );\n\n      validate = makeValidate(\n        self,\n        RULES,\n        formats,\n        root,\n        refVal,\n        defaults,\n        customRules,\n        equal,\n        ucs2length,\n        ValidationError\n      );\n\n      refVal[0] = validate;\n    } catch(e) {\n      self.logger.error('Error compiling schema, function code:', sourceCode);\n      throw e;\n    }\n\n    validate.schema = _schema;\n    validate.errors = null;\n    validate.refs = refs;\n    validate.refVal = refVal;\n    validate.root = isRoot ? validate : _root;\n    if ($async) validate.$async = true;\n    if (opts.sourceCode === true) {\n      validate.source = {\n        code: sourceCode,\n        patterns: patterns,\n        defaults: defaults\n      };\n    }\n\n    return validate;\n  }\n\n  function resolveRef(baseId, ref, isRoot) {\n    ref = resolve.url(baseId, ref);\n    var refIndex = refs[ref];\n    var _refVal, refCode;\n    if (refIndex !== undefined) {\n      _refVal = refVal[refIndex];\n      refCode = 'refVal[' + refIndex + ']';\n      return resolvedRef(_refVal, refCode);\n    }\n    if (!isRoot && root.refs) {\n      var rootRefId = root.refs[ref];\n      if (rootRefId !== undefined) {\n        _refVal = root.refVal[rootRefId];\n        refCode = addLocalRef(ref, _refVal);\n        return resolvedRef(_refVal, refCode);\n      }\n    }\n\n    refCode = addLocalRef(ref);\n    var v = resolve.call(self, localCompile, root, ref);\n    if (v === undefined) {\n      var localSchema = localRefs && localRefs[ref];\n      if (localSchema) {\n        v = resolve.inlineRef(localSchema, opts.inlineRefs)\n            ? localSchema\n            : compile.call(self, localSchema, root, localRefs, baseId);\n      }\n    }\n\n    if (v === undefined) {\n      removeLocalRef(ref);\n    } else {\n      replaceLocalRef(ref, v);\n      return resolvedRef(v, refCode);\n    }\n  }\n\n  function addLocalRef(ref, v) {\n    var refId = refVal.length;\n    refVal[refId] = v;\n    refs[ref] = refId;\n    return 'refVal' + refId;\n  }\n\n  function removeLocalRef(ref) {\n    delete refs[ref];\n  }\n\n  function replaceLocalRef(ref, v) {\n    var refId = refs[ref];\n    refVal[refId] = v;\n  }\n\n  function resolvedRef(refVal, code) {\n    return typeof refVal == 'object' || typeof refVal == 'boolean'\n            ? { code: code, schema: refVal, inline: true }\n            : { code: code, $async: refVal && !!refVal.$async };\n  }\n\n  function usePattern(regexStr) {\n    var index = patternsHash[regexStr];\n    if (index === undefined) {\n      index = patternsHash[regexStr] = patterns.length;\n      patterns[index] = regexStr;\n    }\n    return 'pattern' + index;\n  }\n\n  function useDefault(value) {\n    switch (typeof value) {\n      case 'boolean':\n      case 'number':\n        return '' + value;\n      case 'string':\n        return util.toQuotedString(value);\n      case 'object':\n        if (value === null) return 'null';\n        var valueStr = stableStringify(value);\n        var index = defaultsHash[valueStr];\n        if (index === undefined) {\n          index = defaultsHash[valueStr] = defaults.length;\n          defaults[index] = value;\n        }\n        return 'default' + index;\n    }\n  }\n\n  function useCustomRule(rule, schema, parentSchema, it) {\n    if (self._opts.validateSchema !== false) {\n      var deps = rule.definition.dependencies;\n      if (deps && !deps.every(function(keyword) {\n        return Object.prototype.hasOwnProperty.call(parentSchema, keyword);\n      }))\n        throw new Error('parent schema must have all required keywords: ' + deps.join(','));\n\n      var validateSchema = rule.definition.validateSchema;\n      if (validateSchema) {\n        var valid = validateSchema(schema);\n        if (!valid) {\n          var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);\n          if (self._opts.validateSchema == 'log') self.logger.error(message);\n          else throw new Error(message);\n        }\n      }\n    }\n\n    var compile = rule.definition.compile\n      , inline = rule.definition.inline\n      , macro = rule.definition.macro;\n\n    var validate;\n    if (compile) {\n      validate = compile.call(self, schema, parentSchema, it);\n    } else if (macro) {\n      validate = macro.call(self, schema, parentSchema, it);\n      if (opts.validateSchema !== false) self.validateSchema(validate, true);\n    } else if (inline) {\n      validate = inline.call(self, it, rule.keyword, schema, parentSchema);\n    } else {\n      validate = rule.definition.validate;\n      if (!validate) return;\n    }\n\n    if (validate === undefined)\n      throw new Error('custom keyword \"' + rule.keyword + '\"failed to compile');\n\n    var index = customRules.length;\n    customRules[index] = validate;\n\n    return {\n      code: 'customRule' + index,\n      validate: validate\n    };\n  }\n}\n\n\n/**\n * Checks if the schema is currently compiled\n * @this   Ajv\n * @param  {Object} schema schema to compile\n * @param  {Object} root root object\n * @param  {String} baseId base schema ID\n * @return {Object} object with properties \"index\" (compilation index) and \"compiling\" (boolean)\n */\nfunction checkCompiling(schema, root, baseId) {\n  /* jshint validthis: true */\n  var index = compIndex.call(this, schema, root, baseId);\n  if (index >= 0) return { index: index, compiling: true };\n  index = this._compilations.length;\n  this._compilations[index] = {\n    schema: schema,\n    root: root,\n    baseId: baseId\n  };\n  return { index: index, compiling: false };\n}\n\n\n/**\n * Removes the schema from the currently compiled list\n * @this   Ajv\n * @param  {Object} schema schema to compile\n * @param  {Object} root root object\n * @param  {String} baseId base schema ID\n */\nfunction endCompiling(schema, root, baseId) {\n  /* jshint validthis: true */\n  var i = compIndex.call(this, schema, root, baseId);\n  if (i >= 0) this._compilations.splice(i, 1);\n}\n\n\n/**\n * Index of schema compilation in the currently compiled list\n * @this   Ajv\n * @param  {Object} schema schema to compile\n * @param  {Object} root root object\n * @param  {String} baseId base schema ID\n * @return {Integer} compilation index\n */\nfunction compIndex(schema, root, baseId) {\n  /* jshint validthis: true */\n  for (var i=0; i<this._compilations.length; i++) {\n    var c = this._compilations[i];\n    if (c.schema == schema && c.root == root && c.baseId == baseId) return i;\n  }\n  return -1;\n}\n\n\nfunction patternCode(i, patterns) {\n  return 'var pattern' + i + ' = new RegExp(' + util.toQuotedString(patterns[i]) + ');';\n}\n\n\nfunction defaultCode(i) {\n  return 'var default' + i + ' = defaults[' + i + '];';\n}\n\n\nfunction refValCode(i, refVal) {\n  return refVal[i] === undefined ? '' : 'var refVal' + i + ' = refVal[' + i + '];';\n}\n\n\nfunction customRuleCode(i) {\n  return 'var customRule' + i + ' = customRules[' + i + '];';\n}\n\n\nfunction vars(arr, statement) {\n  if (!arr.length) return '';\n  var code = '';\n  for (var i=0; i<arr.length; i++)\n    code += statement(i, arr);\n  return code;\n}\n","'use strict';\n\nvar URI = require('uri-js')\n  , equal = require('fast-deep-equal')\n  , util = require('./util')\n  , SchemaObject = require('./schema_obj')\n  , traverse = require('json-schema-traverse');\n\nmodule.exports = resolve;\n\nresolve.normalizeId = normalizeId;\nresolve.fullPath = getFullPath;\nresolve.url = resolveUrl;\nresolve.ids = resolveIds;\nresolve.inlineRef = inlineRef;\nresolve.schema = resolveSchema;\n\n/**\n * [resolve and compile the references ($ref)]\n * @this   Ajv\n * @param  {Function} compile reference to schema compilation funciton (localCompile)\n * @param  {Object} root object with information about the root schema for the current schema\n * @param  {String} ref reference to resolve\n * @return {Object|Function} schema object (if the schema can be inlined) or validation function\n */\nfunction resolve(compile, root, ref) {\n  /* jshint validthis: true */\n  var refVal = this._refs[ref];\n  if (typeof refVal == 'string') {\n    if (this._refs[refVal]) refVal = this._refs[refVal];\n    else return resolve.call(this, compile, root, refVal);\n  }\n\n  refVal = refVal || this._schemas[ref];\n  if (refVal instanceof SchemaObject) {\n    return inlineRef(refVal.schema, this._opts.inlineRefs)\n            ? refVal.schema\n            : refVal.validate || this._compile(refVal);\n  }\n\n  var res = resolveSchema.call(this, root, ref);\n  var schema, v, baseId;\n  if (res) {\n    schema = res.schema;\n    root = res.root;\n    baseId = res.baseId;\n  }\n\n  if (schema instanceof SchemaObject) {\n    v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId);\n  } else if (schema !== undefined) {\n    v = inlineRef(schema, this._opts.inlineRefs)\n        ? schema\n        : compile.call(this, schema, root, undefined, baseId);\n  }\n\n  return v;\n}\n\n\n/**\n * Resolve schema, its root and baseId\n * @this Ajv\n * @param  {Object} root root object with properties schema, refVal, refs\n * @param  {String} ref  reference to resolve\n * @return {Object} object with properties schema, root, baseId\n */\nfunction resolveSchema(root, ref) {\n  /* jshint validthis: true */\n  var p = URI.parse(ref)\n    , refPath = _getFullPath(p)\n    , baseId = getFullPath(this._getId(root.schema));\n  if (Object.keys(root.schema).length === 0 || refPath !== baseId) {\n    var id = normalizeId(refPath);\n    var refVal = this._refs[id];\n    if (typeof refVal == 'string') {\n      return resolveRecursive.call(this, root, refVal, p);\n    } else if (refVal instanceof SchemaObject) {\n      if (!refVal.validate) this._compile(refVal);\n      root = refVal;\n    } else {\n      refVal = this._schemas[id];\n      if (refVal instanceof SchemaObject) {\n        if (!refVal.validate) this._compile(refVal);\n        if (id == normalizeId(ref))\n          return { schema: refVal, root: root, baseId: baseId };\n        root = refVal;\n      } else {\n        return;\n      }\n    }\n    if (!root.schema) return;\n    baseId = getFullPath(this._getId(root.schema));\n  }\n  return getJsonPointer.call(this, p, baseId, root.schema, root);\n}\n\n\n/* @this Ajv */\nfunction resolveRecursive(root, ref, parsedRef) {\n  /* jshint validthis: true */\n  var res = resolveSchema.call(this, root, ref);\n  if (res) {\n    var schema = res.schema;\n    var baseId = res.baseId;\n    root = res.root;\n    var id = this._getId(schema);\n    if (id) baseId = resolveUrl(baseId, id);\n    return getJsonPointer.call(this, parsedRef, baseId, schema, root);\n  }\n}\n\n\nvar PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']);\n/* @this Ajv */\nfunction getJsonPointer(parsedRef, baseId, schema, root) {\n  /* jshint validthis: true */\n  parsedRef.fragment = parsedRef.fragment || '';\n  if (parsedRef.fragment.slice(0,1) != '/') return;\n  var parts = parsedRef.fragment.split('/');\n\n  for (var i = 1; i < parts.length; i++) {\n    var part = parts[i];\n    if (part) {\n      part = util.unescapeFragment(part);\n      schema = schema[part];\n      if (schema === undefined) break;\n      var id;\n      if (!PREVENT_SCOPE_CHANGE[part]) {\n        id = this._getId(schema);\n        if (id) baseId = resolveUrl(baseId, id);\n        if (schema.$ref) {\n          var $ref = resolveUrl(baseId, schema.$ref);\n          var res = resolveSchema.call(this, root, $ref);\n          if (res) {\n            schema = res.schema;\n            root = res.root;\n            baseId = res.baseId;\n          }\n        }\n      }\n    }\n  }\n  if (schema !== undefined && schema !== root.schema)\n    return { schema: schema, root: root, baseId: baseId };\n}\n\n\nvar SIMPLE_INLINED = util.toHash([\n  'type', 'format', 'pattern',\n  'maxLength', 'minLength',\n  'maxProperties', 'minProperties',\n  'maxItems', 'minItems',\n  'maximum', 'minimum',\n  'uniqueItems', 'multipleOf',\n  'required', 'enum'\n]);\nfunction inlineRef(schema, limit) {\n  if (limit === false) return false;\n  if (limit === undefined || limit === true) return checkNoRef(schema);\n  else if (limit) return countKeys(schema) <= limit;\n}\n\n\nfunction checkNoRef(schema) {\n  var item;\n  if (Array.isArray(schema)) {\n    for (var i=0; i<schema.length; i++) {\n      item = schema[i];\n      if (typeof item == 'object' && !checkNoRef(item)) return false;\n    }\n  } else {\n    for (var key in schema) {\n      if (key == '$ref') return false;\n      item = schema[key];\n      if (typeof item == 'object' && !checkNoRef(item)) return false;\n    }\n  }\n  return true;\n}\n\n\nfunction countKeys(schema) {\n  var count = 0, item;\n  if (Array.isArray(schema)) {\n    for (var i=0; i<schema.length; i++) {\n      item = schema[i];\n      if (typeof item == 'object') count += countKeys(item);\n      if (count == Infinity) return Infinity;\n    }\n  } else {\n    for (var key in schema) {\n      if (key == '$ref') return Infinity;\n      if (SIMPLE_INLINED[key]) {\n        count++;\n      } else {\n        item = schema[key];\n        if (typeof item == 'object') count += countKeys(item) + 1;\n        if (count == Infinity) return Infinity;\n      }\n    }\n  }\n  return count;\n}\n\n\nfunction getFullPath(id, normalize) {\n  if (normalize !== false) id = normalizeId(id);\n  var p = URI.parse(id);\n  return _getFullPath(p);\n}\n\n\nfunction _getFullPath(p) {\n  return URI.serialize(p).split('#')[0] + '#';\n}\n\n\nvar TRAILING_SLASH_HASH = /#\\/?$/;\nfunction normalizeId(id) {\n  return id ? id.replace(TRAILING_SLASH_HASH, '') : '';\n}\n\n\nfunction resolveUrl(baseId, id) {\n  id = normalizeId(id);\n  return URI.resolve(baseId, id);\n}\n\n\n/* @this Ajv */\nfunction resolveIds(schema) {\n  var schemaId = normalizeId(this._getId(schema));\n  var baseIds = {'': schemaId};\n  var fullPaths = {'': getFullPath(schemaId, false)};\n  var localRefs = {};\n  var self = this;\n\n  traverse(schema, {allKeys: true}, function(sch, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n    if (jsonPtr === '') return;\n    var id = self._getId(sch);\n    var baseId = baseIds[parentJsonPtr];\n    var fullPath = fullPaths[parentJsonPtr] + '/' + parentKeyword;\n    if (keyIndex !== undefined)\n      fullPath += '/' + (typeof keyIndex == 'number' ? keyIndex : util.escapeFragment(keyIndex));\n\n    if (typeof id == 'string') {\n      id = baseId = normalizeId(baseId ? URI.resolve(baseId, id) : id);\n\n      var refVal = self._refs[id];\n      if (typeof refVal == 'string') refVal = self._refs[refVal];\n      if (refVal && refVal.schema) {\n        if (!equal(sch, refVal.schema))\n          throw new Error('id \"' + id + '\" resolves to more than one schema');\n      } else if (id != normalizeId(fullPath)) {\n        if (id[0] == '#') {\n          if (localRefs[id] && !equal(sch, localRefs[id]))\n            throw new Error('id \"' + id + '\" resolves to more than one schema');\n          localRefs[id] = sch;\n        } else {\n          self._refs[id] = fullPath;\n        }\n      }\n    }\n    baseIds[jsonPtr] = baseId;\n    fullPaths[jsonPtr] = fullPath;\n  });\n\n  return localRefs;\n}\n","'use strict';\n\nvar ruleModules = require('../dotjs')\n  , toHash = require('./util').toHash;\n\nmodule.exports = function rules() {\n  var RULES = [\n    { type: 'number',\n      rules: [ { 'maximum': ['exclusiveMaximum'] },\n               { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] },\n    { type: 'string',\n      rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] },\n    { type: 'array',\n      rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] },\n    { type: 'object',\n      rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames',\n               { 'properties': ['additionalProperties', 'patternProperties'] } ] },\n    { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] }\n  ];\n\n  var ALL = [ 'type', '$comment' ];\n  var KEYWORDS = [\n    '$schema', '$id', 'id', '$data', '$async', 'title',\n    'description', 'default', 'definitions',\n    'examples', 'readOnly', 'writeOnly',\n    'contentMediaType', 'contentEncoding',\n    'additionalItems', 'then', 'else'\n  ];\n  var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ];\n  RULES.all = toHash(ALL);\n  RULES.types = toHash(TYPES);\n\n  RULES.forEach(function (group) {\n    group.rules = group.rules.map(function (keyword) {\n      var implKeywords;\n      if (typeof keyword == 'object') {\n        var key = Object.keys(keyword)[0];\n        implKeywords = keyword[key];\n        keyword = key;\n        implKeywords.forEach(function (k) {\n          ALL.push(k);\n          RULES.all[k] = true;\n        });\n      }\n      ALL.push(keyword);\n      var rule = RULES.all[keyword] = {\n        keyword: keyword,\n        code: ruleModules[keyword],\n        implements: implKeywords\n      };\n      return rule;\n    });\n\n    RULES.all.$comment = {\n      keyword: '$comment',\n      code: ruleModules.$comment\n    };\n\n    if (group.type) RULES.types[group.type] = group;\n  });\n\n  RULES.keywords = toHash(ALL.concat(KEYWORDS));\n  RULES.custom = {};\n\n  return RULES;\n};\n","'use strict';\n\nvar util = require('./util');\n\nmodule.exports = SchemaObject;\n\nfunction SchemaObject(obj) {\n  util.copy(obj, this);\n}\n","'use strict';\n\n// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nmodule.exports = function ucs2length(str) {\n  var length = 0\n    , len = str.length\n    , pos = 0\n    , value;\n  while (pos < len) {\n    length++;\n    value = str.charCodeAt(pos++);\n    if (value >= 0xD800 && value <= 0xDBFF && pos < len) {\n      // high surrogate, and there is a next character\n      value = str.charCodeAt(pos);\n      if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate\n    }\n  }\n  return length;\n};\n","'use strict';\n\n\nmodule.exports = {\n  copy: copy,\n  checkDataType: checkDataType,\n  checkDataTypes: checkDataTypes,\n  coerceToTypes: coerceToTypes,\n  toHash: toHash,\n  getProperty: getProperty,\n  escapeQuotes: escapeQuotes,\n  equal: require('fast-deep-equal'),\n  ucs2length: require('./ucs2length'),\n  varOccurences: varOccurences,\n  varReplace: varReplace,\n  schemaHasRules: schemaHasRules,\n  schemaHasRulesExcept: schemaHasRulesExcept,\n  schemaUnknownRules: schemaUnknownRules,\n  toQuotedString: toQuotedString,\n  getPathExpr: getPathExpr,\n  getPath: getPath,\n  getData: getData,\n  unescapeFragment: unescapeFragment,\n  unescapeJsonPointer: unescapeJsonPointer,\n  escapeFragment: escapeFragment,\n  escapeJsonPointer: escapeJsonPointer\n};\n\n\nfunction copy(o, to) {\n  to = to || {};\n  for (var key in o) to[key] = o[key];\n  return to;\n}\n\n\nfunction checkDataType(dataType, data, strictNumbers, negate) {\n  var EQUAL = negate ? ' !== ' : ' === '\n    , AND = negate ? ' || ' : ' && '\n    , OK = negate ? '!' : ''\n    , NOT = negate ? '' : '!';\n  switch (dataType) {\n    case 'null': return data + EQUAL + 'null';\n    case 'array': return OK + 'Array.isArray(' + data + ')';\n    case 'object': return '(' + OK + data + AND +\n                          'typeof ' + data + EQUAL + '\"object\"' + AND +\n                          NOT + 'Array.isArray(' + data + '))';\n    case 'integer': return '(typeof ' + data + EQUAL + '\"number\"' + AND +\n                           NOT + '(' + data + ' % 1)' +\n                           AND + data + EQUAL + data +\n                           (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n    case 'number': return '(typeof ' + data + EQUAL + '\"' + dataType + '\"' +\n                          (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n    default: return 'typeof ' + data + EQUAL + '\"' + dataType + '\"';\n  }\n}\n\n\nfunction checkDataTypes(dataTypes, data, strictNumbers) {\n  switch (dataTypes.length) {\n    case 1: return checkDataType(dataTypes[0], data, strictNumbers, true);\n    default:\n      var code = '';\n      var types = toHash(dataTypes);\n      if (types.array && types.object) {\n        code = types.null ? '(': '(!' + data + ' || ';\n        code += 'typeof ' + data + ' !== \"object\")';\n        delete types.null;\n        delete types.array;\n        delete types.object;\n      }\n      if (types.number) delete types.integer;\n      for (var t in types)\n        code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true);\n\n      return code;\n  }\n}\n\n\nvar COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);\nfunction coerceToTypes(optionCoerceTypes, dataTypes) {\n  if (Array.isArray(dataTypes)) {\n    var types = [];\n    for (var i=0; i<dataTypes.length; i++) {\n      var t = dataTypes[i];\n      if (COERCE_TO_TYPES[t]) types[types.length] = t;\n      else if (optionCoerceTypes === 'array' && t === 'array') types[types.length] = t;\n    }\n    if (types.length) return types;\n  } else if (COERCE_TO_TYPES[dataTypes]) {\n    return [dataTypes];\n  } else if (optionCoerceTypes === 'array' && dataTypes === 'array') {\n    return ['array'];\n  }\n}\n\n\nfunction toHash(arr) {\n  var hash = {};\n  for (var i=0; i<arr.length; i++) hash[arr[i]] = true;\n  return hash;\n}\n\n\nvar IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;\nvar SINGLE_QUOTE = /'|\\\\/g;\nfunction getProperty(key) {\n  return typeof key == 'number'\n          ? '[' + key + ']'\n          : IDENTIFIER.test(key)\n            ? '.' + key\n            : \"['\" + escapeQuotes(key) + \"']\";\n}\n\n\nfunction escapeQuotes(str) {\n  return str.replace(SINGLE_QUOTE, '\\\\$&')\n            .replace(/\\n/g, '\\\\n')\n            .replace(/\\r/g, '\\\\r')\n            .replace(/\\f/g, '\\\\f')\n            .replace(/\\t/g, '\\\\t');\n}\n\n\nfunction varOccurences(str, dataVar) {\n  dataVar += '[^0-9]';\n  var matches = str.match(new RegExp(dataVar, 'g'));\n  return matches ? matches.length : 0;\n}\n\n\nfunction varReplace(str, dataVar, expr) {\n  dataVar += '([^0-9])';\n  expr = expr.replace(/\\$/g, '$$$$');\n  return str.replace(new RegExp(dataVar, 'g'), expr + '$1');\n}\n\n\nfunction schemaHasRules(schema, rules) {\n  if (typeof schema == 'boolean') return !schema;\n  for (var key in schema) if (rules[key]) return true;\n}\n\n\nfunction schemaHasRulesExcept(schema, rules, exceptKeyword) {\n  if (typeof schema == 'boolean') return !schema && exceptKeyword != 'not';\n  for (var key in schema) if (key != exceptKeyword && rules[key]) return true;\n}\n\n\nfunction schemaUnknownRules(schema, rules) {\n  if (typeof schema == 'boolean') return;\n  for (var key in schema) if (!rules[key]) return key;\n}\n\n\nfunction toQuotedString(str) {\n  return '\\'' + escapeQuotes(str) + '\\'';\n}\n\n\nfunction getPathExpr(currentPath, expr, jsonPointers, isNumber) {\n  var path = jsonPointers // false by default\n              ? '\\'/\\' + ' + expr + (isNumber ? '' : '.replace(/~/g, \\'~0\\').replace(/\\\\//g, \\'~1\\')')\n              : (isNumber ? '\\'[\\' + ' + expr + ' + \\']\\'' : '\\'[\\\\\\'\\' + ' + expr + ' + \\'\\\\\\']\\'');\n  return joinPaths(currentPath, path);\n}\n\n\nfunction getPath(currentPath, prop, jsonPointers) {\n  var path = jsonPointers // false by default\n              ? toQuotedString('/' + escapeJsonPointer(prop))\n              : toQuotedString(getProperty(prop));\n  return joinPaths(currentPath, path);\n}\n\n\nvar JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/;\nvar RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/;\nfunction getData($data, lvl, paths) {\n  var up, jsonPointer, data, matches;\n  if ($data === '') return 'rootData';\n  if ($data[0] == '/') {\n    if (!JSON_POINTER.test($data)) throw new Error('Invalid JSON-pointer: ' + $data);\n    jsonPointer = $data;\n    data = 'rootData';\n  } else {\n    matches = $data.match(RELATIVE_JSON_POINTER);\n    if (!matches) throw new Error('Invalid JSON-pointer: ' + $data);\n    up = +matches[1];\n    jsonPointer = matches[2];\n    if (jsonPointer == '#') {\n      if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);\n      return paths[lvl - up];\n    }\n\n    if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);\n    data = 'data' + ((lvl - up) || '');\n    if (!jsonPointer) return data;\n  }\n\n  var expr = data;\n  var segments = jsonPointer.split('/');\n  for (var i=0; i<segments.length; i++) {\n    var segment = segments[i];\n    if (segment) {\n      data += getProperty(unescapeJsonPointer(segment));\n      expr += ' && ' + data;\n    }\n  }\n  return expr;\n}\n\n\nfunction joinPaths (a, b) {\n  if (a == '\"\"') return b;\n  return (a + ' + ' + b).replace(/([^\\\\])' \\+ '/g, '$1');\n}\n\n\nfunction unescapeFragment(str) {\n  return unescapeJsonPointer(decodeURIComponent(str));\n}\n\n\nfunction escapeFragment(str) {\n  return encodeURIComponent(escapeJsonPointer(str));\n}\n\n\nfunction escapeJsonPointer(str) {\n  return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n\n\nfunction unescapeJsonPointer(str) {\n  return str.replace(/~1/g, '/').replace(/~0/g, '~');\n}\n","'use strict';\n\nvar KEYWORDS = [\n  'multipleOf',\n  'maximum',\n  'exclusiveMaximum',\n  'minimum',\n  'exclusiveMinimum',\n  'maxLength',\n  'minLength',\n  'pattern',\n  'additionalItems',\n  'maxItems',\n  'minItems',\n  'uniqueItems',\n  'maxProperties',\n  'minProperties',\n  'required',\n  'additionalProperties',\n  'enum',\n  'format',\n  'const'\n];\n\nmodule.exports = function (metaSchema, keywordsJsonPointers) {\n  for (var i=0; i<keywordsJsonPointers.length; i++) {\n    metaSchema = JSON.parse(JSON.stringify(metaSchema));\n    var segments = keywordsJsonPointers[i].split('/');\n    var keywords = metaSchema;\n    var j;\n    for (j=1; j<segments.length; j++)\n      keywords = keywords[segments[j]];\n\n    for (j=0; j<KEYWORDS.length; j++) {\n      var key = KEYWORDS[j];\n      var schema = keywords[key];\n      if (schema) {\n        keywords[key] = {\n          anyOf: [\n            schema,\n            { $ref: 'https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#' }\n          ]\n        };\n      }\n    }\n  }\n\n  return metaSchema;\n};\n","'use strict';\n\nvar metaSchema = require('./refs/json-schema-draft-07.json');\n\nmodule.exports = {\n  $id: 'https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js',\n  definitions: {\n    simpleTypes: metaSchema.definitions.simpleTypes\n  },\n  type: 'object',\n  dependencies: {\n    schema: ['validate'],\n    $data: ['validate'],\n    statements: ['inline'],\n    valid: {not: {required: ['macro']}}\n  },\n  properties: {\n    type: metaSchema.properties.type,\n    schema: {type: 'boolean'},\n    statements: {type: 'boolean'},\n    dependencies: {\n      type: 'array',\n      items: {type: 'string'}\n    },\n    metaSchema: {type: 'object'},\n    modifying: {type: 'boolean'},\n    valid: {type: 'boolean'},\n    $data: {type: 'boolean'},\n    async: {type: 'boolean'},\n    errors: {\n      anyOf: [\n        {type: 'boolean'},\n        {const: 'full'}\n      ]\n    }\n  }\n};\n","'use strict';\nmodule.exports = function generate__limit(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $isMax = $keyword == 'maximum',\n    $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum',\n    $schemaExcl = it.schema[$exclusiveKeyword],\n    $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data,\n    $op = $isMax ? '<' : '>',\n    $notOp = $isMax ? '>' : '<',\n    $errorKeyword = undefined;\n  if (!($isData || typeof $schema == 'number' || $schema === undefined)) {\n    throw new Error($keyword + ' must be number');\n  }\n  if (!($isDataExcl || $schemaExcl === undefined || typeof $schemaExcl == 'number' || typeof $schemaExcl == 'boolean')) {\n    throw new Error($exclusiveKeyword + ' must be number or boolean');\n  }\n  if ($isDataExcl) {\n    var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),\n      $exclusive = 'exclusive' + $lvl,\n      $exclType = 'exclType' + $lvl,\n      $exclIsNumber = 'exclIsNumber' + $lvl,\n      $opExpr = 'op' + $lvl,\n      $opStr = '\\' + ' + $opExpr + ' + \\'';\n    out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';\n    $schemaValueExcl = 'schemaExcl' + $lvl;\n    out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \\'boolean\\' && ' + ($exclType) + ' != \\'undefined\\' && ' + ($exclType) + ' != \\'number\\') { ';\n    var $errorKeyword = $exclusiveKeyword;\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = ''; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ($errorKeyword || '_exclusiveLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'' + ($exclusiveKeyword) + ' should be boolean\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    var __err = out;\n    out = $$outStack.pop();\n    if (!it.compositeRule && $breakOnError) {\n      /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError([' + (__err) + ']); ';\n      } else {\n        out += ' validate.errors = [' + (__err) + ']; return false; ';\n      }\n    } else {\n      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    }\n    out += ' } else if ( ';\n    if ($isData) {\n      out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n    }\n    out += ' ' + ($exclType) + ' == \\'number\\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \\'' + ($op) + '\\' : \\'' + ($op) + '=\\'; ';\n    if ($schema === undefined) {\n      $errorKeyword = $exclusiveKeyword;\n      $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n      $schemaValue = $schemaValueExcl;\n      $isData = $isDataExcl;\n    }\n  } else {\n    var $exclIsNumber = typeof $schemaExcl == 'number',\n      $opStr = $op;\n    if ($exclIsNumber && $isData) {\n      var $opExpr = '\\'' + $opStr + '\\'';\n      out += ' if ( ';\n      if ($isData) {\n        out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n      }\n      out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { ';\n    } else {\n      if ($exclIsNumber && $schema === undefined) {\n        $exclusive = true;\n        $errorKeyword = $exclusiveKeyword;\n        $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n        $schemaValue = $schemaExcl;\n        $notOp += '=';\n      } else {\n        if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);\n        if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {\n          $exclusive = true;\n          $errorKeyword = $exclusiveKeyword;\n          $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n          $notOp += '=';\n        } else {\n          $exclusive = false;\n          $opStr += '=';\n        }\n      }\n      var $opExpr = '\\'' + $opStr + '\\'';\n      out += ' if ( ';\n      if ($isData) {\n        out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n      }\n      out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { ';\n    }\n  }\n  $errorKeyword = $errorKeyword || $keyword;\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ($errorKeyword || '_limit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should be ' + ($opStr) + ' ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue);\n      } else {\n        out += '' + ($schemaValue) + '\\'';\n      }\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' } ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate__limitItems(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  if (!($isData || typeof $schema == 'number')) {\n    throw new Error($keyword + ' must be number');\n  }\n  var $op = $keyword == 'maxItems' ? '>' : '<';\n  out += 'if ( ';\n  if ($isData) {\n    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n  }\n  out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n  var $errorKeyword = $keyword;\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ($errorKeyword || '_limitItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should NOT have ';\n      if ($keyword == 'maxItems') {\n        out += 'more';\n      } else {\n        out += 'fewer';\n      }\n      out += ' than ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + ($schema);\n      }\n      out += ' items\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate__limitLength(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  if (!($isData || typeof $schema == 'number')) {\n    throw new Error($keyword + ' must be number');\n  }\n  var $op = $keyword == 'maxLength' ? '>' : '<';\n  out += 'if ( ';\n  if ($isData) {\n    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n  }\n  if (it.opts.unicode === false) {\n    out += ' ' + ($data) + '.length ';\n  } else {\n    out += ' ucs2length(' + ($data) + ') ';\n  }\n  out += ' ' + ($op) + ' ' + ($schemaValue) + ') { ';\n  var $errorKeyword = $keyword;\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ($errorKeyword || '_limitLength') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should NOT be ';\n      if ($keyword == 'maxLength') {\n        out += 'longer';\n      } else {\n        out += 'shorter';\n      }\n      out += ' than ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + ($schema);\n      }\n      out += ' characters\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate__limitProperties(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  if (!($isData || typeof $schema == 'number')) {\n    throw new Error($keyword + ' must be number');\n  }\n  var $op = $keyword == 'maxProperties' ? '>' : '<';\n  out += 'if ( ';\n  if ($isData) {\n    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n  }\n  out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n  var $errorKeyword = $keyword;\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ($errorKeyword || '_limitProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should NOT have ';\n      if ($keyword == 'maxProperties') {\n        out += 'more';\n      } else {\n        out += 'fewer';\n      }\n      out += ' than ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + ($schema);\n      }\n      out += ' properties\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_allOf(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $currentBaseId = $it.baseId,\n    $allSchemasEmpty = true;\n  var arr1 = $schema;\n  if (arr1) {\n    var $sch, $i = -1,\n      l1 = arr1.length - 1;\n    while ($i < l1) {\n      $sch = arr1[$i += 1];\n      if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n        $allSchemasEmpty = false;\n        $it.schema = $sch;\n        $it.schemaPath = $schemaPath + '[' + $i + ']';\n        $it.errSchemaPath = $errSchemaPath + '/' + $i;\n        out += '  ' + (it.validate($it)) + ' ';\n        $it.baseId = $currentBaseId;\n        if ($breakOnError) {\n          out += ' if (' + ($nextValid) + ') { ';\n          $closingBraces += '}';\n        }\n      }\n    }\n  }\n  if ($breakOnError) {\n    if ($allSchemasEmpty) {\n      out += ' if (true) { ';\n    } else {\n      out += ' ' + ($closingBraces.slice(0, -1)) + ' ';\n    }\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_anyOf(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $noEmptySchema = $schema.every(function($sch) {\n    return (it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all));\n  });\n  if ($noEmptySchema) {\n    var $currentBaseId = $it.baseId;\n    out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false;  ';\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    var arr1 = $schema;\n    if (arr1) {\n      var $sch, $i = -1,\n        l1 = arr1.length - 1;\n      while ($i < l1) {\n        $sch = arr1[$i += 1];\n        $it.schema = $sch;\n        $it.schemaPath = $schemaPath + '[' + $i + ']';\n        $it.errSchemaPath = $errSchemaPath + '/' + $i;\n        out += '  ' + (it.validate($it)) + ' ';\n        $it.baseId = $currentBaseId;\n        out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { ';\n        $closingBraces += '}';\n      }\n    }\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') {   var err =   '; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('anyOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should match some schema in anyOf\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    if (!it.compositeRule && $breakOnError) {\n      /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError(vErrors); ';\n      } else {\n        out += ' validate.errors = vErrors; return false; ';\n      }\n    }\n    out += ' } else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n    if (it.opts.allErrors) {\n      out += ' } ';\n    }\n  } else {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_comment(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $schema = it.schema[$keyword];\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $comment = it.util.toQuotedString($schema);\n  if (it.opts.$comment === true) {\n    out += ' console.log(' + ($comment) + ');';\n  } else if (typeof it.opts.$comment == 'function') {\n    out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_const(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  if (!$isData) {\n    out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';\n  }\n  out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') {   ';\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('const') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should be equal to constant\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' }';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_contains(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $idx = 'i' + $lvl,\n    $dataNxt = $it.dataLevel = it.dataLevel + 1,\n    $nextData = 'data' + $dataNxt,\n    $currentBaseId = it.baseId,\n    $nonEmptySchema = (it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all));\n  out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n  if ($nonEmptySchema) {\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n    $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n    var $passData = $data + '[' + $idx + ']';\n    $it.dataPathArr[$dataNxt] = $idx;\n    var $code = it.validate($it);\n    $it.baseId = $currentBaseId;\n    if (it.util.varOccurences($code, $nextData) < 2) {\n      out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n    } else {\n      out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n    }\n    out += ' if (' + ($nextValid) + ') break; }  ';\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {';\n  } else {\n    out += ' if (' + ($data) + '.length == 0) {';\n  }\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('contains') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should contain a valid item\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' } else { ';\n  if ($nonEmptySchema) {\n    out += '  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n  }\n  if (it.opts.allErrors) {\n    out += ' } ';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_custom(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $errorKeyword;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $rule = this,\n    $definition = 'definition' + $lvl,\n    $rDef = $rule.definition,\n    $closingBraces = '';\n  var $compile, $inline, $macro, $ruleValidate, $validateCode;\n  if ($isData && $rDef.$data) {\n    $validateCode = 'keywordValidate' + $lvl;\n    var $validateSchema = $rDef.validateSchema;\n    out += ' var ' + ($definition) + ' = RULES.custom[\\'' + ($keyword) + '\\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;';\n  } else {\n    $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);\n    if (!$ruleValidate) return;\n    $schemaValue = 'validate.schema' + $schemaPath;\n    $validateCode = $ruleValidate.code;\n    $compile = $rDef.compile;\n    $inline = $rDef.inline;\n    $macro = $rDef.macro;\n  }\n  var $ruleErrs = $validateCode + '.errors',\n    $i = 'i' + $lvl,\n    $ruleErr = 'ruleErr' + $lvl,\n    $asyncKeyword = $rDef.async;\n  if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema');\n  if (!($inline || $macro)) {\n    out += '' + ($ruleErrs) + ' = null;';\n  }\n  out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n  if ($isData && $rDef.$data) {\n    $closingBraces += '}';\n    out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { ';\n    if ($validateSchema) {\n      $closingBraces += '}';\n      out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { ';\n    }\n  }\n  if ($inline) {\n    if ($rDef.statements) {\n      out += ' ' + ($ruleValidate.validate) + ' ';\n    } else {\n      out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; ';\n    }\n  } else if ($macro) {\n    var $it = it.util.copy(it);\n    var $closingBraces = '';\n    $it.level++;\n    var $nextValid = 'valid' + $it.level;\n    $it.schema = $ruleValidate.validate;\n    $it.schemaPath = '';\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    var $code = it.validate($it).replace(/validate\\.schema/g, $validateCode);\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' ' + ($code);\n  } else {\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = '';\n    out += '  ' + ($validateCode) + '.call( ';\n    if (it.opts.passContext) {\n      out += 'this';\n    } else {\n      out += 'self';\n    }\n    if ($compile || $rDef.schema === false) {\n      out += ' , ' + ($data) + ' ';\n    } else {\n      out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' ';\n    }\n    out += ' , (dataPath || \\'\\')';\n    if (it.errorPath != '\"\"') {\n      out += ' + ' + (it.errorPath);\n    }\n    var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n      $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n    out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData )  ';\n    var def_callRuleValidate = out;\n    out = $$outStack.pop();\n    if ($rDef.errors === false) {\n      out += ' ' + ($valid) + ' = ';\n      if ($asyncKeyword) {\n        out += 'await ';\n      }\n      out += '' + (def_callRuleValidate) + '; ';\n    } else {\n      if ($asyncKeyword) {\n        $ruleErrs = 'customErrors' + $lvl;\n        out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = await ' + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } ';\n      } else {\n        out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; ';\n      }\n    }\n  }\n  if ($rDef.modifying) {\n    out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];';\n  }\n  out += '' + ($closingBraces);\n  if ($rDef.valid) {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n  } else {\n    out += ' if ( ';\n    if ($rDef.valid === undefined) {\n      out += ' !';\n      if ($macro) {\n        out += '' + ($nextValid);\n      } else {\n        out += '' + ($valid);\n      }\n    } else {\n      out += ' ' + (!$rDef.valid) + ' ';\n    }\n    out += ') { ';\n    $errorKeyword = $rule.keyword;\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = '';\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = ''; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ($errorKeyword || 'custom') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \\'' + ($rule.keyword) + '\\' } ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should pass \"' + ($rule.keyword) + '\" keyword validation\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    var __err = out;\n    out = $$outStack.pop();\n    if (!it.compositeRule && $breakOnError) {\n      /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError([' + (__err) + ']); ';\n      } else {\n        out += ' validate.errors = [' + (__err) + ']; return false; ';\n      }\n    } else {\n      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    }\n    var def_customError = out;\n    out = $$outStack.pop();\n    if ($inline) {\n      if ($rDef.errors) {\n        if ($rDef.errors != 'full') {\n          out += '  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\"; } ';\n          if (it.opts.verbose) {\n            out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n          }\n          out += ' } ';\n        }\n      } else {\n        if ($rDef.errors === false) {\n          out += ' ' + (def_customError) + ' ';\n        } else {\n          out += ' if (' + ($errs) + ' == errors) { ' + (def_customError) + ' } else {  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\"; } ';\n          if (it.opts.verbose) {\n            out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n          }\n          out += ' } } ';\n        }\n      }\n    } else if ($macro) {\n      out += '   var err =   '; /* istanbul ignore else */\n      if (it.createErrors !== false) {\n        out += ' { keyword: \\'' + ($errorKeyword || 'custom') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \\'' + ($rule.keyword) + '\\' } ';\n        if (it.opts.messages !== false) {\n          out += ' , message: \\'should pass \"' + ($rule.keyword) + '\" keyword validation\\' ';\n        }\n        if (it.opts.verbose) {\n          out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n        }\n        out += ' } ';\n      } else {\n        out += ' {} ';\n      }\n      out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n      if (!it.compositeRule && $breakOnError) {\n        /* istanbul ignore if */\n        if (it.async) {\n          out += ' throw new ValidationError(vErrors); ';\n        } else {\n          out += ' validate.errors = vErrors; return false; ';\n        }\n      }\n    } else {\n      if ($rDef.errors === false) {\n        out += ' ' + (def_customError) + ' ';\n      } else {\n        out += ' if (Array.isArray(' + ($ruleErrs) + ')) { if (vErrors === null) vErrors = ' + ($ruleErrs) + '; else vErrors = vErrors.concat(' + ($ruleErrs) + '); errors = vErrors.length;  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + ';  ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\";  ';\n        if (it.opts.verbose) {\n          out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n        }\n        out += ' } } else { ' + (def_customError) + ' } ';\n      }\n    }\n    out += ' } ';\n    if ($breakOnError) {\n      out += ' else { ';\n    }\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_dependencies(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $schemaDeps = {},\n    $propertyDeps = {},\n    $ownProperties = it.opts.ownProperties;\n  for ($property in $schema) {\n    if ($property == '__proto__') continue;\n    var $sch = $schema[$property];\n    var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;\n    $deps[$property] = $sch;\n  }\n  out += 'var ' + ($errs) + ' = errors;';\n  var $currentErrorPath = it.errorPath;\n  out += 'var missing' + ($lvl) + ';';\n  for (var $property in $propertyDeps) {\n    $deps = $propertyDeps[$property];\n    if ($deps.length) {\n      out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n      if ($ownProperties) {\n        out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n      }\n      if ($breakOnError) {\n        out += ' && ( ';\n        var arr1 = $deps;\n        if (arr1) {\n          var $propertyKey, $i = -1,\n            l1 = arr1.length - 1;\n          while ($i < l1) {\n            $propertyKey = arr1[$i += 1];\n            if ($i) {\n              out += ' || ';\n            }\n            var $prop = it.util.getProperty($propertyKey),\n              $useData = $data + $prop;\n            out += ' ( ( ' + ($useData) + ' === undefined ';\n            if ($ownProperties) {\n              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n            }\n            out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n          }\n        }\n        out += ')) {  ';\n        var $propertyPath = 'missing' + $lvl,\n          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n        if (it.opts._errorDataPathProperty) {\n          it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n        }\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'should have ';\n            if ($deps.length == 1) {\n              out += 'property ' + (it.util.escapeQuotes($deps[0]));\n            } else {\n              out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n            }\n            out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) {\n          /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n      } else {\n        out += ' ) { ';\n        var arr2 = $deps;\n        if (arr2) {\n          var $propertyKey, i2 = -1,\n            l2 = arr2.length - 1;\n          while (i2 < l2) {\n            $propertyKey = arr2[i2 += 1];\n            var $prop = it.util.getProperty($propertyKey),\n              $missingProperty = it.util.escapeQuotes($propertyKey),\n              $useData = $data + $prop;\n            if (it.opts._errorDataPathProperty) {\n              it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n            }\n            out += ' if ( ' + ($useData) + ' === undefined ';\n            if ($ownProperties) {\n              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n            }\n            out += ') {  var err =   '; /* istanbul ignore else */\n            if (it.createErrors !== false) {\n              out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n              if (it.opts.messages !== false) {\n                out += ' , message: \\'should have ';\n                if ($deps.length == 1) {\n                  out += 'property ' + (it.util.escapeQuotes($deps[0]));\n                } else {\n                  out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n                }\n                out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n              }\n              if (it.opts.verbose) {\n                out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n              }\n              out += ' } ';\n            } else {\n              out += ' {} ';\n            }\n            out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n          }\n        }\n      }\n      out += ' }   ';\n      if ($breakOnError) {\n        $closingBraces += '}';\n        out += ' else { ';\n      }\n    }\n  }\n  it.errorPath = $currentErrorPath;\n  var $currentBaseId = $it.baseId;\n  for (var $property in $schemaDeps) {\n    var $sch = $schemaDeps[$property];\n    if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n      out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n      if ($ownProperties) {\n        out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n      }\n      out += ') { ';\n      $it.schema = $sch;\n      $it.schemaPath = $schemaPath + it.util.getProperty($property);\n      $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);\n      out += '  ' + (it.validate($it)) + ' ';\n      $it.baseId = $currentBaseId;\n      out += ' }  ';\n      if ($breakOnError) {\n        out += ' if (' + ($nextValid) + ') { ';\n        $closingBraces += '}';\n      }\n    }\n  }\n  if ($breakOnError) {\n    out += '   ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_enum(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $i = 'i' + $lvl,\n    $vSchema = 'schema' + $lvl;\n  if (!$isData) {\n    out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';';\n  }\n  out += 'var ' + ($valid) + ';';\n  if ($isData) {\n    out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n  }\n  out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }';\n  if ($isData) {\n    out += '  }  ';\n  }\n  out += ' if (!' + ($valid) + ') {   ';\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('enum') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should be equal to one of the allowed values\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' }';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_format(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  if (it.opts.format === false) {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n    return out;\n  }\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $unknownFormats = it.opts.unknownFormats,\n    $allowUnknown = Array.isArray($unknownFormats);\n  if ($isData) {\n    var $format = 'format' + $lvl,\n      $isObject = 'isObject' + $lvl,\n      $formatType = 'formatType' + $lvl;\n    out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \\'object\\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \\'string\\'; if (' + ($isObject) + ') { ';\n    if (it.async) {\n      out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; ';\n    }\n    out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if (  ';\n    if ($isData) {\n      out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n    }\n    out += ' (';\n    if ($unknownFormats != 'ignore') {\n      out += ' (' + ($schemaValue) + ' && !' + ($format) + ' ';\n      if ($allowUnknown) {\n        out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 ';\n      }\n      out += ') || ';\n    }\n    out += ' (' + ($format) + ' && ' + ($formatType) + ' == \\'' + ($ruleType) + '\\' && !(typeof ' + ($format) + ' == \\'function\\' ? ';\n    if (it.async) {\n      out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) ';\n    } else {\n      out += ' ' + ($format) + '(' + ($data) + ') ';\n    }\n    out += ' : ' + ($format) + '.test(' + ($data) + '))))) {';\n  } else {\n    var $format = it.formats[$schema];\n    if (!$format) {\n      if ($unknownFormats == 'ignore') {\n        it.logger.warn('unknown format \"' + $schema + '\" ignored in schema at path \"' + it.errSchemaPath + '\"');\n        if ($breakOnError) {\n          out += ' if (true) { ';\n        }\n        return out;\n      } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) {\n        if ($breakOnError) {\n          out += ' if (true) { ';\n        }\n        return out;\n      } else {\n        throw new Error('unknown format \"' + $schema + '\" is used in schema at path \"' + it.errSchemaPath + '\"');\n      }\n    }\n    var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate;\n    var $formatType = $isObject && $format.type || 'string';\n    if ($isObject) {\n      var $async = $format.async === true;\n      $format = $format.validate;\n    }\n    if ($formatType != $ruleType) {\n      if ($breakOnError) {\n        out += ' if (true) { ';\n      }\n      return out;\n    }\n    if ($async) {\n      if (!it.async) throw new Error('async format in sync schema');\n      var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';\n      out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { ';\n    } else {\n      out += ' if (! ';\n      var $formatRef = 'formats' + it.util.getProperty($schema);\n      if ($isObject) $formatRef += '.validate';\n      if (typeof $format == 'function') {\n        out += ' ' + ($formatRef) + '(' + ($data) + ') ';\n      } else {\n        out += ' ' + ($formatRef) + '.test(' + ($data) + ') ';\n      }\n      out += ') { ';\n    }\n  }\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('format') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format:  ';\n    if ($isData) {\n      out += '' + ($schemaValue);\n    } else {\n      out += '' + (it.util.toQuotedString($schema));\n    }\n    out += '  } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should match format \"';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + (it.util.escapeQuotes($schema));\n      }\n      out += '\"\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + (it.util.toQuotedString($schema));\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += ' } ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_if(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $thenSch = it.schema['then'],\n    $elseSch = it.schema['else'],\n    $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? (typeof $thenSch == 'object' && Object.keys($thenSch).length > 0) || $thenSch === false : it.util.schemaHasRules($thenSch, it.RULES.all)),\n    $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? (typeof $elseSch == 'object' && Object.keys($elseSch).length > 0) || $elseSch === false : it.util.schemaHasRules($elseSch, it.RULES.all)),\n    $currentBaseId = $it.baseId;\n  if ($thenPresent || $elsePresent) {\n    var $ifClause;\n    $it.createErrors = false;\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true;  ';\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    out += '  ' + (it.validate($it)) + ' ';\n    $it.baseId = $currentBaseId;\n    $it.createErrors = true;\n    out += '  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }  ';\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    if ($thenPresent) {\n      out += ' if (' + ($nextValid) + ') {  ';\n      $it.schema = it.schema['then'];\n      $it.schemaPath = it.schemaPath + '.then';\n      $it.errSchemaPath = it.errSchemaPath + '/then';\n      out += '  ' + (it.validate($it)) + ' ';\n      $it.baseId = $currentBaseId;\n      out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n      if ($thenPresent && $elsePresent) {\n        $ifClause = 'ifClause' + $lvl;\n        out += ' var ' + ($ifClause) + ' = \\'then\\'; ';\n      } else {\n        $ifClause = '\\'then\\'';\n      }\n      out += ' } ';\n      if ($elsePresent) {\n        out += ' else { ';\n      }\n    } else {\n      out += ' if (!' + ($nextValid) + ') { ';\n    }\n    if ($elsePresent) {\n      $it.schema = it.schema['else'];\n      $it.schemaPath = it.schemaPath + '.else';\n      $it.errSchemaPath = it.errSchemaPath + '/else';\n      out += '  ' + (it.validate($it)) + ' ';\n      $it.baseId = $currentBaseId;\n      out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n      if ($thenPresent && $elsePresent) {\n        $ifClause = 'ifClause' + $lvl;\n        out += ' var ' + ($ifClause) + ' = \\'else\\'; ';\n      } else {\n        $ifClause = '\\'else\\'';\n      }\n      out += ' } ';\n    }\n    out += ' if (!' + ($valid) + ') {   var err =   '; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('if') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should match \"\\' + ' + ($ifClause) + ' + \\'\" schema\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    if (!it.compositeRule && $breakOnError) {\n      /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError(vErrors); ';\n      } else {\n        out += ' validate.errors = vErrors; return false; ';\n      }\n    }\n    out += ' }   ';\n    if ($breakOnError) {\n      out += ' else { ';\n    }\n  } else {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n  }\n  return out;\n}\n","'use strict';\n\n//all requires must be explicit because browserify won't work with dynamic requires\nmodule.exports = {\n  '$ref': require('./ref'),\n  allOf: require('./allOf'),\n  anyOf: require('./anyOf'),\n  '$comment': require('./comment'),\n  const: require('./const'),\n  contains: require('./contains'),\n  dependencies: require('./dependencies'),\n  'enum': require('./enum'),\n  format: require('./format'),\n  'if': require('./if'),\n  items: require('./items'),\n  maximum: require('./_limit'),\n  minimum: require('./_limit'),\n  maxItems: require('./_limitItems'),\n  minItems: require('./_limitItems'),\n  maxLength: require('./_limitLength'),\n  minLength: require('./_limitLength'),\n  maxProperties: require('./_limitProperties'),\n  minProperties: require('./_limitProperties'),\n  multipleOf: require('./multipleOf'),\n  not: require('./not'),\n  oneOf: require('./oneOf'),\n  pattern: require('./pattern'),\n  properties: require('./properties'),\n  propertyNames: require('./propertyNames'),\n  required: require('./required'),\n  uniqueItems: require('./uniqueItems'),\n  validate: require('./validate')\n};\n","'use strict';\nmodule.exports = function generate_items(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $idx = 'i' + $lvl,\n    $dataNxt = $it.dataLevel = it.dataLevel + 1,\n    $nextData = 'data' + $dataNxt,\n    $currentBaseId = it.baseId;\n  out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n  if (Array.isArray($schema)) {\n    var $additionalItems = it.schema.additionalItems;\n    if ($additionalItems === false) {\n      out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; ';\n      var $currErrSchemaPath = $errSchemaPath;\n      $errSchemaPath = it.errSchemaPath + '/additionalItems';\n      out += '  if (!' + ($valid) + ') {   ';\n      var $$outStack = $$outStack || [];\n      $$outStack.push(out);\n      out = ''; /* istanbul ignore else */\n      if (it.createErrors !== false) {\n        out += ' { keyword: \\'' + ('additionalItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } ';\n        if (it.opts.messages !== false) {\n          out += ' , message: \\'should NOT have more than ' + ($schema.length) + ' items\\' ';\n        }\n        if (it.opts.verbose) {\n          out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n        }\n        out += ' } ';\n      } else {\n        out += ' {} ';\n      }\n      var __err = out;\n      out = $$outStack.pop();\n      if (!it.compositeRule && $breakOnError) {\n        /* istanbul ignore if */\n        if (it.async) {\n          out += ' throw new ValidationError([' + (__err) + ']); ';\n        } else {\n          out += ' validate.errors = [' + (__err) + ']; return false; ';\n        }\n      } else {\n        out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n      }\n      out += ' } ';\n      $errSchemaPath = $currErrSchemaPath;\n      if ($breakOnError) {\n        $closingBraces += '}';\n        out += ' else { ';\n      }\n    }\n    var arr1 = $schema;\n    if (arr1) {\n      var $sch, $i = -1,\n        l1 = arr1.length - 1;\n      while ($i < l1) {\n        $sch = arr1[$i += 1];\n        if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n          out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { ';\n          var $passData = $data + '[' + $i + ']';\n          $it.schema = $sch;\n          $it.schemaPath = $schemaPath + '[' + $i + ']';\n          $it.errSchemaPath = $errSchemaPath + '/' + $i;\n          $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);\n          $it.dataPathArr[$dataNxt] = $i;\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n          } else {\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n          }\n          out += ' }  ';\n          if ($breakOnError) {\n            out += ' if (' + ($nextValid) + ') { ';\n            $closingBraces += '}';\n          }\n        }\n      }\n    }\n    if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? (typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0) || $additionalItems === false : it.util.schemaHasRules($additionalItems, it.RULES.all))) {\n      $it.schema = $additionalItems;\n      $it.schemaPath = it.schemaPath + '.additionalItems';\n      $it.errSchemaPath = it.errSchemaPath + '/additionalItems';\n      out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') {  for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n      $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n      var $passData = $data + '[' + $idx + ']';\n      $it.dataPathArr[$dataNxt] = $idx;\n      var $code = it.validate($it);\n      $it.baseId = $currentBaseId;\n      if (it.util.varOccurences($code, $nextData) < 2) {\n        out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n      } else {\n        out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n      }\n      if ($breakOnError) {\n        out += ' if (!' + ($nextValid) + ') break; ';\n      }\n      out += ' } }  ';\n      if ($breakOnError) {\n        out += ' if (' + ($nextValid) + ') { ';\n        $closingBraces += '}';\n      }\n    }\n  } else if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    out += '  for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n    $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n    var $passData = $data + '[' + $idx + ']';\n    $it.dataPathArr[$dataNxt] = $idx;\n    var $code = it.validate($it);\n    $it.baseId = $currentBaseId;\n    if (it.util.varOccurences($code, $nextData) < 2) {\n      out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n    } else {\n      out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n    }\n    if ($breakOnError) {\n      out += ' if (!' + ($nextValid) + ') break; ';\n    }\n    out += ' }';\n  }\n  if ($breakOnError) {\n    out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_multipleOf(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  if (!($isData || typeof $schema == 'number')) {\n    throw new Error($keyword + ' must be number');\n  }\n  out += 'var division' + ($lvl) + ';if (';\n  if ($isData) {\n    out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \\'number\\' || ';\n  }\n  out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', ';\n  if (it.opts.multipleOfPrecision) {\n    out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' ';\n  } else {\n    out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') ';\n  }\n  out += ' ) ';\n  if ($isData) {\n    out += '  )  ';\n  }\n  out += ' ) {   ';\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('multipleOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should be multiple of ';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue);\n      } else {\n        out += '' + ($schemaValue) + '\\'';\n      }\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + ($schema);\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_not(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    out += ' var ' + ($errs) + ' = errors;  ';\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    $it.createErrors = false;\n    var $allErrorsOption;\n    if ($it.opts.allErrors) {\n      $allErrorsOption = $it.opts.allErrors;\n      $it.opts.allErrors = false;\n    }\n    out += ' ' + (it.validate($it)) + ' ';\n    $it.createErrors = true;\n    if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' if (' + ($nextValid) + ') {   ';\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = ''; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should NOT be valid\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    var __err = out;\n    out = $$outStack.pop();\n    if (!it.compositeRule && $breakOnError) {\n      /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError([' + (__err) + ']); ';\n      } else {\n        out += ' validate.errors = [' + (__err) + ']; return false; ';\n      }\n    } else {\n      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    }\n    out += ' } else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n    if (it.opts.allErrors) {\n      out += ' } ';\n    }\n  } else {\n    out += '  var err =   '; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should NOT be valid\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    if ($breakOnError) {\n      out += ' if (false) { ';\n    }\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_oneOf(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $currentBaseId = $it.baseId,\n    $prevValid = 'prevValid' + $lvl,\n    $passingSchemas = 'passingSchemas' + $lvl;\n  out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; ';\n  var $wasComposite = it.compositeRule;\n  it.compositeRule = $it.compositeRule = true;\n  var arr1 = $schema;\n  if (arr1) {\n    var $sch, $i = -1,\n      l1 = arr1.length - 1;\n    while ($i < l1) {\n      $sch = arr1[$i += 1];\n      if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n        $it.schema = $sch;\n        $it.schemaPath = $schemaPath + '[' + $i + ']';\n        $it.errSchemaPath = $errSchemaPath + '/' + $i;\n        out += '  ' + (it.validate($it)) + ' ';\n        $it.baseId = $currentBaseId;\n      } else {\n        out += ' var ' + ($nextValid) + ' = true; ';\n      }\n      if ($i) {\n        out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { ';\n        $closingBraces += '}';\n      }\n      out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }';\n    }\n  }\n  it.compositeRule = $it.compositeRule = $wasComposite;\n  out += '' + ($closingBraces) + 'if (!' + ($valid) + ') {   var err =   '; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('oneOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should match exactly one schema in oneOf\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError(vErrors); ';\n    } else {\n      out += ' validate.errors = vErrors; return false; ';\n    }\n  }\n  out += '} else {  errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }';\n  if (it.opts.allErrors) {\n    out += ' } ';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_pattern(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema);\n  out += 'if ( ';\n  if ($isData) {\n    out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n  }\n  out += ' !' + ($regexp) + '.test(' + ($data) + ') ) {   ';\n  var $$outStack = $$outStack || [];\n  $$outStack.push(out);\n  out = ''; /* istanbul ignore else */\n  if (it.createErrors !== false) {\n    out += ' { keyword: \\'' + ('pattern') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern:  ';\n    if ($isData) {\n      out += '' + ($schemaValue);\n    } else {\n      out += '' + (it.util.toQuotedString($schema));\n    }\n    out += '  } ';\n    if (it.opts.messages !== false) {\n      out += ' , message: \\'should match pattern \"';\n      if ($isData) {\n        out += '\\' + ' + ($schemaValue) + ' + \\'';\n      } else {\n        out += '' + (it.util.escapeQuotes($schema));\n      }\n      out += '\"\\' ';\n    }\n    if (it.opts.verbose) {\n      out += ' , schema:  ';\n      if ($isData) {\n        out += 'validate.schema' + ($schemaPath);\n      } else {\n        out += '' + (it.util.toQuotedString($schema));\n      }\n      out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n    }\n    out += ' } ';\n  } else {\n    out += ' {} ';\n  }\n  var __err = out;\n  out = $$outStack.pop();\n  if (!it.compositeRule && $breakOnError) {\n    /* istanbul ignore if */\n    if (it.async) {\n      out += ' throw new ValidationError([' + (__err) + ']); ';\n    } else {\n      out += ' validate.errors = [' + (__err) + ']; return false; ';\n    }\n  } else {\n    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n  }\n  out += '} ';\n  if ($breakOnError) {\n    out += ' else { ';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_properties(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  var $key = 'key' + $lvl,\n    $idx = 'idx' + $lvl,\n    $dataNxt = $it.dataLevel = it.dataLevel + 1,\n    $nextData = 'data' + $dataNxt,\n    $dataProperties = 'dataProperties' + $lvl;\n  var $schemaKeys = Object.keys($schema || {}).filter(notProto),\n    $pProperties = it.schema.patternProperties || {},\n    $pPropertyKeys = Object.keys($pProperties).filter(notProto),\n    $aProperties = it.schema.additionalProperties,\n    $someProperties = $schemaKeys.length || $pPropertyKeys.length,\n    $noAdditional = $aProperties === false,\n    $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,\n    $removeAdditional = it.opts.removeAdditional,\n    $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional,\n    $ownProperties = it.opts.ownProperties,\n    $currentBaseId = it.baseId;\n  var $required = it.schema.required;\n  if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) {\n    var $requiredHash = it.util.toHash($required);\n  }\n\n  function notProto(p) {\n    return p !== '__proto__';\n  }\n  out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;';\n  if ($ownProperties) {\n    out += ' var ' + ($dataProperties) + ' = undefined;';\n  }\n  if ($checkAdditional) {\n    if ($ownProperties) {\n      out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n    } else {\n      out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n    }\n    if ($someProperties) {\n      out += ' var isAdditional' + ($lvl) + ' = !(false ';\n      if ($schemaKeys.length) {\n        if ($schemaKeys.length > 8) {\n          out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') ';\n        } else {\n          var arr1 = $schemaKeys;\n          if (arr1) {\n            var $propertyKey, i1 = -1,\n              l1 = arr1.length - 1;\n            while (i1 < l1) {\n              $propertyKey = arr1[i1 += 1];\n              out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';\n            }\n          }\n        }\n      }\n      if ($pPropertyKeys.length) {\n        var arr2 = $pPropertyKeys;\n        if (arr2) {\n          var $pProperty, $i = -1,\n            l2 = arr2.length - 1;\n          while ($i < l2) {\n            $pProperty = arr2[$i += 1];\n            out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') ';\n          }\n        }\n      }\n      out += ' ); if (isAdditional' + ($lvl) + ') { ';\n    }\n    if ($removeAdditional == 'all') {\n      out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n    } else {\n      var $currentErrorPath = it.errorPath;\n      var $additionalProperty = '\\' + ' + $key + ' + \\'';\n      if (it.opts._errorDataPathProperty) {\n        it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n      }\n      if ($noAdditional) {\n        if ($removeAdditional) {\n          out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n        } else {\n          out += ' ' + ($nextValid) + ' = false; ';\n          var $currErrSchemaPath = $errSchemaPath;\n          $errSchemaPath = it.errSchemaPath + '/additionalProperties';\n          var $$outStack = $$outStack || [];\n          $$outStack.push(out);\n          out = ''; /* istanbul ignore else */\n          if (it.createErrors !== false) {\n            out += ' { keyword: \\'' + ('additionalProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \\'' + ($additionalProperty) + '\\' } ';\n            if (it.opts.messages !== false) {\n              out += ' , message: \\'';\n              if (it.opts._errorDataPathProperty) {\n                out += 'is an invalid additional property';\n              } else {\n                out += 'should NOT have additional properties';\n              }\n              out += '\\' ';\n            }\n            if (it.opts.verbose) {\n              out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n            }\n            out += ' } ';\n          } else {\n            out += ' {} ';\n          }\n          var __err = out;\n          out = $$outStack.pop();\n          if (!it.compositeRule && $breakOnError) {\n            /* istanbul ignore if */\n            if (it.async) {\n              out += ' throw new ValidationError([' + (__err) + ']); ';\n            } else {\n              out += ' validate.errors = [' + (__err) + ']; return false; ';\n            }\n          } else {\n            out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n          }\n          $errSchemaPath = $currErrSchemaPath;\n          if ($breakOnError) {\n            out += ' break; ';\n          }\n        }\n      } else if ($additionalIsSchema) {\n        if ($removeAdditional == 'failing') {\n          out += ' var ' + ($errs) + ' = errors;  ';\n          var $wasComposite = it.compositeRule;\n          it.compositeRule = $it.compositeRule = true;\n          $it.schema = $aProperties;\n          $it.schemaPath = it.schemaPath + '.additionalProperties';\n          $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n          $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n          var $passData = $data + '[' + $key + ']';\n          $it.dataPathArr[$dataNxt] = $key;\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n          } else {\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n          }\n          out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; }  ';\n          it.compositeRule = $it.compositeRule = $wasComposite;\n        } else {\n          $it.schema = $aProperties;\n          $it.schemaPath = it.schemaPath + '.additionalProperties';\n          $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n          $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n          var $passData = $data + '[' + $key + ']';\n          $it.dataPathArr[$dataNxt] = $key;\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n          } else {\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n          }\n          if ($breakOnError) {\n            out += ' if (!' + ($nextValid) + ') break; ';\n          }\n        }\n      }\n      it.errorPath = $currentErrorPath;\n    }\n    if ($someProperties) {\n      out += ' } ';\n    }\n    out += ' }  ';\n    if ($breakOnError) {\n      out += ' if (' + ($nextValid) + ') { ';\n      $closingBraces += '}';\n    }\n  }\n  var $useDefaults = it.opts.useDefaults && !it.compositeRule;\n  if ($schemaKeys.length) {\n    var arr3 = $schemaKeys;\n    if (arr3) {\n      var $propertyKey, i3 = -1,\n        l3 = arr3.length - 1;\n      while (i3 < l3) {\n        $propertyKey = arr3[i3 += 1];\n        var $sch = $schema[$propertyKey];\n        if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n          var $prop = it.util.getProperty($propertyKey),\n            $passData = $data + $prop,\n            $hasDefault = $useDefaults && $sch.default !== undefined;\n          $it.schema = $sch;\n          $it.schemaPath = $schemaPath + $prop;\n          $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);\n          $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);\n          $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            $code = it.util.varReplace($code, $nextData, $passData);\n            var $useData = $passData;\n          } else {\n            var $useData = $nextData;\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';\n          }\n          if ($hasDefault) {\n            out += ' ' + ($code) + ' ';\n          } else {\n            if ($requiredHash && $requiredHash[$propertyKey]) {\n              out += ' if ( ' + ($useData) + ' === undefined ';\n              if ($ownProperties) {\n                out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n              }\n              out += ') { ' + ($nextValid) + ' = false; ';\n              var $currentErrorPath = it.errorPath,\n                $currErrSchemaPath = $errSchemaPath,\n                $missingProperty = it.util.escapeQuotes($propertyKey);\n              if (it.opts._errorDataPathProperty) {\n                it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n              }\n              $errSchemaPath = it.errSchemaPath + '/required';\n              var $$outStack = $$outStack || [];\n              $$outStack.push(out);\n              out = ''; /* istanbul ignore else */\n              if (it.createErrors !== false) {\n                out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n                if (it.opts.messages !== false) {\n                  out += ' , message: \\'';\n                  if (it.opts._errorDataPathProperty) {\n                    out += 'is a required property';\n                  } else {\n                    out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n                  }\n                  out += '\\' ';\n                }\n                if (it.opts.verbose) {\n                  out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n                }\n                out += ' } ';\n              } else {\n                out += ' {} ';\n              }\n              var __err = out;\n              out = $$outStack.pop();\n              if (!it.compositeRule && $breakOnError) {\n                /* istanbul ignore if */\n                if (it.async) {\n                  out += ' throw new ValidationError([' + (__err) + ']); ';\n                } else {\n                  out += ' validate.errors = [' + (__err) + ']; return false; ';\n                }\n              } else {\n                out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n              }\n              $errSchemaPath = $currErrSchemaPath;\n              it.errorPath = $currentErrorPath;\n              out += ' } else { ';\n            } else {\n              if ($breakOnError) {\n                out += ' if ( ' + ($useData) + ' === undefined ';\n                if ($ownProperties) {\n                  out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n                }\n                out += ') { ' + ($nextValid) + ' = true; } else { ';\n              } else {\n                out += ' if (' + ($useData) + ' !== undefined ';\n                if ($ownProperties) {\n                  out += ' &&   Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n                }\n                out += ' ) { ';\n              }\n            }\n            out += ' ' + ($code) + ' } ';\n          }\n        }\n        if ($breakOnError) {\n          out += ' if (' + ($nextValid) + ') { ';\n          $closingBraces += '}';\n        }\n      }\n    }\n  }\n  if ($pPropertyKeys.length) {\n    var arr4 = $pPropertyKeys;\n    if (arr4) {\n      var $pProperty, i4 = -1,\n        l4 = arr4.length - 1;\n      while (i4 < l4) {\n        $pProperty = arr4[i4 += 1];\n        var $sch = $pProperties[$pProperty];\n        if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n          $it.schema = $sch;\n          $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);\n          $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);\n          if ($ownProperties) {\n            out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n          } else {\n            out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n          }\n          out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { ';\n          $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n          var $passData = $data + '[' + $key + ']';\n          $it.dataPathArr[$dataNxt] = $key;\n          var $code = it.validate($it);\n          $it.baseId = $currentBaseId;\n          if (it.util.varOccurences($code, $nextData) < 2) {\n            out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n          } else {\n            out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n          }\n          if ($breakOnError) {\n            out += ' if (!' + ($nextValid) + ') break; ';\n          }\n          out += ' } ';\n          if ($breakOnError) {\n            out += ' else ' + ($nextValid) + ' = true; ';\n          }\n          out += ' }  ';\n          if ($breakOnError) {\n            out += ' if (' + ($nextValid) + ') { ';\n            $closingBraces += '}';\n          }\n        }\n      }\n    }\n  }\n  if ($breakOnError) {\n    out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_propertyNames(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $errs = 'errs__' + $lvl;\n  var $it = it.util.copy(it);\n  var $closingBraces = '';\n  $it.level++;\n  var $nextValid = 'valid' + $it.level;\n  out += 'var ' + ($errs) + ' = errors;';\n  if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n    $it.schema = $schema;\n    $it.schemaPath = $schemaPath;\n    $it.errSchemaPath = $errSchemaPath;\n    var $key = 'key' + $lvl,\n      $idx = 'idx' + $lvl,\n      $i = 'i' + $lvl,\n      $invalidName = '\\' + ' + $key + ' + \\'',\n      $dataNxt = $it.dataLevel = it.dataLevel + 1,\n      $nextData = 'data' + $dataNxt,\n      $dataProperties = 'dataProperties' + $lvl,\n      $ownProperties = it.opts.ownProperties,\n      $currentBaseId = it.baseId;\n    if ($ownProperties) {\n      out += ' var ' + ($dataProperties) + ' = undefined; ';\n    }\n    if ($ownProperties) {\n      out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n    } else {\n      out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n    }\n    out += ' var startErrs' + ($lvl) + ' = errors; ';\n    var $passData = $key;\n    var $wasComposite = it.compositeRule;\n    it.compositeRule = $it.compositeRule = true;\n    var $code = it.validate($it);\n    $it.baseId = $currentBaseId;\n    if (it.util.varOccurences($code, $nextData) < 2) {\n      out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n    } else {\n      out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n    }\n    it.compositeRule = $it.compositeRule = $wasComposite;\n    out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + '<errors; ' + ($i) + '++) { vErrors[' + ($i) + '].propertyName = ' + ($key) + '; }   var err =   '; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('propertyNames') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { propertyName: \\'' + ($invalidName) + '\\' } ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'property name \\\\\\'' + ($invalidName) + '\\\\\\' is invalid\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    if (!it.compositeRule && $breakOnError) {\n      /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError(vErrors); ';\n      } else {\n        out += ' validate.errors = vErrors; return false; ';\n      }\n    }\n    if ($breakOnError) {\n      out += ' break; ';\n    }\n    out += ' } }';\n  }\n  if ($breakOnError) {\n    out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_ref(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $async, $refCode;\n  if ($schema == '#' || $schema == '#/') {\n    if (it.isRoot) {\n      $async = it.async;\n      $refCode = 'validate';\n    } else {\n      $async = it.root.schema.$async === true;\n      $refCode = 'root.refVal[0]';\n    }\n  } else {\n    var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot);\n    if ($refVal === undefined) {\n      var $message = it.MissingRefError.message(it.baseId, $schema);\n      if (it.opts.missingRefs == 'fail') {\n        it.logger.error($message);\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('$ref') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \\'' + (it.util.escapeQuotes($schema)) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'can\\\\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) {\n          /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n        if ($breakOnError) {\n          out += ' if (false) { ';\n        }\n      } else if (it.opts.missingRefs == 'ignore') {\n        it.logger.warn($message);\n        if ($breakOnError) {\n          out += ' if (true) { ';\n        }\n      } else {\n        throw new it.MissingRefError(it.baseId, $schema, $message);\n      }\n    } else if ($refVal.inline) {\n      var $it = it.util.copy(it);\n      $it.level++;\n      var $nextValid = 'valid' + $it.level;\n      $it.schema = $refVal.schema;\n      $it.schemaPath = '';\n      $it.errSchemaPath = $schema;\n      var $code = it.validate($it).replace(/validate\\.schema/g, $refVal.code);\n      out += ' ' + ($code) + ' ';\n      if ($breakOnError) {\n        out += ' if (' + ($nextValid) + ') { ';\n      }\n    } else {\n      $async = $refVal.$async === true || (it.async && $refVal.$async !== false);\n      $refCode = $refVal.code;\n    }\n  }\n  if ($refCode) {\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = '';\n    if (it.opts.passContext) {\n      out += ' ' + ($refCode) + '.call(this, ';\n    } else {\n      out += ' ' + ($refCode) + '( ';\n    }\n    out += ' ' + ($data) + ', (dataPath || \\'\\')';\n    if (it.errorPath != '\"\"') {\n      out += ' + ' + (it.errorPath);\n    }\n    var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n      $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n    out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData)  ';\n    var __callValidate = out;\n    out = $$outStack.pop();\n    if ($async) {\n      if (!it.async) throw new Error('async schema referenced by sync schema');\n      if ($breakOnError) {\n        out += ' var ' + ($valid) + '; ';\n      }\n      out += ' try { await ' + (__callValidate) + '; ';\n      if ($breakOnError) {\n        out += ' ' + ($valid) + ' = true; ';\n      }\n      out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ';\n      if ($breakOnError) {\n        out += ' ' + ($valid) + ' = false; ';\n      }\n      out += ' } ';\n      if ($breakOnError) {\n        out += ' if (' + ($valid) + ') { ';\n      }\n    } else {\n      out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } ';\n      if ($breakOnError) {\n        out += ' else { ';\n      }\n    }\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_required(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  var $vSchema = 'schema' + $lvl;\n  if (!$isData) {\n    if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) {\n      var $required = [];\n      var arr1 = $schema;\n      if (arr1) {\n        var $property, i1 = -1,\n          l1 = arr1.length - 1;\n        while (i1 < l1) {\n          $property = arr1[i1 += 1];\n          var $propertySch = it.schema.properties[$property];\n          if (!($propertySch && (it.opts.strictKeywords ? (typeof $propertySch == 'object' && Object.keys($propertySch).length > 0) || $propertySch === false : it.util.schemaHasRules($propertySch, it.RULES.all)))) {\n            $required[$required.length] = $property;\n          }\n        }\n      }\n    } else {\n      var $required = $schema;\n    }\n  }\n  if ($isData || $required.length) {\n    var $currentErrorPath = it.errorPath,\n      $loopRequired = $isData || $required.length >= it.opts.loopRequired,\n      $ownProperties = it.opts.ownProperties;\n    if ($breakOnError) {\n      out += ' var missing' + ($lvl) + '; ';\n      if ($loopRequired) {\n        if (!$isData) {\n          out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n        }\n        var $i = 'i' + $lvl,\n          $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n        if (it.opts._errorDataPathProperty) {\n          it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n        }\n        out += ' var ' + ($valid) + ' = true; ';\n        if ($isData) {\n          out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n        }\n        out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined ';\n        if ($ownProperties) {\n          out += ' &&   Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n        }\n        out += '; if (!' + ($valid) + ') break; } ';\n        if ($isData) {\n          out += '  }  ';\n        }\n        out += '  if (!' + ($valid) + ') {   ';\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'';\n            if (it.opts._errorDataPathProperty) {\n              out += 'is a required property';\n            } else {\n              out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) {\n          /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n        out += ' } else { ';\n      } else {\n        out += ' if ( ';\n        var arr2 = $required;\n        if (arr2) {\n          var $propertyKey, $i = -1,\n            l2 = arr2.length - 1;\n          while ($i < l2) {\n            $propertyKey = arr2[$i += 1];\n            if ($i) {\n              out += ' || ';\n            }\n            var $prop = it.util.getProperty($propertyKey),\n              $useData = $data + $prop;\n            out += ' ( ( ' + ($useData) + ' === undefined ';\n            if ($ownProperties) {\n              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n            }\n            out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n          }\n        }\n        out += ') {  ';\n        var $propertyPath = 'missing' + $lvl,\n          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n        if (it.opts._errorDataPathProperty) {\n          it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n        }\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'';\n            if (it.opts._errorDataPathProperty) {\n              out += 'is a required property';\n            } else {\n              out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) {\n          /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n        out += ' } else { ';\n      }\n    } else {\n      if ($loopRequired) {\n        if (!$isData) {\n          out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n        }\n        var $i = 'i' + $lvl,\n          $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n          $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n        if (it.opts._errorDataPathProperty) {\n          it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n        }\n        if ($isData) {\n          out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) {  var err =   '; /* istanbul ignore else */\n          if (it.createErrors !== false) {\n            out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n            if (it.opts.messages !== false) {\n              out += ' , message: \\'';\n              if (it.opts._errorDataPathProperty) {\n                out += 'is a required property';\n              } else {\n                out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n              }\n              out += '\\' ';\n            }\n            if (it.opts.verbose) {\n              out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n            }\n            out += ' } ';\n          } else {\n            out += ' {} ';\n          }\n          out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { ';\n        }\n        out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined ';\n        if ($ownProperties) {\n          out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n        }\n        out += ') {  var err =   '; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'';\n            if (it.opts._errorDataPathProperty) {\n              out += 'is a required property';\n            } else {\n              out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';\n        if ($isData) {\n          out += '  }  ';\n        }\n      } else {\n        var arr3 = $required;\n        if (arr3) {\n          var $propertyKey, i3 = -1,\n            l3 = arr3.length - 1;\n          while (i3 < l3) {\n            $propertyKey = arr3[i3 += 1];\n            var $prop = it.util.getProperty($propertyKey),\n              $missingProperty = it.util.escapeQuotes($propertyKey),\n              $useData = $data + $prop;\n            if (it.opts._errorDataPathProperty) {\n              it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n            }\n            out += ' if ( ' + ($useData) + ' === undefined ';\n            if ($ownProperties) {\n              out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n            }\n            out += ') {  var err =   '; /* istanbul ignore else */\n            if (it.createErrors !== false) {\n              out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n              if (it.opts.messages !== false) {\n                out += ' , message: \\'';\n                if (it.opts._errorDataPathProperty) {\n                  out += 'is a required property';\n                } else {\n                  out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n                }\n                out += '\\' ';\n              }\n              if (it.opts.verbose) {\n                out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n              }\n              out += ' } ';\n            } else {\n              out += ' {} ';\n            }\n            out += ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n          }\n        }\n      }\n    }\n    it.errorPath = $currentErrorPath;\n  } else if ($breakOnError) {\n    out += ' if (true) {';\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_uniqueItems(it, $keyword, $ruleType) {\n  var out = ' ';\n  var $lvl = it.level;\n  var $dataLvl = it.dataLevel;\n  var $schema = it.schema[$keyword];\n  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n  var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n  var $breakOnError = !it.opts.allErrors;\n  var $data = 'data' + ($dataLvl || '');\n  var $valid = 'valid' + $lvl;\n  var $isData = it.opts.$data && $schema && $schema.$data,\n    $schemaValue;\n  if ($isData) {\n    out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n    $schemaValue = 'schema' + $lvl;\n  } else {\n    $schemaValue = $schema;\n  }\n  if (($schema || $isData) && it.opts.uniqueItems !== false) {\n    if ($isData) {\n      out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'boolean\\') ' + ($valid) + ' = false; else { ';\n    }\n    out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { ';\n    var $itemType = it.schema.items && it.schema.items.type,\n      $typeIsArray = Array.isArray($itemType);\n    if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) {\n      out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } ';\n    } else {\n      out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; ';\n      var $method = 'checkDataType' + ($typeIsArray ? 's' : '');\n      out += ' if (' + (it.util[$method]($itemType, 'item', it.opts.strictNumbers, true)) + ') continue; ';\n      if ($typeIsArray) {\n        out += ' if (typeof item == \\'string\\') item = \\'\"\\' + item; ';\n      }\n      out += ' if (typeof itemIndices[item] == \\'number\\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ';\n    }\n    out += ' } ';\n    if ($isData) {\n      out += '  }  ';\n    }\n    out += ' if (!' + ($valid) + ') {   ';\n    var $$outStack = $$outStack || [];\n    $$outStack.push(out);\n    out = ''; /* istanbul ignore else */\n    if (it.createErrors !== false) {\n      out += ' { keyword: \\'' + ('uniqueItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } ';\n      if (it.opts.messages !== false) {\n        out += ' , message: \\'should NOT have duplicate items (items ## \\' + j + \\' and \\' + i + \\' are identical)\\' ';\n      }\n      if (it.opts.verbose) {\n        out += ' , schema:  ';\n        if ($isData) {\n          out += 'validate.schema' + ($schemaPath);\n        } else {\n          out += '' + ($schema);\n        }\n        out += '         , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n      }\n      out += ' } ';\n    } else {\n      out += ' {} ';\n    }\n    var __err = out;\n    out = $$outStack.pop();\n    if (!it.compositeRule && $breakOnError) {\n      /* istanbul ignore if */\n      if (it.async) {\n        out += ' throw new ValidationError([' + (__err) + ']); ';\n      } else {\n        out += ' validate.errors = [' + (__err) + ']; return false; ';\n      }\n    } else {\n      out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n    }\n    out += ' } ';\n    if ($breakOnError) {\n      out += ' else { ';\n    }\n  } else {\n    if ($breakOnError) {\n      out += ' if (true) { ';\n    }\n  }\n  return out;\n}\n","'use strict';\nmodule.exports = function generate_validate(it, $keyword, $ruleType) {\n  var out = '';\n  var $async = it.schema.$async === true,\n    $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'),\n    $id = it.self._getId(it.schema);\n  if (it.opts.strictKeywords) {\n    var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords);\n    if ($unknownKwd) {\n      var $keywordsMsg = 'unknown keyword: ' + $unknownKwd;\n      if (it.opts.strictKeywords === 'log') it.logger.warn($keywordsMsg);\n      else throw new Error($keywordsMsg);\n    }\n  }\n  if (it.isTop) {\n    out += ' var validate = ';\n    if ($async) {\n      it.async = true;\n      out += 'async ';\n    }\n    out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \\'use strict\\'; ';\n    if ($id && (it.opts.sourceCode || it.opts.processCode)) {\n      out += ' ' + ('/\\*# sourceURL=' + $id + ' */') + ' ';\n    }\n  }\n  if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) {\n    var $keyword = 'false schema';\n    var $lvl = it.level;\n    var $dataLvl = it.dataLevel;\n    var $schema = it.schema[$keyword];\n    var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n    var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n    var $breakOnError = !it.opts.allErrors;\n    var $errorKeyword;\n    var $data = 'data' + ($dataLvl || '');\n    var $valid = 'valid' + $lvl;\n    if (it.schema === false) {\n      if (it.isTop) {\n        $breakOnError = true;\n      } else {\n        out += ' var ' + ($valid) + ' = false; ';\n      }\n      var $$outStack = $$outStack || [];\n      $$outStack.push(out);\n      out = ''; /* istanbul ignore else */\n      if (it.createErrors !== false) {\n        out += ' { keyword: \\'' + ($errorKeyword || 'false schema') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n        if (it.opts.messages !== false) {\n          out += ' , message: \\'boolean schema is false\\' ';\n        }\n        if (it.opts.verbose) {\n          out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n        }\n        out += ' } ';\n      } else {\n        out += ' {} ';\n      }\n      var __err = out;\n      out = $$outStack.pop();\n      if (!it.compositeRule && $breakOnError) {\n        /* istanbul ignore if */\n        if (it.async) {\n          out += ' throw new ValidationError([' + (__err) + ']); ';\n        } else {\n          out += ' validate.errors = [' + (__err) + ']; return false; ';\n        }\n      } else {\n        out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n      }\n    } else {\n      if (it.isTop) {\n        if ($async) {\n          out += ' return data; ';\n        } else {\n          out += ' validate.errors = null; return true; ';\n        }\n      } else {\n        out += ' var ' + ($valid) + ' = true; ';\n      }\n    }\n    if (it.isTop) {\n      out += ' }; return validate; ';\n    }\n    return out;\n  }\n  if (it.isTop) {\n    var $top = it.isTop,\n      $lvl = it.level = 0,\n      $dataLvl = it.dataLevel = 0,\n      $data = 'data';\n    it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema));\n    it.baseId = it.baseId || it.rootId;\n    delete it.isTop;\n    it.dataPathArr = [\"\"];\n    if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) {\n      var $defaultMsg = 'default is ignored in the schema root';\n      if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n      else throw new Error($defaultMsg);\n    }\n    out += ' var vErrors = null; ';\n    out += ' var errors = 0;     ';\n    out += ' if (rootData === undefined) rootData = data; ';\n  } else {\n    var $lvl = it.level,\n      $dataLvl = it.dataLevel,\n      $data = 'data' + ($dataLvl || '');\n    if ($id) it.baseId = it.resolve.url(it.baseId, $id);\n    if ($async && !it.async) throw new Error('async schema in sync schema');\n    out += ' var errs_' + ($lvl) + ' = errors;';\n  }\n  var $valid = 'valid' + $lvl,\n    $breakOnError = !it.opts.allErrors,\n    $closingBraces1 = '',\n    $closingBraces2 = '';\n  var $errorKeyword;\n  var $typeSchema = it.schema.type,\n    $typeIsArray = Array.isArray($typeSchema);\n  if ($typeSchema && it.opts.nullable && it.schema.nullable === true) {\n    if ($typeIsArray) {\n      if ($typeSchema.indexOf('null') == -1) $typeSchema = $typeSchema.concat('null');\n    } else if ($typeSchema != 'null') {\n      $typeSchema = [$typeSchema, 'null'];\n      $typeIsArray = true;\n    }\n  }\n  if ($typeIsArray && $typeSchema.length == 1) {\n    $typeSchema = $typeSchema[0];\n    $typeIsArray = false;\n  }\n  if (it.schema.$ref && $refKeywords) {\n    if (it.opts.extendRefs == 'fail') {\n      throw new Error('$ref: validation keywords used in schema at path \"' + it.errSchemaPath + '\" (see option extendRefs)');\n    } else if (it.opts.extendRefs !== true) {\n      $refKeywords = false;\n      it.logger.warn('$ref: keywords ignored in schema at path \"' + it.errSchemaPath + '\"');\n    }\n  }\n  if (it.schema.$comment && it.opts.$comment) {\n    out += ' ' + (it.RULES.all.$comment.code(it, '$comment'));\n  }\n  if ($typeSchema) {\n    if (it.opts.coerceTypes) {\n      var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema);\n    }\n    var $rulesGroup = it.RULES.types[$typeSchema];\n    if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) {\n      var $schemaPath = it.schemaPath + '.type',\n        $errSchemaPath = it.errSchemaPath + '/type';\n      var $schemaPath = it.schemaPath + '.type',\n        $errSchemaPath = it.errSchemaPath + '/type',\n        $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType';\n      out += ' if (' + (it.util[$method]($typeSchema, $data, it.opts.strictNumbers, true)) + ') { ';\n      if ($coerceToTypes) {\n        var $dataType = 'dataType' + $lvl,\n          $coerced = 'coerced' + $lvl;\n        out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; var ' + ($coerced) + ' = undefined; ';\n        if (it.opts.coerceTypes == 'array') {\n          out += ' if (' + ($dataType) + ' == \\'object\\' && Array.isArray(' + ($data) + ') && ' + ($data) + '.length == 1) { ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; if (' + (it.util.checkDataType(it.schema.type, $data, it.opts.strictNumbers)) + ') ' + ($coerced) + ' = ' + ($data) + '; } ';\n        }\n        out += ' if (' + ($coerced) + ' !== undefined) ; ';\n        var arr1 = $coerceToTypes;\n        if (arr1) {\n          var $type, $i = -1,\n            l1 = arr1.length - 1;\n          while ($i < l1) {\n            $type = arr1[$i += 1];\n            if ($type == 'string') {\n              out += ' else if (' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\') ' + ($coerced) + ' = \\'\\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \\'\\'; ';\n            } else if ($type == 'number' || $type == 'integer') {\n              out += ' else if (' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \\'string\\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' ';\n              if ($type == 'integer') {\n                out += ' && !(' + ($data) + ' % 1)';\n              }\n              out += ')) ' + ($coerced) + ' = +' + ($data) + '; ';\n            } else if ($type == 'boolean') {\n              out += ' else if (' + ($data) + ' === \\'false\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \\'true\\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; ';\n            } else if ($type == 'null') {\n              out += ' else if (' + ($data) + ' === \\'\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; ';\n            } else if (it.opts.coerceTypes == 'array' && $type == 'array') {\n              out += ' else if (' + ($dataType) + ' == \\'string\\' || ' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; ';\n            }\n          }\n        }\n        out += ' else {   ';\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n          if ($typeIsArray) {\n            out += '' + ($typeSchema.join(\",\"));\n          } else {\n            out += '' + ($typeSchema);\n          }\n          out += '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'should be ';\n            if ($typeIsArray) {\n              out += '' + ($typeSchema.join(\",\"));\n            } else {\n              out += '' + ($typeSchema);\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) {\n          /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n        out += ' } if (' + ($coerced) + ' !== undefined) {  ';\n        var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n          $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n        out += ' ' + ($data) + ' = ' + ($coerced) + '; ';\n        if (!$dataLvl) {\n          out += 'if (' + ($parentData) + ' !== undefined)';\n        }\n        out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } ';\n      } else {\n        var $$outStack = $$outStack || [];\n        $$outStack.push(out);\n        out = ''; /* istanbul ignore else */\n        if (it.createErrors !== false) {\n          out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n          if ($typeIsArray) {\n            out += '' + ($typeSchema.join(\",\"));\n          } else {\n            out += '' + ($typeSchema);\n          }\n          out += '\\' } ';\n          if (it.opts.messages !== false) {\n            out += ' , message: \\'should be ';\n            if ($typeIsArray) {\n              out += '' + ($typeSchema.join(\",\"));\n            } else {\n              out += '' + ($typeSchema);\n            }\n            out += '\\' ';\n          }\n          if (it.opts.verbose) {\n            out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n          }\n          out += ' } ';\n        } else {\n          out += ' {} ';\n        }\n        var __err = out;\n        out = $$outStack.pop();\n        if (!it.compositeRule && $breakOnError) {\n          /* istanbul ignore if */\n          if (it.async) {\n            out += ' throw new ValidationError([' + (__err) + ']); ';\n          } else {\n            out += ' validate.errors = [' + (__err) + ']; return false; ';\n          }\n        } else {\n          out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n        }\n      }\n      out += ' } ';\n    }\n  }\n  if (it.schema.$ref && !$refKeywords) {\n    out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' ';\n    if ($breakOnError) {\n      out += ' } if (errors === ';\n      if ($top) {\n        out += '0';\n      } else {\n        out += 'errs_' + ($lvl);\n      }\n      out += ') { ';\n      $closingBraces2 += '}';\n    }\n  } else {\n    var arr2 = it.RULES;\n    if (arr2) {\n      var $rulesGroup, i2 = -1,\n        l2 = arr2.length - 1;\n      while (i2 < l2) {\n        $rulesGroup = arr2[i2 += 1];\n        if ($shouldUseGroup($rulesGroup)) {\n          if ($rulesGroup.type) {\n            out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data, it.opts.strictNumbers)) + ') { ';\n          }\n          if (it.opts.useDefaults) {\n            if ($rulesGroup.type == 'object' && it.schema.properties) {\n              var $schema = it.schema.properties,\n                $schemaKeys = Object.keys($schema);\n              var arr3 = $schemaKeys;\n              if (arr3) {\n                var $propertyKey, i3 = -1,\n                  l3 = arr3.length - 1;\n                while (i3 < l3) {\n                  $propertyKey = arr3[i3 += 1];\n                  var $sch = $schema[$propertyKey];\n                  if ($sch.default !== undefined) {\n                    var $passData = $data + it.util.getProperty($propertyKey);\n                    if (it.compositeRule) {\n                      if (it.opts.strictDefaults) {\n                        var $defaultMsg = 'default is ignored for: ' + $passData;\n                        if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n                        else throw new Error($defaultMsg);\n                      }\n                    } else {\n                      out += ' if (' + ($passData) + ' === undefined ';\n                      if (it.opts.useDefaults == 'empty') {\n                        out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \\'\\' ';\n                      }\n                      out += ' ) ' + ($passData) + ' = ';\n                      if (it.opts.useDefaults == 'shared') {\n                        out += ' ' + (it.useDefault($sch.default)) + ' ';\n                      } else {\n                        out += ' ' + (JSON.stringify($sch.default)) + ' ';\n                      }\n                      out += '; ';\n                    }\n                  }\n                }\n              }\n            } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) {\n              var arr4 = it.schema.items;\n              if (arr4) {\n                var $sch, $i = -1,\n                  l4 = arr4.length - 1;\n                while ($i < l4) {\n                  $sch = arr4[$i += 1];\n                  if ($sch.default !== undefined) {\n                    var $passData = $data + '[' + $i + ']';\n                    if (it.compositeRule) {\n                      if (it.opts.strictDefaults) {\n                        var $defaultMsg = 'default is ignored for: ' + $passData;\n                        if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n                        else throw new Error($defaultMsg);\n                      }\n                    } else {\n                      out += ' if (' + ($passData) + ' === undefined ';\n                      if (it.opts.useDefaults == 'empty') {\n                        out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \\'\\' ';\n                      }\n                      out += ' ) ' + ($passData) + ' = ';\n                      if (it.opts.useDefaults == 'shared') {\n                        out += ' ' + (it.useDefault($sch.default)) + ' ';\n                      } else {\n                        out += ' ' + (JSON.stringify($sch.default)) + ' ';\n                      }\n                      out += '; ';\n                    }\n                  }\n                }\n              }\n            }\n          }\n          var arr5 = $rulesGroup.rules;\n          if (arr5) {\n            var $rule, i5 = -1,\n              l5 = arr5.length - 1;\n            while (i5 < l5) {\n              $rule = arr5[i5 += 1];\n              if ($shouldUseRule($rule)) {\n                var $code = $rule.code(it, $rule.keyword, $rulesGroup.type);\n                if ($code) {\n                  out += ' ' + ($code) + ' ';\n                  if ($breakOnError) {\n                    $closingBraces1 += '}';\n                  }\n                }\n              }\n            }\n          }\n          if ($breakOnError) {\n            out += ' ' + ($closingBraces1) + ' ';\n            $closingBraces1 = '';\n          }\n          if ($rulesGroup.type) {\n            out += ' } ';\n            if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) {\n              out += ' else { ';\n              var $schemaPath = it.schemaPath + '.type',\n                $errSchemaPath = it.errSchemaPath + '/type';\n              var $$outStack = $$outStack || [];\n              $$outStack.push(out);\n              out = ''; /* istanbul ignore else */\n              if (it.createErrors !== false) {\n                out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n                if ($typeIsArray) {\n                  out += '' + ($typeSchema.join(\",\"));\n                } else {\n                  out += '' + ($typeSchema);\n                }\n                out += '\\' } ';\n                if (it.opts.messages !== false) {\n                  out += ' , message: \\'should be ';\n                  if ($typeIsArray) {\n                    out += '' + ($typeSchema.join(\",\"));\n                  } else {\n                    out += '' + ($typeSchema);\n                  }\n                  out += '\\' ';\n                }\n                if (it.opts.verbose) {\n                  out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n                }\n                out += ' } ';\n              } else {\n                out += ' {} ';\n              }\n              var __err = out;\n              out = $$outStack.pop();\n              if (!it.compositeRule && $breakOnError) {\n                /* istanbul ignore if */\n                if (it.async) {\n                  out += ' throw new ValidationError([' + (__err) + ']); ';\n                } else {\n                  out += ' validate.errors = [' + (__err) + ']; return false; ';\n                }\n              } else {\n                out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n              }\n              out += ' } ';\n            }\n          }\n          if ($breakOnError) {\n            out += ' if (errors === ';\n            if ($top) {\n              out += '0';\n            } else {\n              out += 'errs_' + ($lvl);\n            }\n            out += ') { ';\n            $closingBraces2 += '}';\n          }\n        }\n      }\n    }\n  }\n  if ($breakOnError) {\n    out += ' ' + ($closingBraces2) + ' ';\n  }\n  if ($top) {\n    if ($async) {\n      out += ' if (errors === 0) return data;           ';\n      out += ' else throw new ValidationError(vErrors); ';\n    } else {\n      out += ' validate.errors = vErrors; ';\n      out += ' return errors === 0;       ';\n    }\n    out += ' }; return validate;';\n  } else {\n    out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';';\n  }\n\n  function $shouldUseGroup($rulesGroup) {\n    var rules = $rulesGroup.rules;\n    for (var i = 0; i < rules.length; i++)\n      if ($shouldUseRule(rules[i])) return true;\n  }\n\n  function $shouldUseRule($rule) {\n    return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule));\n  }\n\n  function $ruleImplementsSomeKeyword($rule) {\n    var impl = $rule.implements;\n    for (var i = 0; i < impl.length; i++)\n      if (it.schema[impl[i]] !== undefined) return true;\n  }\n  return out;\n}\n","'use strict';\n\nvar IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i;\nvar customRuleCode = require('./dotjs/custom');\nvar definitionSchema = require('./definition_schema');\n\nmodule.exports = {\n  add: addKeyword,\n  get: getKeyword,\n  remove: removeKeyword,\n  validate: validateKeyword\n};\n\n\n/**\n * Define custom keyword\n * @this  Ajv\n * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords).\n * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`.\n * @return {Ajv} this for method chaining\n */\nfunction addKeyword(keyword, definition) {\n  /* jshint validthis: true */\n  /* eslint no-shadow: 0 */\n  var RULES = this.RULES;\n  if (RULES.keywords[keyword])\n    throw new Error('Keyword ' + keyword + ' is already defined');\n\n  if (!IDENTIFIER.test(keyword))\n    throw new Error('Keyword ' + keyword + ' is not a valid identifier');\n\n  if (definition) {\n    this.validateKeyword(definition, true);\n\n    var dataType = definition.type;\n    if (Array.isArray(dataType)) {\n      for (var i=0; i<dataType.length; i++)\n        _addRule(keyword, dataType[i], definition);\n    } else {\n      _addRule(keyword, dataType, definition);\n    }\n\n    var metaSchema = definition.metaSchema;\n    if (metaSchema) {\n      if (definition.$data && this._opts.$data) {\n        metaSchema = {\n          anyOf: [\n            metaSchema,\n            { '$ref': 'https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#' }\n          ]\n        };\n      }\n      definition.validateSchema = this.compile(metaSchema, true);\n    }\n  }\n\n  RULES.keywords[keyword] = RULES.all[keyword] = true;\n\n\n  function _addRule(keyword, dataType, definition) {\n    var ruleGroup;\n    for (var i=0; i<RULES.length; i++) {\n      var rg = RULES[i];\n      if (rg.type == dataType) {\n        ruleGroup = rg;\n        break;\n      }\n    }\n\n    if (!ruleGroup) {\n      ruleGroup = { type: dataType, rules: [] };\n      RULES.push(ruleGroup);\n    }\n\n    var rule = {\n      keyword: keyword,\n      definition: definition,\n      custom: true,\n      code: customRuleCode,\n      implements: definition.implements\n    };\n    ruleGroup.rules.push(rule);\n    RULES.custom[keyword] = rule;\n  }\n\n  return this;\n}\n\n\n/**\n * Get keyword\n * @this  Ajv\n * @param {String} keyword pre-defined or custom keyword.\n * @return {Object|Boolean} custom keyword definition, `true` if it is a predefined keyword, `false` otherwise.\n */\nfunction getKeyword(keyword) {\n  /* jshint validthis: true */\n  var rule = this.RULES.custom[keyword];\n  return rule ? rule.definition : this.RULES.keywords[keyword] || false;\n}\n\n\n/**\n * Remove keyword\n * @this  Ajv\n * @param {String} keyword pre-defined or custom keyword.\n * @return {Ajv} this for method chaining\n */\nfunction removeKeyword(keyword) {\n  /* jshint validthis: true */\n  var RULES = this.RULES;\n  delete RULES.keywords[keyword];\n  delete RULES.all[keyword];\n  delete RULES.custom[keyword];\n  for (var i=0; i<RULES.length; i++) {\n    var rules = RULES[i].rules;\n    for (var j=0; j<rules.length; j++) {\n      if (rules[j].keyword == keyword) {\n        rules.splice(j, 1);\n        break;\n      }\n    }\n  }\n  return this;\n}\n\n\n/**\n * Validate keyword definition\n * @this  Ajv\n * @param {Object} definition keyword definition object.\n * @param {Boolean} throwError true to throw exception if definition is invalid\n * @return {boolean} validation result\n */\nfunction validateKeyword(definition, throwError) {\n  validateKeyword.errors = null;\n  var v = this._validateKeyword = this._validateKeyword\n                                  || this.compile(definitionSchema, true);\n\n  if (v(definition)) return true;\n  validateKeyword.errors = v.errors;\n  if (throwError)\n    throw new Error('custom keyword definition is invalid: '  + this.errorsText(v.errors));\n  else\n    return false;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _amb = _interopRequireDefault(require(\"./amb.Logger\"));\n\nvar _amb2 = require(\"./amb.Helper\");\n\nvar _amb3 = _interopRequireDefault(require(\"./amb.MessageClientBuilder\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Channel = function Channel(cometd, channelName, initialized) {\n  var subscribeOptionsCallback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {\n    return {};\n  };\n  var subscription = null;\n  var subscriptionCallbackResponse = null;\n  var listeners = [];\n  var listenerCallbackQueue = [];\n  var LOGGER = new _amb.default('amb.Channel');\n  var idCounter = 0;\n  var _initialized = initialized;\n\n  function _disconnected() {\n    var status = cometd.getStatus();\n    return status === 'disconnecting' || status === 'disconnected';\n  }\n\n  function getSubscriptionCommandSender() {\n    return (0, _amb3.default)().getServerConnection().getSubscriptionCommandSender();\n  }\n\n  return {\n    /**\n     * Subscribe to have this channel's messages be published to the specified\n     * callback.\n     *\n     * @return Integer id for the newly registered listener\n     */\n    subscribe:\n    /*Integer*/\n    function subscribe(listener) {\n      if (!listener.getCallback()) {\n        LOGGER.addErrorMessage('Cannot subscribe to channel: ' + channelName + ', callback not provided');\n        return;\n      }\n\n      for (var i = 0; i < listeners.length; i++) {\n        if (listeners[i] === listener) {\n          LOGGER.debug('Channel listener already in the list');\n          return listener.getID();\n        }\n      }\n\n      listeners.push(listener);\n      var listenerSubCallback = listener.getSubscriptionCallback();\n\n      if (listenerSubCallback) {\n        if (subscriptionCallbackResponse) {\n          listenerSubCallback(subscriptionCallbackResponse);\n        } else {\n          listenerCallbackQueue.push(listenerSubCallback);\n        }\n      }\n\n      if (!subscription && _initialized) {\n        try {\n          this.subscribeToCometD();\n        } catch (e) {\n          LOGGER.addErrorMessage(e);\n          return;\n        }\n      }\n\n      return ++idCounter;\n    },\n    resubscribe:\n    /*void*/\n    function resubscribe() {\n      subscription = null;\n\n      for (var i = 0; i < listeners.length; i++) {\n        listeners[i].resubscribe();\n      }\n    },\n    _handleResponse:\n    /*void*/\n    function _handleResponse(\n    /*Hash*/\n    message) {\n      for (var i = 0; i < listeners.length; i++) {\n        listeners[i].getCallback()(message);\n      }\n    },\n\n    /**\n     * Remove listener from channel, so callback pertaining to listener\n     * no longer receives messages published to channel. When the last\n     * listener is removed, the subscription is destroyed.\n     */\n    unsubscribe:\n    /*void*/\n    function unsubscribe(\n    /*amb.ChannelListener*/\n    listener) {\n      if (!listener) {\n        LOGGER.addErrorMessage('Cannot unsubscribe from channel: ' + channelName + ', listener argument does not exist');\n        return;\n      } // Remove listener\n\n\n      for (var i = 0; i < listeners.length; i++) {\n        if (listeners[i].getID() === listener.getID()) {\n          listeners.splice(i, 1);\n          break;\n        }\n      } // Unsubscribe if we've removed the last listener\n\n\n      if (listeners.length < 1 && subscription && !_disconnected()) this.unsubscribeFromCometD();\n    },\n    publish:\n    /*void*/\n    function publish(\n    /*Hash*/\n    message) {\n      cometd.publish(channelName, message);\n    },\n    subscribeToCometD:\n    /*void*/\n    function subscribeToCometD() {\n      LOGGER.debug(\"subscribeToCometD channelName : \" + channelName + \", subscription : \" + subscription);\n      if (getSubscriptionCommandSender()) getSubscriptionCommandSender().subscribeToChannel(this);else this._subscribeToCometD(this.subscriptionCallback);\n    },\n    _subscribeToCometD: function _subscribeToCometD(overLoadedSubscriptionCallBack) {\n      LOGGER.debug(\"_subscribeToCometD channelName : \" + channelName);\n      var subscribeOptions = subscribeOptionsCallback();\n      if ((0, _amb2.isNil)(subscribeOptions) || (0, _amb2.isEmptyObject)(subscribeOptions)) subscription = cometd.subscribe(channelName, this._handleResponse.bind(this), overLoadedSubscriptionCallBack);else {\n        var subscribeOptionsWrapper = {\n          \"subscribeOptions\": subscribeOptions\n        };\n        subscription = cometd.subscribe(channelName, this._handleResponse.bind(this), subscribeOptionsWrapper, overLoadedSubscriptionCallBack);\n      }\n      LOGGER.debug('Successfully subscribed to channel: ' + channelName + ', Subscribe options: ' + subscribeOptions);\n    },\n\n    /**\n     * Callback that gets fired when a cometd channel subscription is completed.\n     * Triggers channel listener callbacks.\n     * @param response\n     */\n    subscriptionCallback: function subscriptionCallback(response) {\n      LOGGER.debug(\"Cometd subscription callback completed for channel: \" + channelName);\n      LOGGER.debug(\"Listener callback queue size: \" + listenerCallbackQueue.length);\n      subscriptionCallbackResponse = response;\n      listenerCallbackQueue.map(function (listenerSubCallback) {\n        listenerSubCallback(subscriptionCallbackResponse);\n      });\n      listenerCallbackQueue = [];\n    },\n    unsubscribeFromCometD:\n    /*void*/\n    function unsubscribeFromCometD() {\n      LOGGER.debug(\"unsubscribeFromCometD  from : \" + channelName + ', subscription : ' + subscription);\n\n      if (subscription !== null) {\n        if (getSubscriptionCommandSender()) getSubscriptionCommandSender().unsubscribeToChannel(this);else this._unsubscribeFromCometD();\n      }\n    },\n    _unsubscribeFromCometD:\n    /*void*/\n    function _unsubscribeFromCometD() {\n      LOGGER.debug(\"_unsubscribeFromCometD  from : \" + channelName + ', subscription : ' + subscription);\n\n      if (subscription !== null) {\n        cometd.unsubscribe(subscription);\n        subscription = null;\n        subscriptionCallbackResponse = null;\n        LOGGER.debug('Successfully unsubscribed from channel: ' + channelName);\n      }\n    },\n    resubscribeToCometD:\n    /*void*/\n    function resubscribeToCometD() {\n      LOGGER.debug(\"Resubscribe to \" + channelName);\n      if (getSubscriptionCommandSender()) getSubscriptionCommandSender().subscribeToChannel(this);else this._subscribeToCometD(this.subscriptionCallback);\n    },\n    getSubscribeOptionsCallback: function getSubscribeOptionsCallback() {\n      return subscribeOptionsCallback;\n    },\n    getName: function getName() {\n      return channelName;\n    },\n\n    /**\n     * Returns the array of amb.ChannelListeners.\n     * @returns {Array}\n     */\n    getChannelListeners: function getChannelListeners() {\n      return listeners;\n    },\n\n    /**\n     * Returns the array of channel listener subscription callbacks\n     * For unit testing.\n     * @returns {Array}\n     */\n    getListenerCallbackQueue: function getListenerCallbackQueue() {\n      return listenerCallbackQueue;\n    },\n\n    /**\n     * Don't use this, for unit testing.\n     * Need the ability to set the subscription callback response from cometd subscribe callback\n     *\n     * @param response\n     */\n    setSubscriptionCallbackResponse: function setSubscriptionCallbackResponse(response) {\n      subscriptionCallbackResponse = response;\n    }\n  };\n};\n\nvar _default = Channel;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _amb = _interopRequireDefault(require(\"./amb.Logger\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * A listener for an amb channel\n * Returned from amb.getChannel. Client only interacts with cometd through this object.\n * @param channel - amb.Channel\n * @param serverConnection - amb.ServerConnection\n * @param subscriptionCallback - Callback to call on\n * @return amb.ChannelListener this listener\n */\nvar ChannelListener = function ChannelListener(channel, serverConnection, subscriptionCallback) {\n  var id;\n  var messageCallback;\n  var LOGGER = new _amb.default('amb.ChannelListener');\n  var currentChannel = channel;\n  return {\n    getCallback:\n    /*Function*/\n    function getCallback() {\n      return messageCallback;\n    },\n    getSubscriptionCallback: function getSubscriptionCallback() {\n      return subscriptionCallback;\n    },\n    getID:\n    /*Integer*/\n    function getID() {\n      return id;\n    },\n    setNewChannel: function setNewChannel(channel) {\n      currentChannel.unsubscribe(this);\n      currentChannel = channel;\n      this.subscribe(messageCallback);\n    },\n\n    /**\n     * Register this listener with its channel.\n     *\n     * @return amb.ChannelListener this listener\n     */\n    subscribe:\n    /*amb.ChannelListener*/\n    function subscribe(\n    /*Function*/\n    callback) {\n      messageCallback = callback;\n      id = currentChannel.subscribe(this);\n      return this;\n    },\n    resubscribe:\n    /*amb.channelListener*/\n    function resubscribe() {\n      return this.subscribe(messageCallback);\n    },\n\n    /**\n     * Unregister this listener from its channel.\n     *\n     * @return amb.ChannelListener this listener\n     */\n    unsubscribe:\n    /*amb.ChannelListener*/\n    function unsubscribe() {\n      currentChannel.unsubscribe(this);\n      LOGGER.debug(\"Unsubscribed from channel: \" + currentChannel.getName());\n      return this;\n    },\n    publish:\n    /*void*/\n    function publish(\n    /*Hash*/\n    message) {\n      currentChannel.publish(message);\n    },\n    getName:\n    /*String*/\n    function getName() {\n      return currentChannel.getName();\n    }\n  };\n};\n\nvar _default = ChannelListener;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _amb = _interopRequireDefault(require(\"./amb.Logger\"));\n\nvar _amb2 = _interopRequireDefault(require(\"./amb.ChannelListener\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ChannelRedirect = function ChannelRedirect(\n/*cometd*/\ncometd,\n/*amb.ServerConnection*/\nserverConnection) {\n  var _metaChannel;\n\n  var _cometd = cometd;\n  var LOGGER = new _amb.default('amb.ChannelRedirect');\n\n  function _switchToChannel(fromChannel, toChannel) {\n    var listeners = fromChannel.getChannelListeners();\n\n    for (var i = 0; i < listeners.length; i++) {\n      var listener = listeners[i];\n      listener.setNewChannel(toChannel);\n    }\n  }\n\n  function _onAdvice(advice) {\n    LOGGER.debug('_onAdvice:' + advice.data.clientId);\n    var fromChannel = serverConnection.getChannel(advice.data.fromChannel);\n    var toChannel = serverConnection.getChannel(advice.data.toChannel);\n\n    if (!fromChannel || !toChannel) {\n      LOGGER.debug('Could not redirect from ' + advice.data.fromChannel + ' to ' + advice.data.toChannel);\n      return;\n    }\n\n    _switchToChannel(fromChannel, toChannel);\n\n    LOGGER.debug('published channel switch event, fromChannel:' + fromChannel.getName() + ', toChannel:' + toChannel.getName());\n  }\n\n  return {\n    initialize: function initialize(\n    /*Function*/\n    onSubscriptionCompleted) {\n      var channelName = '/sn/meta/channel_redirect/' + _cometd.getClientId();\n\n      var newMetaChannel = serverConnection.getChannel(channelName); // Only do this when we're creating a new redirect channel\n\n      if (!_metaChannel || newMetaChannel !== _metaChannel) {\n        // Delete old redirect channel in case of reconnection\n        if (_metaChannel) serverConnection.removeChannel(_metaChannel.getName());\n        _metaChannel = newMetaChannel; //channelRedirect meta channelListener will not get redirected\n\n        new _amb2.default(_metaChannel, serverConnection, onSubscriptionCompleted).subscribe(_onAdvice);\n      } else _metaChannel.subscribeToCometD();\n\n      LOGGER.debug(\"ChannelRedirect initialized: \" + channelName);\n    },\n    _onAdvice: _onAdvice\n  };\n};\n\nvar _default = ChannelRedirect;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar CrossClientChannel = function CrossClientChannel() {\n  _classCallCheck(this, CrossClientChannel);\n\n  _defineProperty(this, \"emit\", function (eventName, message) {\n    window.localStorage.setItem(eventName, JSON.stringify(message));\n    window.localStorage.removeItem(eventName);\n  });\n\n  _defineProperty(this, \"on\", function (eventName, listener) {\n    window.addEventListener('storage', function (_ref) {\n      var key = _ref.key,\n          newValue = _ref.newValue;\n\n      if (key === eventName && newValue) {\n        listener(JSON.parse(newValue));\n      }\n    });\n  });\n};\n\nvar _default = CrossClientChannel;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar EventManager = function EventManager(events) {\n  var _subscriptions = [];\n  var _idCounter = 0;\n  return {\n    subscribe:\n    /*Number*/\n    function subscribe(\n    /*String*/\n    event,\n    /*Function*/\n    callback) {\n      var id = _idCounter++;\n\n      _subscriptions.push({\n        event: event,\n        callback: callback,\n        id: id\n      });\n\n      return id;\n    },\n    unsubscribe:\n    /*void*/\n    function unsubscribe(\n    /* Number */\n    id) {\n      for (var i = 0; i < _subscriptions.length; i++) {\n        if (id === _subscriptions[i].id) _subscriptions.splice(i, 1);\n      }\n    },\n    publish:\n    /*void*/\n    function publish(event, args) {\n      var subscriptions = this._getSubscriptions(event);\n\n      for (var i = 0; i < subscriptions.length; i++) {\n        subscriptions[i].callback.apply(null, args);\n      }\n    },\n    getEvents:\n    /*Hash*/\n    function getEvents() {\n      return events;\n    },\n    _getSubscriptions: function _getSubscriptions(\n    /*String*/\n    event) {\n      var subscriptions = [];\n\n      for (var i = 0; i < _subscriptions.length; i++) {\n        if (_subscriptions[i].event === event) subscriptions.push(_subscriptions[i]);\n      }\n\n      return subscriptions;\n    }\n  };\n};\n\nvar _default = EventManager;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n/**\n * Models a simple function queue\n * @param queueSize the maximum allowed queue size\n */\nvar _defaultMaxFunctionQueueSize = 0x7ffffff; // pseudo-infinity: max 32-bit signed int\n\nvar FunctionQueue = function FunctionQueue() {\n  var queueSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _defaultMaxFunctionQueueSize;\n  var queueBuffer = [];\n  var maxQueueSize = Math.max(1, Math.floor(queueSize));\n  return {\n    /**\n     * Adds an item to this queue.\n     * @param item  item to add to this queue\n     * @returns  true if the item was added; otherwise false (queue is full)\n     */\n    enqueue: function enqueue(item) {\n      if (this.getAvailableSpace() > 0) {\n        queueBuffer.push(item);\n        return true;\n      }\n\n      return false;\n    },\n\n    /**\n     * Adds multiple items to this queue.\n     * @param items  items to add to this queue\n     * @returns  true if all the items were added; false if insufficient room\n     */\n    enqueueMultiple: function enqueueMultiple(items) {\n      if (this.getAvailableSpace() >= items.length) {\n        queueBuffer = queueBuffer.concat(items);\n        return true;\n      }\n\n      return false;\n    },\n\n    /**\n     * Removes and returns an item from this queue.\n     * @returns  the item removed; otherwise an undefined is returned\n     */\n    dequeue: function dequeue() {\n      var result;\n      if (queueBuffer.length > 0) result = queueBuffer.shift();\n      return result;\n    },\n\n    /**\n     * Removes and returns up to a specified number of items from this queue.\n     * @param count the # of items to remove (if more than contained in queue or negative, undefined is returned)\n     * @returns  an array of containing the items removed, or undefined if count is out of range.\n     */\n    dequeueMultiple: function dequeueMultiple(count) {\n      var retbuf;\n\n      if (count >= 0) {\n        if (queueBuffer.length >= count) {\n          retbuf = [];\n\n          if (count > 0) {\n            retbuf = queueBuffer.slice(0, count);\n            queueBuffer = queueBuffer.slice(count);\n          }\n        }\n      }\n\n      return retbuf;\n    },\n\n    /**\n     * Removes all items from this queue.\n     */\n    clear: function clear() {\n      queueBuffer = [];\n    },\n\n    /**\n     * Returns the # of items in this queue.\n     * @returns  the # of items in this queue.\n     */\n    getSize: function getSize() {\n      return queueBuffer.length;\n    },\n\n    /**\n     * Returns the maximum capacity of this queue.\n     * @returns  the maximum capacity of this queue.\n     */\n    getCapacity: function getCapacity() {\n      return maxQueueSize;\n    },\n\n    /**\n     * Returns the space currently available for more items.\n     * @returns  the space currently available for more items.\n     */\n    getAvailableSpace: function getAvailableSpace() {\n      return maxQueueSize - queueBuffer.length;\n    },\n    getQueueBuffer: function getQueueBuffer() {\n      return queueBuffer;\n    }\n  };\n};\n\nvar _default = FunctionQueue;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _amb = _interopRequireDefault(require(\"./amb.Logger\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar GraphQLSubscriptionExtension = function GraphQLSubscriptionExtension() {\n  var LOGGER = new _amb.default('amb.GraphQLSubscriptionExtension');\n  var RW_GRAPHQL_CHANNEL = '/rw/graphql';\n  var META_SUBSCRIBE = '/meta/subscribe';\n  var graphQLSubscriptions = {};\n\n  this.isGraphQLChannel = function (channel) {\n    return channel && channel.startsWith(RW_GRAPHQL_CHANNEL);\n  };\n\n  this.addGraphQLChannel = function (channel, graphQLSubscription) {\n    graphQLSubscriptions[channel] = graphQLSubscription;\n  };\n\n  this.removeGraphQLChannel = function (channel) {\n    delete graphQLSubscriptions[channel];\n  };\n\n  this.getGraphQLSubscriptions = function () {\n    return graphQLSubscriptions;\n  };\n\n  this.outgoing = function (message) {\n    if (message.channel === META_SUBSCRIBE && this.isGraphQLChannel(message.subscription)) {\n      if (!message.ext) message.ext = {};\n\n      if (graphQLSubscriptions[message.subscription]) {\n        LOGGER.debug('Subscribing with GraphQL subscription:' + graphQLSubscriptions[message.subscription]);\n        message.ext.serializedGraphQLSubscription = graphQLSubscriptions[message.subscription];\n      }\n    }\n\n    return message;\n  };\n};\n\nvar _default = GraphQLSubscriptionExtension;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isEmptyObject = exports.isObject = exports.isNil = exports.isNull = exports.isUndefined = void 0;\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar isUndefined = function isUndefined(value) {\n  return value === undefined;\n};\n\nexports.isUndefined = isUndefined;\n\nvar isNull = function isNull(value) {\n  return value === null;\n};\n\nexports.isNull = isNull;\n\nvar isNil = function isNil(value) {\n  return isNull(value) || isUndefined(value);\n};\n\nexports.isNil = isNil;\n\nvar isObject = function isObject(x) {\n  return x != null && _typeof(x) === 'object';\n};\n\nexports.isObject = isObject;\n\nvar isEmptyObject = function isEmptyObject(obj) {\n  return isObject(obj) && Object.keys(obj).length === 0;\n};\n\nexports.isEmptyObject = isEmptyObject;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _amb = _interopRequireDefault(require(\"./amb.Properties\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar Logger = function Logger(callerType) {\n  function print(\n  /*String*/\n  message) {\n    if (window.console) console.log(callerType + ' ' + message);\n  }\n\n  return {\n    debug: function debug(\n    /*String*/\n    message) {\n      if (_amb.default.logLevel === 'debug') print('[DEBUG] ' + message);\n    },\n    addInfoMessage:\n    /*void*/\n    function addInfoMessage(\n    /*String*/\n    message) {\n      print('[INFO] ' + message);\n    },\n    addErrorMessage:\n    /*void*/\n    function addErrorMessage(\n    /*String*/\n    message) {\n      print('[ERROR] ' + message);\n    },\n    addWarnMessage:\n    /*void*/\n    function addWarnMessage(\n    /*String*/\n    message) {\n      print('[WARN] ' + message);\n    }\n  };\n};\n\nvar _default = Logger;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _cometd = _interopRequireDefault(require(\"cometd\"));\n\nvar _amb = _interopRequireDefault(require(\"./amb.ServerConnection\"));\n\nvar _amb2 = _interopRequireDefault(require(\"./amb.Logger\"));\n\nvar _amb3 = _interopRequireDefault(require(\"./amb.ChannelListener\"));\n\nvar _amb4 = _interopRequireDefault(require(\"./amb.GraphQLSubscriptionExtension\"));\n\nvar _amb5 = require(\"./amb.Properties\");\n\nvar _amb6 = _interopRequireDefault(require(\"./amb.SessionExtension\"));\n\nvar _amb7 = _interopRequireDefault(require(\"./amb.TokenManagementExtension\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar MessageClient = function MessageClient() {\n  var cometd = new _cometd.default.CometD();\n  cometd.registerTransport(_amb5.WEBSOCKET_TYPE_NAME, new _cometd.default.WebSocketTransport(), 0);\n  cometd.registerTransport('long-polling', new _cometd.default.LongPollingTransport(), 1);\n  cometd.unregisterTransport('callback-polling'); // Register extension needed for GraphQL subscriptions.\n\n  var graphQLSubscriptionExtension = new _amb4.default();\n  cometd.registerExtension('graphQLSubscription', graphQLSubscriptionExtension);\n  var sessionExtension = new _amb6.default();\n  cometd.registerExtension(\"sessionExtension\", sessionExtension);\n  var tokenManagementExtension = new _amb7.default();\n  cometd.registerExtension(_amb5.TOKEN_MANAGEMENT_EXTENSION, tokenManagementExtension);\n  var serverConnection = new _amb.default(cometd);\n  var LOGGER = new _amb2.default('amb.MessageClient');\n  var connected = false;\n  return {\n    getServerConnection: function getServerConnection() {\n      return serverConnection;\n    },\n    isLoggedIn: function isLoggedIn() {\n      return serverConnection.isLoggedIn();\n    },\n    loginComplete: function loginComplete() {\n      serverConnection.loginComplete();\n    },\n    reestablishSession: function reestablishSession() {\n      serverConnection.reestablishSession();\n    },\n\n    /**\n     * Server Connection\n     */\n    connect:\n    /*void*/\n    function connect() {\n      if (connected) {\n        LOGGER.addInfoMessage(\">>> connection exists, request satisfied\");\n        return;\n      }\n\n      connected = true;\n      serverConnection.connect();\n    },\n    reload:\n    /*void*/\n    function reload() {\n      connected = false;\n      serverConnection.reload();\n    },\n    abort:\n    /*void*/\n    function abort() {\n      connected = false;\n      serverConnection.abort();\n    },\n    disconnect:\n    /*void*/\n    function disconnect() {\n      connected = false;\n      serverConnection.disconnect();\n    },\n    // For unit testing.\n    isConnected: function isConnected() {\n      return connected;\n    },\n\n    /**\n     * Connection Events\n     */\n    getConnectionEvents:\n    /*Hash*/\n    function getConnectionEvents() {\n      return serverConnection.getEvents();\n    },\n    subscribeToEvent:\n    /*Number*/\n    function subscribeToEvent(\n    /*String*/\n    event,\n    /*Function*/\n    callback) {\n      return serverConnection.subscribeToEvent(event, callback);\n    },\n    unsubscribeFromEvent:\n    /*void*/\n    function unsubscribeFromEvent(\n    /*Number*/\n    id) {\n      serverConnection.unsubscribeFromEvent(id);\n    },\n    getConnectionState:\n    /*String*/\n    function getConnectionState() {\n      return serverConnection.getConnectionState();\n    },\n\n    /**\n     * Client info\n     */\n    getClientId:\n    /*String*/\n    function getClientId() {\n      return cometd.getClientId();\n    },\n\n    /**\n     * Channels\n     */\n    getChannel:\n    /*amb.ChannelListener*/\n    function getChannel(channelName, subscriptionConfig) {\n      var _ref = subscriptionConfig || {},\n          subscriptionCallback = _ref.subscriptionCallback,\n          serializedGraphQLSubscription = _ref.serializedGraphQLSubscription,\n          subscribeOptionsCallback = _ref.subscribeOptionsCallback;\n\n      var channel = serverConnection.getChannel(channelName, subscribeOptionsCallback);\n\n      if (graphQLSubscriptionExtension.isGraphQLChannel(channelName)) {\n        if (serializedGraphQLSubscription) graphQLSubscriptionExtension.addGraphQLChannel(channelName, serializedGraphQLSubscription);else LOGGER.addErrorMessage(\"Serialized subscription not present for GraphQL channel \" + channelName);\n      }\n\n      return new _amb3.default(channel, serverConnection, subscriptionCallback);\n    },\n    removeChannel: function removeChannel(channelName) {\n      serverConnection.removeChannel(channelName);\n      if (graphQLSubscriptionExtension.isGraphQLChannel(channelName)) graphQLSubscriptionExtension.removeGraphQLChannel(channelName);\n    },\n    getChannels: function getChannels() {\n      return serverConnection.getChannels();\n    },\n    extendSession: function extendSession() {\n      sessionExtension.extendSession();\n    },\n    getTokenManagementExtension: function getTokenManagementExtension() {\n      return tokenManagementExtension;\n    },\n\n    /**\n     * Extensions\n     */\n    registerExtension:\n    /*void*/\n    function registerExtension(\n    /*String*/\n    extensionName,\n    /*Object*/\n    extension) {\n      cometd.registerExtension(extensionName, extension);\n    },\n    unregisterExtension:\n    /*void*/\n    function unregisterExtension(\n    /*String*/\n    extensionName) {\n      cometd.unregisterExtension(extensionName);\n    },\n\n    /**\n     * Utility\n     */\n\n    /**\n     * Executes messages in a batch.\n     *\n     * block is an anonymous function, containing a chain of messages to be posted\n     * together, and executed in sequence\n     *\n     * Example:\n     *        block = function() {\n           * \t\t\tchannel.subscribe();\n           *\t\t\tchannel.publish({ user: 'Fred', message: 'Fred has joined the channel' });\n           *\t\t}\n     */\n    batch:\n    /*void*/\n    function batch(\n    /*function(){...}*/\n    block) {\n      cometd.batch(block);\n    }\n  };\n};\n\nvar _default = MessageClient;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _amb = _interopRequireDefault(require(\"./amb.MessageClient\"));\n\nvar _encBase = _interopRequireDefault(require(\"crypto-js/enc-base64\"));\n\nvar _encUtf = _interopRequireDefault(require(\"crypto-js/enc-utf8\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n'use strict';\n\nvar getClient = function getClient() {\n  var client = getParentAmbClient(window);\n\n  if (!client) {\n    /* IE11 has an instance of the amb client for each iframe. This check ensures that there is only one login popup\n    per page by turning off the login popup for clients inside an iframe.\n    */\n    var dontShowLogin = isIE11(window) && window.frameElement !== null;\n    client = wrapClient(buildClient(dontShowLogin), window); // set it for reuse\n\n    setClient(client);\n  }\n\n  return wrapClient(client, window);\n};\n\nfunction getParentAmbClient(clientWindow) {\n  // PRB682487 try/catch in case parent is accessed from an iframe\n  try {\n    // try to find an existing client\n    // PRB713556 do not walk up to the parent window for IE11 as it causes a memory leak.\n    if (!isIE11(clientWindow)) {\n      while (clientWindow !== clientWindow.parent) {\n        if (clientWindow.g_ambClient) {\n          break;\n        }\n\n        clientWindow = clientWindow.parent;\n      }\n    }\n\n    if (clientWindow.g_ambClient) {\n      return clientWindow.g_ambClient;\n    }\n  } catch (e) {\n    console.log('AMB getClient() tried to access parent from an iFrame. Caught error: ' + e);\n  }\n\n  return null;\n}\n\nfunction isIE11(window) {\n  return window.MSInputMethodContext && window.document.documentMode;\n}\n/**\n * Enforces the calling window context for event subscription cleanup\n * @param {AMBClient} client\n * @param {Window} clientWindow\n */\n\n\nfunction wrapClient(client, clientWindow) {\n  if (typeof client.getClientWindow !== 'undefined') {\n    var context = client.getClientWindow(); // we don't need to wrap the client\n\n    if (context === clientWindow) {\n      return client;\n    }\n  }\n\n  var wrappedClient = clone({}, client);\n\n  wrappedClient.getChannel = function (channelName, subscriptionConfig, overrideWindow) {\n    return client.getChannel(channelName, subscriptionConfig, overrideWindow || clientWindow);\n  };\n\n  wrappedClient.getRecordWatcherChannel = function (table, query, actionPrefix, subscriptionConfig, overrideWindow) {\n    return client.getRecordWatcherChannel(table, query, actionPrefix, subscriptionConfig, overrideWindow || clientWindow);\n  };\n\n  wrappedClient.subscribeToEvent = function (event, callback, overrideWindow) {\n    return client.subscribeToEvent(event, callback, overrideWindow || clientWindow);\n  };\n\n  wrappedClient.unsubscribeFromEvent = function (id, overrideWindow) {\n    return client.unsubscribeFromEvent(id, overrideWindow || clientWindow);\n  };\n\n  wrappedClient.getClientWindow = function () {\n    return clientWindow;\n  };\n\n  return wrappedClient;\n}\n/**\n * Shallow object clone\n * @param {Object} dest\n * @param {Object} source\n * @return {Object}\n */\n\n\nfunction clone(dest, source) {\n  for (var prop in source) {\n    if (Object.prototype.hasOwnProperty.call(source, prop)) dest[prop] = source[prop];\n  }\n\n  return dest;\n}\n\nfunction setClient(client) {\n  var _window = window.self;\n  _window.g_ambClient = client; // disconnect when the client is unloaded\n\n  _window.addEventListener(\"unload\", function () {\n    _window.g_ambClient.disconnect();\n  }); // auto-connect on load or timeout\n\n\n  var documentReadyState = _window.document ? _window.document.readyState : null;\n  if (documentReadyState === 'complete') autoConnect();else _window.addEventListener('load', autoConnect);\n  setTimeout(autoConnect, 10000);\n  var initiatedConnection = false;\n\n  function autoConnect() {\n    if (!initiatedConnection) {\n      initiatedConnection = true;\n\n      _window.g_ambClient.connect();\n    }\n  }\n}\n\nfunction buildClient(dontShowLogin) {\n  return function () {\n    var ambClient = new _amb.default();\n    var clientSubscriptions = buildClientSubscriptions();\n    var serverConnection = ambClient.getServerConnection();\n\n    if (dontShowLogin) {\n      serverConnection.setLoginWindowEnabled(false);\n    }\n\n    return {\n      getServerConnection: function getServerConnection() {\n        return serverConnection;\n      },\n      connect:\n      /*void*/\n      function connect() {\n        ambClient.connect();\n      },\n      abort:\n      /*void*/\n      function abort() {\n        ambClient.abort();\n      },\n      disconnect:\n      /*void*/\n      function disconnect() {\n        ambClient.disconnect();\n      },\n      getConnectionState:\n      /*String*/\n      function getConnectionState() {\n        return ambClient.getConnectionState();\n      },\n      getState:\n      /*String*/\n      function getState() {\n        return ambClient.getConnectionState();\n      },\n      getClientId:\n      /*String*/\n      function getClientId() {\n        return ambClient.getClientId();\n      },\n      getChannel:\n      /*amb.ChannelListener*/\n      function getChannel(channelName, subscriptionConfig, windowContext) {\n        var channel = ambClient.getChannel(channelName, subscriptionConfig);\n        var originalSubscribe = channel.subscribe;\n        var originalUnsubscribe = channel.unsubscribe;\n        windowContext = windowContext || window;\n\n        channel.subscribe = function (listener) {\n          clientSubscriptions.add(windowContext, channel, listener, function () {\n            channel.unsubscribe(listener);\n          });\n          windowContext.addEventListener('unload', function () {\n            ambClient.removeChannel(channelName);\n          });\n          originalSubscribe.call(channel, listener);\n          return channel;\n        };\n\n        channel.unsubscribe = function (listener) {\n          clientSubscriptions.remove(windowContext, channel, listener);\n          var call = originalUnsubscribe.call(channel, listener);\n\n          if (serverConnection.getChannel(channelName).getChannelListeners().length === 0) {\n            ambClient.removeChannel(channelName);\n          }\n\n          return call;\n        };\n\n        return channel;\n      },\n      getChannel0:\n      /*amb.ChannelListener*/\n      function getChannel0(\n      /*String*/\n      channelName,\n      /*Function*/\n      subscriptionCallback) {\n        return ambClient.getChannel(channelName, subscriptionCallback);\n      },\n\n      /**\n       * Creates a channel with a properly encoded name required for Record Watcher. Returns a channel listener.\n       *\n       * @param {string} table\n       * @param {string} query\n       * @param {string} actionPrefix\n       * @param {Object<*>} subscriptionConfig\n       * @param {Object<*>} windowContext\n       * @returns {*|amb.ChannelListener}\n       */\n      getRecordWatcherChannel: function getRecordWatcherChannel(table, query, actionPrefix, subscriptionConfig, windowContext) {\n        // replace base64 padding character due to '=' is invalid channel name\n        var base64EncodedQuery = _encBase.default.stringify(_encUtf.default.parse(query)).replace(/=/g, '-');\n\n        actionPrefix = actionPrefix || 'default';\n        return this.getChannel('/rw/' + actionPrefix + '/' + table + '/' + base64EncodedQuery, subscriptionConfig, windowContext);\n      },\n      registerExtension:\n      /*void*/\n      function registerExtension(\n      /*String*/\n      extensionName,\n      /*Object*/\n      extension) {\n        ambClient.registerExtension(extensionName, extension);\n      },\n      unregisterExtension:\n      /*void*/\n      function unregisterExtension(\n      /*String*/\n      extensionName) {\n        ambClient.unregisterExtension(extensionName);\n      },\n      batch:\n      /*void*/\n      function batch(\n      /*function(){...}*/\n      block) {\n        ambClient.batch(block);\n      },\n      subscribeToEvent:\n      /*Number*/\n      function subscribeToEvent(\n      /*String*/\n      event,\n      /*Function*/\n      callback,\n      /*Object*/\n      windowContext) {\n        windowContext = windowContext || window;\n        var id = ambClient.subscribeToEvent(event, callback);\n        clientSubscriptions.add(windowContext, id, true, function () {\n          ambClient.unsubscribeFromEvent(id);\n        });\n        return id;\n      },\n      unsubscribeFromEvent:\n      /*void*/\n      function unsubscribeFromEvent(\n      /*Number*/\n      id,\n      /*Object*/\n      windowContext) {\n        windowContext = windowContext || window;\n        clientSubscriptions.remove(windowContext, id, true);\n        ambClient.unsubscribeFromEvent(id);\n      },\n      isLoggedIn:\n      /*boolean*/\n      function isLoggedIn() {\n        return ambClient.isLoggedIn();\n      },\n      getConnectionEvents:\n      /*Hash*/\n      function getConnectionEvents() {\n        return ambClient.getConnectionEvents();\n      },\n      getEvents:\n      /*Hash*/\n      function getEvents() {\n        return ambClient.getConnectionEvents();\n      },\n      reestablishSession: function reestablishSession() {\n        ambClient.reestablishSession();\n      },\n      loginComplete: function loginComplete() {\n        ambClient.loginComplete();\n      },\n      getChannels: function getChannels() {\n        return ambClient.getChannels();\n      },\n      extendSession: function extendSession() {\n        return ambClient.extendSession();\n      },\n      getTokenManagementExtension: function getTokenManagementExtension() {\n        return ambClient.getTokenManagementExtension();\n      }\n    };\n  }();\n\n  function buildClientSubscriptions() {\n    var contexts = [];\n\n    function addSubscription(clientWindow, id, callback, unsubscribe) {\n      if (!clientWindow || !callback || !unsubscribe) return;\n      removeSubscription(clientWindow, id, callback);\n      var context = getContext(clientWindow);\n\n      if (!context) {\n        context = createContext(clientWindow);\n      }\n\n      if (context.unloading) return;\n      context.subscriptions.push({\n        id: id,\n        callback: callback,\n        unsubscribe: unsubscribe\n      });\n    }\n\n    function removeSubscription(clientWindow, id, callback) {\n      if (!clientWindow || !callback) return;\n      var context = getContext(clientWindow);\n      if (!context) return;\n      var subscriptions = context.subscriptions;\n\n      for (var i = subscriptions.length - 1; i >= 0; i--) {\n        if (subscriptions[i].id === id && subscriptions[i].callback === callback) subscriptions.splice(i, 1);\n      }\n    }\n\n    function getContext(clientWindow) {\n      for (var i = 0, iM = contexts.length; i < iM; i++) {\n        if (contexts[i].window === clientWindow) return contexts[i];\n      }\n\n      return null;\n    }\n\n    function createContext(clientWindow) {\n      var context = {\n        window: clientWindow,\n        onUnload: function onUnload() {\n          context.unloading = true;\n          var subscriptions = context.subscriptions;\n          var subscription;\n\n          while (subscription = subscriptions.pop()) {\n            subscription.unsubscribe();\n          }\n\n          destroyContext(context);\n        },\n        unloading: false,\n        subscriptions: []\n      };\n      clientWindow.addEventListener('unload', context.onUnload);\n      contexts.push(context);\n      return context;\n    }\n\n    function destroyContext(context) {\n      for (var i = 0, iM = contexts.length; i < iM; i++) {\n        if (contexts[i].window === context.window) {\n          contexts.splice(i, 1);\n          break;\n        }\n      }\n\n      context.subscriptions = [];\n      context.window.removeEventListener('unload', context.onUnload);\n      context.onUnload = null;\n      context.window = null;\n    }\n\n    return {\n      add: addSubscription,\n      remove: removeSubscription\n    };\n  }\n}\n\nvar _default = getClient;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = exports.TOKEN_MANAGEMENT_EXTENSION = exports.WEBSOCKET_TYPE_NAME = void 0;\nvar properties = {\n  servletPath: 'amb',\n  logLevel: 'info',\n  loginWindow: 'true',\n  wsConnectTimeout: 10000,\n  overlayStyle: '',\n  subscribeCommandsFlow: {\n    /* glide.amb.client.subscribe.commands.flow.* ... */\n    enable: false,\n    maxInflight: 1,\n    maxWait: 10000,\n    retries: 3,\n    retryDelay: {\n      min: 2000,\n      max: 300000,\n      increaseFactor: 2\n    }\n  }\n};\nvar WEBSOCKET_TYPE_NAME = 'websocket';\nexports.WEBSOCKET_TYPE_NAME = WEBSOCKET_TYPE_NAME;\nvar TOKEN_MANAGEMENT_EXTENSION = \"tokenManagementExtension\";\nexports.TOKEN_MANAGEMENT_EXTENSION = TOKEN_MANAGEMENT_EXTENSION;\nvar _default = properties;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _amb = _interopRequireDefault(require(\"./amb.EventManager\"));\n\nvar _amb2 = _interopRequireDefault(require(\"./amb.Logger\"));\n\nvar _amb3 = _interopRequireWildcard(require(\"./amb.Properties\"));\n\nvar _amb4 = _interopRequireDefault(require(\"./amb.ChannelRedirect\"));\n\nvar _amb5 = _interopRequireDefault(require(\"./amb.Channel\"));\n\nvar _amb6 = _interopRequireDefault(require(\"./amb.CrossClientChannel\"));\n\nvar _amb7 = require(\"./amb.Helper\");\n\nvar _amb8 = _interopRequireDefault(require(\"./amb.FunctionQueue\"));\n\nvar _amb9 = _interopRequireDefault(require(\"./amb.SubscriptionCommandSender\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ServerConnection = function ServerConnection(cometd) {\n  var crossClientChannel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new _amb6.default();\n  var connected = false;\n  var disconnecting = false;\n  var eventManager = new _amb.default({\n    CONNECTION_INITIALIZED: 'connection.initialized',\n    CONNECTION_OPENED: 'connection.opened',\n    CONNECTION_CLOSED: 'connection.closed',\n    CONNECTION_BROKEN: 'connection.broken',\n    SESSION_LOGGED_IN: 'session.logged.in',\n    SESSION_LOGGED_OUT: 'session.logged.out',\n    SESSION_INVALIDATED: 'session.invalidated',\n    SESSION_REESTABLISHED: 'session.reestablished'\n  });\n  var sessionStates = {\n    SESSION_LOGGED_IN: 'session.logged.in',\n    SESSION_LOGGED_OUT: 'session.logged.out',\n    SESSION_INVALIDATED: 'session.invalidated'\n  };\n  var state = \"closed\";\n  var channels = {};\n  var LOGGER = new _amb2.default('amb.ServerConnection');\n\n  _initializeMetaChannelListeners();\n\n  var sessionStatus = sessionStates.SESSION_INVALIDATED;\n  var loginWindow = null;\n  var loginWindowEnabled = _amb3.default['loginWindow'] === 'true';\n  var lastError = null;\n  var errorMessages = {\n    'UNKNOWN_CLIENT': '402::Unknown client'\n  };\n  var loginWindowOverride = false;\n  var ambServerConnection = {};\n  var needToReestablishSession = false;\n  var channelRedirect = new _amb4.default(cometd, ambServerConnection);\n  var initialized = false;\n  var SESSION_LOGOUT_OVERLAY_STYLE = 'glide.amb.session.logout.overlay.style';\n  var GLIDE_SESSION_STATUS = 'glide.session.status';\n  var TOUCH_HTTP_SESSION = 'session.touch.http';\n  var REESTABLISH_SESSION = 'amb.ServerConnection.reestablish.session';\n  var tokenManagementExtension = cometd.getExtension(_amb3.TOKEN_MANAGEMENT_EXTENSION);\n  var subscriptionCommandSender = null;\n  /**\n   * Connection maintenance\n   */\n\n  ambServerConnection.connect =\n  /*void*/\n  function () {\n    // Protection against anyone who things they should be calling connect\n    if (connected) {\n      LOGGER.debug(\">>> connection exists, request satisfied\");\n      return;\n    }\n\n    LOGGER.debug('Connecting to glide amb server -> ' + _amb3.default['servletURI']);\n    cometd.configure({\n      url: ambServerConnection.getURL(_amb3.default['servletPath']),\n      logLevel: _amb3.default.logLevel,\n      connectTimeout: _amb3.default['wsConnectTimeout']\n    });\n    cometd.handshake();\n    crossClientChannel.on(REESTABLISH_SESSION, function () {\n      ambServerConnection._reestablishSession(false);\n    });\n  };\n\n  ambServerConnection.reload =\n  /*void*/\n  function () {\n    cometd.reload();\n  };\n\n  ambServerConnection.abort =\n  /*void*/\n  function () {\n    cometd.getTransport().abort();\n  };\n\n  ambServerConnection.disconnect =\n  /*void*/\n  function () {\n    LOGGER.debug('Disconnecting from glide amb server..');\n    disconnecting = true;\n    cometd.disconnect();\n  };\n\n  ambServerConnection.getURL = function (ambServletPath) {\n    return window.location.protocol + '//' + window.location.host + '/' + ambServletPath;\n  };\n  /**\n   * Initialize connection event callbacks\n   */\n\n\n  function _initializeMetaChannelListeners() {\n    cometd.addListener('/meta/handshake', this, _metaHandshake);\n    cometd.addListener('/meta/connect', this, _metaConnect);\n    cometd.addListener('/meta/subscribe', this, applyAMBProperties);\n    cometd.addListener('/meta/unsubscribe', this, applyAMBProperties);\n  }\n  /**\n   * Connection event listeners\n   */\n\n\n  function _metaHandshake(message) {\n    var logoutOverlayStyle = getExt(message, SESSION_LOGOUT_OVERLAY_STYLE);\n\n    if (logoutOverlayStyle) {\n      _amb3.default.overlayStyle = logoutOverlayStyle;\n    }\n\n    sessionStatus = getExt(message, GLIDE_SESSION_STATUS);\n    applySubscriptionCommandFlowProperties(message);\n    setTimeout(function () {\n      if (message['successful']) _connectionInitialized();\n    }, 0);\n  }\n\n  function getExt(message, extensionName) {\n    if ((0, _amb7.isObject)(message.ext)) return message.ext[extensionName];\n  }\n\n  function _getChannel(\n  /*String*/\n  channelName, subscriptionOptionsCallback) {\n    if (channelName in channels) return channels[channelName];\n    var channel = new _amb5.default(cometd, channelName, initialized, subscriptionOptionsCallback);\n    channels[channelName] = channel;\n    return channel;\n  }\n\n  function _removeChannel(channelName) {\n    delete channels[channelName];\n  }\n\n  function applyAMBProperties(message) {\n    if (message.ext) {\n      if (message.ext['glide.amb.active'] === false) {\n        ambServerConnection.disconnect();\n      }\n\n      var logLevel = getExt(message, 'glide.amb.client.log.level');\n\n      if (logLevel) {\n        _amb3.default.logLevel = logLevel;\n        cometd.setLogLevel(_amb3.default.logLevel);\n      }\n    }\n  }\n\n  function _getIntMessageExtProperty(valueStr, defaultVal) {\n    var propValue = Math.floor(parseInt(valueStr));\n    if (isNaN(propValue) || propValue < 0) propValue = defaultVal;\n    return propValue;\n  }\n\n  function _getBooleanMessageExtProperty(valueStr, defaultVal) {\n    var propValue = defaultVal;\n    if (!(0, _amb7.isNil)(valueStr)) propValue = valueStr ? true : false;\n    return propValue;\n  }\n\n  function applySubscriptionCommandFlowProperties(message) {\n    if (!message.ext) return;\n    var glideAMBSubscribeCommandsFlow = message.ext['subscribeCommandsFlow'];\n    if (!glideAMBSubscribeCommandsFlow) return;\n    var subCommandFlowDefault = _amb3.default.subscribeCommandsFlow;\n    _amb3.default.subscribeCommandsFlow.enable = _getBooleanMessageExtProperty(glideAMBSubscribeCommandsFlow['enable'], subCommandFlowDefault.enable);\n\n    if (_amb3.default.subscribeCommandsFlow.enable) {\n      _amb3.default.subscribeCommandsFlow.retries = _getIntMessageExtProperty(glideAMBSubscribeCommandsFlow['retries'], subCommandFlowDefault.retries);\n      _amb3.default.subscribeCommandsFlow.maxInflight = _getIntMessageExtProperty(glideAMBSubscribeCommandsFlow['maxInflight'], subCommandFlowDefault.maxInflight);\n      _amb3.default.subscribeCommandsFlow.maxWait = _getIntMessageExtProperty(glideAMBSubscribeCommandsFlow['maxWait'], subCommandFlowDefault.maxWait);\n      var glideAMBRetryDelay = glideAMBSubscribeCommandsFlow['retryDelay'];\n\n      if (glideAMBRetryDelay) {\n        var retryDelayDefault = _amb3.default.subscribeCommandsFlow.retryDelay;\n        _amb3.default.subscribeCommandsFlow.retryDelay.min = _getIntMessageExtProperty(glideAMBRetryDelay['min'], retryDelayDefault.min);\n        _amb3.default.subscribeCommandsFlow.retryDelay.max = _getIntMessageExtProperty(glideAMBRetryDelay['max'], retryDelayDefault.max);\n        _amb3.default.subscribeCommandsFlow.retryDelay.increaseFactor = _getIntMessageExtProperty(glideAMBRetryDelay['increaseFactor'], retryDelayDefault.increaseFactor);\n      }\n    }\n\n    _initializeSubscriptionCommandSender();\n  }\n\n  function _initializeSubscriptionCommandSender() {\n    if (_amb3.default.subscribeCommandsFlow.enable) {\n      LOGGER.addInfoMessage(\"_initializeSubscriptionCommandSender: SubscriptionCommandSender is enabled\");\n      if (tokenManagementExtension != null) tokenManagementExtension.updateTokenCount(_amb3.default.subscribeCommandsFlow.maxInflight);\n      if (subscriptionCommandSender) subscriptionCommandSender.stop();\n      subscriptionCommandSender = new _amb9.default(new _amb8.default(10000), tokenManagementExtension);\n    }\n  }\n\n  function _resubscribeAll() {\n    LOGGER.debug(\"Resubscribing to all!\");\n\n    for (var name in channels) {\n      var channel = channels[name];\n      channel && channel.resubscribeToCometD();\n    }\n  }\n\n  function _unsubscribeAll() {\n    LOGGER.debug(\"Unsubscribing from all!\");\n\n    for (var channelName in channels) {\n      var channel = channels[channelName];\n      channel && channel.unsubscribeFromCometD();\n    }\n  }\n\n  function _metaConnect(\n  /*Hash*/\n  message) {\n    applyAMBProperties(message);\n\n    if (disconnecting) {\n      setTimeout(function () {\n        connected = false;\n\n        _connectionClosed();\n      }, 0);\n      return;\n    }\n\n    var shouldTouchHttpSession = getExt(message, TOUCH_HTTP_SESSION);\n    if (isWebsocketTransport() && shouldTouchHttpSession === true) ambServerConnection._touchHttpSession();\n    var error = message['error'];\n    if (error) lastError = error;\n\n    _sessionStatus(message);\n\n    var wasConnected = connected;\n    connected = message['successful'] === true;\n    if (!wasConnected && connected) _connectionOpened();else if (wasConnected && !connected) _connectionBroken();\n  }\n\n  function isWebsocketTransport() {\n    return _amb3.WEBSOCKET_TYPE_NAME === cometd.getTransport().getType();\n  }\n\n  function _touchHttpSession() {\n    var request = new XMLHttpRequest();\n    request.open(\"POST\", \"/amb\", true);\n    request.setRequestHeader(\"Content-type\", \"application/json\");\n    request.send();\n  }\n\n  function _connectionInitialized() {\n    LOGGER.debug('Connection initialized');\n    initialized = true;\n    state = \"initialized\";\n\n    _publishEvent(eventManager.getEvents().CONNECTION_INITIALIZED);\n  }\n\n  function _connectionOpened() {\n    LOGGER.debug('Connection opened');\n\n    if (needToReestablishSession) {\n      _setupSession();\n    } else {\n      channelRedirect.initialize(_onChannelRedirectSubscriptionComplete);\n    }\n  }\n\n  function _onChannelRedirectSubscriptionComplete() {\n    _resubscribeAll();\n\n    state = \"opened\";\n\n    _publishEvent(eventManager.getEvents().CONNECTION_OPENED);\n  }\n\n  function _setupSession() {\n    if (ambServerConnection.getLastError() !== ambServerConnection.getErrorMessages().UNKNOWN_CLIENT) return;\n    ambServerConnection.setLastError(null);\n\n    ambServerConnection._sendSessionSetupRequest(function (_ref) {\n      var status = _ref.status;\n      if (status !== 200) return;\n      needToReestablishSession = false;\n      channelRedirect.initialize(_onChannelRedirectSubscriptionComplete);\n    });\n  }\n\n  function _sendRequestToSetUpGlideSession() {\n    var callback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {};\n\n    // We are reconnected, but the GlideSession may not have been set up. We currently do not support\n    // re-establishing a connection from an AMB message (CometD 2.X does not support asynchronous\n    // request handling).\n    var xhr = _buildSetUpSessionRequest();\n\n    xhr.onload = function () {\n      return callback(xhr);\n    };\n\n    xhr.send();\n  }\n\n  function _buildSetUpSessionRequest() {\n    LOGGER.debug(\"sending /amb_session_setup.do!\");\n    var request = new XMLHttpRequest();\n    request.open(\"POST\", \"/amb_session_setup.do\", true);\n    request.setRequestHeader(\"Content-type\", \"application/json;charset=UTF-8\");\n    request.setRequestHeader(\"X-UserToken\", window.g_ck);\n    request.setRequestHeader(\"X-CometD_SessionID\", cometd.getClientId());\n    return request;\n  }\n\n  function _connectionClosed() {\n    LOGGER.debug('Connection closed');\n    state = \"closed\";\n\n    _publishEvent(eventManager.getEvents().CONNECTION_CLOSED);\n  }\n\n  function _connectionBroken() {\n    LOGGER.addErrorMessage('Connection broken');\n    state = \"broken\";\n    needToReestablishSession = true;\n\n    _publishEvent(eventManager.getEvents().CONNECTION_BROKEN);\n\n    _stopSubscriptionCommandSender();\n  }\n\n  function _stopSubscriptionCommandSender() {\n    if (subscriptionCommandSender) {\n      subscriptionCommandSender.stop();\n      subscriptionCommandSender = null;\n    }\n  }\n  /**\n   * Session management/maintenance\n   */\n\n\n  function _sessionStatus(\n  /*Hash*/\n  message) {\n    var newSessionStatus = getExt(message, GLIDE_SESSION_STATUS);\n    if (!newSessionStatus || newSessionStatus === sessionStatus) return;\n    loginWindowOverride = getExt(message, 'glide.amb.login.window.override') === true;\n\n    _processSessionStatus(newSessionStatus);\n  }\n\n  function _processSessionStatus(newSessionStatus) {\n    LOGGER.debug('session.status - ' + newSessionStatus);\n\n    if (isSessionInvalidated(newSessionStatus)) {\n      _invalidated();\n    } else if (isLoggedOut(newSessionStatus)) {\n      _loggedOut();\n    } else if (isReestablished(newSessionStatus)) {\n      _reestablished();\n    } else if (isLoggedIn(newSessionStatus)) {\n      _loggedIn();\n    }\n\n    sessionStatus = newSessionStatus;\n  }\n\n  function isLoggedIn(newSessionStatus) {\n    return (sessionStatus === sessionStates.SESSION_INVALIDATED || sessionStatus === sessionStates.SESSION_LOGGED_OUT) && newSessionStatus === sessionStates.SESSION_LOGGED_IN;\n  }\n\n  function isLoggedOut(newSessionStatus) {\n    return sessionStatus === sessionStates.SESSION_LOGGED_IN && newSessionStatus === sessionStates.SESSION_LOGGED_OUT;\n  }\n\n  function isReestablished(newSessionStatus) {\n    return sessionStatus === sessionStates.SESSION_INVALIDATED && newSessionStatus === sessionStates.SESSION_LOGGED_OUT;\n  }\n  /**\n   * For logged in users session invalidation happens instead of being logged out when they have remember me on\n   */\n\n\n  function isSessionInvalidated(newSessionStatus) {\n    return (sessionStatus === sessionStates.SESSION_LOGGED_IN || sessionStatus === sessionStates.SESSION_LOGGED_OUT) && newSessionStatus === sessionStates.SESSION_INVALIDATED;\n  }\n\n  function _loggedIn() {\n    LOGGER.debug(\"LOGGED_IN event fire!\");\n\n    _resubscribeAll();\n\n    _publishEvent(eventManager.getEvents().SESSION_LOGGED_IN);\n\n    ambServerConnection.loginHide();\n  }\n\n  function _loggedOut() {\n    LOGGER.debug(\"LOGGED_OUT event fire!\");\n\n    _unsubscribeAll();\n\n    _publishEvent(eventManager.getEvents().SESSION_LOGGED_OUT);\n\n    if (loginWindowEnabled && !loginWindowOverride) {\n      ambServerConnection.loginShow();\n    }\n  }\n\n  function _reestablished() {\n    LOGGER.debug(\"REESTABLISHED event fire!\");\n\n    _resubscribeAll();\n\n    _publishEvent(eventManager.getEvents().SESSION_REESTABLISHED);\n  }\n\n  function _invalidated() {\n    LOGGER.debug(\"INVALIDATED event fire!\");\n\n    _unsubscribeAll();\n\n    _publishEvent(eventManager.getEvents().SESSION_INVALIDATED);\n  }\n\n  function _publishEvent(event) {\n    try {\n      eventManager.publish(event);\n    } catch (e) {\n      LOGGER.addErrorMessage(\"error publishing '\" + event + \"' - \" + e);\n    }\n  }\n\n  function _emitReestablishSession() {\n    crossClientChannel.emit(REESTABLISH_SESSION, REESTABLISH_SESSION);\n  }\n  /**\n   * Channel management\n   */\n\n\n  ambServerConnection.unsubscribeAll = function () {\n    _unsubscribeAll();\n  };\n\n  ambServerConnection.resubscribeAll = function () {\n    _resubscribeAll();\n  };\n\n  ambServerConnection.removeChannel = function (\n  /*String*/\n  channelName) {\n    _removeChannel(channelName);\n  };\n  /**\n   * Connection event management\n   */\n\n\n  ambServerConnection.getEvents = function () {\n    return eventManager.getEvents();\n  };\n\n  ambServerConnection.getConnectionState = function () {\n    return state;\n  };\n\n  ambServerConnection.getLastError = function () {\n    return lastError;\n  };\n\n  ambServerConnection.setLastError = function (\n  /*String*/\n  error) {\n    lastError = error;\n  };\n\n  ambServerConnection.getErrorMessages =\n  /*Hash*/\n  function () {\n    return errorMessages;\n  };\n\n  ambServerConnection.isLoggedIn = function () {\n    return sessionStatus === sessionStates.SESSION_LOGGED_IN;\n  };\n\n  ambServerConnection.isSessionActive = function () {\n    return sessionStatus !== sessionStates.SESSION_INVALIDATED;\n  };\n\n  ambServerConnection.getChannelRedirect = function () {\n    return channelRedirect;\n  };\n\n  ambServerConnection.getChannel = function (\n  /*String*/\n  channelName, subscriptionOptionsCallback) {\n    return _getChannel(channelName, subscriptionOptionsCallback);\n  };\n\n  ambServerConnection.getChannels = function () {\n    return channels;\n  };\n\n  ambServerConnection.getState = function () {\n    return state;\n  };\n\n  ambServerConnection.getLoginWindowOverlayStyle = function () {\n    return _amb3.default.overlayStyle;\n  };\n\n  ambServerConnection.loginShow = function () {\n    LOGGER.debug(\"Show login window\"); // noinspection HtmlUnknownTarget\n\n    var modalContent = '<iframe src=\"/amb_login.do\" frameborder=\"0\" height=\"400px\" width=\"405px\" scrolling=\"no\"></iframe>';\n    var modalTemplate = \"<div id=\\\"amb_disconnect_modal\\\" tabindex=\\\"-1\\\" aria-hidden=\\\"true\\\" class=\\\"modal\\\" role=\\\"dialog\\\" style=\\\"\".concat(_amb3.default.overlayStyle, \"\\\">\\n\\t\\t\\t\\t<div class=\\\"modal-dialog small-modal\\\" style=\\\"width:450px\\\">\\n\\t\\t\\t\\t   <div class=\\\"modal-content\\\">\\n\\t\\t\\t\\t\\t  <header class=\\\"modal-header\\\">\\n\\t\\t\\t\\t\\t\\t <h4 id=\\\"small_modal1_title\\\" class=\\\"modal-title\\\">Login</h4>\\n\\t\\t\\t\\t\\t  </header>\\n\\t\\t\\t\\t\\t  <div class=\\\"modal-body\\\">\\n\\t\\t\\t\\t\\t  </div>\\n\\t\\t\\t\\t   </div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t</div>\"); // Protect against GlideModal not being defined\n\n    try {\n      var dialog = new GlideModal('amb_disconnect_modal'); // on older browsers the class has a different api\n\n      if (dialog['renderWithContent']) {\n        dialog.template = modalTemplate;\n        dialog.renderWithContent(modalContent);\n      } else {\n        dialog.setBody(modalContent);\n        dialog.render();\n      }\n\n      loginWindow = dialog;\n    } catch (e) {\n      LOGGER.debug(e);\n    }\n  };\n\n  ambServerConnection.loginHide = function () {\n    if (!loginWindow) return;\n    loginWindow.destroy();\n    loginWindow = null;\n  };\n\n  ambServerConnection.loginComplete = function () {\n    ambServerConnection.reestablishSession();\n  };\n\n  function _reestablishSession(emit) {\n    ambServerConnection._sendSessionSetupRequest(function (_ref2) {\n      var response = _ref2.response;\n      if (!response) return;\n      var status = JSON.parse(response)['glide.session.status'];\n\n      _processSessionStatus(status);\n    });\n\n    if (emit) _emitReestablishSession();\n  }\n\n  ambServerConnection.reestablishSession = function () {\n    ambServerConnection._reestablishSession(true);\n  };\n\n  ambServerConnection.subscribeToEvent =\n  /*Number*/\n  function (\n  /*String*/\n  event,\n  /*Function*/\n  callback) {\n    // If we're already connected, and someone subscribes to the connection opened\n    // event, just fire their callback\n    if (eventManager.getEvents().CONNECTION_OPENED === event && connected) callback();\n    return eventManager.subscribe(event, callback);\n  };\n\n  ambServerConnection.unsubscribeFromEvent =\n  /*void*/\n  function (\n  /*Number*/\n  id) {\n    eventManager.unsubscribe(id);\n  };\n\n  ambServerConnection.isLoginWindowEnabled =\n  /*Boolean*/\n  function () {\n    return loginWindowEnabled;\n  };\n\n  ambServerConnection.setLoginWindowEnabled = function (enableLoginWindow) {\n    loginWindowEnabled = enableLoginWindow;\n  };\n\n  ambServerConnection.isLoginWindowOverride = function () {\n    return loginWindowOverride;\n  };\n\n  ambServerConnection.getSubscriptionCommandSender = function () {\n    return subscriptionCommandSender;\n  };\n  /* These are for testing, do not use. */\n\n\n  ambServerConnection._metaConnect = _metaConnect;\n  ambServerConnection._metaHandshake = _metaHandshake;\n  ambServerConnection._sendSessionSetupRequest = _sendRequestToSetUpGlideSession;\n  ambServerConnection._onChannelRedirectSubscriptionComplete = _onChannelRedirectSubscriptionComplete;\n  ambServerConnection._getChannel = _getChannel;\n  ambServerConnection._removeChannel = _removeChannel;\n  ambServerConnection._connectionInitialized = _connectionInitialized;\n  ambServerConnection._connectionOpened = _connectionOpened;\n  ambServerConnection._reestablishSession = _reestablishSession;\n  ambServerConnection._touchHttpSession = _touchHttpSession;\n  return ambServerConnection;\n};\n\nvar _default = ServerConnection;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _amb = _interopRequireDefault(require(\"./amb.Logger\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SessionExtension = function SessionExtension() {\n  var LOGGER = new _amb.default('amb.SessionExtension');\n  var META_CONNECT = '/meta/connect';\n  var extendSession = false;\n\n  this.extendSession = function () {\n    extendSession = true;\n  };\n\n  this.outgoing = function (message) {\n    if (message.channel === META_CONNECT && extendSession) {\n      if (!message.ext) message.ext = {};\n      LOGGER.debug('extendSession');\n      message.ext.extendSession = true;\n      extendSession = false;\n    }\n\n    return message;\n  };\n};\n\nvar _default = SessionExtension;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _amb = _interopRequireDefault(require(\"./amb.Properties\"));\n\nvar _amb2 = require(\"./amb.Helper\");\n\nvar _amb3 = _interopRequireDefault(require(\"./amb.Logger\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Controls the flow of subscription-related (subscribe, resubscribe, unsubscribe) commands\n * @param commandQueue  the queue to hold commands to process.\n */\nvar SubscriptionCommandSender = function SubscriptionCommandSender(commandQueue, tokenManager) {\n  var CommandModes = {\n    SUBSCRIBE: \"subscribe\",\n    UNSUBSCRIBE: \"unsubscribe\"\n  };\n  var HTTP_STATUS_ACCEPTED = 202;\n  var HTTP_STATUS_TOO_MANY_REQUESTS = 429;\n  var maxTimeInterval = 5 * 60 * 1000;\n  /* 5 minutes in milliseconds */\n\n  var LOGGER = new _amb3.default('amb.SubscriptionCommandSender');\n  registerToTokenAvailabilityListener();\n  var stopping = !_amb.default.subscribeCommandsFlow.enable;\n  var timerObject = null;\n\n  function _clamp(val, minLimit, maxLimit) {\n    return Math.min(maxLimit, Math.max(minLimit, val));\n  }\n\n  function getTokenCount() {\n    return _clamp(tokenManager.getTokenCount(), 0, _amb.default.subscribeCommandsFlow.maxInflight);\n  }\n\n  function isBucketFull() {\n    return tokenManager.getTokenCount() >= _amb.default.subscribeCommandsFlow.maxInflight;\n  }\n\n  function registerToTokenAvailabilityListener() {\n    tokenManager.addTokenAvailabilityListener(function () {\n      processQueue();\n    });\n  }\n\n  function restartTimer() {\n    var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n    if (force || (0, _amb2.isNil)(timerObject)) {\n      var timeInterval = _clamp(_amb.default.subscribeCommandsFlow.maxWait, 0, maxTimeInterval);\n\n      LOGGER.debug(\"restartTimer - force: \" + force + \", timerObject : \" + timerObject + \", timeInterval : \" + timeInterval);\n      stopTimer();\n      timerObject = setTimeout(function () {\n        onTimer();\n      }, timeInterval);\n    }\n  }\n\n  function stopTimer() {\n    if (!(0, _amb2.isNil)(timerObject)) {\n      LOGGER.debug(\"stopTimer\");\n      clearTimeout(timerObject);\n      timerObject = null;\n    }\n  }\n\n  function signalStop() {\n    LOGGER.debug(\"signalStop - stopping : \" + stopping);\n\n    if (!stopping) {\n      stopping = true;\n      stopTimer();\n      commandQueue.clear();\n    }\n  }\n\n  function getRetryDelay() {\n    var delay = parseInt(_amb.default.subscribeCommandsFlow.retryDelay.min);\n    delay = _clamp(delay, 0, maxTimeInterval);\n    return delay;\n  }\n\n  function scheduleRetry(channel, triesLeft, mode, retryDelay) {\n    LOGGER.debug(\"scheduleRetry - channel : \" + channel.getName() + \", triesLeft : \" + triesLeft + \", mode : \" + mode);\n    var retryMessage;\n    var newRetryDelay = getNewRetryDelay(retryDelay);\n\n    switch (mode) {\n      case CommandModes.SUBSCRIBE:\n        {\n          retryMessage = function retryMessage() {\n            return enqueueSubscribe(channel, triesLeft, newRetryDelay);\n          };\n\n          break;\n        }\n\n      case CommandModes.UNSUBSCRIBE:\n        {\n          retryMessage = function retryMessage() {\n            return enqueueUnsubscribe(channel, triesLeft, newRetryDelay);\n          };\n\n          break;\n        }\n    }\n\n    if (!(0, _amb2.isNil)(retryMessage)) setTimeout(retryMessage, retryDelay);\n  }\n\n  function onResponse(response, channel, mode, triesLeft, retryDelay) {\n    LOGGER.debug(\"onResponse - response \".concat(JSON.stringify(response), \", channel \").concat(JSON.stringify(channel), \", mode : \").concat(mode, \", \\n\\t\\t\\ttriesLeft \").concat(triesLeft, \", stopping : \").concat(stopping, \", tokenCount : \").concat(tokenManager.getTokenCount(), \", isBucketFull - \").concat(isBucketFull(), \", retryDelay - \").concat(retryDelay));\n\n    if (!stopping) {\n      triesLeft = triesLeft - 1;\n      if (isBucketFull()) stopTimer();\n      if (triesLeft > 0 && isRetriable(response)) scheduleRetry(channel, triesLeft, mode, retryDelay);else channel.subscriptionCallback(response);\n      processQueue();\n    } else channel.subscriptionCallback(response);\n  }\n\n  function getNewRetryDelay(retryDelay) {\n    return _clamp(_amb.default.subscribeCommandsFlow.retryDelay.increaseFactor * retryDelay, _amb.default.subscribeCommandsFlow.retryDelay.min, _amb.default.subscribeCommandsFlow.retryDelay.max);\n  }\n\n  function onTimer() {\n    timerObject = null;\n    LOGGER.debug(\"onTimer - stopping : \" + stopping);\n\n    if (!stopping) {\n      tokenManager.refillTokens();\n      processQueue();\n    }\n  }\n\n  function addItemToQueue(item) {\n    LOGGER.debug(\"addItemToQueue - item : \" + item);\n\n    if (commandQueue.enqueue(item)) {\n      processQueue();\n      return true;\n    }\n\n    return false;\n  }\n\n  function enqueueSubscribe(channel) {\n    var triesLeft = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n    var retryDelay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : getRetryDelay();\n    LOGGER.debug(\"enqueueSubscribe - channel: \" + channel.getName() + \", triesLeft : \" + triesLeft + \", stopping : \" + stopping + \", retryDelay : \" + retryDelay);\n\n    if (!stopping) {\n      if ((0, _amb2.isObject)(channel)) {\n        if ((0, _amb2.isNil)(triesLeft)) triesLeft = 1 + Math.floor(_amb.default.subscribeCommandsFlow.retries);\n\n        if (triesLeft > 0) {\n          var item = function item() {\n            LOGGER.debug(\"enqueueSubscribe - inside the item execution. Calling channel._subscribeToCometD - channel: \" + channel.getName() + \", triesLeft : \" + triesLeft);\n\n            channel._subscribeToCometD(function (resp) {\n              return onResponse(resp, channel, CommandModes.SUBSCRIBE, triesLeft, retryDelay);\n            });\n          };\n\n          return addItemToQueue(item);\n        }\n      }\n    }\n\n    return false;\n  }\n\n  function enqueueUnsubscribe(channel) {\n    var triesLeft = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n    var retryDelay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : getRetryDelay();\n    LOGGER.debug(\"enqueueUnsubscribe - channel: \" + channel.getName() + \", triesLeft : \" + triesLeft + \", stopping : \" + stopping + \", retryDelay : \" + retryDelay);\n\n    if (!stopping) {\n      if ((0, _amb2.isObject)(channel)) {\n        if ((0, _amb2.isNil)(triesLeft)) triesLeft = 1 + Math.floor(_amb.default.subscribeCommandsFlow.retries);\n\n        if (triesLeft > 0) {\n          var item = function item() {\n            channel._unsubscribeFromCometD(function (resp) {\n              return onResponse(resp, channel, CommandModes.UNSUBSCRIBE, triesLeft, retryDelay);\n            });\n          };\n\n          return addItemToQueue(item);\n        }\n      }\n    }\n\n    return false;\n  }\n\n  function isRetriable(response) {\n    LOGGER.debug(\"isRetriable - response : \" + response);\n\n    if (response && response.ext) {\n      var isRejected = response.ext['rejected_by_glide'];\n\n      if (isRejected) {\n        var statusCode = parseInt(response.ext['glide.amb.reply.status.code']);\n        LOGGER.addWarnMessage(\"isRetriable - rejected_by_glide : \" + isRejected + \", glide.amb.reply.status.code : \" + statusCode);\n        if (!isNaN(statusCode)) return statusCode == HTTP_STATUS_TOO_MANY_REQUESTS || statusCode == HTTP_STATUS_ACCEPTED;\n      }\n    }\n\n    LOGGER.debug(\"isRetriable -  \" + false);\n    return false;\n  }\n\n  function processQueue() {\n    var numberToProcess = Math.min(commandQueue.getSize(), getTokenCount());\n    LOGGER.debug(\"processQueue - numberToProcess : \" + numberToProcess);\n\n    if (numberToProcess > 0) {\n      var itemsToRun = commandQueue.dequeueMultiple(numberToProcess);\n      itemsToRun.forEach(function (item) {\n        return (0, _amb2.isNil)(item) || item();\n      });\n      restartTimer(false); // false: don't push the timer farther away if already running.\n    }\n  }\n\n  return {\n    /**\n     * Adds a request to subscribe to the specified channel.\n     * @param channel  the channel to subscribe\n     * @returns  true if accepted; false if there's insufficient room\n     */\n    subscribeToChannel: function subscribeToChannel(channel) {\n      LOGGER.debug(\"subscribeToChannel - to : \" + channel.getName());\n      return enqueueSubscribe(channel);\n    },\n\n    /**\n     * Adds a request to unsubscribe to the specified channel.\n     * @param channel  the channel to unsubscribe\n     * @returns  true if accepted; false if there's insufficient room\n     */\n    unsubscribeToChannel: function unsubscribeToChannel(channel) {\n      LOGGER.debug(\"unsubscribeToChannel - from : \" + channel.getName());\n      return enqueueUnsubscribe(channel);\n    },\n\n    /**\n     * Signals this instance to stop.\n     */\n    stop: function stop() {\n      LOGGER.debug(\"stop\");\n      signalStop();\n    },\n\n    /**\n     * Whether this instance is stopped or stopping.\n     * @returns  true if stopped or stopping; otherwise false.\n     */\n    isStopping: function isStopping() {\n      return stopping;\n    },\n    getQueue: function getQueue() {\n      return commandQueue;\n    },\n    isBucketEmpty: function isBucketEmpty() {\n      return !isBucketFull();\n    },\n    getTimerObject: function getTimerObject() {\n      return timerObject;\n    },\n    getTokenCountFromTokenManager: function getTokenCountFromTokenManager() {\n      return tokenManager.getTokenCount();\n    }\n  };\n};\n\nvar _default = SubscriptionCommandSender;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _amb = _interopRequireDefault(require(\"./amb.Logger\"));\n\nvar _amb2 = _interopRequireDefault(require(\"./amb.Properties\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TokenManagementExtension = function TokenManagementExtension() {\n  var LOGGER = new _amb.default('amb.TokenManagementExtension');\n  var META_SUBSCRIBE = '/meta/subscribe';\n  var META_UNSUBSCRIBE = '/meta/unsubscribe';\n  var META_HANDSHAKE = '/meta/handshake';\n  var tokenCount = _amb2.default.subscribeCommandsFlow.maxInflight;\n  var tokenEventListeners = [];\n\n  this.updateTokenCount = function (count) {\n    tokenCount = count;\n  };\n\n  this.refillTokens = function () {\n    tokenCount = _amb2.default.subscribeCommandsFlow.maxInflight;\n    notifyOnAvailabilityOfToken();\n    LOGGER.debug(\"refillTokens -- tokenCount : \" + tokenCount);\n  };\n\n  function isMetaSubUnsubChannel(message) {\n    return message.channel == META_SUBSCRIBE || message.channel == META_UNSUBSCRIBE;\n  }\n\n  function isReceivedByGlideAndMetaSubUnsubChannel(message) {\n    if (!message.ext) return false;\n    var receivedByGlide = message.ext['received_by_glide'];\n    if (!receivedByGlide) return false;\n    return receivedByGlide && isMetaSubUnsubChannel(receivedByGlide);\n  }\n\n  function isMetaHandshake(message) {\n    return message.channel === META_HANDSHAKE;\n  }\n\n  this.outgoing = function (message) {\n    if (isMetaHandshake(message)) {\n      if (!message.ext) message.ext = {};\n      message.ext.supportsSubscribeCommandFlow = true;\n    }\n\n    if (!_amb2.default.subscribeCommandsFlow.enable) return message;\n    if (isMetaSubUnsubChannel(message) && tokenCount > 0) tokenCount--;\n    return message;\n  };\n\n  this.incoming = function (message) {\n    if (!_amb2.default.subscribeCommandsFlow.enable) return message;\n\n    if (isMetaSubUnsubChannel(message)) {\n      if (tokenCount < _amb2.default.subscribeCommandsFlow.maxInflight) tokenCount++;\n      notifyOnAvailabilityOfToken();\n    } else if (isReceivedByGlideAndMetaSubUnsubChannel(message)) {\n      message = null; // Make cometd not to call back any listeners based on the message id.\n    }\n\n    return message;\n  };\n\n  this.getTokenCount = function () {\n    return tokenCount;\n  };\n\n  this.addTokenAvailabilityListener = function (tokenEventListener) {\n    if (!tokenEventListener) return;\n    LOGGER.debug(\"addTokenAvailabilityListener - tokenEventListener : \" + tokenEventListener);\n    tokenEventListeners.push(tokenEventListener);\n  };\n\n  this.removeTokenAvailabilityListener = function (tokenEventListener) {\n    if (!tokenEventListener) return;\n    LOGGER.debug(\"removeTokenAvailabilityListener - tokenEventListener : \" + tokenEventListener);\n    var removeIndex = tokenEventListeners.findIndex(function (listener) {\n      return tokenEventListener === listener;\n    });\n\n    if (removeIndex !== -1) {\n      LOGGER.debug(\"removeTokenAvailabilityListener - removing listener at index : \" + removeIndex);\n      tokenEventListeners.splice(removeIndex, 1);\n    }\n  };\n\n  function notifyOnAvailabilityOfToken() {\n    LOGGER.debug(\"notifyOnAvailabilityOfToken - current tokenCount: \" + tokenCount);\n\n    try {\n      tokenEventListeners.forEach(function (listener) {\n        listener();\n      });\n    } catch (error) {\n      LOGGER.addErrorMessage(\"notifyOnAvailabilityOfToken - failed to call tokenEventListeners. Error Details : \" + error);\n    }\n  }\n};\n\nvar _default = TokenManagementExtension;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _amb = _interopRequireDefault(require(\"./amb.Properties\"));\n\nvar _amb2 = _interopRequireDefault(require(\"./amb.Logger\"));\n\nvar _amb3 = _interopRequireDefault(require(\"./amb.EventManager\"));\n\nvar _amb4 = _interopRequireDefault(require(\"./amb.ServerConnection\"));\n\nvar _amb5 = _interopRequireDefault(require(\"./amb.ChannelRedirect\"));\n\nvar _amb6 = _interopRequireDefault(require(\"./amb.ChannelListener\"));\n\nvar _amb7 = _interopRequireDefault(require(\"./amb.Channel\"));\n\nvar _amb8 = _interopRequireDefault(require(\"./amb.MessageClient\"));\n\nvar _amb9 = _interopRequireDefault(require(\"./amb.MessageClientBuilder\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar amb = {\n  properties: _amb.default,\n  Logger: _amb2.default,\n  EventManager: _amb3.default,\n  ServerConnection: _amb4.default,\n  ChannelRedirect: _amb5.default,\n  ChannelListener: _amb6.default,\n  Channel: _amb7.default,\n  MessageClient: _amb8.default,\n  getClient: _amb9.default\n};\nvar _default = amb;\nexports.default = _default;","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n","/*\n * Copyright (c) 2008-2018 the original author or authors.\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/* CometD Version 3.1.4 */\n\n(function(root, factory){\n    if (typeof exports === 'object') {\n        // CommonJS.\n        module.exports = factory();\n    } else if (typeof define === 'function' && define.amd) {\n        // AMD.\n        define([], factory);\n    } else {\n        // Globals.\n        root.org = root.org || {};\n        root.org.cometd = factory();\n    }\n}(this, function() {\n    /**\n     * Utility functions.\n     */\n    var Utils = {\n        isString: function(value) {\n            if (value === undefined || value === null) {\n                return false;\n            }\n            return typeof value === 'string' || value instanceof String;\n        },\n        isArray: function(value) {\n            if (value === undefined || value === null) {\n                return false;\n            }\n            return value instanceof Array;\n        },\n        /**\n         * Returns whether the given element is contained into the given array.\n         * @param element the element to check presence for\n         * @param array the array to check for the element presence\n         * @return the index of the element, if present, or a negative index if the element is not present\n         */\n        inArray: function(element, array) {\n            for (var i = 0; i < array.length; ++i) {\n                if (element === array[i]) {\n                    return i;\n                }\n            }\n            return -1;\n        },\n        setTimeout: function(cometd, funktion, delay) {\n            return window.setTimeout(function() {\n                try {\n                    cometd._debug('Invoking timed function', funktion);\n                    funktion();\n                } catch (x) {\n                    cometd._debug('Exception invoking timed function', funktion, x);\n                }\n            }, delay);\n        },\n        clearTimeout: function(timeoutHandle) {\n            window.clearTimeout(timeoutHandle);\n        }\n    };\n\n\n    /**\n     * A registry for transports used by the CometD object.\n     */\n    var TransportRegistry = function() {\n        var _types = [];\n        var _transports = {};\n\n        this.getTransportTypes = function() {\n            return _types.slice(0);\n        };\n\n        this.findTransportTypes = function(version, crossDomain, url) {\n            var result = [];\n            for (var i = 0; i < _types.length; ++i) {\n                var type = _types[i];\n                if (_transports[type].accept(version, crossDomain, url) === true) {\n                    result.push(type);\n                }\n            }\n            return result;\n        };\n\n        this.negotiateTransport = function(types, version, crossDomain, url) {\n            for (var i = 0; i < _types.length; ++i) {\n                var type = _types[i];\n                for (var j = 0; j < types.length; ++j) {\n                    if (type === types[j]) {\n                        var transport = _transports[type];\n                        if (transport.accept(version, crossDomain, url) === true) {\n                            return transport;\n                        }\n                    }\n                }\n            }\n            return null;\n        };\n\n        this.add = function(type, transport, index) {\n            var existing = false;\n            for (var i = 0; i < _types.length; ++i) {\n                if (_types[i] === type) {\n                    existing = true;\n                    break;\n                }\n            }\n\n            if (!existing) {\n                if (typeof index !== 'number') {\n                    _types.push(type);\n                } else {\n                    _types.splice(index, 0, type);\n                }\n                _transports[type] = transport;\n            }\n\n            return !existing;\n        };\n\n        this.find = function(type) {\n            for (var i = 0; i < _types.length; ++i) {\n                if (_types[i] === type) {\n                    return _transports[type];\n                }\n            }\n            return null;\n        };\n\n        this.remove = function(type) {\n            for (var i = 0; i < _types.length; ++i) {\n                if (_types[i] === type) {\n                    _types.splice(i, 1);\n                    var transport = _transports[type];\n                    delete _transports[type];\n                    return transport;\n                }\n            }\n            return null;\n        };\n\n        this.clear = function() {\n            _types = [];\n            _transports = {};\n        };\n\n        this.reset = function(init) {\n            for (var i = 0; i < _types.length; ++i) {\n                _transports[_types[i]].reset(init);\n            }\n        };\n    };\n\n\n    /**\n     * Base object with the common functionality for transports.\n     */\n    var Transport = function() {\n        var _type;\n        var _cometd;\n        var _url;\n\n        /**\n         * Function invoked just after a transport has been successfully registered.\n         * @param type the type of transport (for example 'long-polling')\n         * @param cometd the cometd object this transport has been registered to\n         * @see #unregistered()\n         */\n        this.registered = function(type, cometd) {\n            _type = type;\n            _cometd = cometd;\n        };\n\n        /**\n         * Function invoked just after a transport has been successfully unregistered.\n         * @see #registered(type, cometd)\n         */\n        this.unregistered = function() {\n            _type = null;\n            _cometd = null;\n        };\n\n        this._debug = function() {\n            _cometd._debug.apply(_cometd, arguments);\n        };\n\n        this._mixin = function() {\n            return _cometd._mixin.apply(_cometd, arguments);\n        };\n\n        this.getConfiguration = function() {\n            return _cometd.getConfiguration();\n        };\n\n        this.getAdvice = function() {\n            return _cometd.getAdvice();\n        };\n\n        this.setTimeout = function(funktion, delay) {\n            return Utils.setTimeout(_cometd, funktion, delay);\n        };\n\n        this.clearTimeout = function(handle) {\n            Utils.clearTimeout(handle);\n        };\n\n        /**\n         * Converts the given response into an array of bayeux messages\n         * @param response the response to convert\n         * @return an array of bayeux messages obtained by converting the response\n         */\n        this.convertToMessages = function(response) {\n            if (Utils.isString(response)) {\n                try {\n                    return JSON.parse(response);\n                } catch (x) {\n                    this._debug('Could not convert to JSON the following string', '\"' + response + '\"');\n                    throw x;\n                }\n            }\n            if (Utils.isArray(response)) {\n                return response;\n            }\n            if (response === undefined || response === null) {\n                return [];\n            }\n            if (response instanceof Object) {\n                return [response];\n            }\n            throw 'Conversion Error ' + response + ', typeof ' + (typeof response);\n        };\n\n        /**\n         * Returns whether this transport can work for the given version and cross domain communication case.\n         * @param version a string indicating the transport version\n         * @param crossDomain a boolean indicating whether the communication is cross domain\n         * @param url the URL to connect to\n         * @return true if this transport can work for the given version and cross domain communication case,\n         * false otherwise\n         */\n        this.accept = function(version, crossDomain, url) {\n            throw 'Abstract';\n        };\n\n        /**\n         * Returns the type of this transport.\n         * @see #registered(type, cometd)\n         */\n        this.getType = function() {\n            return _type;\n        };\n\n        this.getURL = function() {\n            return _url;\n        };\n\n        this.setURL = function(url) {\n            _url = url;\n        };\n\n        this.send = function(envelope, metaConnect) {\n            throw 'Abstract';\n        };\n\n        this.reset = function(init) {\n            this._debug('Transport', _type, 'reset', init ? 'initial' : 'retry');\n        };\n\n        this.abort = function() {\n            this._debug('Transport', _type, 'aborted');\n        };\n\n        this.toString = function() {\n            return this.getType();\n        };\n    };\n\n    Transport.derive = function(baseObject) {\n        function F() {\n        }\n\n        F.prototype = baseObject;\n        return new F();\n    };\n\n\n    /**\n     * Base object with the common functionality for transports based on requests.\n     * The key responsibility is to allow at most 2 outstanding requests to the server,\n     * to avoid that requests are sent behind a long poll.\n     * To achieve this, we have one reserved request for the long poll, and all other\n     * requests are serialized one after the other.\n     */\n    var RequestTransport = function() {\n        var _super = new Transport();\n        var _self = Transport.derive(_super);\n        var _requestIds = 0;\n        var _metaConnectRequest = null;\n        var _requests = [];\n        var _envelopes = [];\n\n        function _coalesceEnvelopes(envelope) {\n            while (_envelopes.length > 0) {\n                var envelopeAndRequest = _envelopes[0];\n                var newEnvelope = envelopeAndRequest[0];\n                var newRequest = envelopeAndRequest[1];\n                if (newEnvelope.url === envelope.url &&\n                    newEnvelope.sync === envelope.sync) {\n                    _envelopes.shift();\n                    envelope.messages = envelope.messages.concat(newEnvelope.messages);\n                    this._debug('Coalesced', newEnvelope.messages.length, 'messages from request', newRequest.id);\n                    continue;\n                }\n                break;\n            }\n        }\n\n        function _transportSend(envelope, request) {\n            this.transportSend(envelope, request);\n            request.expired = false;\n\n            if (!envelope.sync) {\n                var maxDelay = this.getConfiguration().maxNetworkDelay;\n                var delay = maxDelay;\n                if (request.metaConnect === true) {\n                    delay += this.getAdvice().timeout;\n                }\n\n                this._debug('Transport', this.getType(), 'waiting at most', delay, 'ms for the response, maxNetworkDelay', maxDelay);\n\n                var self = this;\n                request.timeout = this.setTimeout(function() {\n                    request.expired = true;\n                    var errorMessage = 'Request ' + request.id + ' of transport ' + self.getType() + ' exceeded ' + delay + ' ms max network delay';\n                    var failure = {\n                        reason: errorMessage\n                    };\n                    var xhr = request.xhr;\n                    failure.httpCode = self.xhrStatus(xhr);\n                    self.abortXHR(xhr);\n                    self._debug(errorMessage);\n                    self.complete(request, false, request.metaConnect);\n                    envelope.onFailure(xhr, envelope.messages, failure);\n                }, delay);\n            }\n        }\n\n        function _queueSend(envelope) {\n            var requestId = ++_requestIds;\n            var request = {\n                id: requestId,\n                metaConnect: false,\n                envelope: envelope\n            };\n\n            // Consider the metaConnect requests which should always be present\n            if (_requests.length < this.getConfiguration().maxConnections - 1) {\n                _requests.push(request);\n                _transportSend.call(this, envelope, request);\n            } else {\n                this._debug('Transport', this.getType(), 'queueing request', requestId, 'envelope', envelope);\n                _envelopes.push([envelope, request]);\n            }\n        }\n\n        function _metaConnectComplete(request) {\n            var requestId = request.id;\n            this._debug('Transport', this.getType(), 'metaConnect complete, request', requestId);\n            if (_metaConnectRequest !== null && _metaConnectRequest.id !== requestId) {\n                throw 'Longpoll request mismatch, completing request ' + requestId;\n            }\n\n            // Reset metaConnect request\n            _metaConnectRequest = null;\n        }\n\n        function _complete(request, success) {\n            var index = Utils.inArray(request, _requests);\n            // The index can be negative if the request has been aborted\n            if (index >= 0) {\n                _requests.splice(index, 1);\n            }\n\n            if (_envelopes.length > 0) {\n                var envelopeAndRequest = _envelopes.shift();\n                var nextEnvelope = envelopeAndRequest[0];\n                var nextRequest = envelopeAndRequest[1];\n                this._debug('Transport dequeued request', nextRequest.id);\n                if (success) {\n                    if (this.getConfiguration().autoBatch) {\n                        _coalesceEnvelopes.call(this, nextEnvelope);\n                    }\n                    _queueSend.call(this, nextEnvelope);\n                    this._debug('Transport completed request', request.id, nextEnvelope);\n                } else {\n                    // Keep the semantic of calling response callbacks asynchronously after the request\n                    var self = this;\n                    this.setTimeout(function() {\n                        self.complete(nextRequest, false, nextRequest.metaConnect);\n                        var failure = {\n                            reason: 'Previous request failed'\n                        };\n                        var xhr = nextRequest.xhr;\n                        failure.httpCode = self.xhrStatus(xhr);\n                        nextEnvelope.onFailure(xhr, nextEnvelope.messages, failure);\n                    }, 0);\n                }\n            }\n        }\n\n        _self.complete = function(request, success, metaConnect) {\n            if (metaConnect) {\n                _metaConnectComplete.call(this, request);\n            } else {\n                _complete.call(this, request, success);\n            }\n        };\n\n        /**\n         * Performs the actual send depending on the transport type details.\n         * @param envelope the envelope to send\n         * @param request the request information\n         */\n        _self.transportSend = function(envelope, request) {\n            throw 'Abstract';\n        };\n\n        _self.transportSuccess = function(envelope, request, responses) {\n            if (!request.expired) {\n                this.clearTimeout(request.timeout);\n                this.complete(request, true, request.metaConnect);\n                if (responses && responses.length > 0) {\n                    envelope.onSuccess(responses);\n                } else {\n                    envelope.onFailure(request.xhr, envelope.messages, {\n                        httpCode: 204\n                    });\n                }\n            }\n        };\n\n        _self.transportFailure = function(envelope, request, failure) {\n            if (!request.expired) {\n                this.clearTimeout(request.timeout);\n                this.complete(request, false, request.metaConnect);\n                envelope.onFailure(request.xhr, envelope.messages, failure);\n            }\n        };\n\n        function _metaConnectSend(envelope) {\n            if (_metaConnectRequest !== null) {\n                throw 'Concurrent metaConnect requests not allowed, request id=' + _metaConnectRequest.id + ' not yet completed';\n            }\n\n            var requestId = ++_requestIds;\n            this._debug('Transport', this.getType(), 'metaConnect send, request', requestId, 'envelope', envelope);\n            var request = {\n                id: requestId,\n                metaConnect: true,\n                envelope: envelope\n            };\n            _transportSend.call(this, envelope, request);\n            _metaConnectRequest = request;\n        }\n\n        _self.send = function(envelope, metaConnect) {\n            if (metaConnect) {\n                _metaConnectSend.call(this, envelope);\n            } else {\n                _queueSend.call(this, envelope);\n            }\n        };\n\n        _self.abort = function() {\n            _super.abort();\n            for (var i = 0; i < _requests.length; ++i) {\n                var request = _requests[i];\n                if (request) {\n                    this._debug('Aborting request', request);\n                    if (!this.abortXHR(request.xhr)) {\n                        this.transportFailure(request.envelope, request, {reason: 'abort'});\n                    }\n                }\n            }\n            var metaConnectRequest = _metaConnectRequest;\n            if (metaConnectRequest) {\n                this._debug('Aborting metaConnect request', metaConnectRequest);\n                if (!this.abortXHR(metaConnectRequest.xhr)) {\n                    this.transportFailure(metaConnectRequest.envelope, metaConnectRequest, {reason: 'abort'});\n                }\n            }\n            this.reset(true);\n        };\n\n        _self.reset = function(init) {\n            _super.reset(init);\n            _metaConnectRequest = null;\n            _requests = [];\n            _envelopes = [];\n        };\n\n        _self.abortXHR = function(xhr) {\n            if (xhr) {\n                try {\n                    var state = xhr.readyState;\n                    xhr.abort();\n                    return state !== window.XMLHttpRequest.UNSENT;\n                } catch (x) {\n                    this._debug(x);\n                }\n            }\n            return false;\n        };\n\n        _self.xhrStatus = function(xhr) {\n            if (xhr) {\n                try {\n                    return xhr.status;\n                } catch (x) {\n                    this._debug(x);\n                }\n            }\n            return -1;\n        };\n\n        return _self;\n    };\n\n\n    var LongPollingTransport = function() {\n        var _super = new RequestTransport();\n        var _self = Transport.derive(_super);\n        // By default, support cross domain\n        var _supportsCrossDomain = true;\n\n        _self.accept = function(version, crossDomain, url) {\n            return _supportsCrossDomain || !crossDomain;\n        };\n\n        _self.newXMLHttpRequest = function() {\n            return new window.XMLHttpRequest();\n        };\n\n        _self.xhrSend = function(packet) {\n            var xhr = _self.newXMLHttpRequest();\n            // Copy external context, to be used in other environments.\n            xhr.context = _self.context;\n            xhr.withCredentials = true;\n            xhr.open('POST', packet.url, packet.sync !== true);\n            var headers = packet.headers;\n            if (headers) {\n                for (var headerName in headers) {\n                    if (headers.hasOwnProperty(headerName)) {\n                        xhr.setRequestHeader(headerName, headers[headerName]);\n                    }\n                }\n            }\n            xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');\n            xhr.onload = function() {\n                if (xhr.status === 200) {\n                    packet.onSuccess(xhr.responseText);\n                } else {\n                    packet.onError(xhr.statusText);\n                }\n            };\n            xhr.onerror = function() {\n                packet.onError(xhr.statusText);\n            };\n            xhr.send(packet.body);\n            return xhr;\n        };\n\n        _self.transportSend = function(envelope, request) {\n            this._debug('Transport', this.getType(), 'sending request', request.id, 'envelope', envelope);\n\n            var self = this;\n            try {\n                var sameStack = true;\n                request.xhr = this.xhrSend({\n                    transport: this,\n                    url: envelope.url,\n                    sync: envelope.sync,\n                    headers: this.getConfiguration().requestHeaders,\n                    body: JSON.stringify(envelope.messages),\n                    onSuccess: function(response) {\n                        self._debug('Transport', self.getType(), 'received response', response);\n                        var success = false;\n                        try {\n                            var received = self.convertToMessages(response);\n                            if (received.length === 0) {\n                                _supportsCrossDomain = false;\n                                self.transportFailure(envelope, request, {\n                                    httpCode: 204\n                                });\n                            } else {\n                                success = true;\n                                self.transportSuccess(envelope, request, received);\n                            }\n                        } catch (x) {\n                            self._debug(x);\n                            if (!success) {\n                                _supportsCrossDomain = false;\n                                var failure = {\n                                    exception: x\n                                };\n                                failure.httpCode = self.xhrStatus(request.xhr);\n                                self.transportFailure(envelope, request, failure);\n                            }\n                        }\n                    },\n                    onError: function(reason, exception) {\n                        self._debug('Transport', self.getType(), 'received error', reason, exception);\n                        _supportsCrossDomain = false;\n                        var failure = {\n                            reason: reason,\n                            exception: exception\n                        };\n                        failure.httpCode = self.xhrStatus(request.xhr);\n                        if (sameStack) {\n                            // Keep the semantic of calling response callbacks asynchronously after the request\n                            self.setTimeout(function() {\n                                self.transportFailure(envelope, request, failure);\n                            }, 0);\n                        } else {\n                            self.transportFailure(envelope, request, failure);\n                        }\n                    }\n                });\n                sameStack = false;\n            } catch (x) {\n                _supportsCrossDomain = false;\n                // Keep the semantic of calling response callbacks asynchronously after the request\n                this.setTimeout(function() {\n                    self.transportFailure(envelope, request, {\n                        exception: x\n                    });\n                }, 0);\n            }\n        };\n\n        _self.reset = function(init) {\n            _super.reset(init);\n            _supportsCrossDomain = true;\n        };\n\n        return _self;\n    };\n\n\n    var CallbackPollingTransport = function() {\n        var _super = new RequestTransport();\n        var _self = Transport.derive(_super);\n        var jsonp = 0;\n\n        _self.accept = function(version, crossDomain, url) {\n            return true;\n        };\n\n        _self.jsonpSend = function(packet) {\n            var head = document.getElementsByTagName('head')[0];\n            var script = document.createElement('script');\n\n            var callbackName = '_cometd_jsonp_' + jsonp++;\n            window[callbackName] = function(responseText) {\n                head.removeChild(script);\n                delete window[callbackName];\n                packet.onSuccess(responseText);\n            };\n\n            var url = packet.url;\n            url += url.indexOf('?') < 0 ? '?' : '&';\n            url += 'jsonp=' + callbackName;\n            url += '&message=' + encodeURIComponent(packet.body);\n            script.src = url;\n            script.async = packet.sync !== true;\n            script.type = 'application/javascript';\n            script.onerror = function(e) {\n                packet.onError('jsonp ' + e.type);\n            };\n            head.appendChild(script);\n        };\n\n        function _failTransportFn(envelope, request, x) {\n            var self = this;\n            return function() {\n                self.transportFailure(envelope, request, 'error', x);\n            };\n        }\n\n        _self.transportSend = function(envelope, request) {\n            var self = this;\n\n            // Microsoft Internet Explorer has a 2083 URL max length\n            // We must ensure that we stay within that length\n            var start = 0;\n            var length = envelope.messages.length;\n            var lengths = [];\n            while (length > 0) {\n                // Encode the messages because all brackets, quotes, commas, colons, etc\n                // present in the JSON will be URL encoded, taking many more characters\n                var json = JSON.stringify(envelope.messages.slice(start, start + length));\n                var urlLength = envelope.url.length + encodeURI(json).length;\n\n                var maxLength = this.getConfiguration().maxURILength;\n                if (urlLength > maxLength) {\n                    if (length === 1) {\n                        var x = 'Bayeux message too big (' + urlLength + ' bytes, max is ' + maxLength + ') ' +\n                            'for transport ' + this.getType();\n                        // Keep the semantic of calling response callbacks asynchronously after the request\n                        this.setTimeout(_failTransportFn.call(this, envelope, request, x), 0);\n                        return;\n                    }\n\n                    --length;\n                    continue;\n                }\n\n                lengths.push(length);\n                start += length;\n                length = envelope.messages.length - start;\n            }\n\n            // Here we are sure that the messages can be sent within the URL limit\n\n            var envelopeToSend = envelope;\n            if (lengths.length > 1) {\n                var begin = 0;\n                var end = lengths[0];\n                this._debug('Transport', this.getType(), 'split', envelope.messages.length, 'messages into', lengths.join(' + '));\n                envelopeToSend = this._mixin(false, {}, envelope);\n                envelopeToSend.messages = envelope.messages.slice(begin, end);\n                envelopeToSend.onSuccess = envelope.onSuccess;\n                envelopeToSend.onFailure = envelope.onFailure;\n\n                for (var i = 1; i < lengths.length; ++i) {\n                    var nextEnvelope = this._mixin(false, {}, envelope);\n                    begin = end;\n                    end += lengths[i];\n                    nextEnvelope.messages = envelope.messages.slice(begin, end);\n                    nextEnvelope.onSuccess = envelope.onSuccess;\n                    nextEnvelope.onFailure = envelope.onFailure;\n                    this.send(nextEnvelope, request.metaConnect);\n                }\n            }\n\n            this._debug('Transport', this.getType(), 'sending request', request.id, 'envelope', envelopeToSend);\n\n            try {\n                var sameStack = true;\n                this.jsonpSend({\n                    transport: this,\n                    url: envelopeToSend.url,\n                    sync: envelopeToSend.sync,\n                    headers: this.getConfiguration().requestHeaders,\n                    body: JSON.stringify(envelopeToSend.messages),\n                    onSuccess: function(responses) {\n                        var success = false;\n                        try {\n                            var received = self.convertToMessages(responses);\n                            if (received.length === 0) {\n                                self.transportFailure(envelopeToSend, request, {\n                                    httpCode: 204\n                                });\n                            } else {\n                                success = true;\n                                self.transportSuccess(envelopeToSend, request, received);\n                            }\n                        } catch (x) {\n                            self._debug(x);\n                            if (!success) {\n                                self.transportFailure(envelopeToSend, request, {\n                                    exception: x\n                                });\n                            }\n                        }\n                    },\n                    onError: function(reason, exception) {\n                        var failure = {\n                            reason: reason,\n                            exception: exception\n                        };\n                        if (sameStack) {\n                            // Keep the semantic of calling response callbacks asynchronously after the request\n                            self.setTimeout(function() {\n                                self.transportFailure(envelopeToSend, request, failure);\n                            }, 0);\n                        } else {\n                            self.transportFailure(envelopeToSend, request, failure);\n                        }\n                    }\n                });\n                sameStack = false;\n            } catch (xx) {\n                // Keep the semantic of calling response callbacks asynchronously after the request\n                this.setTimeout(function() {\n                    self.transportFailure(envelopeToSend, request, {\n                        exception: xx\n                    });\n                }, 0);\n            }\n        };\n\n        return _self;\n    };\n\n\n    var WebSocketTransport = function() {\n        var _super = new Transport();\n        var _self = Transport.derive(_super);\n        var _cometd;\n        // By default WebSocket is supported\n        var _webSocketSupported = true;\n        // Whether we were able to establish a WebSocket connection\n        var _webSocketConnected = false;\n        var _stickyReconnect = true;\n        // The context contains the envelopes that have been sent\n        // and the timeouts for the messages that have been sent.\n        var _context = null;\n        var _connecting = null;\n        var _connected = false;\n        var _successCallback = null;\n\n        _self.reset = function(init) {\n            _super.reset(init);\n            _webSocketSupported = true;\n            if (init) {\n                _webSocketConnected = false;\n            }\n            _stickyReconnect = true;\n            _context = null;\n            _connecting = null;\n            _connected = false;\n        };\n\n        function _forceClose(context, event) {\n            if (context) {\n                this.webSocketClose(context, event.code, event.reason);\n                // Force immediate failure of pending messages to trigger reconnect.\n                // This is needed because the server may not reply to our close()\n                // and therefore the onclose function is never called.\n                this.onClose(context, event);\n            }\n        }\n\n        function _sameContext(context) {\n            return context === _connecting || context === _context;\n        }\n\n        function _storeEnvelope(context, envelope, metaConnect) {\n            var messageIds = [];\n            for (var i = 0; i < envelope.messages.length; ++i) {\n                var message = envelope.messages[i];\n                if (message.id) {\n                    messageIds.push(message.id);\n                }\n            }\n            context.envelopes[messageIds.join(',')] = [envelope, metaConnect];\n            this._debug('Transport', this.getType(), 'stored envelope, envelopes', context.envelopes);\n        }\n\n        function _websocketConnect(context) {\n            // We may have multiple attempts to open a WebSocket\n            // connection, for example a /meta/connect request that\n            // may take time, along with a user-triggered publish.\n            // Early return if we are already connecting.\n            if (_connecting) {\n                return;\n            }\n\n            // Mangle the URL, changing the scheme from 'http' to 'ws'.\n            var url = _cometd.getURL().replace(/^http/, 'ws');\n            this._debug('Transport', this.getType(), 'connecting to URL', url);\n\n            try {\n                var protocol = _cometd.getConfiguration().protocol;\n                context.webSocket = protocol ? new window.WebSocket(url, protocol) : new window.WebSocket(url);\n                _connecting = context;\n            } catch (x) {\n                _webSocketSupported = false;\n                this._debug('Exception while creating WebSocket object', x);\n                throw x;\n            }\n\n            // By default use sticky reconnects.\n            _stickyReconnect = _cometd.getConfiguration().stickyReconnect !== false;\n\n            var self = this;\n            var connectTimeout = _cometd.getConfiguration().connectTimeout;\n            if (connectTimeout > 0) {\n                context.connectTimer = this.setTimeout(function() {\n                    _cometd._debug('Transport', self.getType(), 'timed out while connecting to URL', url, ':', connectTimeout, 'ms');\n                    // The connection was not opened, close anyway.\n                    _forceClose.call(self, context, {code: 1000, reason: 'Connect Timeout'});\n                }, connectTimeout);\n            }\n\n            var onopen = function() {\n                _cometd._debug('WebSocket onopen', context);\n                if (context.connectTimer) {\n                    self.clearTimeout(context.connectTimer);\n                }\n\n                if (_sameContext(context)) {\n                    _connecting = null;\n                    _context = context;\n                    _webSocketConnected = true;\n                    self.onOpen(context);\n                } else {\n                    // We have a valid connection already, close this one.\n                    _cometd._warn('Closing extra WebSocket connection', this, 'active connection', _context);\n                    _forceClose.call(self, context, {code: 1000, reason: 'Extra Connection'});\n                }\n            };\n\n            // This callback is invoked when the server sends the close frame.\n            // The close frame for a connection may arrive *after* another\n            // connection has been opened, so we must make sure that actions\n            // are performed only if it's the same connection.\n            var onclose = function(event) {\n                event = event || {code: 1000};\n                _cometd._debug('WebSocket onclose', context, event, 'connecting', _connecting, 'current', _context);\n\n                if (context.connectTimer) {\n                    self.clearTimeout(context.connectTimer);\n                }\n\n                self.onClose(context, event);\n            };\n\n            var onmessage = function(wsMessage) {\n                _cometd._debug('WebSocket onmessage', wsMessage, context);\n                self.onMessage(context, wsMessage);\n            };\n\n            context.webSocket.onopen = onopen;\n            context.webSocket.onclose = onclose;\n            context.webSocket.onerror = function() {\n                // Clients should call onclose(), but if they do not we do it here for safety.\n                onclose({code: 1000, reason: 'Error'});\n            };\n            context.webSocket.onmessage = onmessage;\n\n            this._debug('Transport', this.getType(), 'configured callbacks on', context);\n        }\n\n        function _webSocketSend(context, envelope, metaConnect) {\n            var json = JSON.stringify(envelope.messages);\n            context.webSocket.send(json);\n            this._debug('Transport', this.getType(), 'sent', envelope, 'metaConnect =', metaConnect);\n\n            // Manage the timeout waiting for the response.\n            var maxDelay = this.getConfiguration().maxNetworkDelay;\n            var delay = maxDelay;\n            if (metaConnect) {\n                delay += this.getAdvice().timeout;\n                _connected = true;\n            }\n\n            var self = this;\n            var messageIds = [];\n            for (var i = 0; i < envelope.messages.length; ++i) {\n                (function() {\n                    var message = envelope.messages[i];\n                    if (message.id) {\n                        messageIds.push(message.id);\n                        context.timeouts[message.id] = self.setTimeout(function() {\n                            _cometd._debug('Transport', self.getType(), 'timing out message', message.id, 'after', delay, 'on', context);\n                            _forceClose.call(self, context, {code: 1000, reason: 'Message Timeout'});\n                        }, delay);\n                    }\n                })();\n            }\n\n            this._debug('Transport', this.getType(), 'waiting at most', delay, 'ms for messages', messageIds, 'maxNetworkDelay', maxDelay, ', timeouts:', context.timeouts);\n        }\n\n        _self._notifySuccess = function(fn, messages) {\n            fn.call(this, messages);\n        };\n\n        _self._notifyFailure = function(fn, context, messages, failure) {\n            fn.call(this, context, messages, failure);\n        };\n\n        function _send(context, envelope, metaConnect) {\n            try {\n                if (context === null) {\n                    context = _connecting || {\n                            envelopes: {},\n                            timeouts: {}\n                        };\n                    _storeEnvelope.call(this, context, envelope, metaConnect);\n                    _websocketConnect.call(this, context);\n                } else {\n                    _storeEnvelope.call(this, context, envelope, metaConnect);\n                    _webSocketSend.call(this, context, envelope, metaConnect);\n                }\n            } catch (x) {\n                // Keep the semantic of calling response callbacks asynchronously after the request.\n                var self = this;\n                this.setTimeout(function() {\n                    _forceClose.call(self, context, {\n                        code: 1000,\n                        reason: 'Exception',\n                        exception: x\n                    });\n                }, 0);\n            }\n        }\n\n        _self.onOpen = function(context) {\n            var envelopes = context.envelopes;\n            this._debug('Transport', this.getType(), 'opened', context, 'pending messages', envelopes);\n            for (var key in envelopes) {\n                if (envelopes.hasOwnProperty(key)) {\n                    var element = envelopes[key];\n                    var envelope = element[0];\n                    var metaConnect = element[1];\n                    // Store the success callback, which is independent from the envelope,\n                    // so that it can be used to notify arrival of messages.\n                    _successCallback = envelope.onSuccess;\n                    _webSocketSend.call(this, context, envelope, metaConnect);\n                }\n            }\n        };\n\n        _self.onMessage = function(context, wsMessage) {\n            this._debug('Transport', this.getType(), 'received websocket message', wsMessage, context);\n\n            var close = false;\n            var messages = this.convertToMessages(wsMessage.data);\n            var messageIds = [];\n            for (var i = 0; i < messages.length; ++i) {\n                var message = messages[i];\n\n                // Detect if the message is a response to a request we made.\n                // If it's a meta message, for sure it's a response; otherwise it's\n                // a publish message and publish responses don't have the data field.\n                if (/^\\/meta\\//.test(message.channel) || message.data === undefined) {\n                    if (message.id) {\n                        messageIds.push(message.id);\n\n                        var timeout = context.timeouts[message.id];\n                        if (timeout) {\n                            this.clearTimeout(timeout);\n                            delete context.timeouts[message.id];\n                            this._debug('Transport', this.getType(), 'removed timeout for message', message.id, ', timeouts', context.timeouts);\n                        }\n                    }\n                }\n\n                if ('/meta/connect' === message.channel) {\n                    _connected = false;\n                }\n                if ('/meta/disconnect' === message.channel && !_connected) {\n                    close = true;\n                }\n            }\n\n            // Remove the envelope corresponding to the messages.\n            var removed = false;\n            var envelopes = context.envelopes;\n            for (var j = 0; j < messageIds.length; ++j) {\n                var id = messageIds[j];\n                for (var key in envelopes) {\n                    if (envelopes.hasOwnProperty(key)) {\n                        var ids = key.split(',');\n                        var index = Utils.inArray(id, ids);\n                        if (index >= 0) {\n                            removed = true;\n                            ids.splice(index, 1);\n                            var envelope = envelopes[key][0];\n                            var metaConnect = envelopes[key][1];\n                            delete envelopes[key];\n                            if (ids.length > 0) {\n                                envelopes[ids.join(',')] = [envelope, metaConnect];\n                            }\n                            break;\n                        }\n                    }\n                }\n            }\n            if (removed) {\n                this._debug('Transport', this.getType(), 'removed envelope, envelopes', envelopes);\n            }\n\n            this._notifySuccess(_successCallback, messages);\n\n            if (close) {\n                this.webSocketClose(context, 1000, 'Disconnect');\n            }\n        };\n\n        _self.onClose = function(context, event) {\n            this._debug('Transport', this.getType(), 'closed', context, event);\n\n            if (_sameContext(context)) {\n                // Remember if we were able to connect.\n                // This close event could be due to server shutdown,\n                // and if it restarts we want to try websocket again.\n                _webSocketSupported = _stickyReconnect && _webSocketConnected;\n                _connecting = null;\n                _context = null;\n            }\n\n            var timeouts = context.timeouts;\n            context.timeouts = {};\n            for (var id in timeouts) {\n                if (timeouts.hasOwnProperty(id)) {\n                    this.clearTimeout(timeouts[id]);\n                }\n            }\n\n            var envelopes = context.envelopes;\n            context.envelopes = {};\n            for (var key in envelopes) {\n                if (envelopes.hasOwnProperty(key)) {\n                    var envelope = envelopes[key][0];\n                    var metaConnect = envelopes[key][1];\n                    if (metaConnect) {\n                        _connected = false;\n                    }\n                    var failure = {\n                        websocketCode: event.code,\n                        reason: event.reason\n                    };\n                    if (event.exception) {\n                        failure.exception = event.exception;\n                    }\n                    this._notifyFailure(envelope.onFailure, context, envelope.messages, failure);\n                }\n            }\n        };\n\n        _self.registered = function(type, cometd) {\n            _super.registered(type, cometd);\n            _cometd = cometd;\n        };\n\n        _self.accept = function(version, crossDomain, url) {\n            this._debug('Transport', this.getType(), 'accept, supported:', _webSocketSupported);\n            // Using !! to return a boolean (and not the WebSocket object).\n            return _webSocketSupported && !!window.WebSocket && _cometd.websocketEnabled !== false;\n        };\n\n        _self.send = function(envelope, metaConnect) {\n            this._debug('Transport', this.getType(), 'sending', envelope, 'metaConnect =', metaConnect);\n            _send.call(this, _context, envelope, metaConnect);\n        };\n\n        _self.webSocketClose = function(context, code, reason) {\n            try {\n                if (context.webSocket) {\n                    context.webSocket.close(code, reason);\n                }\n            } catch (x) {\n                this._debug(x);\n            }\n        };\n\n        _self.abort = function() {\n            _super.abort();\n            _forceClose.call(this, _context, {code: 1000, reason: 'Abort'});\n            this.reset(true);\n        };\n\n        return _self;\n    };\n\n\n    /**\n     * The constructor for a CometD object, identified by an optional name.\n     * The default name is the string 'default'.\n     * @param name the optional name of this cometd object\n     */\n    var CometD = function (name) {\n        var _cometd = this;\n        var _name = name || 'default';\n        var _crossDomain = false;\n        var _transports = new TransportRegistry();\n        var _transport;\n        var _status = 'disconnected';\n        var _messageId = 0;\n        var _clientId = null;\n        var _batch = 0;\n        var _messageQueue = [];\n        var _internalBatch = false;\n        var _listenerId = 0;\n        var _listeners = {};\n        var _backoff = 0;\n        var _scheduledSend = null;\n        var _extensions = [];\n        var _advice = {};\n        var _handshakeProps;\n        var _handshakeCallback;\n        var _callbacks = {};\n        var _remoteCalls = {};\n        var _reestablish = false;\n        var _connected = false;\n        var _unconnectTime = 0;\n        var _handshakeMessages = 0;\n        var _config = {\n            protocol: null,\n            stickyReconnect: true,\n            connectTimeout: 0,\n            maxConnections: 2,\n            backoffIncrement: 1000,\n            maxBackoff: 60000,\n            logLevel: 'info',\n            maxNetworkDelay: 10000,\n            requestHeaders: {},\n            appendMessageTypeToURL: true,\n            autoBatch: false,\n            urls: {},\n            maxURILength: 2000,\n            advice: {\n                timeout: 60000,\n                interval: 0,\n                reconnect: undefined,\n                maxInterval: 0\n            }\n        };\n\n        function _fieldValue(object, name) {\n            try {\n                return object[name];\n            } catch (x) {\n                return undefined;\n            }\n        }\n\n        /**\n         * Mixes in the given objects into the target object by copying the properties.\n         * @param deep if the copy must be deep\n         * @param target the target object\n         * @param objects the objects whose properties are copied into the target\n         */\n        this._mixin = function(deep, target, objects) {\n            var result = target || {};\n\n            // Skip first 2 parameters (deep and target), and loop over the others\n            for (var i = 2; i < arguments.length; ++i) {\n                var object = arguments[i];\n\n                if (object === undefined || object === null) {\n                    continue;\n                }\n\n                for (var propName in object) {\n                    if (object.hasOwnProperty(propName)) {\n                        var prop = _fieldValue(object, propName);\n                        var targ = _fieldValue(result, propName);\n\n                        // Avoid infinite loops\n                        if (prop === target) {\n                            continue;\n                        }\n                        // Do not mixin undefined values\n                        if (prop === undefined) {\n                            continue;\n                        }\n\n                        if (deep && typeof prop === 'object' && prop !== null) {\n                            if (prop instanceof Array) {\n                                result[propName] = this._mixin(deep, targ instanceof Array ? targ : [], prop);\n                            } else {\n                                var source = typeof targ === 'object' && !(targ instanceof Array) ? targ : {};\n                                result[propName] = this._mixin(deep, source, prop);\n                            }\n                        } else {\n                            result[propName] = prop;\n                        }\n                    }\n                }\n            }\n\n            return result;\n        };\n\n        function _isString(value) {\n            return Utils.isString(value);\n        }\n\n        function _isFunction(value) {\n            if (value === undefined || value === null) {\n                return false;\n            }\n            return typeof value === 'function';\n        }\n\n        function _zeroPad(value, length) {\n            var result = '';\n            while (--length > 0) {\n                if (value >= Math.pow(10, length)) {\n                    break;\n                }\n                result += '0';\n            }\n            result += value;\n            return result;\n        }\n\n        function _log(level, args) {\n            if (window.console) {\n                var logger = window.console[level];\n                if (_isFunction(logger)) {\n                    var now = new Date();\n                    [].splice.call(args, 0, 0, _zeroPad(now.getHours(), 2) + ':' + _zeroPad(now.getMinutes(), 2) + ':' +\n                        _zeroPad(now.getSeconds(), 2) + '.' + _zeroPad(now.getMilliseconds(), 3));\n                    logger.apply(window.console, args);\n                }\n            }\n        }\n\n        this._warn = function() {\n            _log('warn', arguments);\n        };\n\n        this._info = function() {\n            if (_config.logLevel !== 'warn') {\n                _log('info', arguments);\n            }\n        };\n\n        this._debug = function() {\n            if (_config.logLevel === 'debug') {\n                _log('debug', arguments);\n            }\n        };\n\n        function _splitURL(url) {\n            // [1] = protocol://,\n            // [2] = host:port,\n            // [3] = host,\n            // [4] = IPv6_host,\n            // [5] = IPv4_host,\n            // [6] = :port,\n            // [7] = port,\n            // [8] = uri,\n            // [9] = rest (query / fragment)\n            return /(^https?:\\/\\/)?(((\\[[^\\]]+\\])|([^:\\/\\?#]+))(:(\\d+))?)?([^\\?#]*)(.*)?/.exec(url);\n        }\n\n        /**\n         * Returns whether the given hostAndPort is cross domain.\n         * The default implementation checks against window.location.host\n         * but this function can be overridden to make it work in non-browser\n         * environments.\n         *\n         * @param hostAndPort the host and port in format host:port\n         * @return whether the given hostAndPort is cross domain\n         */\n        this._isCrossDomain = function(hostAndPort) {\n            if (window.location && window.location.host) {\n                if (hostAndPort) {\n                    return hostAndPort !== window.location.host;\n                }\n            }\n            return false;\n        };\n\n        function _configure(configuration) {\n            _cometd._debug('Configuring cometd object with', configuration);\n            // Support old style param, where only the Bayeux server URL was passed\n            if (_isString(configuration)) {\n                configuration = { url: configuration };\n            }\n            if (!configuration) {\n                configuration = {};\n            }\n\n            _config = _cometd._mixin(false, _config, configuration);\n\n            var url = _cometd.getURL();\n            if (!url) {\n                throw 'Missing required configuration parameter \\'url\\' specifying the Bayeux server URL';\n            }\n\n            // Check if we're cross domain.\n            var urlParts = _splitURL(url);\n            var hostAndPort = urlParts[2];\n            var uri = urlParts[8];\n            var afterURI = urlParts[9];\n            _crossDomain = _cometd._isCrossDomain(hostAndPort);\n\n            // Check if appending extra path is supported\n            if (_config.appendMessageTypeToURL) {\n                if (afterURI !== undefined && afterURI.length > 0) {\n                    _cometd._info('Appending message type to URI ' + uri + afterURI + ' is not supported, disabling \\'appendMessageTypeToURL\\' configuration');\n                    _config.appendMessageTypeToURL = false;\n                } else {\n                    var uriSegments = uri.split('/');\n                    var lastSegmentIndex = uriSegments.length - 1;\n                    if (uri.match(/\\/$/)) {\n                        lastSegmentIndex -= 1;\n                    }\n                    if (uriSegments[lastSegmentIndex].indexOf('.') >= 0) {\n                        // Very likely the CometD servlet's URL pattern is mapped to an extension, such as *.cometd\n                        // It will be difficult to add the extra path in this case\n                        _cometd._info('Appending message type to URI ' + uri + ' is not supported, disabling \\'appendMessageTypeToURL\\' configuration');\n                        _config.appendMessageTypeToURL = false;\n                    }\n                }\n            }\n        }\n\n        function _removeListener(subscription) {\n            if (subscription) {\n                var subscriptions = _listeners[subscription.channel];\n                if (subscriptions && subscriptions[subscription.id]) {\n                    delete subscriptions[subscription.id];\n                    _cometd._debug('Removed', subscription.listener ? 'listener' : 'subscription', subscription);\n                }\n            }\n        }\n\n        function _removeSubscription(subscription) {\n            if (subscription && !subscription.listener) {\n                _removeListener(subscription);\n            }\n        }\n\n        function _clearSubscriptions() {\n            for (var channel in _listeners) {\n                if (_listeners.hasOwnProperty(channel)) {\n                    var subscriptions = _listeners[channel];\n                    if (subscriptions) {\n                        for (var id in subscriptions) {\n                            if (subscriptions.hasOwnProperty(id)) {\n                                _removeSubscription(subscriptions[id]);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        function _setStatus(newStatus) {\n            if (_status !== newStatus) {\n                _cometd._debug('Status', _status, '->', newStatus);\n                _status = newStatus;\n            }\n        }\n\n        function _isDisconnected() {\n            return _status === 'disconnecting' || _status === 'disconnected';\n        }\n\n        function _nextMessageId() {\n            var result = ++_messageId;\n            return '' + result;\n        }\n\n        function _applyExtension(scope, callback, name, message, outgoing) {\n            try {\n                return callback.call(scope, message);\n            } catch (x) {\n                var handler = _cometd.onExtensionException;\n                if (_isFunction(handler)) {\n                    _cometd._debug('Invoking extension exception handler', name, x);\n                    try {\n                        handler.call(_cometd, x, name, outgoing, message);\n                    } catch (xx) {\n                        _cometd._info('Exception during execution of extension exception handler', name, xx);\n                    }\n                } else {\n                    _cometd._info('Exception during execution of extension', name, x);\n                }\n                return message;\n            }\n        }\n\n        function _applyIncomingExtensions(message) {\n            for (var i = 0; i < _extensions.length; ++i) {\n                if (message === undefined || message === null) {\n                    break;\n                }\n\n                var extension = _extensions[i];\n                var callback = extension.extension.incoming;\n                if (_isFunction(callback)) {\n                    var result = _applyExtension(extension.extension, callback, extension.name, message, false);\n                    message = result === undefined ? message : result;\n                }\n            }\n            return message;\n        }\n\n        function _applyOutgoingExtensions(message) {\n            for (var i = _extensions.length - 1; i >= 0 ; --i) {\n                if (message === undefined || message === null) {\n                    break;\n                }\n\n                var extension = _extensions[i];\n                var callback = extension.extension.outgoing;\n                if (_isFunction(callback)) {\n                    var result = _applyExtension(extension.extension, callback, extension.name, message, true);\n                    message = result === undefined ? message : result;\n                }\n            }\n            return message;\n        }\n\n        function _notify(channel, message) {\n            var subscriptions = _listeners[channel];\n            if (subscriptions) {\n                for (var id in subscriptions) {\n                    if (subscriptions.hasOwnProperty(id)) {\n                        var subscription = subscriptions[id];\n                        // Subscriptions may come and go, so the array may have 'holes'\n                        if (subscription) {\n                            try {\n                                subscription.callback.call(subscription.scope, message);\n                            } catch (x) {\n                                var handler = _cometd.onListenerException;\n                                if (_isFunction(handler)) {\n                                    _cometd._debug('Invoking listener exception handler', subscription, x);\n                                    try {\n                                        handler.call(_cometd, x, subscription, subscription.listener, message);\n                                    } catch (xx) {\n                                        _cometd._info('Exception during execution of listener exception handler', subscription, xx);\n                                    }\n                                } else {\n                                    _cometd._info('Exception during execution of listener', subscription, message, x);\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n\n        function _notifyListeners(channel, message) {\n            // Notify direct listeners\n            _notify(channel, message);\n\n            // Notify the globbing listeners\n            var channelParts = channel.split('/');\n            var last = channelParts.length - 1;\n            for (var i = last; i > 0; --i) {\n                var channelPart = channelParts.slice(0, i).join('/') + '/*';\n                // We don't want to notify /foo/* if the channel is /foo/bar/baz,\n                // so we stop at the first non recursive globbing\n                if (i === last) {\n                    _notify(channelPart, message);\n                }\n                // Add the recursive globber and notify\n                channelPart += '*';\n                _notify(channelPart, message);\n            }\n        }\n\n        function _cancelDelayedSend() {\n            if (_scheduledSend !== null) {\n                Utils.clearTimeout(_scheduledSend);\n            }\n            _scheduledSend = null;\n        }\n\n        function _delayedSend(operation, delay) {\n            _cancelDelayedSend();\n            var time = _advice.interval + delay;\n            _cometd._debug('Function scheduled in', time, 'ms, interval =', _advice.interval, 'backoff =', _backoff, operation);\n            _scheduledSend = Utils.setTimeout(_cometd, operation, time);\n        }\n\n        // Needed to break cyclic dependencies between function definitions\n        var _handleMessages;\n        var _handleFailure;\n\n        /**\n         * Delivers the messages to the CometD server\n         * @param sync whether the send is synchronous\n         * @param messages the array of messages to send\n         * @param metaConnect true if this send is on /meta/connect\n         * @param extraPath an extra path to append to the Bayeux server URL\n         */\n        function _send(sync, messages, metaConnect, extraPath) {\n            // We must be sure that the messages have a clientId.\n            // This is not guaranteed since the handshake may take time to return\n            // (and hence the clientId is not known yet) and the application\n            // may create other messages.\n            for (var i = 0; i < messages.length; ++i) {\n                var message = messages[i];\n                var messageId = message.id;\n\n                if (_clientId) {\n                    message.clientId = _clientId;\n                }\n\n                message = _applyOutgoingExtensions(message);\n                if (message !== undefined && message !== null) {\n                    // Extensions may have modified the message id, but we need to own it.\n                    message.id = messageId;\n                    messages[i] = message;\n                } else {\n                    delete _callbacks[messageId];\n                    messages.splice(i--, 1);\n                }\n            }\n\n            if (messages.length === 0) {\n                return;\n            }\n\n            var url = _cometd.getURL();\n            if (_config.appendMessageTypeToURL) {\n                // If url does not end with '/', then append it\n                if (!url.match(/\\/$/)) {\n                    url = url + '/';\n                }\n                if (extraPath) {\n                    url = url + extraPath;\n                }\n            }\n\n            var envelope = {\n                url: url,\n                sync: sync,\n                messages: messages,\n                onSuccess: function(rcvdMessages) {\n                    try {\n                        _handleMessages.call(_cometd, rcvdMessages);\n                    } catch (x) {\n                        _cometd._info('Exception during handling of messages', x);\n                    }\n                },\n                onFailure: function(conduit, messages, failure) {\n                    try {\n                        var transport = _cometd.getTransport();\n                        failure.connectionType = transport ? transport.getType() : \"unknown\";\n                        _handleFailure.call(_cometd, conduit, messages, failure);\n                    } catch (x) {\n                        _cometd._info('Exception during handling of failure', x);\n                    }\n                }\n            };\n            _cometd._debug('Send', envelope);\n            _transport.send(envelope, metaConnect);\n        }\n\n        function _queueSend(message) {\n            if (_batch > 0 || _internalBatch === true) {\n                _messageQueue.push(message);\n            } else {\n                _send(false, [message], false);\n            }\n        }\n\n        /**\n         * Sends a complete bayeux message.\n         * This method is exposed as a public so that extensions may use it\n         * to send bayeux message directly, for example in case of re-sending\n         * messages that have already been sent but that for some reason must\n         * be resent.\n         */\n        this.send = _queueSend;\n\n        function _resetBackoff() {\n            _backoff = 0;\n        }\n\n        function _increaseBackoff() {\n            if (_backoff < _config.maxBackoff) {\n                _backoff += _config.backoffIncrement;\n            }\n            return _backoff;\n        }\n\n        /**\n         * Starts a the batch of messages to be sent in a single request.\n         * @see #_endBatch(sendMessages)\n         */\n        function _startBatch() {\n            ++_batch;\n            _cometd._debug('Starting batch, depth', _batch);\n        }\n\n        function _flushBatch() {\n            var messages = _messageQueue;\n            _messageQueue = [];\n            if (messages.length > 0) {\n                _send(false, messages, false);\n            }\n        }\n\n        /**\n         * Ends the batch of messages to be sent in a single request,\n         * optionally sending messages present in the message queue depending\n         * on the given argument.\n         * @see #_startBatch()\n         */\n        function _endBatch() {\n            --_batch;\n            _cometd._debug('Ending batch, depth', _batch);\n            if (_batch < 0) {\n                throw 'Calls to startBatch() and endBatch() are not paired';\n            }\n\n            if (_batch === 0 && !_isDisconnected() && !_internalBatch) {\n                _flushBatch();\n            }\n        }\n\n        /**\n         * Sends the connect message\n         */\n        function _connect() {\n            if (!_isDisconnected()) {\n                var bayeuxMessage = {\n                    id: _nextMessageId(),\n                    channel: '/meta/connect',\n                    connectionType: _transport.getType()\n                };\n\n                // In case of reload or temporary loss of connection\n                // we want the next successful connect to return immediately\n                // instead of being held by the server, so that connect listeners\n                // can be notified that the connection has been re-established\n                if (!_connected) {\n                    bayeuxMessage.advice = { timeout: 0 };\n                }\n\n                _setStatus('connecting');\n                _cometd._debug('Connect sent', bayeuxMessage);\n                _send(false, [bayeuxMessage], true, 'connect');\n                _setStatus('connected');\n            }\n        }\n\n        function _delayedConnect(delay) {\n            _setStatus('connecting');\n            _delayedSend(function() {\n                _connect();\n            }, delay);\n        }\n\n        function _updateAdvice(newAdvice) {\n            if (newAdvice) {\n                _advice = _cometd._mixin(false, {}, _config.advice, newAdvice);\n                _cometd._debug('New advice', _advice);\n            }\n        }\n\n        function _disconnect(abort) {\n            _cancelDelayedSend();\n            if (abort && _transport) {\n                _transport.abort();\n            }\n            _clientId = null;\n            _setStatus('disconnected');\n            _batch = 0;\n            _resetBackoff();\n            _transport = null;\n            _reestablish = false;\n            _connected = false;\n\n            // Fail any existing queued message\n            if (_messageQueue.length > 0) {\n                var messages = _messageQueue;\n                _messageQueue = [];\n                _handleFailure.call(_cometd, undefined, messages, {\n                    reason: 'Disconnected'\n                });\n            }\n        }\n\n        function _notifyTransportException(oldTransport, newTransport, failure) {\n            var handler = _cometd.onTransportException;\n            if (_isFunction(handler)) {\n                _cometd._debug('Invoking transport exception handler', oldTransport, newTransport, failure);\n                try {\n                    handler.call(_cometd, failure, oldTransport, newTransport);\n                } catch (x) {\n                    _cometd._info('Exception during execution of transport exception handler', x);\n                }\n            }\n        }\n\n        /**\n         * Sends the initial handshake message\n         */\n        function _handshake(handshakeProps, handshakeCallback) {\n            if (_isFunction(handshakeProps)) {\n                handshakeCallback = handshakeProps;\n                handshakeProps = undefined;\n            }\n\n            _clientId = null;\n\n            _clearSubscriptions();\n\n            // Reset the transports if we're not retrying the handshake\n            if (_isDisconnected()) {\n                _transports.reset(true);\n            }\n\n            // Reset the advice.\n            _updateAdvice({});\n\n            _batch = 0;\n\n            // Mark the start of an internal batch.\n            // This is needed because handshake and connect are async.\n            // It may happen that the application calls init() then subscribe()\n            // and the subscribe message is sent before the connect message, if\n            // the subscribe message is not held until the connect message is sent.\n            // So here we start a batch to hold temporarily any message until\n            // the connection is fully established.\n            _internalBatch = true;\n\n            // Save the properties provided by the user, so that\n            // we can reuse them during automatic re-handshake\n            _handshakeProps = handshakeProps;\n            _handshakeCallback = handshakeCallback;\n\n            var version = '1.0';\n\n            // Figure out the transports to send to the server\n            var url = _cometd.getURL();\n            var transportTypes = _transports.findTransportTypes(version, _crossDomain, url);\n\n            var bayeuxMessage = {\n                id: _nextMessageId(),\n                version: version,\n                minimumVersion: version,\n                channel: '/meta/handshake',\n                supportedConnectionTypes: transportTypes,\n                advice: {\n                    timeout: _advice.timeout,\n                    interval: _advice.interval\n                }\n            };\n            // Do not allow the user to override important fields.\n            var message = _cometd._mixin(false, {}, _handshakeProps, bayeuxMessage);\n\n            // Save the callback.\n            _cometd._putCallback(message.id, handshakeCallback);\n\n            // Pick up the first available transport as initial transport\n            // since we don't know if the server supports it\n            if (!_transport) {\n                _transport = _transports.negotiateTransport(transportTypes, version, _crossDomain, url);\n                if (!_transport) {\n                    var failure = 'Could not find initial transport among: ' + _transports.getTransportTypes();\n                    _cometd._warn(failure);\n                    throw failure;\n                }\n            }\n\n            _cometd._debug('Initial transport is', _transport.getType());\n\n            // We started a batch to hold the application messages,\n            // so here we must bypass it and send immediately.\n            _setStatus('handshaking');\n            _cometd._debug('Handshake sent', message);\n            _send(false, [message], false, 'handshake');\n        }\n\n        function _delayedHandshake(delay) {\n            _setStatus('handshaking');\n\n            // We will call _handshake() which will reset _clientId, but we want to avoid\n            // that between the end of this method and the call to _handshake() someone may\n            // call publish() (or other methods that call _queueSend()).\n            _internalBatch = true;\n\n            _delayedSend(function() {\n                _handshake(_handshakeProps, _handshakeCallback);\n            }, delay);\n        }\n\n        function _notifyCallback(callback, message) {\n            try {\n                callback.call(_cometd, message);\n            } catch (x) {\n                var handler = _cometd.onCallbackException;\n                if (_isFunction(handler)) {\n                    _cometd._debug('Invoking callback exception handler', x);\n                    try {\n                        handler.call(_cometd, x, message);\n                    } catch (xx) {\n                        _cometd._info('Exception during execution of callback exception handler', xx);\n                    }\n                } else {\n                    _cometd._info('Exception during execution of message callback', x);\n                }\n            }\n        }\n\n        this._getCallback = function(messageId) {\n            return _callbacks[messageId];\n        };\n\n        this._putCallback = function(messageId, callback) {\n            var result = this._getCallback(messageId);\n            if (_isFunction(callback)) {\n                _callbacks[messageId] = callback;\n            }\n            return result;\n        };\n\n        function _handleCallback(message) {\n            var callback = _cometd._getCallback([message.id]);\n            if (_isFunction(callback)) {\n                delete _callbacks[message.id];\n                _notifyCallback(callback, message);\n            }\n        }\n\n        function _handleRemoteCall(message) {\n            var context = _remoteCalls[message.id];\n            delete _remoteCalls[message.id];\n            if (context) {\n                _cometd._debug('Handling remote call response for', message, 'with context', context);\n\n                // Clear the timeout, if present.\n                var timeout = context.timeout;\n                if (timeout) {\n                    Utils.clearTimeout(timeout);\n                }\n\n                var callback = context.callback;\n                if (_isFunction(callback)) {\n                    _notifyCallback(callback, message);\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        this.onTransportFailure = function(message, failureInfo, failureHandler) {\n            this._debug('Transport failure', failureInfo, 'for', message);\n\n            var transports = this.getTransportRegistry();\n            var url = this.getURL();\n            var crossDomain = this._isCrossDomain(_splitURL(url)[2]);\n            var version = '1.0';\n            var transportTypes = transports.findTransportTypes(version, crossDomain, url);\n\n            if (failureInfo.action === 'none') {\n                if (message.channel === '/meta/handshake') {\n                    if (!failureInfo.transport) {\n                        var failure = 'Could not negotiate transport, client=[' + transportTypes + '], server=[' + message.supportedConnectionTypes + ']';\n                        this._warn(failure);\n                        _notifyTransportException(_transport.getType(), null, {\n                            reason: failure,\n                            connectionType: _transport.getType(),\n                            transport: _transport\n                        });\n                    }\n                }\n            } else {\n                failureInfo.delay = this.getBackoffPeriod();\n                // Different logic depending on whether we are handshaking or connecting.\n                if (message.channel === '/meta/handshake') {\n                    if (!failureInfo.transport) {\n                        // The transport is invalid, try to negotiate again.\n                        var newTransport = transports.negotiateTransport(transportTypes, version, crossDomain, url);\n                        if (!newTransport) {\n                            this._warn('Could not negotiate transport, client=[' + transportTypes + ']');\n                            _notifyTransportException(_transport.getType(), null, message.failure);\n                            failureInfo.action = 'none';\n                        } else {\n                            this._debug('Transport', _transport.getType(), '->', newTransport.getType());\n                            _notifyTransportException(_transport.getType(), newTransport.getType(), message.failure);\n                            failureInfo.action = 'handshake';\n                            failureInfo.transport = newTransport;\n                        }\n                    }\n\n                    if (failureInfo.action !== 'none') {\n                        this.increaseBackoffPeriod();\n                    }\n                } else {\n                    var now = new Date().getTime();\n\n                    if (_unconnectTime === 0) {\n                        _unconnectTime = now;\n                    }\n\n                    if (failureInfo.action === 'retry') {\n                        failureInfo.delay = this.increaseBackoffPeriod();\n                        // Check whether we may switch to handshaking.\n                        var maxInterval = _advice.maxInterval;\n                        if (maxInterval > 0) {\n                            var expiration = _advice.timeout + _advice.interval + maxInterval;\n                            var unconnected = now - _unconnectTime;\n                            if (unconnected + _backoff > expiration) {\n                                failureInfo.action = 'handshake';\n                            }\n                        }\n                    }\n\n                    if (failureInfo.action === 'handshake') {\n                        failureInfo.delay = 0;\n                        transports.reset(false);\n                        this.resetBackoffPeriod();\n                    }\n                }\n            }\n\n            failureHandler.call(_cometd, failureInfo);\n        };\n\n        function _handleTransportFailure(failureInfo) {\n            _cometd._debug('Transport failure handling', failureInfo);\n\n            if (failureInfo.transport) {\n                _transport = failureInfo.transport;\n            }\n\n            if (failureInfo.url) {\n                _transport.setURL(failureInfo.url);\n            }\n\n            var action = failureInfo.action;\n            var delay = failureInfo.delay || 0;\n            switch (action) {\n                case 'handshake':\n                    _delayedHandshake(delay);\n                    break;\n                case 'retry':\n                    _delayedConnect(delay);\n                    break;\n                case 'none':\n                    _disconnect(true);\n                    break;\n                default:\n                    throw 'Unknown action ' + action;\n            }\n        }\n\n        function _failHandshake(message, failureInfo) {\n            _handleCallback(message);\n            _notifyListeners('/meta/handshake', message);\n            _notifyListeners('/meta/unsuccessful', message);\n\n            // The listeners may have disconnected.\n            if (_isDisconnected()) {\n                failureInfo.action = 'none';\n            }\n\n            _cometd.onTransportFailure.call(_cometd, message, failureInfo, _handleTransportFailure);\n        }\n\n        function _handshakeResponse(message) {\n            var url = _cometd.getURL();\n            if (message.successful) {\n                var crossDomain = _cometd._isCrossDomain(_splitURL(url)[2]);\n                var newTransport = _transports.negotiateTransport(message.supportedConnectionTypes, message.version, crossDomain, url);\n                if (newTransport === null) {\n                    message.successful = false;\n                    _failHandshake(message, {\n                        cause: 'negotiation',\n                        action: 'none',\n                        transport: null\n                    });\n                    return;\n                } else if (_transport !== newTransport) {\n                    _cometd._debug('Transport', _transport.getType(), '->', newTransport.getType());\n                    _transport = newTransport;\n                }\n\n                _clientId = message.clientId;\n\n                // End the internal batch and allow held messages from the application\n                // to go to the server (see _handshake() where we start the internal batch).\n                _internalBatch = false;\n                _flushBatch();\n\n                // Here the new transport is in place, as well as the clientId, so\n                // the listeners can perform a publish() if they want.\n                // Notify the listeners before the connect below.\n                message.reestablish = _reestablish;\n                _reestablish = true;\n\n                _handleCallback(message);\n                _notifyListeners('/meta/handshake', message);\n\n                _handshakeMessages = message['x-messages'] || 0;\n\n                var action = _isDisconnected() ? 'none' : _advice.reconnect || 'retry';\n                switch (action) {\n                    case 'retry':\n                        _resetBackoff();\n                        if (_handshakeMessages === 0) {\n                            _delayedConnect(0);\n                        } else {\n                            _cometd._debug('Processing', _handshakeMessages, 'handshake-delivered messages');\n                        }\n                        break;\n                    case 'none':\n                        _disconnect(true);\n                        break;\n                    default:\n                        throw 'Unrecognized advice action ' + action;\n                }\n            } else {\n                _failHandshake(message, {\n                    cause: 'unsuccessful',\n                    action: _advice.reconnect || 'handshake',\n                    transport: _transport\n                });\n            }\n        }\n\n        function _handshakeFailure(message) {\n            _failHandshake(message, {\n                cause: 'failure',\n                action: 'handshake',\n                transport: null\n            });\n        }\n\n        function _failConnect(message, failureInfo) {\n            // Notify the listeners after the status change but before the next action.\n            _notifyListeners('/meta/connect', message);\n            _notifyListeners('/meta/unsuccessful', message);\n\n            // The listeners may have disconnected.\n            if (_isDisconnected()) {\n                failureInfo.action = 'none';\n            }\n\n            _cometd.onTransportFailure.call(_cometd, message, failureInfo, _handleTransportFailure);\n        }\n\n        function _connectResponse(message) {\n            _connected = message.successful;\n\n            if (_connected) {\n                _notifyListeners('/meta/connect', message);\n\n                // Normally, the advice will say \"reconnect: 'retry', interval: 0\"\n                // and the server will hold the request, so when a response returns\n                // we immediately call the server again (long polling).\n                // Listeners can call disconnect(), so check the state after they run.\n                var action = _isDisconnected() ? 'none' : _advice.reconnect || 'retry';\n                switch (action) {\n                    case 'retry':\n                        _resetBackoff();\n                        _delayedConnect(_backoff);\n                        break;\n                    case 'none':\n                        _disconnect(false);\n                        break;\n                    default:\n                        throw 'Unrecognized advice action ' + action;\n                }\n            } else {\n                _failConnect(message, {\n                    cause: 'unsuccessful',\n                    action: _advice.reconnect || 'retry',\n                    transport: _transport\n                });\n            }\n        }\n\n        function _connectFailure(message) {\n            _connected = false;\n\n            _failConnect(message, {\n                cause: 'failure',\n                action: 'retry',\n                transport: null\n            });\n        }\n\n        function _failDisconnect(message) {\n            _disconnect(true);\n            _handleCallback(message);\n            _notifyListeners('/meta/disconnect', message);\n            _notifyListeners('/meta/unsuccessful', message);\n        }\n\n        function _disconnectResponse(message) {\n            if (message.successful) {\n                // Wait for the /meta/connect to arrive.\n                _disconnect(false);\n                _handleCallback(message);\n                _notifyListeners('/meta/disconnect', message);\n            } else {\n                _failDisconnect(message);\n            }\n        }\n\n        function _disconnectFailure(message) {\n            _failDisconnect(message);\n        }\n\n        function _failSubscribe(message) {\n            var subscriptions = _listeners[message.subscription];\n            if (subscriptions) {\n                for (var id in subscriptions) {\n                    if (subscriptions.hasOwnProperty(id)) {\n                        var subscription = subscriptions[id];\n                        if (subscription && !subscription.listener) {\n                            delete subscriptions[id];\n                            _cometd._debug('Removed failed subscription', subscription);\n                        }\n                    }\n                }\n            }\n            _handleCallback(message);\n            _notifyListeners('/meta/subscribe', message);\n            _notifyListeners('/meta/unsuccessful', message);\n        }\n\n        function _subscribeResponse(message) {\n            if (message.successful) {\n                _handleCallback(message);\n                _notifyListeners('/meta/subscribe', message);\n            } else {\n                _failSubscribe(message);\n            }\n        }\n\n        function _subscribeFailure(message) {\n            _failSubscribe(message);\n        }\n\n        function _failUnsubscribe(message) {\n            _handleCallback(message);\n            _notifyListeners('/meta/unsubscribe', message);\n            _notifyListeners('/meta/unsuccessful', message);\n        }\n\n        function _unsubscribeResponse(message) {\n            if (message.successful) {\n                _handleCallback(message);\n                _notifyListeners('/meta/unsubscribe', message);\n            } else {\n                _failUnsubscribe(message);\n            }\n        }\n\n        function _unsubscribeFailure(message) {\n            _failUnsubscribe(message);\n        }\n\n        function _failMessage(message) {\n            if (!_handleRemoteCall(message)) {\n                _handleCallback(message);\n                _notifyListeners('/meta/publish', message);\n                _notifyListeners('/meta/unsuccessful', message);\n            }\n        }\n\n        function _messageResponse(message) {\n            if (message.data !== undefined) {\n                if (!_handleRemoteCall(message)) {\n                    _notifyListeners(message.channel, message);\n                    if (_handshakeMessages > 0) {\n                        --_handshakeMessages;\n                        if (_handshakeMessages === 0) {\n                            _cometd._debug('Processed last handshake-delivered message');\n                            _delayedConnect(0);\n                        }\n                    }\n                }\n            } else {\n                if (message.successful === undefined) {\n                    _cometd._warn('Unknown Bayeux Message', message);\n                } else {\n                    if (message.successful) {\n                        _handleCallback(message);\n                        _notifyListeners('/meta/publish', message);\n                    } else {\n                        _failMessage(message);\n                    }\n                }\n            }\n        }\n\n        function _messageFailure(failure) {\n            _failMessage(failure);\n        }\n\n        function _receive(message) {\n            _unconnectTime = 0;\n\n            message = _applyIncomingExtensions(message);\n            if (message === undefined || message === null) {\n                return;\n            }\n\n            _updateAdvice(message.advice);\n\n            var channel = message.channel;\n            switch (channel) {\n                case '/meta/handshake':\n                    _handshakeResponse(message);\n                    break;\n                case '/meta/connect':\n                    _connectResponse(message);\n                    break;\n                case '/meta/disconnect':\n                    _disconnectResponse(message);\n                    break;\n                case '/meta/subscribe':\n                    _subscribeResponse(message);\n                    break;\n                case '/meta/unsubscribe':\n                    _unsubscribeResponse(message);\n                    break;\n                default:\n                    _messageResponse(message);\n                    break;\n            }\n        }\n\n        /**\n         * Receives a message.\n         * This method is exposed as a public so that extensions may inject\n         * messages simulating that they had been received.\n         */\n        this.receive = _receive;\n\n        _handleMessages = function(rcvdMessages) {\n            _cometd._debug('Received', rcvdMessages);\n\n            for (var i = 0; i < rcvdMessages.length; ++i) {\n                var message = rcvdMessages[i];\n                _receive(message);\n            }\n        };\n\n        _handleFailure = function(conduit, messages, failure) {\n            _cometd._debug('handleFailure', conduit, messages, failure);\n\n            failure.transport = conduit;\n            for (var i = 0; i < messages.length; ++i) {\n                var message = messages[i];\n                var failureMessage = {\n                    id: message.id,\n                    successful: false,\n                    channel: message.channel,\n                    failure: failure\n                };\n                failure.message = message;\n                switch (message.channel) {\n                    case '/meta/handshake':\n                        _handshakeFailure(failureMessage);\n                        break;\n                    case '/meta/connect':\n                        _connectFailure(failureMessage);\n                        break;\n                    case '/meta/disconnect':\n                        _disconnectFailure(failureMessage);\n                        break;\n                    case '/meta/subscribe':\n                        failureMessage.subscription = message.subscription;\n                        _subscribeFailure(failureMessage);\n                        break;\n                    case '/meta/unsubscribe':\n                        failureMessage.subscription = message.subscription;\n                        _unsubscribeFailure(failureMessage);\n                        break;\n                    default:\n                        _messageFailure(failureMessage);\n                        break;\n                }\n            }\n        };\n\n        function _hasSubscriptions(channel) {\n            var subscriptions = _listeners[channel];\n            if (subscriptions) {\n                for (var id in subscriptions) {\n                    if (subscriptions.hasOwnProperty(id)) {\n                        if (subscriptions[id]) {\n                            return true;\n                        }\n                    }\n                }\n            }\n            return false;\n        }\n\n        function _resolveScopedCallback(scope, callback) {\n            var delegate = {\n                scope: scope,\n                method: callback\n            };\n            if (_isFunction(scope)) {\n                delegate.scope = undefined;\n                delegate.method = scope;\n            } else {\n                if (_isString(callback)) {\n                    if (!scope) {\n                        throw 'Invalid scope ' + scope;\n                    }\n                    delegate.method = scope[callback];\n                    if (!_isFunction(delegate.method)) {\n                        throw 'Invalid callback ' + callback + ' for scope ' + scope;\n                    }\n                } else if (!_isFunction(callback)) {\n                    throw 'Invalid callback ' + callback;\n                }\n            }\n            return delegate;\n        }\n\n        function _addListener(channel, scope, callback, isListener) {\n            // The data structure is a map<channel, subscription[]>, where each subscription\n            // holds the callback to be called and its scope.\n\n            var delegate = _resolveScopedCallback(scope, callback);\n            _cometd._debug('Adding', isListener ? 'listener' : 'subscription', 'on', channel, 'with scope', delegate.scope, 'and callback', delegate.method);\n\n            var id = ++_listenerId;\n            var subscription = {\n                id: id,\n                channel: channel,\n                scope: delegate.scope,\n                callback: delegate.method,\n                listener: isListener\n            };\n\n            var subscriptions = _listeners[channel];\n            if (!subscriptions) {\n                subscriptions = {};\n                _listeners[channel] = subscriptions;\n            }\n\n            subscriptions[id] = subscription;\n\n            _cometd._debug('Added', isListener ? 'listener' : 'subscription', subscription);\n\n            return subscription;\n        }\n\n        //\n        // PUBLIC API\n        //\n\n        /**\n         * Registers the given transport under the given transport type.\n         * The optional index parameter specifies the \"priority\" at which the\n         * transport is registered (where 0 is the max priority).\n         * If a transport with the same type is already registered, this function\n         * does nothing and returns false.\n         * @param type the transport type\n         * @param transport the transport object\n         * @param index the index at which this transport is to be registered\n         * @return true if the transport has been registered, false otherwise\n         * @see #unregisterTransport(type)\n         */\n        this.registerTransport = function(type, transport, index) {\n            var result = _transports.add(type, transport, index);\n            if (result) {\n                this._debug('Registered transport', type);\n\n                if (_isFunction(transport.registered)) {\n                    transport.registered(type, this);\n                }\n            }\n            return result;\n        };\n\n        /**\n         * Unregisters the transport with the given transport type.\n         * @param type the transport type to unregister\n         * @return the transport that has been unregistered,\n         * or null if no transport was previously registered under the given transport type\n         */\n        this.unregisterTransport = function(type) {\n            var transport = _transports.remove(type);\n            if (transport !== null) {\n                this._debug('Unregistered transport', type);\n\n                if (_isFunction(transport.unregistered)) {\n                    transport.unregistered();\n                }\n            }\n            return transport;\n        };\n\n        this.unregisterTransports = function() {\n            _transports.clear();\n        };\n\n        /**\n         * @return an array of all registered transport types\n         */\n        this.getTransportTypes = function() {\n            return _transports.getTransportTypes();\n        };\n\n        this.findTransport = function(name) {\n            return _transports.find(name);\n        };\n\n        /**\n         * @returns the TransportRegistry object\n         */\n        this.getTransportRegistry = function() {\n            return _transports;\n        };\n\n        /**\n         * Configures the initial Bayeux communication with the Bayeux server.\n         * Configuration is passed via an object that must contain a mandatory field <code>url</code>\n         * of type string containing the URL of the Bayeux server.\n         * @param configuration the configuration object\n         */\n        this.configure = function(configuration) {\n            _configure.call(this, configuration);\n        };\n\n        /**\n         * Configures and establishes the Bayeux communication with the Bayeux server\n         * via a handshake and a subsequent connect.\n         * @param configuration the configuration object\n         * @param handshakeProps an object to be merged with the handshake message\n         * @see #configure(configuration)\n         * @see #handshake(handshakeProps)\n         */\n        this.init = function(configuration, handshakeProps) {\n            this.configure(configuration);\n            this.handshake(handshakeProps);\n        };\n\n        /**\n         * Establishes the Bayeux communication with the Bayeux server\n         * via a handshake and a subsequent connect.\n         * @param handshakeProps an object to be merged with the handshake message\n         * @param handshakeCallback a function to be invoked when the handshake is acknowledged\n         */\n        this.handshake = function(handshakeProps, handshakeCallback) {\n            if (_status !== 'disconnected') {\n                throw 'Illegal state: handshaken';\n            }\n            _handshake(handshakeProps, handshakeCallback);\n        };\n\n        /**\n         * Disconnects from the Bayeux server.\n         * It is possible to suggest to attempt a synchronous disconnect, but this feature\n         * may only be available in certain transports (for example, long-polling may support\n         * it, callback-polling certainly does not).\n         * @param sync whether attempt to perform a synchronous disconnect\n         * @param disconnectProps an object to be merged with the disconnect message\n         * @param disconnectCallback a function to be invoked when the disconnect is acknowledged\n         */\n        this.disconnect = function(sync, disconnectProps, disconnectCallback) {\n            if (_isDisconnected()) {\n                return;\n            }\n\n            if (typeof sync !== 'boolean') {\n                disconnectCallback = disconnectProps;\n                disconnectProps = sync;\n                sync = false;\n            }\n            if (_isFunction(disconnectProps)) {\n                disconnectCallback = disconnectProps;\n                disconnectProps = undefined;\n            }\n\n            var bayeuxMessage = {\n                id: _nextMessageId(),\n                channel: '/meta/disconnect'\n            };\n            // Do not allow the user to override important fields.\n            var message = this._mixin(false, {}, disconnectProps, bayeuxMessage);\n\n            // Save the callback.\n            _cometd._putCallback(message.id, disconnectCallback);\n\n            _setStatus('disconnecting');\n            _send(sync === true, [message], false, 'disconnect');\n        };\n\n        /**\n         * Marks the start of a batch of application messages to be sent to the server\n         * in a single request, obtaining a single response containing (possibly) many\n         * application reply messages.\n         * Messages are held in a queue and not sent until {@link #endBatch()} is called.\n         * If startBatch() is called multiple times, then an equal number of endBatch()\n         * calls must be made to close and send the batch of messages.\n         * @see #endBatch()\n         */\n        this.startBatch = function() {\n            _startBatch();\n        };\n\n        /**\n         * Marks the end of a batch of application messages to be sent to the server\n         * in a single request.\n         * @see #startBatch()\n         */\n        this.endBatch = function() {\n            _endBatch();\n        };\n\n        /**\n         * Executes the given callback in the given scope, surrounded by a {@link #startBatch()}\n         * and {@link #endBatch()} calls.\n         * @param scope the scope of the callback, may be omitted\n         * @param callback the callback to be executed within {@link #startBatch()} and {@link #endBatch()} calls\n         */\n        this.batch = function(scope, callback) {\n            var delegate = _resolveScopedCallback(scope, callback);\n            this.startBatch();\n            try {\n                delegate.method.call(delegate.scope);\n                this.endBatch();\n            } catch (x) {\n                this._info('Exception during execution of batch', x);\n                this.endBatch();\n                throw x;\n            }\n        };\n\n        /**\n         * Adds a listener for bayeux messages, performing the given callback in the given scope\n         * when a message for the given channel arrives.\n         * @param channel the channel the listener is interested to\n         * @param scope the scope of the callback, may be omitted\n         * @param callback the callback to call when a message is sent to the channel\n         * @returns the subscription handle to be passed to {@link #removeListener(object)}\n         * @see #removeListener(subscription)\n         */\n        this.addListener = function(channel, scope, callback) {\n            if (arguments.length < 2) {\n                throw 'Illegal arguments number: required 2, got ' + arguments.length;\n            }\n            if (!_isString(channel)) {\n                throw 'Illegal argument type: channel must be a string';\n            }\n\n            return _addListener(channel, scope, callback, true);\n        };\n\n        /**\n         * Removes the subscription obtained with a call to {@link #addListener(string, object, function)}.\n         * @param subscription the subscription to unsubscribe.\n         * @see #addListener(channel, scope, callback)\n         */\n        this.removeListener = function(subscription) {\n            // Beware of subscription.id == 0, which is falsy => cannot use !subscription.id\n            if (!subscription || !subscription.channel || !(\"id\" in subscription)) {\n                throw 'Invalid argument: expected subscription, not ' + subscription;\n            }\n\n            _removeListener(subscription);\n        };\n\n        /**\n         * Removes all listeners registered with {@link #addListener(channel, scope, callback)} or\n         * {@link #subscribe(channel, scope, callback)}.\n         */\n        this.clearListeners = function() {\n            _listeners = {};\n        };\n\n        /**\n         * Subscribes to the given channel, performing the given callback in the given scope\n         * when a message for the channel arrives.\n         * @param channel the channel to subscribe to\n         * @param scope the scope of the callback, may be omitted\n         * @param callback the callback to call when a message is sent to the channel\n         * @param subscribeProps an object to be merged with the subscribe message\n         * @param subscribeCallback a function to be invoked when the subscription is acknowledged\n         * @return the subscription handle to be passed to {@link #unsubscribe(object)}\n         */\n        this.subscribe = function(channel, scope, callback, subscribeProps, subscribeCallback) {\n            if (arguments.length < 2) {\n                throw 'Illegal arguments number: required 2, got ' + arguments.length;\n            }\n            if (!_isString(channel)) {\n                throw 'Illegal argument type: channel must be a string';\n            }\n            if (_isDisconnected()) {\n                throw 'Illegal state: disconnected';\n            }\n\n            // Normalize arguments\n            if (_isFunction(scope)) {\n                subscribeCallback = subscribeProps;\n                subscribeProps = callback;\n                callback = scope;\n                scope = undefined;\n            }\n            if (_isFunction(subscribeProps)) {\n                subscribeCallback = subscribeProps;\n                subscribeProps = undefined;\n            }\n\n            // Only send the message to the server if this client has not yet subscribed to the channel\n            var send = !_hasSubscriptions(channel);\n\n            var subscription = _addListener(channel, scope, callback, false);\n\n            if (send) {\n                // Send the subscription message after the subscription registration to avoid\n                // races where the server would send a message to the subscribers, but here\n                // on the client the subscription has not been added yet to the data structures\n                var bayeuxMessage = {\n                    id: _nextMessageId(),\n                    channel: '/meta/subscribe',\n                    subscription: channel\n                };\n                // Do not allow the user to override important fields.\n                var message = this._mixin(false, {}, subscribeProps, bayeuxMessage);\n\n                // Save the callback.\n                _cometd._putCallback(message.id, subscribeCallback);\n\n                _queueSend(message);\n            }\n\n            return subscription;\n        };\n\n        /**\n         * Unsubscribes the subscription obtained with a call to {@link #subscribe(string, object, function)}.\n         * @param subscription the subscription to unsubscribe.\n         * @param unsubscribeProps an object to be merged with the unsubscribe message\n         * @param unsubscribeCallback a function to be invoked when the unsubscription is acknowledged\n         */\n        this.unsubscribe = function(subscription, unsubscribeProps, unsubscribeCallback) {\n            if (arguments.length < 1) {\n                throw 'Illegal arguments number: required 1, got ' + arguments.length;\n            }\n            if (_isDisconnected()) {\n                throw 'Illegal state: disconnected';\n            }\n\n            if (_isFunction(unsubscribeProps)) {\n                unsubscribeCallback = unsubscribeProps;\n                unsubscribeProps = undefined;\n            }\n\n            // Remove the local listener before sending the message\n            // This ensures that if the server fails, this client does not get notifications\n            this.removeListener(subscription);\n\n            var channel = subscription.channel;\n            // Only send the message to the server if this client unsubscribes the last subscription\n            if (!_hasSubscriptions(channel)) {\n                var bayeuxMessage = {\n                    id: _nextMessageId(),\n                    channel: '/meta/unsubscribe',\n                    subscription: channel\n                };\n                // Do not allow the user to override important fields.\n                var message = this._mixin(false, {}, unsubscribeProps, bayeuxMessage);\n\n                // Save the callback.\n                _cometd._putCallback(message.id, unsubscribeCallback);\n\n                _queueSend(message);\n            }\n        };\n\n        this.resubscribe = function(subscription, subscribeProps) {\n            _removeSubscription(subscription);\n            if (subscription) {\n                return this.subscribe(subscription.channel, subscription.scope, subscription.callback, subscribeProps);\n            }\n            return undefined;\n        };\n\n        /**\n         * Removes all subscriptions added via {@link #subscribe(channel, scope, callback, subscribeProps)},\n         * but does not remove the listeners added via {@link addListener(channel, scope, callback)}.\n         */\n        this.clearSubscriptions = function() {\n            _clearSubscriptions();\n        };\n\n        /**\n         * Publishes a message on the given channel, containing the given content.\n         * @param channel the channel to publish the message to\n         * @param content the content of the message\n         * @param publishProps an object to be merged with the publish message\n         * @param publishCallback a function to be invoked when the publish is acknowledged by the server\n         */\n        this.publish = function(channel, content, publishProps, publishCallback) {\n            if (arguments.length < 1) {\n                throw 'Illegal arguments number: required 1, got ' + arguments.length;\n            }\n            if (!_isString(channel)) {\n                throw 'Illegal argument type: channel must be a string';\n            }\n            if (/^\\/meta\\//.test(channel)) {\n                throw 'Illegal argument: cannot publish to meta channels';\n            }\n            if (_isDisconnected()) {\n                throw 'Illegal state: disconnected';\n            }\n\n            if (_isFunction(content)) {\n                publishCallback = content;\n                content = {};\n                publishProps = undefined;\n            } else if (_isFunction(publishProps)) {\n                publishCallback = publishProps;\n                publishProps = undefined;\n            }\n\n            var bayeuxMessage = {\n                id: _nextMessageId(),\n                channel: channel,\n                data: content\n            };\n            // Do not allow the user to override important fields.\n            var message = this._mixin(false, {}, publishProps, bayeuxMessage);\n\n            // Save the callback.\n            _cometd._putCallback(message.id, publishCallback);\n\n            _queueSend(message);\n        };\n\n        /**\n         * Publishes a message with binary data on the given channel.\n         * The binary data chunk may be an ArrayBuffer, a DataView, a TypedArray\n         * (such as Uint8Array) or a plain integer array.\n         * The meta data object may contain additional application data such as\n         * a file name, a mime type, etc.\n         * @param channel the channel to publish the message to\n         * @param data the binary data to publish\n         * @param last whether the binary data chunk is the last\n         * @param meta an object containing meta data associated to the binary chunk\n         * @param callback a function to be invoked when the publish is acknowledged by the server\n         */\n        this.publishBinary = function(channel, data, last, meta, callback) {\n            if (_isFunction(data)) {\n                callback = data;\n                data = new ArrayBuffer(0);\n                last = true;\n                meta = undefined;\n            } else if (_isFunction(last)) {\n                callback = last;\n                last = true;\n                meta = undefined;\n            } else if (_isFunction(meta)) {\n                callback = meta;\n                meta = undefined;\n            }\n            var content = {\n                meta: meta,\n                data: data,\n                last: last\n            };\n            var ext = {\n                ext: {\n                    binary: {\n                    }\n                }\n            };\n            this.publish(channel, content, ext, callback);\n        };\n\n        this.remoteCall = function(target, content, timeout, callProps, callback) {\n            if (arguments.length < 1) {\n                throw 'Illegal arguments number: required 1, got ' + arguments.length;\n            }\n            if (!_isString(target)) {\n                throw 'Illegal argument type: target must be a string';\n            }\n            if (_isDisconnected()) {\n                throw 'Illegal state: disconnected';\n            }\n\n            if (_isFunction(content)) {\n                callback = content;\n                content = {};\n                timeout = _config.maxNetworkDelay;\n                callProps = undefined;\n            } else if (_isFunction(timeout)) {\n                callback = timeout;\n                timeout = _config.maxNetworkDelay;\n                callProps = undefined;\n            } else if (_isFunction(callProps)) {\n                callback = callProps;\n                callProps = undefined;\n            }\n\n            if (typeof timeout !== 'number') {\n                throw 'Illegal argument type: timeout must be a number';\n            }\n\n            if (!target.match(/^\\//)) {\n                target = '/' + target;\n            }\n            var channel = '/service' + target;\n\n            var bayeuxMessage = {\n                id: _nextMessageId(),\n                channel: channel,\n                data: content\n            };\n            var message = this._mixin(false, {}, callProps, bayeuxMessage);\n\n            var context = {\n                callback: callback\n            };\n            if (timeout > 0) {\n                context.timeout = Utils.setTimeout(_cometd, function() {\n                    _cometd._debug('Timing out remote call', message, 'after', timeout, 'ms');\n                    _failMessage({\n                        id: message.id,\n                        error: '406::timeout',\n                        successful: false,\n                        failure: {\n                            message : message,\n                            reason: 'Remote Call Timeout'\n                        }\n                    });\n                }, timeout);\n                _cometd._debug('Scheduled remote call timeout', message, 'in', timeout, 'ms');\n            }\n            _remoteCalls[message.id] = context;\n\n            _queueSend(message);\n        };\n\n        this.remoteCallBinary = function(target, data, last, meta, timeout, callback) {\n            if (_isFunction(data)) {\n                callback = data;\n                data = new ArrayBuffer(0);\n                last = true;\n                meta = undefined;\n                timeout = _config.maxNetworkDelay;\n            } else if (_isFunction(last)) {\n                callback = last;\n                last = true;\n                meta = undefined;\n                timeout = _config.maxNetworkDelay;\n            } else if (_isFunction(meta)) {\n                callback = meta;\n                meta = undefined;\n                timeout = _config.maxNetworkDelay;\n            } else if (_isFunction(timeout)) {\n                callback = timeout;\n                timeout = _config.maxNetworkDelay;\n            }\n\n            var content = {\n                meta: meta,\n                data: data,\n                last: last\n            };\n            var ext = {\n                ext: {\n                    binary: {\n                    }\n                }\n            };\n\n            this.remoteCall(target, content, timeout, ext, callback);\n        };\n\n        /**\n         * Returns a string representing the status of the bayeux communication with the Bayeux server.\n         */\n        this.getStatus = function() {\n            return _status;\n        };\n\n        /**\n         * Returns whether this instance has been disconnected.\n         */\n        this.isDisconnected = _isDisconnected;\n\n        /**\n         * Sets the backoff period used to increase the backoff time when retrying an unsuccessful or failed message.\n         * Default value is 1 second, which means if there is a persistent failure the retries will happen\n         * after 1 second, then after 2 seconds, then after 3 seconds, etc. So for example with 15 seconds of\n         * elapsed time, there will be 5 retries (at 1, 3, 6, 10 and 15 seconds elapsed).\n         * @param period the backoff period to set\n         * @see #getBackoffIncrement()\n         */\n        this.setBackoffIncrement = function(period) {\n            _config.backoffIncrement = period;\n        };\n\n        /**\n         * Returns the backoff period used to increase the backoff time when retrying an unsuccessful or failed message.\n         * @see #setBackoffIncrement(period)\n         */\n        this.getBackoffIncrement = function() {\n            return _config.backoffIncrement;\n        };\n\n        /**\n         * Returns the backoff period to wait before retrying an unsuccessful or failed message.\n         */\n        this.getBackoffPeriod = function() {\n            return _backoff;\n        };\n\n        /**\n         * Increases the backoff period up to the maximum value configured.\n         * @returns the backoff period after increment\n         * @see getBackoffIncrement\n         */\n        this.increaseBackoffPeriod = function() {\n            return _increaseBackoff();\n        };\n\n        /**\n         * Resets the backoff period to zero.\n         */\n        this.resetBackoffPeriod = function() {\n            _resetBackoff();\n        };\n\n        /**\n         * Sets the log level for console logging.\n         * Valid values are the strings 'error', 'warn', 'info' and 'debug', from\n         * less verbose to more verbose.\n         * @param level the log level string\n         */\n        this.setLogLevel = function(level) {\n            _config.logLevel = level;\n        };\n\n        /**\n         * Registers an extension whose callbacks are called for every incoming message\n         * (that comes from the server to this client implementation) and for every\n         * outgoing message (that originates from this client implementation for the\n         * server).\n         * The format of the extension object is the following:\n         * <pre>\n         * {\n     *     incoming: function(message) { ... },\n     *     outgoing: function(message) { ... }\n     * }\n         * </pre>\n         * Both properties are optional, but if they are present they will be called\n         * respectively for each incoming message and for each outgoing message.\n         * @param name the name of the extension\n         * @param extension the extension to register\n         * @return true if the extension was registered, false otherwise\n         * @see #unregisterExtension(name)\n         */\n        this.registerExtension = function(name, extension) {\n            if (arguments.length < 2) {\n                throw 'Illegal arguments number: required 2, got ' + arguments.length;\n            }\n            if (!_isString(name)) {\n                throw 'Illegal argument type: extension name must be a string';\n            }\n\n            var existing = false;\n            for (var i = 0; i < _extensions.length; ++i) {\n                var existingExtension = _extensions[i];\n                if (existingExtension.name === name) {\n                    existing = true;\n                    break;\n                }\n            }\n            if (!existing) {\n                _extensions.push({\n                    name: name,\n                    extension: extension\n                });\n                this._debug('Registered extension', name);\n\n                // Callback for extensions\n                if (_isFunction(extension.registered)) {\n                    extension.registered(name, this);\n                }\n\n                return true;\n            } else {\n                this._info('Could not register extension with name', name, 'since another extension with the same name already exists');\n                return false;\n            }\n        };\n\n        /**\n         * Unregister an extension previously registered with\n         * {@link #registerExtension(name, extension)}.\n         * @param name the name of the extension to unregister.\n         * @return true if the extension was unregistered, false otherwise\n         */\n        this.unregisterExtension = function(name) {\n            if (!_isString(name)) {\n                throw 'Illegal argument type: extension name must be a string';\n            }\n\n            var unregistered = false;\n            for (var i = 0; i < _extensions.length; ++i) {\n                var extension = _extensions[i];\n                if (extension.name === name) {\n                    _extensions.splice(i, 1);\n                    unregistered = true;\n                    this._debug('Unregistered extension', name);\n\n                    // Callback for extensions\n                    var ext = extension.extension;\n                    if (_isFunction(ext.unregistered)) {\n                        ext.unregistered();\n                    }\n\n                    break;\n                }\n            }\n            return unregistered;\n        };\n\n        /**\n         * Find the extension registered with the given name.\n         * @param name the name of the extension to find\n         * @return the extension found or null if no extension with the given name has been registered\n         */\n        this.getExtension = function(name) {\n            for (var i = 0; i < _extensions.length; ++i) {\n                var extension = _extensions[i];\n                if (extension.name === name) {\n                    return extension.extension;\n                }\n            }\n            return null;\n        };\n\n        /**\n         * Returns the name assigned to this CometD object, or the string 'default'\n         * if no name has been explicitly passed as parameter to the constructor.\n         */\n        this.getName = function() {\n            return _name;\n        };\n\n        /**\n         * Returns the clientId assigned by the Bayeux server during handshake.\n         */\n        this.getClientId = function() {\n            return _clientId;\n        };\n\n        /**\n         * Returns the URL of the Bayeux server.\n         */\n        this.getURL = function() {\n            if (_transport) {\n                var url = _transport.getURL();\n                if (url) {\n                    return url;\n                }\n                url = _config.urls[_transport.getType()];\n                if (url) {\n                    return url;\n                }\n            }\n            return _config.url;\n        };\n\n        this.getTransport = function() {\n            return _transport;\n        };\n\n        this.getConfiguration = function() {\n            return this._mixin(true, {}, _config);\n        };\n\n        this.getAdvice = function() {\n            return this._mixin(true, {}, _advice);\n        };\n\n        // Initialize transports.\n        if (window.WebSocket) {\n            this.registerTransport('websocket', new WebSocketTransport());\n        }\n        this.registerTransport('long-polling', new LongPollingTransport());\n        this.registerTransport('callback-polling', new CallbackPollingTransport());\n    };\n\n    var _z85EncodeTable = [\n        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n        'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',\n        'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',\n        'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D',\n        'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N',\n        'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',\n        'Y', 'Z', '.', '-', ':', '+', '=', '^', '!', '/',\n        '*', '?', '&', '<', '>', '(', ')', '[', ']', '{',\n        '}', '@', '%', '$', '#'\n    ];\n    var _z85DecodeTable = [\n        0x00, 0x44, 0x00, 0x54, 0x53, 0x52, 0x48, 0x00,\n        0x4B, 0x4C, 0x46, 0x41, 0x00, 0x3F, 0x3E, 0x45,\n        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,\n        0x08, 0x09, 0x40, 0x00, 0x49, 0x42, 0x4A, 0x47,\n        0x51, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A,\n        0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32,\n        0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A,\n        0x3B, 0x3C, 0x3D, 0x4D, 0x00, 0x4E, 0x43, 0x00,\n        0x00, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10,\n        0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,\n        0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20,\n        0x21, 0x22, 0x23, 0x4F, 0x00, 0x50, 0x00, 0x00\n    ];\n    var Z85 = {\n        encode: function(bytes) {\n            var buffer = null;\n            if (bytes instanceof ArrayBuffer) {\n                buffer = bytes;\n            } else if (bytes.buffer instanceof ArrayBuffer) {\n                buffer = bytes.buffer;\n            } else if (Array.isArray(bytes)) {\n                buffer = new Uint8Array(bytes).buffer;\n            }\n            if (buffer == null) {\n                throw 'Cannot Z85 encode ' + bytes;\n            }\n\n            var length = buffer.byteLength;\n            var remainder = length % 4;\n            var padding = 4 - (remainder === 0 ? 4 : remainder);\n            var view = new DataView(buffer);\n            var result = '';\n            var value = 0;\n            for (var i = 0; i < length + padding; ++i) {\n                var isPadding = i >= length;\n                value = value * 256 + (isPadding ? 0 : view.getUint8(i));\n                if ((i + 1) % 4 === 0) {\n                    var divisor = 85 * 85 * 85 * 85;\n                    for (var j = 5; j > 0; --j) {\n                        if (!isPadding || j > padding) {\n                            var code = Math.floor(value / divisor) % 85;\n                            result += _z85EncodeTable[code];\n                        }\n                        divisor /= 85;\n                    }\n                    value = 0;\n                }\n            }\n\n            return result;\n        },\n        decode: function(string) {\n            var remainder = string.length % 5;\n            var padding = 5 - (remainder === 0 ? 5 : remainder);\n            for (var p = 0; p < padding; ++p) {\n                string += _z85EncodeTable[_z85EncodeTable.length - 1];\n            }\n            var length = string.length;\n\n            var buffer = new ArrayBuffer((length * 4 / 5) - padding);\n            var view = new DataView(buffer);\n            var value = 0;\n            var charIdx = 0;\n            var byteIdx = 0;\n            for (var i = 0; i < length; ++i) {\n                var code = string.charCodeAt(charIdx++) - 32;\n                value = value * 85 + _z85DecodeTable[code];\n                if (charIdx % 5 === 0) {\n                    var divisor = 256 * 256 * 256;\n                    while (divisor >= 1) {\n                        if (byteIdx < view.byteLength) {\n                            view.setUint8(byteIdx++, Math.floor(value / divisor) % 256);\n                        }\n                        divisor /= 256;\n                    }\n                    value = 0;\n                }\n            }\n\n            return buffer;\n        }\n    };\n\n    return {\n        CometD: CometD,\n        Transport: Transport,\n        RequestTransport: RequestTransport,\n        LongPollingTransport: LongPollingTransport,\n        CallbackPollingTransport: CallbackPollingTransport,\n        WebSocketTransport: WebSocketTransport,\n        Utils: Utils,\n        Z85: Z85\n    };\n}));\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\t    /*\n\t     * Local polyfil of Object.create\n\t     */\n\t    var create = Object.create || (function () {\n\t        function F() {};\n\n\t        return function (obj) {\n\t            var subtype;\n\n\t            F.prototype = obj;\n\n\t            subtype = new F();\n\n\t            F.prototype = null;\n\n\t            return subtype;\n\t        };\n\t    }())\n\n\t    /**\n\t     * CryptoJS namespace.\n\t     */\n\t    var C = {};\n\n\t    /**\n\t     * Library namespace.\n\t     */\n\t    var C_lib = C.lib = {};\n\n\t    /**\n\t     * Base object for prototypal inheritance.\n\t     */\n\t    var Base = C_lib.Base = (function () {\n\n\n\t        return {\n\t            /**\n\t             * Creates a new object that inherits from this object.\n\t             *\n\t             * @param {Object} overrides Properties to copy into the new object.\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         field: 'value',\n\t             *\n\t             *         method: function () {\n\t             *         }\n\t             *     });\n\t             */\n\t            extend: function (overrides) {\n\t                // Spawn\n\t                var subtype = create(this);\n\n\t                // Augment\n\t                if (overrides) {\n\t                    subtype.mixIn(overrides);\n\t                }\n\n\t                // Create default initializer\n\t                if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t                    subtype.init = function () {\n\t                        subtype.$super.init.apply(this, arguments);\n\t                    };\n\t                }\n\n\t                // Initializer's prototype is the subtype object\n\t                subtype.init.prototype = subtype;\n\n\t                // Reference supertype\n\t                subtype.$super = this;\n\n\t                return subtype;\n\t            },\n\n\t            /**\n\t             * Extends this object and runs the init method.\n\t             * Arguments to create() will be passed to init().\n\t             *\n\t             * @return {Object} The new object.\n\t             *\n\t             * @static\n\t             *\n\t             * @example\n\t             *\n\t             *     var instance = MyType.create();\n\t             */\n\t            create: function () {\n\t                var instance = this.extend();\n\t                instance.init.apply(instance, arguments);\n\n\t                return instance;\n\t            },\n\n\t            /**\n\t             * Initializes a newly created object.\n\t             * Override this method to add some logic when your objects are created.\n\t             *\n\t             * @example\n\t             *\n\t             *     var MyType = CryptoJS.lib.Base.extend({\n\t             *         init: function () {\n\t             *             // ...\n\t             *         }\n\t             *     });\n\t             */\n\t            init: function () {\n\t            },\n\n\t            /**\n\t             * Copies properties into this object.\n\t             *\n\t             * @param {Object} properties The properties to mix in.\n\t             *\n\t             * @example\n\t             *\n\t             *     MyType.mixIn({\n\t             *         field: 'value'\n\t             *     });\n\t             */\n\t            mixIn: function (properties) {\n\t                for (var propertyName in properties) {\n\t                    if (properties.hasOwnProperty(propertyName)) {\n\t                        this[propertyName] = properties[propertyName];\n\t                    }\n\t                }\n\n\t                // IE won't copy toString using the loop above\n\t                if (properties.hasOwnProperty('toString')) {\n\t                    this.toString = properties.toString;\n\t                }\n\t            },\n\n\t            /**\n\t             * Creates a copy of this object.\n\t             *\n\t             * @return {Object} The clone.\n\t             *\n\t             * @example\n\t             *\n\t             *     var clone = instance.clone();\n\t             */\n\t            clone: function () {\n\t                return this.init.prototype.extend(this);\n\t            }\n\t        };\n\t    }());\n\n\t    /**\n\t     * An array of 32-bit words.\n\t     *\n\t     * @property {Array} words The array of 32-bit words.\n\t     * @property {number} sigBytes The number of significant bytes in this word array.\n\t     */\n\t    var WordArray = C_lib.WordArray = Base.extend({\n\t        /**\n\t         * Initializes a newly created word array.\n\t         *\n\t         * @param {Array} words (Optional) An array of 32-bit words.\n\t         * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.create();\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t         *     var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t         */\n\t        init: function (words, sigBytes) {\n\t            words = this.words = words || [];\n\n\t            if (sigBytes != undefined) {\n\t                this.sigBytes = sigBytes;\n\t            } else {\n\t                this.sigBytes = words.length * 4;\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts this word array to a string.\n\t         *\n\t         * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t         *\n\t         * @return {string} The stringified word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     var string = wordArray + '';\n\t         *     var string = wordArray.toString();\n\t         *     var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t         */\n\t        toString: function (encoder) {\n\t            return (encoder || Hex).stringify(this);\n\t        },\n\n\t        /**\n\t         * Concatenates a word array to this word array.\n\t         *\n\t         * @param {WordArray} wordArray The word array to append.\n\t         *\n\t         * @return {WordArray} This word array.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray1.concat(wordArray2);\n\t         */\n\t        concat: function (wordArray) {\n\t            // Shortcuts\n\t            var thisWords = this.words;\n\t            var thatWords = wordArray.words;\n\t            var thisSigBytes = this.sigBytes;\n\t            var thatSigBytes = wordArray.sigBytes;\n\n\t            // Clamp excess bits\n\t            this.clamp();\n\n\t            // Concat\n\t            if (thisSigBytes % 4) {\n\t                // Copy one byte at a time\n\t                for (var i = 0; i < thatSigBytes; i++) {\n\t                    var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                    thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t                }\n\t            } else {\n\t                // Copy one word at a time\n\t                for (var i = 0; i < thatSigBytes; i += 4) {\n\t                    thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2];\n\t                }\n\t            }\n\t            this.sigBytes += thatSigBytes;\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Removes insignificant bits.\n\t         *\n\t         * @example\n\t         *\n\t         *     wordArray.clamp();\n\t         */\n\t        clamp: function () {\n\t            // Shortcuts\n\t            var words = this.words;\n\t            var sigBytes = this.sigBytes;\n\n\t            // Clamp\n\t            words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t            words.length = Math.ceil(sigBytes / 4);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this word array.\n\t         *\n\t         * @return {WordArray} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = wordArray.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone.words = this.words.slice(0);\n\n\t            return clone;\n\t        },\n\n\t        /**\n\t         * Creates a word array filled with random bytes.\n\t         *\n\t         * @param {number} nBytes The number of random bytes to generate.\n\t         *\n\t         * @return {WordArray} The random word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.lib.WordArray.random(16);\n\t         */\n\t        random: function (nBytes) {\n\t            var words = [];\n\n\t            var r = (function (m_w) {\n\t                var m_w = m_w;\n\t                var m_z = 0x3ade68b1;\n\t                var mask = 0xffffffff;\n\n\t                return function () {\n\t                    m_z = (0x9069 * (m_z & 0xFFFF) + (m_z >> 0x10)) & mask;\n\t                    m_w = (0x4650 * (m_w & 0xFFFF) + (m_w >> 0x10)) & mask;\n\t                    var result = ((m_z << 0x10) + m_w) & mask;\n\t                    result /= 0x100000000;\n\t                    result += 0.5;\n\t                    return result * (Math.random() > .5 ? 1 : -1);\n\t                }\n\t            });\n\n\t            for (var i = 0, rcache; i < nBytes; i += 4) {\n\t                var _r = r((rcache || Math.random()) * 0x100000000);\n\n\t                rcache = _r() * 0x3ade67b7;\n\t                words.push((_r() * 0x100000000) | 0);\n\t            }\n\n\t            return new WordArray.init(words, nBytes);\n\t        }\n\t    });\n\n\t    /**\n\t     * Encoder namespace.\n\t     */\n\t    var C_enc = C.enc = {};\n\n\t    /**\n\t     * Hex encoding strategy.\n\t     */\n\t    var Hex = C_enc.Hex = {\n\t        /**\n\t         * Converts a word array to a hex string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The hex string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var hexChars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                hexChars.push((bite >>> 4).toString(16));\n\t                hexChars.push((bite & 0x0f).toString(16));\n\t            }\n\n\t            return hexChars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a hex string to a word array.\n\t         *\n\t         * @param {string} hexStr The hex string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t         */\n\t        parse: function (hexStr) {\n\t            // Shortcut\n\t            var hexStrLength = hexStr.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < hexStrLength; i += 2) {\n\t                words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t            }\n\n\t            return new WordArray.init(words, hexStrLength / 2);\n\t        }\n\t    };\n\n\t    /**\n\t     * Latin1 encoding strategy.\n\t     */\n\t    var Latin1 = C_enc.Latin1 = {\n\t        /**\n\t         * Converts a word array to a Latin1 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Latin1 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\n\t            // Convert\n\t            var latin1Chars = [];\n\t            for (var i = 0; i < sigBytes; i++) {\n\t                var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t                latin1Chars.push(String.fromCharCode(bite));\n\t            }\n\n\t            return latin1Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Latin1 string to a word array.\n\t         *\n\t         * @param {string} latin1Str The Latin1 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t         */\n\t        parse: function (latin1Str) {\n\t            // Shortcut\n\t            var latin1StrLength = latin1Str.length;\n\n\t            // Convert\n\t            var words = [];\n\t            for (var i = 0; i < latin1StrLength; i++) {\n\t                words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t            }\n\n\t            return new WordArray.init(words, latin1StrLength);\n\t        }\n\t    };\n\n\t    /**\n\t     * UTF-8 encoding strategy.\n\t     */\n\t    var Utf8 = C_enc.Utf8 = {\n\t        /**\n\t         * Converts a word array to a UTF-8 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The UTF-8 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            try {\n\t                return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t            } catch (e) {\n\t                throw new Error('Malformed UTF-8 data');\n\t            }\n\t        },\n\n\t        /**\n\t         * Converts a UTF-8 string to a word array.\n\t         *\n\t         * @param {string} utf8Str The UTF-8 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t         */\n\t        parse: function (utf8Str) {\n\t            return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t        }\n\t    };\n\n\t    /**\n\t     * Abstract buffered block algorithm template.\n\t     *\n\t     * The property blockSize must be implemented in a concrete subtype.\n\t     *\n\t     * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t     */\n\t    var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t        /**\n\t         * Resets this block algorithm's data buffer to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm.reset();\n\t         */\n\t        reset: function () {\n\t            // Initial values\n\t            this._data = new WordArray.init();\n\t            this._nDataBytes = 0;\n\t        },\n\n\t        /**\n\t         * Adds new data to this block algorithm's buffer.\n\t         *\n\t         * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t         *\n\t         * @example\n\t         *\n\t         *     bufferedBlockAlgorithm._append('data');\n\t         *     bufferedBlockAlgorithm._append(wordArray);\n\t         */\n\t        _append: function (data) {\n\t            // Convert string to WordArray, else assume WordArray already\n\t            if (typeof data == 'string') {\n\t                data = Utf8.parse(data);\n\t            }\n\n\t            // Append\n\t            this._data.concat(data);\n\t            this._nDataBytes += data.sigBytes;\n\t        },\n\n\t        /**\n\t         * Processes available data blocks.\n\t         *\n\t         * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t         *\n\t         * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t         *\n\t         * @return {WordArray} The processed data.\n\t         *\n\t         * @example\n\t         *\n\t         *     var processedData = bufferedBlockAlgorithm._process();\n\t         *     var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t         */\n\t        _process: function (doFlush) {\n\t            // Shortcuts\n\t            var data = this._data;\n\t            var dataWords = data.words;\n\t            var dataSigBytes = data.sigBytes;\n\t            var blockSize = this.blockSize;\n\t            var blockSizeBytes = blockSize * 4;\n\n\t            // Count blocks ready\n\t            var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t            if (doFlush) {\n\t                // Round up to include partial blocks\n\t                nBlocksReady = Math.ceil(nBlocksReady);\n\t            } else {\n\t                // Round down to include only full blocks,\n\t                // less the number of blocks that must remain in the buffer\n\t                nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t            }\n\n\t            // Count words ready\n\t            var nWordsReady = nBlocksReady * blockSize;\n\n\t            // Count bytes ready\n\t            var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t            // Process blocks\n\t            if (nWordsReady) {\n\t                for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t                    // Perform concrete-algorithm logic\n\t                    this._doProcessBlock(dataWords, offset);\n\t                }\n\n\t                // Remove processed words\n\t                var processedWords = dataWords.splice(0, nWordsReady);\n\t                data.sigBytes -= nBytesReady;\n\t            }\n\n\t            // Return processed words\n\t            return new WordArray.init(processedWords, nBytesReady);\n\t        },\n\n\t        /**\n\t         * Creates a copy of this object.\n\t         *\n\t         * @return {Object} The clone.\n\t         *\n\t         * @example\n\t         *\n\t         *     var clone = bufferedBlockAlgorithm.clone();\n\t         */\n\t        clone: function () {\n\t            var clone = Base.clone.call(this);\n\t            clone._data = this._data.clone();\n\n\t            return clone;\n\t        },\n\n\t        _minBufferSize: 0\n\t    });\n\n\t    /**\n\t     * Abstract hasher template.\n\t     *\n\t     * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t     */\n\t    var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t        /**\n\t         * Configuration options.\n\t         */\n\t        cfg: Base.extend(),\n\n\t        /**\n\t         * Initializes a newly created hasher.\n\t         *\n\t         * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hasher = CryptoJS.algo.SHA256.create();\n\t         */\n\t        init: function (cfg) {\n\t            // Apply config defaults\n\t            this.cfg = this.cfg.extend(cfg);\n\n\t            // Set initial values\n\t            this.reset();\n\t        },\n\n\t        /**\n\t         * Resets this hasher to its initial state.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.reset();\n\t         */\n\t        reset: function () {\n\t            // Reset data buffer\n\t            BufferedBlockAlgorithm.reset.call(this);\n\n\t            // Perform concrete-hasher logic\n\t            this._doReset();\n\t        },\n\n\t        /**\n\t         * Updates this hasher with a message.\n\t         *\n\t         * @param {WordArray|string} messageUpdate The message to append.\n\t         *\n\t         * @return {Hasher} This hasher.\n\t         *\n\t         * @example\n\t         *\n\t         *     hasher.update('message');\n\t         *     hasher.update(wordArray);\n\t         */\n\t        update: function (messageUpdate) {\n\t            // Append\n\t            this._append(messageUpdate);\n\n\t            // Update the hash\n\t            this._process();\n\n\t            // Chainable\n\t            return this;\n\t        },\n\n\t        /**\n\t         * Finalizes the hash computation.\n\t         * Note that the finalize operation is effectively a destructive, read-once operation.\n\t         *\n\t         * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t         *\n\t         * @return {WordArray} The hash.\n\t         *\n\t         * @example\n\t         *\n\t         *     var hash = hasher.finalize();\n\t         *     var hash = hasher.finalize('message');\n\t         *     var hash = hasher.finalize(wordArray);\n\t         */\n\t        finalize: function (messageUpdate) {\n\t            // Final message update\n\t            if (messageUpdate) {\n\t                this._append(messageUpdate);\n\t            }\n\n\t            // Perform concrete-hasher logic\n\t            var hash = this._doFinalize();\n\n\t            return hash;\n\t        },\n\n\t        blockSize: 512/32,\n\n\t        /**\n\t         * Creates a shortcut function to a hasher's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to create a helper for.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHelper: function (hasher) {\n\t            return function (message, cfg) {\n\t                return new hasher.init(cfg).finalize(message);\n\t            };\n\t        },\n\n\t        /**\n\t         * Creates a shortcut function to the HMAC's object interface.\n\t         *\n\t         * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t         *\n\t         * @return {Function} The shortcut function.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t         */\n\t        _createHmacHelper: function (hasher) {\n\t            return function (message, key) {\n\t                return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t            };\n\t        }\n\t    });\n\n\t    /**\n\t     * Algorithm namespace.\n\t     */\n\t    var C_algo = C.algo = {};\n\n\t    return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t    // Shortcuts\n\t    var C = CryptoJS;\n\t    var C_lib = C.lib;\n\t    var WordArray = C_lib.WordArray;\n\t    var C_enc = C.enc;\n\n\t    /**\n\t     * Base64 encoding strategy.\n\t     */\n\t    var Base64 = C_enc.Base64 = {\n\t        /**\n\t         * Converts a word array to a Base64 string.\n\t         *\n\t         * @param {WordArray} wordArray The word array.\n\t         *\n\t         * @return {string} The Base64 string.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t         */\n\t        stringify: function (wordArray) {\n\t            // Shortcuts\n\t            var words = wordArray.words;\n\t            var sigBytes = wordArray.sigBytes;\n\t            var map = this._map;\n\n\t            // Clamp excess bits\n\t            wordArray.clamp();\n\n\t            // Convert\n\t            var base64Chars = [];\n\t            for (var i = 0; i < sigBytes; i += 3) {\n\t                var byte1 = (words[i >>> 2]       >>> (24 - (i % 4) * 8))       & 0xff;\n\t                var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t                var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t                var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t                for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t                    base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t                }\n\t            }\n\n\t            // Add padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                while (base64Chars.length % 4) {\n\t                    base64Chars.push(paddingChar);\n\t                }\n\t            }\n\n\t            return base64Chars.join('');\n\t        },\n\n\t        /**\n\t         * Converts a Base64 string to a word array.\n\t         *\n\t         * @param {string} base64Str The Base64 string.\n\t         *\n\t         * @return {WordArray} The word array.\n\t         *\n\t         * @static\n\t         *\n\t         * @example\n\t         *\n\t         *     var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t         */\n\t        parse: function (base64Str) {\n\t            // Shortcuts\n\t            var base64StrLength = base64Str.length;\n\t            var map = this._map;\n\t            var reverseMap = this._reverseMap;\n\n\t            if (!reverseMap) {\n\t                    reverseMap = this._reverseMap = [];\n\t                    for (var j = 0; j < map.length; j++) {\n\t                        reverseMap[map.charCodeAt(j)] = j;\n\t                    }\n\t            }\n\n\t            // Ignore padding\n\t            var paddingChar = map.charAt(64);\n\t            if (paddingChar) {\n\t                var paddingIndex = base64Str.indexOf(paddingChar);\n\t                if (paddingIndex !== -1) {\n\t                    base64StrLength = paddingIndex;\n\t                }\n\t            }\n\n\t            // Convert\n\t            return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t        },\n\n\t        _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t    };\n\n\t    function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t      var words = [];\n\t      var nBytes = 0;\n\t      for (var i = 0; i < base64StrLength; i++) {\n\t          if (i % 4) {\n\t              var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t              var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t              words[nBytes >>> 2] |= (bits1 | bits2) << (24 - (nBytes % 4) * 8);\n\t              nBytes++;\n\t          }\n\t      }\n\t      return WordArray.create(words, nBytes);\n\t    }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS.enc.Utf8;\n\n}));","\"use strict\";\n\n/*\n  MIT License http://www.opensource.org/licenses/mit-license.php\n  Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n  var list = []; // return the list of modules as css string\n\n  list.toString = function toString() {\n    return this.map(function (item) {\n      var content = \"\";\n      var needLayer = typeof item[5] !== \"undefined\";\n\n      if (item[4]) {\n        content += \"@supports (\".concat(item[4], \") {\");\n      }\n\n      if (item[2]) {\n        content += \"@media \".concat(item[2], \" {\");\n      }\n\n      if (needLayer) {\n        content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n      }\n\n      content += cssWithMappingToString(item);\n\n      if (needLayer) {\n        content += \"}\";\n      }\n\n      if (item[2]) {\n        content += \"}\";\n      }\n\n      if (item[4]) {\n        content += \"}\";\n      }\n\n      return content;\n    }).join(\"\");\n  }; // import a list of modules into the list\n\n\n  list.i = function i(modules, media, dedupe, supports, layer) {\n    if (typeof modules === \"string\") {\n      modules = [[null, modules, undefined]];\n    }\n\n    var alreadyImportedModules = {};\n\n    if (dedupe) {\n      for (var k = 0; k < this.length; k++) {\n        var id = this[k][0];\n\n        if (id != null) {\n          alreadyImportedModules[id] = true;\n        }\n      }\n    }\n\n    for (var _k = 0; _k < modules.length; _k++) {\n      var item = [].concat(modules[_k]);\n\n      if (dedupe && alreadyImportedModules[item[0]]) {\n        continue;\n      }\n\n      if (typeof layer !== \"undefined\") {\n        if (typeof item[5] === \"undefined\") {\n          item[5] = layer;\n        } else {\n          item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n          item[5] = layer;\n        }\n      }\n\n      if (media) {\n        if (!item[2]) {\n          item[2] = media;\n        } else {\n          item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n          item[2] = media;\n        }\n      }\n\n      if (supports) {\n        if (!item[4]) {\n          item[4] = \"\".concat(supports);\n        } else {\n          item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n          item[4] = supports;\n        }\n      }\n\n      list.push(item);\n    }\n  };\n\n  return list;\n};","\"use strict\";\n\nmodule.exports = function (i) {\n  return i[1];\n};","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\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\nmodule.exports = function (data, opts) {\n    if (!opts) opts = {};\n    if (typeof opts === 'function') opts = { cmp: opts };\n    var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n    var cmp = opts.cmp && (function (f) {\n        return function (node) {\n            return function (a, b) {\n                var aobj = { key: a, value: node[a] };\n                var bobj = { key: b, value: node[b] };\n                return f(aobj, bobj);\n            };\n        };\n    })(opts.cmp);\n\n    var seen = [];\n    return (function stringify (node) {\n        if (node && node.toJSON && typeof node.toJSON === 'function') {\n            node = node.toJSON();\n        }\n\n        if (node === undefined) return;\n        if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n        if (typeof node !== 'object') return JSON.stringify(node);\n\n        var i, out;\n        if (Array.isArray(node)) {\n            out = '[';\n            for (i = 0; i < node.length; i++) {\n                if (i) out += ',';\n                out += stringify(node[i]) || 'null';\n            }\n            return out + ']';\n        }\n\n        if (node === null) return 'null';\n\n        if (seen.indexOf(node) !== -1) {\n            if (cycles) return JSON.stringify('__cycle__');\n            throw new TypeError('Converting circular structure to JSON');\n        }\n\n        var seenIndex = seen.push(node) - 1;\n        var keys = Object.keys(node).sort(cmp && cmp(node));\n        out = '';\n        for (i = 0; i < keys.length; i++) {\n            var key = keys[i];\n            var value = stringify(node[key]);\n\n            if (!value) continue;\n            if (out) out += ',';\n            out += JSON.stringify(key) + ':' + value;\n        }\n        seen.splice(seenIndex, 1);\n        return '{' + out + '}';\n    })(data);\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n    var arr = [];\n\n    for (var i = 0; i < a.length; i += 1) {\n        arr[i] = a[i];\n    }\n    for (var j = 0; j < b.length; j += 1) {\n        arr[j + a.length] = b[j];\n    }\n\n    return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n    var arr = [];\n    for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n        arr[j] = arrLike[i];\n    }\n    return arr;\n};\n\nvar joiny = function (arr, joiner) {\n    var str = '';\n    for (var i = 0; i < arr.length; i += 1) {\n        str += arr[i];\n        if (i + 1 < arr.length) {\n            str += joiner;\n        }\n    }\n    return str;\n};\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slicy(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                concatty(args, arguments)\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        }\n        return target.apply(\n            that,\n            concatty(args, arguments)\n        );\n\n    };\n\n    var boundLength = max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs[i] = '$' + i;\n    }\n\n    bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (format === undefined) {\n      throw new Error('invariant requires an error message argument');\n    }\n  }\n\n  if (!condition) {\n    var error;\n    if (format === undefined) {\n      error = new Error(\n        'Minified exception occurred; use the non-minified dev environment ' +\n        'for the full error message and additional helpful warnings.'\n      );\n    } else {\n      var args = [a, b, c, d, e, f];\n      var argIndex = 0;\n      error = new Error(\n        format.replace(/%s/g, function() { return args[argIndex++]; })\n      );\n      error.name = 'Invariant Violation';\n    }\n\n    error.framesToPop = 1; // we don't care about invariant's own frame\n    throw error;\n  }\n};\n\nmodule.exports = invariant;\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n  // Legacy support for v0.3.1 and earlier.\n  if (typeof opts == 'function') {\n    cb = opts;\n    opts = {};\n  }\n\n  cb = opts.cb || cb;\n  var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n  var post = cb.post || function() {};\n\n  _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n  additionalItems: true,\n  items: true,\n  contains: true,\n  additionalProperties: true,\n  propertyNames: true,\n  not: true\n};\n\ntraverse.arrayKeywords = {\n  items: true,\n  allOf: true,\n  anyOf: true,\n  oneOf: true\n};\n\ntraverse.propsKeywords = {\n  definitions: true,\n  properties: true,\n  patternProperties: true,\n  dependencies: true\n};\n\ntraverse.skipKeywords = {\n  default: true,\n  enum: true,\n  const: true,\n  required: true,\n  maximum: true,\n  minimum: true,\n  exclusiveMaximum: true,\n  exclusiveMinimum: true,\n  multipleOf: true,\n  maxLength: true,\n  minLength: true,\n  pattern: true,\n  format: true,\n  maxItems: true,\n  minItems: true,\n  uniqueItems: true,\n  maxProperties: true,\n  minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n  if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n    pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n    for (var key in schema) {\n      var sch = schema[key];\n      if (Array.isArray(sch)) {\n        if (key in traverse.arrayKeywords) {\n          for (var i=0; i<sch.length; i++)\n            _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n        }\n      } else if (key in traverse.propsKeywords) {\n        if (sch && typeof sch == 'object') {\n          for (var prop in sch)\n            _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n        }\n      } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n        _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n      }\n    }\n    post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n  }\n}\n\n\nfunction escapeJsonPtr(str) {\n  return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n  /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n  var undefined;\n\n  /** Used as the semantic version number. */\n  var VERSION = '4.17.21';\n\n  /** Used as the size to enable large array optimizations. */\n  var LARGE_ARRAY_SIZE = 200;\n\n  /** Error message constants. */\n  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n      FUNC_ERROR_TEXT = 'Expected a function',\n      INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n  /** Used to stand-in for `undefined` hash values. */\n  var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n  /** Used as the maximum memoize cache size. */\n  var MAX_MEMOIZE_SIZE = 500;\n\n  /** Used as the internal argument placeholder. */\n  var PLACEHOLDER = '__lodash_placeholder__';\n\n  /** Used to compose bitmasks for cloning. */\n  var CLONE_DEEP_FLAG = 1,\n      CLONE_FLAT_FLAG = 2,\n      CLONE_SYMBOLS_FLAG = 4;\n\n  /** Used to compose bitmasks for value comparisons. */\n  var COMPARE_PARTIAL_FLAG = 1,\n      COMPARE_UNORDERED_FLAG = 2;\n\n  /** Used to compose bitmasks for function metadata. */\n  var WRAP_BIND_FLAG = 1,\n      WRAP_BIND_KEY_FLAG = 2,\n      WRAP_CURRY_BOUND_FLAG = 4,\n      WRAP_CURRY_FLAG = 8,\n      WRAP_CURRY_RIGHT_FLAG = 16,\n      WRAP_PARTIAL_FLAG = 32,\n      WRAP_PARTIAL_RIGHT_FLAG = 64,\n      WRAP_ARY_FLAG = 128,\n      WRAP_REARG_FLAG = 256,\n      WRAP_FLIP_FLAG = 512;\n\n  /** Used as default options for `_.truncate`. */\n  var DEFAULT_TRUNC_LENGTH = 30,\n      DEFAULT_TRUNC_OMISSION = '...';\n\n  /** Used to detect hot functions by number of calls within a span of milliseconds. */\n  var HOT_COUNT = 800,\n      HOT_SPAN = 16;\n\n  /** Used to indicate the type of lazy iteratees. */\n  var LAZY_FILTER_FLAG = 1,\n      LAZY_MAP_FLAG = 2,\n      LAZY_WHILE_FLAG = 3;\n\n  /** Used as references for various `Number` constants. */\n  var INFINITY = 1 / 0,\n      MAX_SAFE_INTEGER = 9007199254740991,\n      MAX_INTEGER = 1.7976931348623157e+308,\n      NAN = 0 / 0;\n\n  /** Used as references for the maximum length and index of an array. */\n  var MAX_ARRAY_LENGTH = 4294967295,\n      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n  /** Used to associate wrap methods with their bit flags. */\n  var wrapFlags = [\n    ['ary', WRAP_ARY_FLAG],\n    ['bind', WRAP_BIND_FLAG],\n    ['bindKey', WRAP_BIND_KEY_FLAG],\n    ['curry', WRAP_CURRY_FLAG],\n    ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n    ['flip', WRAP_FLIP_FLAG],\n    ['partial', WRAP_PARTIAL_FLAG],\n    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n    ['rearg', WRAP_REARG_FLAG]\n  ];\n\n  /** `Object#toString` result references. */\n  var argsTag = '[object Arguments]',\n      arrayTag = '[object Array]',\n      asyncTag = '[object AsyncFunction]',\n      boolTag = '[object Boolean]',\n      dateTag = '[object Date]',\n      domExcTag = '[object DOMException]',\n      errorTag = '[object Error]',\n      funcTag = '[object Function]',\n      genTag = '[object GeneratorFunction]',\n      mapTag = '[object Map]',\n      numberTag = '[object Number]',\n      nullTag = '[object Null]',\n      objectTag = '[object Object]',\n      promiseTag = '[object Promise]',\n      proxyTag = '[object Proxy]',\n      regexpTag = '[object RegExp]',\n      setTag = '[object Set]',\n      stringTag = '[object String]',\n      symbolTag = '[object Symbol]',\n      undefinedTag = '[object Undefined]',\n      weakMapTag = '[object WeakMap]',\n      weakSetTag = '[object WeakSet]';\n\n  var arrayBufferTag = '[object ArrayBuffer]',\n      dataViewTag = '[object DataView]',\n      float32Tag = '[object Float32Array]',\n      float64Tag = '[object Float64Array]',\n      int8Tag = '[object Int8Array]',\n      int16Tag = '[object Int16Array]',\n      int32Tag = '[object Int32Array]',\n      uint8Tag = '[object Uint8Array]',\n      uint8ClampedTag = '[object Uint8ClampedArray]',\n      uint16Tag = '[object Uint16Array]',\n      uint32Tag = '[object Uint32Array]';\n\n  /** Used to match empty string literals in compiled template source. */\n  var reEmptyStringLeading = /\\b__p \\+= '';/g,\n      reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n      reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n  /** Used to match HTML entities and HTML characters. */\n  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n      reUnescapedHtml = /[&<>\"']/g,\n      reHasEscapedHtml = RegExp(reEscapedHtml.source),\n      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n  /** Used to match template delimiters. */\n  var reEscape = /<%-([\\s\\S]+?)%>/g,\n      reEvaluate = /<%([\\s\\S]+?)%>/g,\n      reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n  /** Used to match property names within property paths. */\n  var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n      reIsPlainProp = /^\\w*$/,\n      rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n  /**\n   * Used to match `RegExp`\n   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n   */\n  var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n      reHasRegExpChar = RegExp(reRegExpChar.source);\n\n  /** Used to match leading whitespace. */\n  var reTrimStart = /^\\s+/;\n\n  /** Used to match a single whitespace character. */\n  var reWhitespace = /\\s/;\n\n  /** Used to match wrap detail comments. */\n  var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n      reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n      reSplitDetails = /,? & /;\n\n  /** Used to match words composed of alphanumeric characters. */\n  var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n  /**\n   * Used to validate the `validate` option in `_.template` variable.\n   *\n   * Forbids characters which could potentially change the meaning of the function argument definition:\n   * - \"(),\" (modification of function parameters)\n   * - \"=\" (default value)\n   * - \"[]{}\" (destructuring of function parameters)\n   * - \"/\" (beginning of a comment)\n   * - whitespace\n   */\n  var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n  /** Used to match backslashes in property paths. */\n  var reEscapeChar = /\\\\(\\\\)?/g;\n\n  /**\n   * Used to match\n   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n   */\n  var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n  /** Used to match `RegExp` flags from their coerced string values. */\n  var reFlags = /\\w*$/;\n\n  /** Used to detect bad signed hexadecimal string values. */\n  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n  /** Used to detect binary string values. */\n  var reIsBinary = /^0b[01]+$/i;\n\n  /** Used to detect host constructors (Safari). */\n  var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n  /** Used to detect octal string values. */\n  var reIsOctal = /^0o[0-7]+$/i;\n\n  /** Used to detect unsigned integer values. */\n  var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n  /** Used to match Latin Unicode letters (excluding mathematical operators). */\n  var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n  /** Used to ensure capturing order of template delimiters. */\n  var reNoMatch = /($^)/;\n\n  /** Used to match unescaped characters in compiled string literals. */\n  var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n  /** Used to compose unicode character classes. */\n  var rsAstralRange = '\\\\ud800-\\\\udfff',\n      rsComboMarksRange = '\\\\u0300-\\\\u036f',\n      reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n      rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n      rsDingbatRange = '\\\\u2700-\\\\u27bf',\n      rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n      rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n      rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n      rsPunctuationRange = '\\\\u2000-\\\\u206f',\n      rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n      rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n      rsVarRange = '\\\\ufe0e\\\\ufe0f',\n      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n  /** Used to compose unicode capture groups. */\n  var rsApos = \"['\\u2019]\",\n      rsAstral = '[' + rsAstralRange + ']',\n      rsBreak = '[' + rsBreakRange + ']',\n      rsCombo = '[' + rsComboRange + ']',\n      rsDigits = '\\\\d+',\n      rsDingbat = '[' + rsDingbatRange + ']',\n      rsLower = '[' + rsLowerRange + ']',\n      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n      rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n      rsNonAstral = '[^' + rsAstralRange + ']',\n      rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n      rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n      rsUpper = '[' + rsUpperRange + ']',\n      rsZWJ = '\\\\u200d';\n\n  /** Used to compose unicode regexes. */\n  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n      reOptMod = rsModifier + '?',\n      rsOptVar = '[' + rsVarRange + ']?',\n      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n      rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n      rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n      rsSeq = rsOptVar + reOptMod + rsOptJoin,\n      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n  /** Used to match apostrophes. */\n  var reApos = RegExp(rsApos, 'g');\n\n  /**\n   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n   */\n  var reComboMark = RegExp(rsCombo, 'g');\n\n  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n  /** Used to match complex or compound words. */\n  var reUnicodeWord = RegExp([\n    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n    rsUpper + '+' + rsOptContrUpper,\n    rsOrdUpper,\n    rsOrdLower,\n    rsDigits,\n    rsEmoji\n  ].join('|'), 'g');\n\n  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n  /** Used to detect strings that need a more robust regexp to match words. */\n  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n  /** Used to assign default `context` object properties. */\n  var contextProps = [\n    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n  ];\n\n  /** Used to make template sourceURLs easier to identify. */\n  var templateCounter = -1;\n\n  /** Used to identify `toStringTag` values of typed arrays. */\n  var typedArrayTags = {};\n  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n  typedArrayTags[uint32Tag] = true;\n  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n  typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n  typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n  typedArrayTags[setTag] = typedArrayTags[stringTag] =\n  typedArrayTags[weakMapTag] = false;\n\n  /** Used to identify `toStringTag` values supported by `_.clone`. */\n  var cloneableTags = {};\n  cloneableTags[argsTag] = cloneableTags[arrayTag] =\n  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n  cloneableTags[boolTag] = cloneableTags[dateTag] =\n  cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n  cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n  cloneableTags[int32Tag] = cloneableTags[mapTag] =\n  cloneableTags[numberTag] = cloneableTags[objectTag] =\n  cloneableTags[regexpTag] = cloneableTags[setTag] =\n  cloneableTags[stringTag] = cloneableTags[symbolTag] =\n  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n  cloneableTags[errorTag] = cloneableTags[funcTag] =\n  cloneableTags[weakMapTag] = false;\n\n  /** Used to map Latin Unicode letters to basic Latin letters. */\n  var deburredLetters = {\n    // Latin-1 Supplement block.\n    '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n    '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n    '\\xc7': 'C',  '\\xe7': 'c',\n    '\\xd0': 'D',  '\\xf0': 'd',\n    '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n    '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n    '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n    '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n    '\\xd1': 'N',  '\\xf1': 'n',\n    '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n    '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n    '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n    '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n    '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n    '\\xc6': 'Ae', '\\xe6': 'ae',\n    '\\xde': 'Th', '\\xfe': 'th',\n    '\\xdf': 'ss',\n    // Latin Extended-A block.\n    '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n    '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n    '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n    '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n    '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n    '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n    '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n    '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n    '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n    '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n    '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n    '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n    '\\u0134': 'J',  '\\u0135': 'j',\n    '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n    '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n    '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n    '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n    '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n    '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n    '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n    '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n    '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n    '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n    '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n    '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n    '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n    '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n    '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n    '\\u0174': 'W',  '\\u0175': 'w',\n    '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n    '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n    '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n    '\\u0132': 'IJ', '\\u0133': 'ij',\n    '\\u0152': 'Oe', '\\u0153': 'oe',\n    '\\u0149': \"'n\", '\\u017f': 's'\n  };\n\n  /** Used to map characters to HTML entities. */\n  var htmlEscapes = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n  };\n\n  /** Used to map HTML entities to characters. */\n  var htmlUnescapes = {\n    '&amp;': '&',\n    '&lt;': '<',\n    '&gt;': '>',\n    '&quot;': '\"',\n    '&#39;': \"'\"\n  };\n\n  /** Used to escape characters for inclusion in compiled string literals. */\n  var stringEscapes = {\n    '\\\\': '\\\\',\n    \"'\": \"'\",\n    '\\n': 'n',\n    '\\r': 'r',\n    '\\u2028': 'u2028',\n    '\\u2029': 'u2029'\n  };\n\n  /** Built-in method references without a dependency on `root`. */\n  var freeParseFloat = parseFloat,\n      freeParseInt = parseInt;\n\n  /** Detect free variable `global` from Node.js. */\n  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n  /** Detect free variable `self`. */\n  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n  /** Used as a reference to the global object. */\n  var root = freeGlobal || freeSelf || Function('return this')();\n\n  /** Detect free variable `exports`. */\n  var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n  /** Detect free variable `module`. */\n  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n  /** Detect the popular CommonJS extension `module.exports`. */\n  var moduleExports = freeModule && freeModule.exports === freeExports;\n\n  /** Detect free variable `process` from Node.js. */\n  var freeProcess = moduleExports && freeGlobal.process;\n\n  /** Used to access faster Node.js helpers. */\n  var nodeUtil = (function() {\n    try {\n      // Use `util.types` for Node.js 10+.\n      var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n      if (types) {\n        return types;\n      }\n\n      // Legacy `process.binding('util')` for Node.js < 10.\n      return freeProcess && freeProcess.binding && freeProcess.binding('util');\n    } catch (e) {}\n  }());\n\n  /* Node.js helper references. */\n  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n      nodeIsDate = nodeUtil && nodeUtil.isDate,\n      nodeIsMap = nodeUtil && nodeUtil.isMap,\n      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n      nodeIsSet = nodeUtil && nodeUtil.isSet,\n      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * A faster alternative to `Function#apply`, this function invokes `func`\n   * with the `this` binding of `thisArg` and the arguments of `args`.\n   *\n   * @private\n   * @param {Function} func The function to invoke.\n   * @param {*} thisArg The `this` binding of `func`.\n   * @param {Array} args The arguments to invoke `func` with.\n   * @returns {*} Returns the result of `func`.\n   */\n  function apply(func, thisArg, args) {\n    switch (args.length) {\n      case 0: return func.call(thisArg);\n      case 1: return func.call(thisArg, args[0]);\n      case 2: return func.call(thisArg, args[0], args[1]);\n      case 3: return func.call(thisArg, args[0], args[1], args[2]);\n    }\n    return func.apply(thisArg, args);\n  }\n\n  /**\n   * A specialized version of `baseAggregator` for arrays.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} setter The function to set `accumulator` values.\n   * @param {Function} iteratee The iteratee to transform keys.\n   * @param {Object} accumulator The initial aggregated object.\n   * @returns {Function} Returns `accumulator`.\n   */\n  function arrayAggregator(array, setter, iteratee, accumulator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      var value = array[index];\n      setter(accumulator, value, iteratee(value), array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.forEach` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEach(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (iteratee(array[index], index, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.forEachRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEachRight(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n\n    while (length--) {\n      if (iteratee(array[length], length, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.every` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if all elements pass the predicate check,\n   *  else `false`.\n   */\n  function arrayEvery(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (!predicate(array[index], index, array)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  /**\n   * A specialized version of `_.filter` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {Array} Returns the new filtered array.\n   */\n  function arrayFilter(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (predicate(value, index, array)) {\n        result[resIndex++] = value;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.includes` for arrays without support for\n   * specifying an index to search from.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludes(array, value) {\n    var length = array == null ? 0 : array.length;\n    return !!length && baseIndexOf(array, value, 0) > -1;\n  }\n\n  /**\n   * This function is like `arrayIncludes` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludesWith(array, value, comparator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (comparator(value, array[index])) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * A specialized version of `_.map` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the new mapped array.\n   */\n  function arrayMap(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        result = Array(length);\n\n    while (++index < length) {\n      result[index] = iteratee(array[index], index, array);\n    }\n    return result;\n  }\n\n  /**\n   * Appends the elements of `values` to `array`.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {Array} values The values to append.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayPush(array, values) {\n    var index = -1,\n        length = values.length,\n        offset = array.length;\n\n    while (++index < length) {\n      array[offset + index] = values[index];\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.reduce` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the first element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduce(array, iteratee, accumulator, initAccum) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    if (initAccum && length) {\n      accumulator = array[++index];\n    }\n    while (++index < length) {\n      accumulator = iteratee(accumulator, array[index], index, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.reduceRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the last element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n    var length = array == null ? 0 : array.length;\n    if (initAccum && length) {\n      accumulator = array[--length];\n    }\n    while (length--) {\n      accumulator = iteratee(accumulator, array[length], length, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.some` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if any element passes the predicate check,\n   *  else `false`.\n   */\n  function arraySome(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (predicate(array[index], index, array)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Gets the size of an ASCII `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  var asciiSize = baseProperty('length');\n\n  /**\n   * Converts an ASCII `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function asciiToArray(string) {\n    return string.split('');\n  }\n\n  /**\n   * Splits an ASCII `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function asciiWords(string) {\n    return string.match(reAsciiWord) || [];\n  }\n\n  /**\n   * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n   * without support for iteratee shorthands, which iterates over `collection`\n   * using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the found element or its key, else `undefined`.\n   */\n  function baseFindKey(collection, predicate, eachFunc) {\n    var result;\n    eachFunc(collection, function(value, key, collection) {\n      if (predicate(value, key, collection)) {\n        result = key;\n        return false;\n      }\n    });\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.findIndex` and `_.findLastIndex` without\n   * support for iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {number} fromIndex The index to search from.\n   * @param {boolean} [fromRight] Specify iterating from right to left.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseFindIndex(array, predicate, fromIndex, fromRight) {\n    var length = array.length,\n        index = fromIndex + (fromRight ? 1 : -1);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (predicate(array[index], index, array)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOf(array, value, fromIndex) {\n    return value === value\n      ? strictIndexOf(array, value, fromIndex)\n      : baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n\n  /**\n   * This function is like `baseIndexOf` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOfWith(array, value, fromIndex, comparator) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (comparator(array[index], value)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.isNaN` without support for number objects.\n   *\n   * @private\n   * @param {*} value The value to check.\n   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n   */\n  function baseIsNaN(value) {\n    return value !== value;\n  }\n\n  /**\n   * The base implementation of `_.mean` and `_.meanBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the mean.\n   */\n  function baseMean(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n    return length ? (baseSum(array, iteratee) / length) : NAN;\n  }\n\n  /**\n   * The base implementation of `_.property` without support for deep paths.\n   *\n   * @private\n   * @param {string} key The key of the property to get.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function baseProperty(key) {\n    return function(object) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.propertyOf` without support for deep paths.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function basePropertyOf(object) {\n    return function(key) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.reduce` and `_.reduceRight`, without support\n   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} accumulator The initial value.\n   * @param {boolean} initAccum Specify using the first or last element of\n   *  `collection` as the initial value.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the accumulated value.\n   */\n  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n    eachFunc(collection, function(value, index, collection) {\n      accumulator = initAccum\n        ? (initAccum = false, value)\n        : iteratee(accumulator, value, index, collection);\n    });\n    return accumulator;\n  }\n\n  /**\n   * The base implementation of `_.sortBy` which uses `comparer` to define the\n   * sort order of `array` and replaces criteria objects with their corresponding\n   * values.\n   *\n   * @private\n   * @param {Array} array The array to sort.\n   * @param {Function} comparer The function to define sort order.\n   * @returns {Array} Returns `array`.\n   */\n  function baseSortBy(array, comparer) {\n    var length = array.length;\n\n    array.sort(comparer);\n    while (length--) {\n      array[length] = array[length].value;\n    }\n    return array;\n  }\n\n  /**\n   * The base implementation of `_.sum` and `_.sumBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the sum.\n   */\n  function baseSum(array, iteratee) {\n    var result,\n        index = -1,\n        length = array.length;\n\n    while (++index < length) {\n      var current = iteratee(array[index]);\n      if (current !== undefined) {\n        result = result === undefined ? current : (result + current);\n      }\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.times` without support for iteratee shorthands\n   * or max array length checks.\n   *\n   * @private\n   * @param {number} n The number of times to invoke `iteratee`.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the array of results.\n   */\n  function baseTimes(n, iteratee) {\n    var index = -1,\n        result = Array(n);\n\n    while (++index < n) {\n      result[index] = iteratee(index);\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n   * of key-value pairs for `object` corresponding to the property names of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the key-value pairs.\n   */\n  function baseToPairs(object, props) {\n    return arrayMap(props, function(key) {\n      return [key, object[key]];\n    });\n  }\n\n  /**\n   * The base implementation of `_.trim`.\n   *\n   * @private\n   * @param {string} string The string to trim.\n   * @returns {string} Returns the trimmed string.\n   */\n  function baseTrim(string) {\n    return string\n      ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n      : string;\n  }\n\n  /**\n   * The base implementation of `_.unary` without support for storing metadata.\n   *\n   * @private\n   * @param {Function} func The function to cap arguments for.\n   * @returns {Function} Returns the new capped function.\n   */\n  function baseUnary(func) {\n    return function(value) {\n      return func(value);\n    };\n  }\n\n  /**\n   * The base implementation of `_.values` and `_.valuesIn` which creates an\n   * array of `object` property values corresponding to the property names\n   * of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the array of property values.\n   */\n  function baseValues(object, props) {\n    return arrayMap(props, function(key) {\n      return object[key];\n    });\n  }\n\n  /**\n   * Checks if a `cache` value for `key` exists.\n   *\n   * @private\n   * @param {Object} cache The cache to query.\n   * @param {string} key The key of the entry to check.\n   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n   */\n  function cacheHas(cache, key) {\n    return cache.has(key);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the first unmatched string symbol.\n   */\n  function charsStartIndex(strSymbols, chrSymbols) {\n    var index = -1,\n        length = strSymbols.length;\n\n    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the last unmatched string symbol.\n   */\n  function charsEndIndex(strSymbols, chrSymbols) {\n    var index = strSymbols.length;\n\n    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Gets the number of `placeholder` occurrences in `array`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} placeholder The placeholder to search for.\n   * @returns {number} Returns the placeholder count.\n   */\n  function countHolders(array, placeholder) {\n    var length = array.length,\n        result = 0;\n\n    while (length--) {\n      if (array[length] === placeholder) {\n        ++result;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n   * letters to basic Latin letters.\n   *\n   * @private\n   * @param {string} letter The matched letter to deburr.\n   * @returns {string} Returns the deburred letter.\n   */\n  var deburrLetter = basePropertyOf(deburredLetters);\n\n  /**\n   * Used by `_.escape` to convert characters to HTML entities.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n  /**\n   * Used by `_.template` to escape characters for inclusion in compiled string literals.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  function escapeStringChar(chr) {\n    return '\\\\' + stringEscapes[chr];\n  }\n\n  /**\n   * Gets the value at `key` of `object`.\n   *\n   * @private\n   * @param {Object} [object] The object to query.\n   * @param {string} key The key of the property to get.\n   * @returns {*} Returns the property value.\n   */\n  function getValue(object, key) {\n    return object == null ? undefined : object[key];\n  }\n\n  /**\n   * Checks if `string` contains Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n   */\n  function hasUnicode(string) {\n    return reHasUnicode.test(string);\n  }\n\n  /**\n   * Checks if `string` contains a word composed of Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a word is found, else `false`.\n   */\n  function hasUnicodeWord(string) {\n    return reHasUnicodeWord.test(string);\n  }\n\n  /**\n   * Converts `iterator` to an array.\n   *\n   * @private\n   * @param {Object} iterator The iterator to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function iteratorToArray(iterator) {\n    var data,\n        result = [];\n\n    while (!(data = iterator.next()).done) {\n      result.push(data.value);\n    }\n    return result;\n  }\n\n  /**\n   * Converts `map` to its key-value pairs.\n   *\n   * @private\n   * @param {Object} map The map to convert.\n   * @returns {Array} Returns the key-value pairs.\n   */\n  function mapToArray(map) {\n    var index = -1,\n        result = Array(map.size);\n\n    map.forEach(function(value, key) {\n      result[++index] = [key, value];\n    });\n    return result;\n  }\n\n  /**\n   * Creates a unary function that invokes `func` with its argument transformed.\n   *\n   * @private\n   * @param {Function} func The function to wrap.\n   * @param {Function} transform The argument transform.\n   * @returns {Function} Returns the new function.\n   */\n  function overArg(func, transform) {\n    return function(arg) {\n      return func(transform(arg));\n    };\n  }\n\n  /**\n   * Replaces all `placeholder` elements in `array` with an internal placeholder\n   * and returns an array of their indexes.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {*} placeholder The placeholder to replace.\n   * @returns {Array} Returns the new array of placeholder indexes.\n   */\n  function replaceHolders(array, placeholder) {\n    var index = -1,\n        length = array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (value === placeholder || value === PLACEHOLDER) {\n        array[index] = PLACEHOLDER;\n        result[resIndex++] = index;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Converts `set` to an array of its values.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the values.\n   */\n  function setToArray(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = value;\n    });\n    return result;\n  }\n\n  /**\n   * Converts `set` to its value-value pairs.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the value-value pairs.\n   */\n  function setToPairs(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = [value, value];\n    });\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.indexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictIndexOf(array, value, fromIndex) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * A specialized version of `_.lastIndexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictLastIndexOf(array, value, fromIndex) {\n    var index = fromIndex + 1;\n    while (index--) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return index;\n  }\n\n  /**\n   * Gets the number of symbols in `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the string size.\n   */\n  function stringSize(string) {\n    return hasUnicode(string)\n      ? unicodeSize(string)\n      : asciiSize(string);\n  }\n\n  /**\n   * Converts `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function stringToArray(string) {\n    return hasUnicode(string)\n      ? unicodeToArray(string)\n      : asciiToArray(string);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n   * character of `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the index of the last non-whitespace character.\n   */\n  function trimmedEndIndex(string) {\n    var index = string.length;\n\n    while (index-- && reWhitespace.test(string.charAt(index))) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.unescape` to convert HTML entities to characters.\n   *\n   * @private\n   * @param {string} chr The matched character to unescape.\n   * @returns {string} Returns the unescaped character.\n   */\n  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n  /**\n   * Gets the size of a Unicode `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  function unicodeSize(string) {\n    var result = reUnicode.lastIndex = 0;\n    while (reUnicode.test(string)) {\n      ++result;\n    }\n    return result;\n  }\n\n  /**\n   * Converts a Unicode `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function unicodeToArray(string) {\n    return string.match(reUnicode) || [];\n  }\n\n  /**\n   * Splits a Unicode `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function unicodeWords(string) {\n    return string.match(reUnicodeWord) || [];\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Create a new pristine `lodash` function using the `context` object.\n   *\n   * @static\n   * @memberOf _\n   * @since 1.1.0\n   * @category Util\n   * @param {Object} [context=root] The context object.\n   * @returns {Function} Returns a new `lodash` function.\n   * @example\n   *\n   * _.mixin({ 'foo': _.constant('foo') });\n   *\n   * var lodash = _.runInContext();\n   * lodash.mixin({ 'bar': lodash.constant('bar') });\n   *\n   * _.isFunction(_.foo);\n   * // => true\n   * _.isFunction(_.bar);\n   * // => false\n   *\n   * lodash.isFunction(lodash.foo);\n   * // => false\n   * lodash.isFunction(lodash.bar);\n   * // => true\n   *\n   * // Create a suped-up `defer` in Node.js.\n   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n   */\n  var runInContext = (function runInContext(context) {\n    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n    /** Built-in constructor references. */\n    var Array = context.Array,\n        Date = context.Date,\n        Error = context.Error,\n        Function = context.Function,\n        Math = context.Math,\n        Object = context.Object,\n        RegExp = context.RegExp,\n        String = context.String,\n        TypeError = context.TypeError;\n\n    /** Used for built-in method references. */\n    var arrayProto = Array.prototype,\n        funcProto = Function.prototype,\n        objectProto = Object.prototype;\n\n    /** Used to detect overreaching core-js shims. */\n    var coreJsData = context['__core-js_shared__'];\n\n    /** Used to resolve the decompiled source of functions. */\n    var funcToString = funcProto.toString;\n\n    /** Used to check objects for own properties. */\n    var hasOwnProperty = objectProto.hasOwnProperty;\n\n    /** Used to generate unique IDs. */\n    var idCounter = 0;\n\n    /** Used to detect methods masquerading as native. */\n    var maskSrcKey = (function() {\n      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n      return uid ? ('Symbol(src)_1.' + uid) : '';\n    }());\n\n    /**\n     * Used to resolve the\n     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n     * of values.\n     */\n    var nativeObjectToString = objectProto.toString;\n\n    /** Used to infer the `Object` constructor. */\n    var objectCtorString = funcToString.call(Object);\n\n    /** Used to restore the original `_` reference in `_.noConflict`. */\n    var oldDash = root._;\n\n    /** Used to detect if a method is native. */\n    var reIsNative = RegExp('^' +\n      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n      .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n    );\n\n    /** Built-in value references. */\n    var Buffer = moduleExports ? context.Buffer : undefined,\n        Symbol = context.Symbol,\n        Uint8Array = context.Uint8Array,\n        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n        getPrototype = overArg(Object.getPrototypeOf, Object),\n        objectCreate = Object.create,\n        propertyIsEnumerable = objectProto.propertyIsEnumerable,\n        splice = arrayProto.splice,\n        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n        symIterator = Symbol ? Symbol.iterator : undefined,\n        symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n    var defineProperty = (function() {\n      try {\n        var func = getNative(Object, 'defineProperty');\n        func({}, '', {});\n        return func;\n      } catch (e) {}\n    }());\n\n    /** Mocked built-ins. */\n    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n        ctxNow = Date && Date.now !== root.Date.now && Date.now,\n        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n    /* Built-in method references for those with the same name as other `lodash` methods. */\n    var nativeCeil = Math.ceil,\n        nativeFloor = Math.floor,\n        nativeGetSymbols = Object.getOwnPropertySymbols,\n        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n        nativeIsFinite = context.isFinite,\n        nativeJoin = arrayProto.join,\n        nativeKeys = overArg(Object.keys, Object),\n        nativeMax = Math.max,\n        nativeMin = Math.min,\n        nativeNow = Date.now,\n        nativeParseInt = context.parseInt,\n        nativeRandom = Math.random,\n        nativeReverse = arrayProto.reverse;\n\n    /* Built-in method references that are verified to be native. */\n    var DataView = getNative(context, 'DataView'),\n        Map = getNative(context, 'Map'),\n        Promise = getNative(context, 'Promise'),\n        Set = getNative(context, 'Set'),\n        WeakMap = getNative(context, 'WeakMap'),\n        nativeCreate = getNative(Object, 'create');\n\n    /** Used to store function metadata. */\n    var metaMap = WeakMap && new WeakMap;\n\n    /** Used to lookup unminified function names. */\n    var realNames = {};\n\n    /** Used to detect maps, sets, and weakmaps. */\n    var dataViewCtorString = toSource(DataView),\n        mapCtorString = toSource(Map),\n        promiseCtorString = toSource(Promise),\n        setCtorString = toSource(Set),\n        weakMapCtorString = toSource(WeakMap);\n\n    /** Used to convert symbols to primitives and strings. */\n    var symbolProto = Symbol ? Symbol.prototype : undefined,\n        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n        symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` object which wraps `value` to enable implicit method\n     * chain sequences. Methods that operate on and return arrays, collections,\n     * and functions can be chained together. Methods that retrieve a single value\n     * or may return a primitive value will automatically end the chain sequence\n     * and return the unwrapped value. Otherwise, the value must be unwrapped\n     * with `_#value`.\n     *\n     * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n     * enabled using `_.chain`.\n     *\n     * The execution of chained methods is lazy, that is, it's deferred until\n     * `_#value` is implicitly or explicitly called.\n     *\n     * Lazy evaluation allows several methods to support shortcut fusion.\n     * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n     * the creation of intermediate arrays and can greatly reduce the number of\n     * iteratee executions. Sections of a chain sequence qualify for shortcut\n     * fusion if the section is applied to an array and iteratees accept only\n     * one argument. The heuristic for whether a section qualifies for shortcut\n     * fusion is subject to change.\n     *\n     * Chaining is supported in custom builds as long as the `_#value` method is\n     * directly or indirectly included in the build.\n     *\n     * In addition to lodash methods, wrappers have `Array` and `String` methods.\n     *\n     * The wrapper `Array` methods are:\n     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n     *\n     * The wrapper `String` methods are:\n     * `replace` and `split`\n     *\n     * The wrapper methods that support shortcut fusion are:\n     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n     *\n     * The chainable wrapper methods are:\n     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n     * `zipObject`, `zipObjectDeep`, and `zipWith`\n     *\n     * The wrapper methods that are **not** chainable by default are:\n     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n     * `upperFirst`, `value`, and `words`\n     *\n     * @name _\n     * @constructor\n     * @category Seq\n     * @param {*} value The value to wrap in a `lodash` instance.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2, 3]);\n     *\n     * // Returns an unwrapped value.\n     * wrapped.reduce(_.add);\n     * // => 6\n     *\n     * // Returns a wrapped value.\n     * var squares = wrapped.map(square);\n     *\n     * _.isArray(squares);\n     * // => false\n     *\n     * _.isArray(squares.value());\n     * // => true\n     */\n    function lodash(value) {\n      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n        if (value instanceof LodashWrapper) {\n          return value;\n        }\n        if (hasOwnProperty.call(value, '__wrapped__')) {\n          return wrapperClone(value);\n        }\n      }\n      return new LodashWrapper(value);\n    }\n\n    /**\n     * The base implementation of `_.create` without support for assigning\n     * properties to the created object.\n     *\n     * @private\n     * @param {Object} proto The object to inherit from.\n     * @returns {Object} Returns the new object.\n     */\n    var baseCreate = (function() {\n      function object() {}\n      return function(proto) {\n        if (!isObject(proto)) {\n          return {};\n        }\n        if (objectCreate) {\n          return objectCreate(proto);\n        }\n        object.prototype = proto;\n        var result = new object;\n        object.prototype = undefined;\n        return result;\n      };\n    }());\n\n    /**\n     * The function whose prototype chain sequence wrappers inherit from.\n     *\n     * @private\n     */\n    function baseLodash() {\n      // No operation performed.\n    }\n\n    /**\n     * The base constructor for creating `lodash` wrapper objects.\n     *\n     * @private\n     * @param {*} value The value to wrap.\n     * @param {boolean} [chainAll] Enable explicit method chain sequences.\n     */\n    function LodashWrapper(value, chainAll) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__chain__ = !!chainAll;\n      this.__index__ = 0;\n      this.__values__ = undefined;\n    }\n\n    /**\n     * By default, the template delimiters used by lodash are like those in\n     * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n     * following template settings to use alternative delimiters.\n     *\n     * @static\n     * @memberOf _\n     * @type {Object}\n     */\n    lodash.templateSettings = {\n\n      /**\n       * Used to detect `data` property values to be HTML-escaped.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'escape': reEscape,\n\n      /**\n       * Used to detect code to be evaluated.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'evaluate': reEvaluate,\n\n      /**\n       * Used to detect `data` property values to inject.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'interpolate': reInterpolate,\n\n      /**\n       * Used to reference the data object in the template text.\n       *\n       * @memberOf _.templateSettings\n       * @type {string}\n       */\n      'variable': '',\n\n      /**\n       * Used to import variables into the compiled template.\n       *\n       * @memberOf _.templateSettings\n       * @type {Object}\n       */\n      'imports': {\n\n        /**\n         * A reference to the `lodash` function.\n         *\n         * @memberOf _.templateSettings.imports\n         * @type {Function}\n         */\n        '_': lodash\n      }\n    };\n\n    // Ensure wrappers are instances of `baseLodash`.\n    lodash.prototype = baseLodash.prototype;\n    lodash.prototype.constructor = lodash;\n\n    LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n    LodashWrapper.prototype.constructor = LodashWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n     *\n     * @private\n     * @constructor\n     * @param {*} value The value to wrap.\n     */\n    function LazyWrapper(value) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__dir__ = 1;\n      this.__filtered__ = false;\n      this.__iteratees__ = [];\n      this.__takeCount__ = MAX_ARRAY_LENGTH;\n      this.__views__ = [];\n    }\n\n    /**\n     * Creates a clone of the lazy wrapper object.\n     *\n     * @private\n     * @name clone\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the cloned `LazyWrapper` object.\n     */\n    function lazyClone() {\n      var result = new LazyWrapper(this.__wrapped__);\n      result.__actions__ = copyArray(this.__actions__);\n      result.__dir__ = this.__dir__;\n      result.__filtered__ = this.__filtered__;\n      result.__iteratees__ = copyArray(this.__iteratees__);\n      result.__takeCount__ = this.__takeCount__;\n      result.__views__ = copyArray(this.__views__);\n      return result;\n    }\n\n    /**\n     * Reverses the direction of lazy iteration.\n     *\n     * @private\n     * @name reverse\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the new reversed `LazyWrapper` object.\n     */\n    function lazyReverse() {\n      if (this.__filtered__) {\n        var result = new LazyWrapper(this);\n        result.__dir__ = -1;\n        result.__filtered__ = true;\n      } else {\n        result = this.clone();\n        result.__dir__ *= -1;\n      }\n      return result;\n    }\n\n    /**\n     * Extracts the unwrapped value from its lazy wrapper.\n     *\n     * @private\n     * @name value\n     * @memberOf LazyWrapper\n     * @returns {*} Returns the unwrapped value.\n     */\n    function lazyValue() {\n      var array = this.__wrapped__.value(),\n          dir = this.__dir__,\n          isArr = isArray(array),\n          isRight = dir < 0,\n          arrLength = isArr ? array.length : 0,\n          view = getView(0, arrLength, this.__views__),\n          start = view.start,\n          end = view.end,\n          length = end - start,\n          index = isRight ? end : (start - 1),\n          iteratees = this.__iteratees__,\n          iterLength = iteratees.length,\n          resIndex = 0,\n          takeCount = nativeMin(length, this.__takeCount__);\n\n      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n        return baseWrapperValue(array, this.__actions__);\n      }\n      var result = [];\n\n      outer:\n      while (length-- && resIndex < takeCount) {\n        index += dir;\n\n        var iterIndex = -1,\n            value = array[index];\n\n        while (++iterIndex < iterLength) {\n          var data = iteratees[iterIndex],\n              iteratee = data.iteratee,\n              type = data.type,\n              computed = iteratee(value);\n\n          if (type == LAZY_MAP_FLAG) {\n            value = computed;\n          } else if (!computed) {\n            if (type == LAZY_FILTER_FLAG) {\n              continue outer;\n            } else {\n              break outer;\n            }\n          }\n        }\n        result[resIndex++] = value;\n      }\n      return result;\n    }\n\n    // Ensure `LazyWrapper` is an instance of `baseLodash`.\n    LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n    LazyWrapper.prototype.constructor = LazyWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a hash object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Hash(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the hash.\n     *\n     * @private\n     * @name clear\n     * @memberOf Hash\n     */\n    function hashClear() {\n      this.__data__ = nativeCreate ? nativeCreate(null) : {};\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the hash.\n     *\n     * @private\n     * @name delete\n     * @memberOf Hash\n     * @param {Object} hash The hash to modify.\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function hashDelete(key) {\n      var result = this.has(key) && delete this.__data__[key];\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the hash value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Hash\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function hashGet(key) {\n      var data = this.__data__;\n      if (nativeCreate) {\n        var result = data[key];\n        return result === HASH_UNDEFINED ? undefined : result;\n      }\n      return hasOwnProperty.call(data, key) ? data[key] : undefined;\n    }\n\n    /**\n     * Checks if a hash value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Hash\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function hashHas(key) {\n      var data = this.__data__;\n      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n    }\n\n    /**\n     * Sets the hash `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Hash\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the hash instance.\n     */\n    function hashSet(key, value) {\n      var data = this.__data__;\n      this.size += this.has(key) ? 0 : 1;\n      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n      return this;\n    }\n\n    // Add methods to `Hash`.\n    Hash.prototype.clear = hashClear;\n    Hash.prototype['delete'] = hashDelete;\n    Hash.prototype.get = hashGet;\n    Hash.prototype.has = hashHas;\n    Hash.prototype.set = hashSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an list cache object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function ListCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the list cache.\n     *\n     * @private\n     * @name clear\n     * @memberOf ListCache\n     */\n    function listCacheClear() {\n      this.__data__ = [];\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the list cache.\n     *\n     * @private\n     * @name delete\n     * @memberOf ListCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function listCacheDelete(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        return false;\n      }\n      var lastIndex = data.length - 1;\n      if (index == lastIndex) {\n        data.pop();\n      } else {\n        splice.call(data, index, 1);\n      }\n      --this.size;\n      return true;\n    }\n\n    /**\n     * Gets the list cache value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf ListCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function listCacheGet(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      return index < 0 ? undefined : data[index][1];\n    }\n\n    /**\n     * Checks if a list cache value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf ListCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function listCacheHas(key) {\n      return assocIndexOf(this.__data__, key) > -1;\n    }\n\n    /**\n     * Sets the list cache `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf ListCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the list cache instance.\n     */\n    function listCacheSet(key, value) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        ++this.size;\n        data.push([key, value]);\n      } else {\n        data[index][1] = value;\n      }\n      return this;\n    }\n\n    // Add methods to `ListCache`.\n    ListCache.prototype.clear = listCacheClear;\n    ListCache.prototype['delete'] = listCacheDelete;\n    ListCache.prototype.get = listCacheGet;\n    ListCache.prototype.has = listCacheHas;\n    ListCache.prototype.set = listCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a map cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function MapCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the map.\n     *\n     * @private\n     * @name clear\n     * @memberOf MapCache\n     */\n    function mapCacheClear() {\n      this.size = 0;\n      this.__data__ = {\n        'hash': new Hash,\n        'map': new (Map || ListCache),\n        'string': new Hash\n      };\n    }\n\n    /**\n     * Removes `key` and its value from the map.\n     *\n     * @private\n     * @name delete\n     * @memberOf MapCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function mapCacheDelete(key) {\n      var result = getMapData(this, key)['delete'](key);\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the map value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf MapCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function mapCacheGet(key) {\n      return getMapData(this, key).get(key);\n    }\n\n    /**\n     * Checks if a map value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf MapCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function mapCacheHas(key) {\n      return getMapData(this, key).has(key);\n    }\n\n    /**\n     * Sets the map `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf MapCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the map cache instance.\n     */\n    function mapCacheSet(key, value) {\n      var data = getMapData(this, key),\n          size = data.size;\n\n      data.set(key, value);\n      this.size += data.size == size ? 0 : 1;\n      return this;\n    }\n\n    // Add methods to `MapCache`.\n    MapCache.prototype.clear = mapCacheClear;\n    MapCache.prototype['delete'] = mapCacheDelete;\n    MapCache.prototype.get = mapCacheGet;\n    MapCache.prototype.has = mapCacheHas;\n    MapCache.prototype.set = mapCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     *\n     * Creates an array cache object to store unique values.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [values] The values to cache.\n     */\n    function SetCache(values) {\n      var index = -1,\n          length = values == null ? 0 : values.length;\n\n      this.__data__ = new MapCache;\n      while (++index < length) {\n        this.add(values[index]);\n      }\n    }\n\n    /**\n     * Adds `value` to the array cache.\n     *\n     * @private\n     * @name add\n     * @memberOf SetCache\n     * @alias push\n     * @param {*} value The value to cache.\n     * @returns {Object} Returns the cache instance.\n     */\n    function setCacheAdd(value) {\n      this.__data__.set(value, HASH_UNDEFINED);\n      return this;\n    }\n\n    /**\n     * Checks if `value` is in the array cache.\n     *\n     * @private\n     * @name has\n     * @memberOf SetCache\n     * @param {*} value The value to search for.\n     * @returns {number} Returns `true` if `value` is found, else `false`.\n     */\n    function setCacheHas(value) {\n      return this.__data__.has(value);\n    }\n\n    // Add methods to `SetCache`.\n    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n    SetCache.prototype.has = setCacheHas;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a stack cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Stack(entries) {\n      var data = this.__data__ = new ListCache(entries);\n      this.size = data.size;\n    }\n\n    /**\n     * Removes all key-value entries from the stack.\n     *\n     * @private\n     * @name clear\n     * @memberOf Stack\n     */\n    function stackClear() {\n      this.__data__ = new ListCache;\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the stack.\n     *\n     * @private\n     * @name delete\n     * @memberOf Stack\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function stackDelete(key) {\n      var data = this.__data__,\n          result = data['delete'](key);\n\n      this.size = data.size;\n      return result;\n    }\n\n    /**\n     * Gets the stack value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Stack\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function stackGet(key) {\n      return this.__data__.get(key);\n    }\n\n    /**\n     * Checks if a stack value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Stack\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function stackHas(key) {\n      return this.__data__.has(key);\n    }\n\n    /**\n     * Sets the stack `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Stack\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the stack cache instance.\n     */\n    function stackSet(key, value) {\n      var data = this.__data__;\n      if (data instanceof ListCache) {\n        var pairs = data.__data__;\n        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n          pairs.push([key, value]);\n          this.size = ++data.size;\n          return this;\n        }\n        data = this.__data__ = new MapCache(pairs);\n      }\n      data.set(key, value);\n      this.size = data.size;\n      return this;\n    }\n\n    // Add methods to `Stack`.\n    Stack.prototype.clear = stackClear;\n    Stack.prototype['delete'] = stackDelete;\n    Stack.prototype.get = stackGet;\n    Stack.prototype.has = stackHas;\n    Stack.prototype.set = stackSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of the enumerable property names of the array-like `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @param {boolean} inherited Specify returning inherited property names.\n     * @returns {Array} Returns the array of property names.\n     */\n    function arrayLikeKeys(value, inherited) {\n      var isArr = isArray(value),\n          isArg = !isArr && isArguments(value),\n          isBuff = !isArr && !isArg && isBuffer(value),\n          isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n          skipIndexes = isArr || isArg || isBuff || isType,\n          result = skipIndexes ? baseTimes(value.length, String) : [],\n          length = result.length;\n\n      for (var key in value) {\n        if ((inherited || hasOwnProperty.call(value, key)) &&\n            !(skipIndexes && (\n               // Safari 9 has enumerable `arguments.length` in strict mode.\n               key == 'length' ||\n               // Node.js 0.10 has enumerable non-index properties on buffers.\n               (isBuff && (key == 'offset' || key == 'parent')) ||\n               // PhantomJS 2 has enumerable non-index properties on typed arrays.\n               (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n               // Skip index properties.\n               isIndex(key, length)\n            ))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `_.sample` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @returns {*} Returns the random element.\n     */\n    function arraySample(array) {\n      var length = array.length;\n      return length ? array[baseRandom(0, length - 1)] : undefined;\n    }\n\n    /**\n     * A specialized version of `_.sampleSize` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function arraySampleSize(array, n) {\n      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * A specialized version of `_.shuffle` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function arrayShuffle(array) {\n      return shuffleSelf(copyArray(array));\n    }\n\n    /**\n     * This function is like `assignValue` except that it doesn't assign\n     * `undefined` values.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignMergeValue(object, key, value) {\n      if ((value !== undefined && !eq(object[key], value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Assigns `value` to `key` of `object` if the existing value is not equivalent\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignValue(object, key, value) {\n      var objValue = object[key];\n      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Gets the index at which the `key` is found in `array` of key-value pairs.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {*} key The key to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     */\n    function assocIndexOf(array, key) {\n      var length = array.length;\n      while (length--) {\n        if (eq(array[length][0], key)) {\n          return length;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * Aggregates elements of `collection` on `accumulator` with keys transformed\n     * by `iteratee` and values set by `setter`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform keys.\n     * @param {Object} accumulator The initial aggregated object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseAggregator(collection, setter, iteratee, accumulator) {\n      baseEach(collection, function(value, key, collection) {\n        setter(accumulator, value, iteratee(value), collection);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.assign` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssign(object, source) {\n      return object && copyObject(source, keys(source), object);\n    }\n\n    /**\n     * The base implementation of `_.assignIn` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssignIn(object, source) {\n      return object && copyObject(source, keysIn(source), object);\n    }\n\n    /**\n     * The base implementation of `assignValue` and `assignMergeValue` without\n     * value checks.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function baseAssignValue(object, key, value) {\n      if (key == '__proto__' && defineProperty) {\n        defineProperty(object, key, {\n          'configurable': true,\n          'enumerable': true,\n          'value': value,\n          'writable': true\n        });\n      } else {\n        object[key] = value;\n      }\n    }\n\n    /**\n     * The base implementation of `_.at` without support for individual paths.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Array} Returns the picked elements.\n     */\n    function baseAt(object, paths) {\n      var index = -1,\n          length = paths.length,\n          result = Array(length),\n          skip = object == null;\n\n      while (++index < length) {\n        result[index] = skip ? undefined : get(object, paths[index]);\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.clamp` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     */\n    function baseClamp(number, lower, upper) {\n      if (number === number) {\n        if (upper !== undefined) {\n          number = number <= upper ? number : upper;\n        }\n        if (lower !== undefined) {\n          number = number >= lower ? number : lower;\n        }\n      }\n      return number;\n    }\n\n    /**\n     * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n     * traversed objects.\n     *\n     * @private\n     * @param {*} value The value to clone.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Deep clone\n     *  2 - Flatten inherited properties\n     *  4 - Clone symbols\n     * @param {Function} [customizer] The function to customize cloning.\n     * @param {string} [key] The key of `value`.\n     * @param {Object} [object] The parent object of `value`.\n     * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n     * @returns {*} Returns the cloned value.\n     */\n    function baseClone(value, bitmask, customizer, key, object, stack) {\n      var result,\n          isDeep = bitmask & CLONE_DEEP_FLAG,\n          isFlat = bitmask & CLONE_FLAT_FLAG,\n          isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n      if (customizer) {\n        result = object ? customizer(value, key, object, stack) : customizer(value);\n      }\n      if (result !== undefined) {\n        return result;\n      }\n      if (!isObject(value)) {\n        return value;\n      }\n      var isArr = isArray(value);\n      if (isArr) {\n        result = initCloneArray(value);\n        if (!isDeep) {\n          return copyArray(value, result);\n        }\n      } else {\n        var tag = getTag(value),\n            isFunc = tag == funcTag || tag == genTag;\n\n        if (isBuffer(value)) {\n          return cloneBuffer(value, isDeep);\n        }\n        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n          result = (isFlat || isFunc) ? {} : initCloneObject(value);\n          if (!isDeep) {\n            return isFlat\n              ? copySymbolsIn(value, baseAssignIn(result, value))\n              : copySymbols(value, baseAssign(result, value));\n          }\n        } else {\n          if (!cloneableTags[tag]) {\n            return object ? value : {};\n          }\n          result = initCloneByTag(value, tag, isDeep);\n        }\n      }\n      // Check for circular references and return its corresponding clone.\n      stack || (stack = new Stack);\n      var stacked = stack.get(value);\n      if (stacked) {\n        return stacked;\n      }\n      stack.set(value, result);\n\n      if (isSet(value)) {\n        value.forEach(function(subValue) {\n          result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n        });\n      } else if (isMap(value)) {\n        value.forEach(function(subValue, key) {\n          result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n        });\n      }\n\n      var keysFunc = isFull\n        ? (isFlat ? getAllKeysIn : getAllKeys)\n        : (isFlat ? keysIn : keys);\n\n      var props = isArr ? undefined : keysFunc(value);\n      arrayEach(props || value, function(subValue, key) {\n        if (props) {\n          key = subValue;\n          subValue = value[key];\n        }\n        // Recursively populate clone (susceptible to call stack limits).\n        assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.conforms` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseConforms(source) {\n      var props = keys(source);\n      return function(object) {\n        return baseConformsTo(object, source, props);\n      };\n    }\n\n    /**\n     * The base implementation of `_.conformsTo` which accepts `props` to check.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     */\n    function baseConformsTo(object, source, props) {\n      var length = props.length;\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (length--) {\n        var key = props[length],\n            predicate = source[key],\n            value = object[key];\n\n        if ((value === undefined && !(key in object)) || !predicate(value)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.delay` and `_.defer` which accepts `args`\n     * to provide to `func`.\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {Array} args The arguments to provide to `func`.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    function baseDelay(func, wait, args) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return setTimeout(function() { func.apply(undefined, args); }, wait);\n    }\n\n    /**\n     * The base implementation of methods like `_.difference` without support\n     * for excluding multiple arrays or iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Array} values The values to exclude.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     */\n    function baseDifference(array, values, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          isCommon = true,\n          length = array.length,\n          result = [],\n          valuesLength = values.length;\n\n      if (!length) {\n        return result;\n      }\n      if (iteratee) {\n        values = arrayMap(values, baseUnary(iteratee));\n      }\n      if (comparator) {\n        includes = arrayIncludesWith;\n        isCommon = false;\n      }\n      else if (values.length >= LARGE_ARRAY_SIZE) {\n        includes = cacheHas;\n        isCommon = false;\n        values = new SetCache(values);\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee == null ? value : iteratee(value);\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var valuesIndex = valuesLength;\n          while (valuesIndex--) {\n            if (values[valuesIndex] === computed) {\n              continue outer;\n            }\n          }\n          result.push(value);\n        }\n        else if (!includes(values, computed, comparator)) {\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.forEach` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEach = createBaseEach(baseForOwn);\n\n    /**\n     * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n    /**\n     * The base implementation of `_.every` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`\n     */\n    function baseEvery(collection, predicate) {\n      var result = true;\n      baseEach(collection, function(value, index, collection) {\n        result = !!predicate(value, index, collection);\n        return result;\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of methods like `_.max` and `_.min` which accepts a\n     * `comparator` to determine the extremum value.\n     *\n     * @private\n     * @param {Array} array The array to iterate over.\n     * @param {Function} iteratee The iteratee invoked per iteration.\n     * @param {Function} comparator The comparator used to compare values.\n     * @returns {*} Returns the extremum value.\n     */\n    function baseExtremum(array, iteratee, comparator) {\n      var index = -1,\n          length = array.length;\n\n      while (++index < length) {\n        var value = array[index],\n            current = iteratee(value);\n\n        if (current != null && (computed === undefined\n              ? (current === current && !isSymbol(current))\n              : comparator(current, computed)\n            )) {\n          var computed = current,\n              result = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.fill` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     */\n    function baseFill(array, value, start, end) {\n      var length = array.length;\n\n      start = toInteger(start);\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = (end === undefined || end > length) ? length : toInteger(end);\n      if (end < 0) {\n        end += length;\n      }\n      end = start > end ? 0 : toLength(end);\n      while (start < end) {\n        array[start++] = value;\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.filter` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     */\n    function baseFilter(collection, predicate) {\n      var result = [];\n      baseEach(collection, function(value, index, collection) {\n        if (predicate(value, index, collection)) {\n          result.push(value);\n        }\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.flatten` with support for restricting flattening.\n     *\n     * @private\n     * @param {Array} array The array to flatten.\n     * @param {number} depth The maximum recursion depth.\n     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n     * @param {Array} [result=[]] The initial result value.\n     * @returns {Array} Returns the new flattened array.\n     */\n    function baseFlatten(array, depth, predicate, isStrict, result) {\n      var index = -1,\n          length = array.length;\n\n      predicate || (predicate = isFlattenable);\n      result || (result = []);\n\n      while (++index < length) {\n        var value = array[index];\n        if (depth > 0 && predicate(value)) {\n          if (depth > 1) {\n            // Recursively flatten arrays (susceptible to call stack limits).\n            baseFlatten(value, depth - 1, predicate, isStrict, result);\n          } else {\n            arrayPush(result, value);\n          }\n        } else if (!isStrict) {\n          result[result.length] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `baseForOwn` which iterates over `object`\n     * properties returned by `keysFunc` and invokes `iteratee` for each property.\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseFor = createBaseFor();\n\n    /**\n     * This function is like `baseFor` except that it iterates over properties\n     * in the opposite order.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseForRight = createBaseFor(true);\n\n    /**\n     * The base implementation of `_.forOwn` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwn(object, iteratee) {\n      return object && baseFor(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwnRight(object, iteratee) {\n      return object && baseForRight(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.functions` which creates an array of\n     * `object` function property names filtered from `props`.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Array} props The property names to filter.\n     * @returns {Array} Returns the function names.\n     */\n    function baseFunctions(object, props) {\n      return arrayFilter(props, function(key) {\n        return isFunction(object[key]);\n      });\n    }\n\n    /**\n     * The base implementation of `_.get` without support for default values.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseGet(object, path) {\n      path = castPath(path, object);\n\n      var index = 0,\n          length = path.length;\n\n      while (object != null && index < length) {\n        object = object[toKey(path[index++])];\n      }\n      return (index && index == length) ? object : undefined;\n    }\n\n    /**\n     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n     * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @param {Function} symbolsFunc The function to get the symbols of `object`.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n      var result = keysFunc(object);\n      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n    }\n\n    /**\n     * The base implementation of `getTag` without fallbacks for buggy environments.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    function baseGetTag(value) {\n      if (value == null) {\n        return value === undefined ? undefinedTag : nullTag;\n      }\n      return (symToStringTag && symToStringTag in Object(value))\n        ? getRawTag(value)\n        : objectToString(value);\n    }\n\n    /**\n     * The base implementation of `_.gt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     */\n    function baseGt(value, other) {\n      return value > other;\n    }\n\n    /**\n     * The base implementation of `_.has` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHas(object, key) {\n      return object != null && hasOwnProperty.call(object, key);\n    }\n\n    /**\n     * The base implementation of `_.hasIn` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHasIn(object, key) {\n      return object != null && key in Object(object);\n    }\n\n    /**\n     * The base implementation of `_.inRange` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to check.\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     */\n    function baseInRange(number, start, end) {\n      return number >= nativeMin(start, end) && number < nativeMax(start, end);\n    }\n\n    /**\n     * The base implementation of methods like `_.intersection`, without support\n     * for iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of shared values.\n     */\n    function baseIntersection(arrays, iteratee, comparator) {\n      var includes = comparator ? arrayIncludesWith : arrayIncludes,\n          length = arrays[0].length,\n          othLength = arrays.length,\n          othIndex = othLength,\n          caches = Array(othLength),\n          maxLength = Infinity,\n          result = [];\n\n      while (othIndex--) {\n        var array = arrays[othIndex];\n        if (othIndex && iteratee) {\n          array = arrayMap(array, baseUnary(iteratee));\n        }\n        maxLength = nativeMin(array.length, maxLength);\n        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n          ? new SetCache(othIndex && array)\n          : undefined;\n      }\n      array = arrays[0];\n\n      var index = -1,\n          seen = caches[0];\n\n      outer:\n      while (++index < length && result.length < maxLength) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (!(seen\n              ? cacheHas(seen, computed)\n              : includes(result, computed, comparator)\n            )) {\n          othIndex = othLength;\n          while (--othIndex) {\n            var cache = caches[othIndex];\n            if (!(cache\n                  ? cacheHas(cache, computed)\n                  : includes(arrays[othIndex], computed, comparator))\n                ) {\n              continue outer;\n            }\n          }\n          if (seen) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.invert` and `_.invertBy` which inverts\n     * `object` with values transformed by `iteratee` and set by `setter`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform values.\n     * @param {Object} accumulator The initial inverted object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseInverter(object, setter, iteratee, accumulator) {\n      baseForOwn(object, function(value, key, object) {\n        setter(accumulator, iteratee(value), key, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.invoke` without support for individual\n     * method arguments.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {Array} args The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     */\n    function baseInvoke(object, path, args) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      var func = object == null ? object : object[toKey(last(path))];\n      return func == null ? undefined : apply(func, object, args);\n    }\n\n    /**\n     * The base implementation of `_.isArguments`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     */\n    function baseIsArguments(value) {\n      return isObjectLike(value) && baseGetTag(value) == argsTag;\n    }\n\n    /**\n     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     */\n    function baseIsArrayBuffer(value) {\n      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n    }\n\n    /**\n     * The base implementation of `_.isDate` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     */\n    function baseIsDate(value) {\n      return isObjectLike(value) && baseGetTag(value) == dateTag;\n    }\n\n    /**\n     * The base implementation of `_.isEqual` which supports partial comparisons\n     * and tracks traversed objects.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Unordered comparison\n     *  2 - Partial comparison\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     */\n    function baseIsEqual(value, other, bitmask, customizer, stack) {\n      if (value === other) {\n        return true;\n      }\n      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n        return value !== value && other !== other;\n      }\n      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n    }\n\n    /**\n     * A specialized version of `baseIsEqual` for arrays and objects which performs\n     * deep comparisons and tracks traversed objects enabling objects with circular\n     * references to be compared.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n      var objIsArr = isArray(object),\n          othIsArr = isArray(other),\n          objTag = objIsArr ? arrayTag : getTag(object),\n          othTag = othIsArr ? arrayTag : getTag(other);\n\n      objTag = objTag == argsTag ? objectTag : objTag;\n      othTag = othTag == argsTag ? objectTag : othTag;\n\n      var objIsObj = objTag == objectTag,\n          othIsObj = othTag == objectTag,\n          isSameTag = objTag == othTag;\n\n      if (isSameTag && isBuffer(object)) {\n        if (!isBuffer(other)) {\n          return false;\n        }\n        objIsArr = true;\n        objIsObj = false;\n      }\n      if (isSameTag && !objIsObj) {\n        stack || (stack = new Stack);\n        return (objIsArr || isTypedArray(object))\n          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n      }\n      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n            othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n        if (objIsWrapped || othIsWrapped) {\n          var objUnwrapped = objIsWrapped ? object.value() : object,\n              othUnwrapped = othIsWrapped ? other.value() : other;\n\n          stack || (stack = new Stack);\n          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n        }\n      }\n      if (!isSameTag) {\n        return false;\n      }\n      stack || (stack = new Stack);\n      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n    }\n\n    /**\n     * The base implementation of `_.isMap` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     */\n    function baseIsMap(value) {\n      return isObjectLike(value) && getTag(value) == mapTag;\n    }\n\n    /**\n     * The base implementation of `_.isMatch` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Array} matchData The property names, values, and compare flags to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     */\n    function baseIsMatch(object, source, matchData, customizer) {\n      var index = matchData.length,\n          length = index,\n          noCustomizer = !customizer;\n\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (index--) {\n        var data = matchData[index];\n        if ((noCustomizer && data[2])\n              ? data[1] !== object[data[0]]\n              : !(data[0] in object)\n            ) {\n          return false;\n        }\n      }\n      while (++index < length) {\n        data = matchData[index];\n        var key = data[0],\n            objValue = object[key],\n            srcValue = data[1];\n\n        if (noCustomizer && data[2]) {\n          if (objValue === undefined && !(key in object)) {\n            return false;\n          }\n        } else {\n          var stack = new Stack;\n          if (customizer) {\n            var result = customizer(objValue, srcValue, key, object, source, stack);\n          }\n          if (!(result === undefined\n                ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n                : result\n              )) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.isNative` without bad shim checks.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     */\n    function baseIsNative(value) {\n      if (!isObject(value) || isMasked(value)) {\n        return false;\n      }\n      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n      return pattern.test(toSource(value));\n    }\n\n    /**\n     * The base implementation of `_.isRegExp` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     */\n    function baseIsRegExp(value) {\n      return isObjectLike(value) && baseGetTag(value) == regexpTag;\n    }\n\n    /**\n     * The base implementation of `_.isSet` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     */\n    function baseIsSet(value) {\n      return isObjectLike(value) && getTag(value) == setTag;\n    }\n\n    /**\n     * The base implementation of `_.isTypedArray` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     */\n    function baseIsTypedArray(value) {\n      return isObjectLike(value) &&\n        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n    }\n\n    /**\n     * The base implementation of `_.iteratee`.\n     *\n     * @private\n     * @param {*} [value=_.identity] The value to convert to an iteratee.\n     * @returns {Function} Returns the iteratee.\n     */\n    function baseIteratee(value) {\n      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n      if (typeof value == 'function') {\n        return value;\n      }\n      if (value == null) {\n        return identity;\n      }\n      if (typeof value == 'object') {\n        return isArray(value)\n          ? baseMatchesProperty(value[0], value[1])\n          : baseMatches(value);\n      }\n      return property(value);\n    }\n\n    /**\n     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeys(object) {\n      if (!isPrototype(object)) {\n        return nativeKeys(object);\n      }\n      var result = [];\n      for (var key in Object(object)) {\n        if (hasOwnProperty.call(object, key) && key != 'constructor') {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeysIn(object) {\n      if (!isObject(object)) {\n        return nativeKeysIn(object);\n      }\n      var isProto = isPrototype(object),\n          result = [];\n\n      for (var key in object) {\n        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.lt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     */\n    function baseLt(value, other) {\n      return value < other;\n    }\n\n    /**\n     * The base implementation of `_.map` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     */\n    function baseMap(collection, iteratee) {\n      var index = -1,\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value, key, collection) {\n        result[++index] = iteratee(value, key, collection);\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.matches` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatches(source) {\n      var matchData = getMatchData(source);\n      if (matchData.length == 1 && matchData[0][2]) {\n        return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n      }\n      return function(object) {\n        return object === source || baseIsMatch(object, source, matchData);\n      };\n    }\n\n    /**\n     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n     *\n     * @private\n     * @param {string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatchesProperty(path, srcValue) {\n      if (isKey(path) && isStrictComparable(srcValue)) {\n        return matchesStrictComparable(toKey(path), srcValue);\n      }\n      return function(object) {\n        var objValue = get(object, path);\n        return (objValue === undefined && objValue === srcValue)\n          ? hasIn(object, path)\n          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n      };\n    }\n\n    /**\n     * The base implementation of `_.merge` without support for multiple sources.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} [customizer] The function to customize merged values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMerge(object, source, srcIndex, customizer, stack) {\n      if (object === source) {\n        return;\n      }\n      baseFor(source, function(srcValue, key) {\n        stack || (stack = new Stack);\n        if (isObject(srcValue)) {\n          baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n        }\n        else {\n          var newValue = customizer\n            ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n            : undefined;\n\n          if (newValue === undefined) {\n            newValue = srcValue;\n          }\n          assignMergeValue(object, key, newValue);\n        }\n      }, keysIn);\n    }\n\n    /**\n     * A specialized version of `baseMerge` for arrays and objects which performs\n     * deep merges and tracks traversed objects enabling objects with circular\n     * references to be merged.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {string} key The key of the value to merge.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} mergeFunc The function to merge values.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n      var objValue = safeGet(object, key),\n          srcValue = safeGet(source, key),\n          stacked = stack.get(srcValue);\n\n      if (stacked) {\n        assignMergeValue(object, key, stacked);\n        return;\n      }\n      var newValue = customizer\n        ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      var isCommon = newValue === undefined;\n\n      if (isCommon) {\n        var isArr = isArray(srcValue),\n            isBuff = !isArr && isBuffer(srcValue),\n            isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n        newValue = srcValue;\n        if (isArr || isBuff || isTyped) {\n          if (isArray(objValue)) {\n            newValue = objValue;\n          }\n          else if (isArrayLikeObject(objValue)) {\n            newValue = copyArray(objValue);\n          }\n          else if (isBuff) {\n            isCommon = false;\n            newValue = cloneBuffer(srcValue, true);\n          }\n          else if (isTyped) {\n            isCommon = false;\n            newValue = cloneTypedArray(srcValue, true);\n          }\n          else {\n            newValue = [];\n          }\n        }\n        else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n          newValue = objValue;\n          if (isArguments(objValue)) {\n            newValue = toPlainObject(objValue);\n          }\n          else if (!isObject(objValue) || isFunction(objValue)) {\n            newValue = initCloneObject(srcValue);\n          }\n        }\n        else {\n          isCommon = false;\n        }\n      }\n      if (isCommon) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, newValue);\n        mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n        stack['delete'](srcValue);\n      }\n      assignMergeValue(object, key, newValue);\n    }\n\n    /**\n     * The base implementation of `_.nth` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {number} n The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     */\n    function baseNth(array, n) {\n      var length = array.length;\n      if (!length) {\n        return;\n      }\n      n += n < 0 ? length : 0;\n      return isIndex(n, length) ? array[n] : undefined;\n    }\n\n    /**\n     * The base implementation of `_.orderBy` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n     * @param {string[]} orders The sort orders of `iteratees`.\n     * @returns {Array} Returns the new sorted array.\n     */\n    function baseOrderBy(collection, iteratees, orders) {\n      if (iteratees.length) {\n        iteratees = arrayMap(iteratees, function(iteratee) {\n          if (isArray(iteratee)) {\n            return function(value) {\n              return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n            }\n          }\n          return iteratee;\n        });\n      } else {\n        iteratees = [identity];\n      }\n\n      var index = -1;\n      iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n      var result = baseMap(collection, function(value, key, collection) {\n        var criteria = arrayMap(iteratees, function(iteratee) {\n          return iteratee(value);\n        });\n        return { 'criteria': criteria, 'index': ++index, 'value': value };\n      });\n\n      return baseSortBy(result, function(object, other) {\n        return compareMultiple(object, other, orders);\n      });\n    }\n\n    /**\n     * The base implementation of `_.pick` without support for individual\n     * property identifiers.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Object} Returns the new object.\n     */\n    function basePick(object, paths) {\n      return basePickBy(object, paths, function(value, path) {\n        return hasIn(object, path);\n      });\n    }\n\n    /**\n     * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @param {Function} predicate The function invoked per property.\n     * @returns {Object} Returns the new object.\n     */\n    function basePickBy(object, paths, predicate) {\n      var index = -1,\n          length = paths.length,\n          result = {};\n\n      while (++index < length) {\n        var path = paths[index],\n            value = baseGet(object, path);\n\n        if (predicate(value, path)) {\n          baseSet(result, castPath(path, object), value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseProperty` which supports deep paths.\n     *\n     * @private\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     */\n    function basePropertyDeep(path) {\n      return function(object) {\n        return baseGet(object, path);\n      };\n    }\n\n    /**\n     * The base implementation of `_.pullAllBy` without support for iteratee\n     * shorthands.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAll(array, values, iteratee, comparator) {\n      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n          index = -1,\n          length = values.length,\n          seen = array;\n\n      if (array === values) {\n        values = copyArray(values);\n      }\n      if (iteratee) {\n        seen = arrayMap(array, baseUnary(iteratee));\n      }\n      while (++index < length) {\n        var fromIndex = 0,\n            value = values[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n          if (seen !== array) {\n            splice.call(seen, fromIndex, 1);\n          }\n          splice.call(array, fromIndex, 1);\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.pullAt` without support for individual\n     * indexes or capturing the removed elements.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {number[]} indexes The indexes of elements to remove.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAt(array, indexes) {\n      var length = array ? indexes.length : 0,\n          lastIndex = length - 1;\n\n      while (length--) {\n        var index = indexes[length];\n        if (length == lastIndex || index !== previous) {\n          var previous = index;\n          if (isIndex(index)) {\n            splice.call(array, index, 1);\n          } else {\n            baseUnset(array, index);\n          }\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.random` without support for returning\n     * floating-point numbers.\n     *\n     * @private\n     * @param {number} lower The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the random number.\n     */\n    function baseRandom(lower, upper) {\n      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n    }\n\n    /**\n     * The base implementation of `_.range` and `_.rangeRight` which doesn't\n     * coerce arguments.\n     *\n     * @private\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} step The value to increment or decrement by.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the range of numbers.\n     */\n    function baseRange(start, end, step, fromRight) {\n      var index = -1,\n          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n          result = Array(length);\n\n      while (length--) {\n        result[fromRight ? length : ++index] = start;\n        start += step;\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.repeat` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {string} string The string to repeat.\n     * @param {number} n The number of times to repeat the string.\n     * @returns {string} Returns the repeated string.\n     */\n    function baseRepeat(string, n) {\n      var result = '';\n      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n        return result;\n      }\n      // Leverage the exponentiation by squaring algorithm for a faster repeat.\n      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n      do {\n        if (n % 2) {\n          result += string;\n        }\n        n = nativeFloor(n / 2);\n        if (n) {\n          string += string;\n        }\n      } while (n);\n\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     */\n    function baseRest(func, start) {\n      return setToString(overRest(func, start, identity), func + '');\n    }\n\n    /**\n     * The base implementation of `_.sample`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     */\n    function baseSample(collection) {\n      return arraySample(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.sampleSize` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function baseSampleSize(collection, n) {\n      var array = values(collection);\n      return shuffleSelf(array, baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * The base implementation of `_.set`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseSet(object, path, value, customizer) {\n      if (!isObject(object)) {\n        return object;\n      }\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          lastIndex = length - 1,\n          nested = object;\n\n      while (nested != null && ++index < length) {\n        var key = toKey(path[index]),\n            newValue = value;\n\n        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n          return object;\n        }\n\n        if (index != lastIndex) {\n          var objValue = nested[key];\n          newValue = customizer ? customizer(objValue, key, nested) : undefined;\n          if (newValue === undefined) {\n            newValue = isObject(objValue)\n              ? objValue\n              : (isIndex(path[index + 1]) ? [] : {});\n          }\n        }\n        assignValue(nested, key, newValue);\n        nested = nested[key];\n      }\n      return object;\n    }\n\n    /**\n     * The base implementation of `setData` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetData = !metaMap ? identity : function(func, data) {\n      metaMap.set(func, data);\n      return func;\n    };\n\n    /**\n     * The base implementation of `setToString` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetToString = !defineProperty ? identity : function(func, string) {\n      return defineProperty(func, 'toString', {\n        'configurable': true,\n        'enumerable': false,\n        'value': constant(string),\n        'writable': true\n      });\n    };\n\n    /**\n     * The base implementation of `_.shuffle`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function baseShuffle(collection) {\n      return shuffleSelf(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.slice` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseSlice(array, start, end) {\n      var index = -1,\n          length = array.length;\n\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = end > length ? length : end;\n      if (end < 0) {\n        end += length;\n      }\n      length = start > end ? 0 : ((end - start) >>> 0);\n      start >>>= 0;\n\n      var result = Array(length);\n      while (++index < length) {\n        result[index] = array[index + start];\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.some` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     */\n    function baseSome(collection, predicate) {\n      var result;\n\n      baseEach(collection, function(value, index, collection) {\n        result = predicate(value, index, collection);\n        return !result;\n      });\n      return !!result;\n    }\n\n    /**\n     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n     * performs a binary search of `array` to determine the index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndex(array, value, retHighest) {\n      var low = 0,\n          high = array == null ? low : array.length;\n\n      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n        while (low < high) {\n          var mid = (low + high) >>> 1,\n              computed = array[mid];\n\n          if (computed !== null && !isSymbol(computed) &&\n              (retHighest ? (computed <= value) : (computed < value))) {\n            low = mid + 1;\n          } else {\n            high = mid;\n          }\n        }\n        return high;\n      }\n      return baseSortedIndexBy(array, value, identity, retHighest);\n    }\n\n    /**\n     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n     * which invokes `iteratee` for `value` and each element of `array` to compute\n     * their sort ranking. The iteratee is invoked with one argument; (value).\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} iteratee The iteratee invoked per element.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndexBy(array, value, iteratee, retHighest) {\n      var low = 0,\n          high = array == null ? 0 : array.length;\n      if (high === 0) {\n        return 0;\n      }\n\n      value = iteratee(value);\n      var valIsNaN = value !== value,\n          valIsNull = value === null,\n          valIsSymbol = isSymbol(value),\n          valIsUndefined = value === undefined;\n\n      while (low < high) {\n        var mid = nativeFloor((low + high) / 2),\n            computed = iteratee(array[mid]),\n            othIsDefined = computed !== undefined,\n            othIsNull = computed === null,\n            othIsReflexive = computed === computed,\n            othIsSymbol = isSymbol(computed);\n\n        if (valIsNaN) {\n          var setLow = retHighest || othIsReflexive;\n        } else if (valIsUndefined) {\n          setLow = othIsReflexive && (retHighest || othIsDefined);\n        } else if (valIsNull) {\n          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n        } else if (valIsSymbol) {\n          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n        } else if (othIsNull || othIsSymbol) {\n          setLow = false;\n        } else {\n          setLow = retHighest ? (computed <= value) : (computed < value);\n        }\n        if (setLow) {\n          low = mid + 1;\n        } else {\n          high = mid;\n        }\n      }\n      return nativeMin(high, MAX_ARRAY_INDEX);\n    }\n\n    /**\n     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n     * support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseSortedUniq(array, iteratee) {\n      var index = -1,\n          length = array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        if (!index || !eq(computed, seen)) {\n          var seen = computed;\n          result[resIndex++] = value === 0 ? 0 : value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.toNumber` which doesn't ensure correct\n     * conversions of binary, hexadecimal, or octal string values.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     */\n    function baseToNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      return +value;\n    }\n\n    /**\n     * The base implementation of `_.toString` which doesn't convert nullish\n     * values to empty strings.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {string} Returns the string.\n     */\n    function baseToString(value) {\n      // Exit early for strings to avoid a performance hit in some environments.\n      if (typeof value == 'string') {\n        return value;\n      }\n      if (isArray(value)) {\n        // Recursively convert values (susceptible to call stack limits).\n        return arrayMap(value, baseToString) + '';\n      }\n      if (isSymbol(value)) {\n        return symbolToString ? symbolToString.call(value) : '';\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseUniq(array, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          length = array.length,\n          isCommon = true,\n          result = [],\n          seen = result;\n\n      if (comparator) {\n        isCommon = false;\n        includes = arrayIncludesWith;\n      }\n      else if (length >= LARGE_ARRAY_SIZE) {\n        var set = iteratee ? null : createSet(array);\n        if (set) {\n          return setToArray(set);\n        }\n        isCommon = false;\n        includes = cacheHas;\n        seen = new SetCache;\n      }\n      else {\n        seen = iteratee ? [] : result;\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var seenIndex = seen.length;\n          while (seenIndex--) {\n            if (seen[seenIndex] === computed) {\n              continue outer;\n            }\n          }\n          if (iteratee) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n        else if (!includes(seen, computed, comparator)) {\n          if (seen !== result) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.unset`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The property path to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     */\n    function baseUnset(object, path) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      return object == null || delete object[toKey(last(path))];\n    }\n\n    /**\n     * The base implementation of `_.update`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to update.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseUpdate(object, path, updater, customizer) {\n      return baseSet(object, path, updater(baseGet(object, path)), customizer);\n    }\n\n    /**\n     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n     * without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {Function} predicate The function invoked per iteration.\n     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseWhile(array, predicate, isDrop, fromRight) {\n      var length = array.length,\n          index = fromRight ? length : -1;\n\n      while ((fromRight ? index-- : ++index < length) &&\n        predicate(array[index], index, array)) {}\n\n      return isDrop\n        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n    }\n\n    /**\n     * The base implementation of `wrapperValue` which returns the result of\n     * performing a sequence of actions on the unwrapped `value`, where each\n     * successive action is supplied the return value of the previous.\n     *\n     * @private\n     * @param {*} value The unwrapped value.\n     * @param {Array} actions Actions to perform to resolve the unwrapped value.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseWrapperValue(value, actions) {\n      var result = value;\n      if (result instanceof LazyWrapper) {\n        result = result.value();\n      }\n      return arrayReduce(actions, function(result, action) {\n        return action.func.apply(action.thisArg, arrayPush([result], action.args));\n      }, result);\n    }\n\n    /**\n     * The base implementation of methods like `_.xor`, without support for\n     * iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of values.\n     */\n    function baseXor(arrays, iteratee, comparator) {\n      var length = arrays.length;\n      if (length < 2) {\n        return length ? baseUniq(arrays[0]) : [];\n      }\n      var index = -1,\n          result = Array(length);\n\n      while (++index < length) {\n        var array = arrays[index],\n            othIndex = -1;\n\n        while (++othIndex < length) {\n          if (othIndex != index) {\n            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n          }\n        }\n      }\n      return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n    }\n\n    /**\n     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n     *\n     * @private\n     * @param {Array} props The property identifiers.\n     * @param {Array} values The property values.\n     * @param {Function} assignFunc The function to assign values.\n     * @returns {Object} Returns the new object.\n     */\n    function baseZipObject(props, values, assignFunc) {\n      var index = -1,\n          length = props.length,\n          valsLength = values.length,\n          result = {};\n\n      while (++index < length) {\n        var value = index < valsLength ? values[index] : undefined;\n        assignFunc(result, props[index], value);\n      }\n      return result;\n    }\n\n    /**\n     * Casts `value` to an empty array if it's not an array like object.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Array|Object} Returns the cast array-like object.\n     */\n    function castArrayLikeObject(value) {\n      return isArrayLikeObject(value) ? value : [];\n    }\n\n    /**\n     * Casts `value` to `identity` if it's not a function.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Function} Returns cast function.\n     */\n    function castFunction(value) {\n      return typeof value == 'function' ? value : identity;\n    }\n\n    /**\n     * Casts `value` to a path array if it's not one.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {Array} Returns the cast property path array.\n     */\n    function castPath(value, object) {\n      if (isArray(value)) {\n        return value;\n      }\n      return isKey(value, object) ? [value] : stringToPath(toString(value));\n    }\n\n    /**\n     * A `baseRest` alias which can be replaced with `identity` by module\n     * replacement plugins.\n     *\n     * @private\n     * @type {Function}\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    var castRest = baseRest;\n\n    /**\n     * Casts `array` to a slice if it's needed.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {number} start The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the cast slice.\n     */\n    function castSlice(array, start, end) {\n      var length = array.length;\n      end = end === undefined ? length : end;\n      return (!start && end >= length) ? array : baseSlice(array, start, end);\n    }\n\n    /**\n     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n     *\n     * @private\n     * @param {number|Object} id The timer id or timeout object of the timer to clear.\n     */\n    var clearTimeout = ctxClearTimeout || function(id) {\n      return root.clearTimeout(id);\n    };\n\n    /**\n     * Creates a clone of  `buffer`.\n     *\n     * @private\n     * @param {Buffer} buffer The buffer to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Buffer} Returns the cloned buffer.\n     */\n    function cloneBuffer(buffer, isDeep) {\n      if (isDeep) {\n        return buffer.slice();\n      }\n      var length = buffer.length,\n          result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n      buffer.copy(result);\n      return result;\n    }\n\n    /**\n     * Creates a clone of `arrayBuffer`.\n     *\n     * @private\n     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n     * @returns {ArrayBuffer} Returns the cloned array buffer.\n     */\n    function cloneArrayBuffer(arrayBuffer) {\n      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n      new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n      return result;\n    }\n\n    /**\n     * Creates a clone of `dataView`.\n     *\n     * @private\n     * @param {Object} dataView The data view to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned data view.\n     */\n    function cloneDataView(dataView, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n    }\n\n    /**\n     * Creates a clone of `regexp`.\n     *\n     * @private\n     * @param {Object} regexp The regexp to clone.\n     * @returns {Object} Returns the cloned regexp.\n     */\n    function cloneRegExp(regexp) {\n      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n      result.lastIndex = regexp.lastIndex;\n      return result;\n    }\n\n    /**\n     * Creates a clone of the `symbol` object.\n     *\n     * @private\n     * @param {Object} symbol The symbol object to clone.\n     * @returns {Object} Returns the cloned symbol object.\n     */\n    function cloneSymbol(symbol) {\n      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n    }\n\n    /**\n     * Creates a clone of `typedArray`.\n     *\n     * @private\n     * @param {Object} typedArray The typed array to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned typed array.\n     */\n    function cloneTypedArray(typedArray, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n    }\n\n    /**\n     * Compares values to sort them in ascending order.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {number} Returns the sort order indicator for `value`.\n     */\n    function compareAscending(value, other) {\n      if (value !== other) {\n        var valIsDefined = value !== undefined,\n            valIsNull = value === null,\n            valIsReflexive = value === value,\n            valIsSymbol = isSymbol(value);\n\n        var othIsDefined = other !== undefined,\n            othIsNull = other === null,\n            othIsReflexive = other === other,\n            othIsSymbol = isSymbol(other);\n\n        if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n            (valIsNull && othIsDefined && othIsReflexive) ||\n            (!valIsDefined && othIsReflexive) ||\n            !valIsReflexive) {\n          return 1;\n        }\n        if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n            (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n            (othIsNull && valIsDefined && valIsReflexive) ||\n            (!othIsDefined && valIsReflexive) ||\n            !othIsReflexive) {\n          return -1;\n        }\n      }\n      return 0;\n    }\n\n    /**\n     * Used by `_.orderBy` to compare multiple properties of a value to another\n     * and stable sort them.\n     *\n     * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n     * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n     * of corresponding values.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {boolean[]|string[]} orders The order to sort by for each property.\n     * @returns {number} Returns the sort order indicator for `object`.\n     */\n    function compareMultiple(object, other, orders) {\n      var index = -1,\n          objCriteria = object.criteria,\n          othCriteria = other.criteria,\n          length = objCriteria.length,\n          ordersLength = orders.length;\n\n      while (++index < length) {\n        var result = compareAscending(objCriteria[index], othCriteria[index]);\n        if (result) {\n          if (index >= ordersLength) {\n            return result;\n          }\n          var order = orders[index];\n          return result * (order == 'desc' ? -1 : 1);\n        }\n      }\n      // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n      // that causes it, under certain circumstances, to provide the same value for\n      // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n      // for more details.\n      //\n      // This also ensures a stable sort in V8 and other engines.\n      // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n      return object.index - other.index;\n    }\n\n    /**\n     * Creates an array that is the composition of partially applied arguments,\n     * placeholders, and provided arguments into a single array of arguments.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to prepend to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgs(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersLength = holders.length,\n          leftIndex = -1,\n          leftLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(leftLength + rangeLength),\n          isUncurried = !isCurried;\n\n      while (++leftIndex < leftLength) {\n        result[leftIndex] = partials[leftIndex];\n      }\n      while (++argsIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[holders[argsIndex]] = args[argsIndex];\n        }\n      }\n      while (rangeLength--) {\n        result[leftIndex++] = args[argsIndex++];\n      }\n      return result;\n    }\n\n    /**\n     * This function is like `composeArgs` except that the arguments composition\n     * is tailored for `_.partialRight`.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to append to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgsRight(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersIndex = -1,\n          holdersLength = holders.length,\n          rightIndex = -1,\n          rightLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(rangeLength + rightLength),\n          isUncurried = !isCurried;\n\n      while (++argsIndex < rangeLength) {\n        result[argsIndex] = args[argsIndex];\n      }\n      var offset = argsIndex;\n      while (++rightIndex < rightLength) {\n        result[offset + rightIndex] = partials[rightIndex];\n      }\n      while (++holdersIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[offset + holders[holdersIndex]] = args[argsIndex++];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Copies the values of `source` to `array`.\n     *\n     * @private\n     * @param {Array} source The array to copy values from.\n     * @param {Array} [array=[]] The array to copy values to.\n     * @returns {Array} Returns `array`.\n     */\n    function copyArray(source, array) {\n      var index = -1,\n          length = source.length;\n\n      array || (array = Array(length));\n      while (++index < length) {\n        array[index] = source[index];\n      }\n      return array;\n    }\n\n    /**\n     * Copies properties of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy properties from.\n     * @param {Array} props The property identifiers to copy.\n     * @param {Object} [object={}] The object to copy properties to.\n     * @param {Function} [customizer] The function to customize copied values.\n     * @returns {Object} Returns `object`.\n     */\n    function copyObject(source, props, object, customizer) {\n      var isNew = !object;\n      object || (object = {});\n\n      var index = -1,\n          length = props.length;\n\n      while (++index < length) {\n        var key = props[index];\n\n        var newValue = customizer\n          ? customizer(object[key], source[key], key, object, source)\n          : undefined;\n\n        if (newValue === undefined) {\n          newValue = source[key];\n        }\n        if (isNew) {\n          baseAssignValue(object, key, newValue);\n        } else {\n          assignValue(object, key, newValue);\n        }\n      }\n      return object;\n    }\n\n    /**\n     * Copies own symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbols(source, object) {\n      return copyObject(source, getSymbols(source), object);\n    }\n\n    /**\n     * Copies own and inherited symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbolsIn(source, object) {\n      return copyObject(source, getSymbolsIn(source), object);\n    }\n\n    /**\n     * Creates a function like `_.groupBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} [initializer] The accumulator object initializer.\n     * @returns {Function} Returns the new aggregator function.\n     */\n    function createAggregator(setter, initializer) {\n      return function(collection, iteratee) {\n        var func = isArray(collection) ? arrayAggregator : baseAggregator,\n            accumulator = initializer ? initializer() : {};\n\n        return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n      };\n    }\n\n    /**\n     * Creates a function like `_.assign`.\n     *\n     * @private\n     * @param {Function} assigner The function to assign values.\n     * @returns {Function} Returns the new assigner function.\n     */\n    function createAssigner(assigner) {\n      return baseRest(function(object, sources) {\n        var index = -1,\n            length = sources.length,\n            customizer = length > 1 ? sources[length - 1] : undefined,\n            guard = length > 2 ? sources[2] : undefined;\n\n        customizer = (assigner.length > 3 && typeof customizer == 'function')\n          ? (length--, customizer)\n          : undefined;\n\n        if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n          customizer = length < 3 ? undefined : customizer;\n          length = 1;\n        }\n        object = Object(object);\n        while (++index < length) {\n          var source = sources[index];\n          if (source) {\n            assigner(object, source, index, customizer);\n          }\n        }\n        return object;\n      });\n    }\n\n    /**\n     * Creates a `baseEach` or `baseEachRight` function.\n     *\n     * @private\n     * @param {Function} eachFunc The function to iterate over a collection.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseEach(eachFunc, fromRight) {\n      return function(collection, iteratee) {\n        if (collection == null) {\n          return collection;\n        }\n        if (!isArrayLike(collection)) {\n          return eachFunc(collection, iteratee);\n        }\n        var length = collection.length,\n            index = fromRight ? length : -1,\n            iterable = Object(collection);\n\n        while ((fromRight ? index-- : ++index < length)) {\n          if (iteratee(iterable[index], index, iterable) === false) {\n            break;\n          }\n        }\n        return collection;\n      };\n    }\n\n    /**\n     * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseFor(fromRight) {\n      return function(object, iteratee, keysFunc) {\n        var index = -1,\n            iterable = Object(object),\n            props = keysFunc(object),\n            length = props.length;\n\n        while (length--) {\n          var key = props[fromRight ? length : ++index];\n          if (iteratee(iterable[key], key, iterable) === false) {\n            break;\n          }\n        }\n        return object;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the optional `this`\n     * binding of `thisArg`.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createBind(func, bitmask, thisArg) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return fn.apply(isBind ? thisArg : this, arguments);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.lowerFirst`.\n     *\n     * @private\n     * @param {string} methodName The name of the `String` case method to use.\n     * @returns {Function} Returns the new case function.\n     */\n    function createCaseFirst(methodName) {\n      return function(string) {\n        string = toString(string);\n\n        var strSymbols = hasUnicode(string)\n          ? stringToArray(string)\n          : undefined;\n\n        var chr = strSymbols\n          ? strSymbols[0]\n          : string.charAt(0);\n\n        var trailing = strSymbols\n          ? castSlice(strSymbols, 1).join('')\n          : string.slice(1);\n\n        return chr[methodName]() + trailing;\n      };\n    }\n\n    /**\n     * Creates a function like `_.camelCase`.\n     *\n     * @private\n     * @param {Function} callback The function to combine each word.\n     * @returns {Function} Returns the new compounder function.\n     */\n    function createCompounder(callback) {\n      return function(string) {\n        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n      };\n    }\n\n    /**\n     * Creates a function that produces an instance of `Ctor` regardless of\n     * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n     *\n     * @private\n     * @param {Function} Ctor The constructor to wrap.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCtor(Ctor) {\n      return function() {\n        // Use a `switch` statement to work with class constructors. See\n        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n        // for more details.\n        var args = arguments;\n        switch (args.length) {\n          case 0: return new Ctor;\n          case 1: return new Ctor(args[0]);\n          case 2: return new Ctor(args[0], args[1]);\n          case 3: return new Ctor(args[0], args[1], args[2]);\n          case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n        }\n        var thisBinding = baseCreate(Ctor.prototype),\n            result = Ctor.apply(thisBinding, args);\n\n        // Mimic the constructor's `return` behavior.\n        // See https://es5.github.io/#x13.2.2 for more details.\n        return isObject(result) ? result : thisBinding;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to enable currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {number} arity The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCurry(func, bitmask, arity) {\n      var Ctor = createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length,\n            placeholder = getHolder(wrapper);\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n          ? []\n          : replaceHolders(args, placeholder);\n\n        length -= holders.length;\n        if (length < arity) {\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, undefined,\n            args, holders, undefined, undefined, arity - length);\n        }\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return apply(fn, this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.find` or `_.findLast` function.\n     *\n     * @private\n     * @param {Function} findIndexFunc The function to find the collection index.\n     * @returns {Function} Returns the new find function.\n     */\n    function createFind(findIndexFunc) {\n      return function(collection, predicate, fromIndex) {\n        var iterable = Object(collection);\n        if (!isArrayLike(collection)) {\n          var iteratee = getIteratee(predicate, 3);\n          collection = keys(collection);\n          predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n        }\n        var index = findIndexFunc(collection, predicate, fromIndex);\n        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n      };\n    }\n\n    /**\n     * Creates a `_.flow` or `_.flowRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new flow function.\n     */\n    function createFlow(fromRight) {\n      return flatRest(function(funcs) {\n        var length = funcs.length,\n            index = length,\n            prereq = LodashWrapper.prototype.thru;\n\n        if (fromRight) {\n          funcs.reverse();\n        }\n        while (index--) {\n          var func = funcs[index];\n          if (typeof func != 'function') {\n            throw new TypeError(FUNC_ERROR_TEXT);\n          }\n          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n            var wrapper = new LodashWrapper([], true);\n          }\n        }\n        index = wrapper ? index : length;\n        while (++index < length) {\n          func = funcs[index];\n\n          var funcName = getFuncName(func),\n              data = funcName == 'wrapper' ? getData(func) : undefined;\n\n          if (data && isLaziable(data[0]) &&\n                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n                !data[4].length && data[9] == 1\n              ) {\n            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n          } else {\n            wrapper = (func.length == 1 && isLaziable(func))\n              ? wrapper[funcName]()\n              : wrapper.thru(func);\n          }\n        }\n        return function() {\n          var args = arguments,\n              value = args[0];\n\n          if (wrapper && args.length == 1 && isArray(value)) {\n            return wrapper.plant(value).value();\n          }\n          var index = 0,\n              result = length ? funcs[index].apply(this, args) : value;\n\n          while (++index < length) {\n            result = funcs[index].call(this, result);\n          }\n          return result;\n        };\n      });\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with optional `this`\n     * binding of `thisArg`, partial application, and currying.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [partialsRight] The arguments to append to those provided\n     *  to the new function.\n     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n      var isAry = bitmask & WRAP_ARY_FLAG,\n          isBind = bitmask & WRAP_BIND_FLAG,\n          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n          isFlip = bitmask & WRAP_FLIP_FLAG,\n          Ctor = isBindKey ? undefined : createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length;\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        if (isCurried) {\n          var placeholder = getHolder(wrapper),\n              holdersCount = countHolders(args, placeholder);\n        }\n        if (partials) {\n          args = composeArgs(args, partials, holders, isCurried);\n        }\n        if (partialsRight) {\n          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n        }\n        length -= holdersCount;\n        if (isCurried && length < arity) {\n          var newHolders = replaceHolders(args, placeholder);\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n            args, newHolders, argPos, ary, arity - length\n          );\n        }\n        var thisBinding = isBind ? thisArg : this,\n            fn = isBindKey ? thisBinding[func] : func;\n\n        length = args.length;\n        if (argPos) {\n          args = reorder(args, argPos);\n        } else if (isFlip && length > 1) {\n          args.reverse();\n        }\n        if (isAry && ary < length) {\n          args.length = ary;\n        }\n        if (this && this !== root && this instanceof wrapper) {\n          fn = Ctor || createCtor(fn);\n        }\n        return fn.apply(thisBinding, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.invertBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} toIteratee The function to resolve iteratees.\n     * @returns {Function} Returns the new inverter function.\n     */\n    function createInverter(setter, toIteratee) {\n      return function(object, iteratee) {\n        return baseInverter(object, setter, toIteratee(iteratee), {});\n      };\n    }\n\n    /**\n     * Creates a function that performs a mathematical operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @param {number} [defaultValue] The value used for `undefined` arguments.\n     * @returns {Function} Returns the new mathematical operation function.\n     */\n    function createMathOperation(operator, defaultValue) {\n      return function(value, other) {\n        var result;\n        if (value === undefined && other === undefined) {\n          return defaultValue;\n        }\n        if (value !== undefined) {\n          result = value;\n        }\n        if (other !== undefined) {\n          if (result === undefined) {\n            return other;\n          }\n          if (typeof value == 'string' || typeof other == 'string') {\n            value = baseToString(value);\n            other = baseToString(other);\n          } else {\n            value = baseToNumber(value);\n            other = baseToNumber(other);\n          }\n          result = operator(value, other);\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function like `_.over`.\n     *\n     * @private\n     * @param {Function} arrayFunc The function to iterate over iteratees.\n     * @returns {Function} Returns the new over function.\n     */\n    function createOver(arrayFunc) {\n      return flatRest(function(iteratees) {\n        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n        return baseRest(function(args) {\n          var thisArg = this;\n          return arrayFunc(iteratees, function(iteratee) {\n            return apply(iteratee, thisArg, args);\n          });\n        });\n      });\n    }\n\n    /**\n     * Creates the padding for `string` based on `length`. The `chars` string\n     * is truncated if the number of characters exceeds `length`.\n     *\n     * @private\n     * @param {number} length The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padding for `string`.\n     */\n    function createPadding(length, chars) {\n      chars = chars === undefined ? ' ' : baseToString(chars);\n\n      var charsLength = chars.length;\n      if (charsLength < 2) {\n        return charsLength ? baseRepeat(chars, length) : chars;\n      }\n      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n      return hasUnicode(chars)\n        ? castSlice(stringToArray(result), 0, length).join('')\n        : result.slice(0, length);\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the `this` binding\n     * of `thisArg` and `partials` prepended to the arguments it receives.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {Array} partials The arguments to prepend to those provided to\n     *  the new function.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createPartial(func, bitmask, thisArg, partials) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var argsIndex = -1,\n            argsLength = arguments.length,\n            leftIndex = -1,\n            leftLength = partials.length,\n            args = Array(leftLength + argsLength),\n            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n        while (++leftIndex < leftLength) {\n          args[leftIndex] = partials[leftIndex];\n        }\n        while (argsLength--) {\n          args[leftIndex++] = arguments[++argsIndex];\n        }\n        return apply(fn, isBind ? thisArg : this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.range` or `_.rangeRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new range function.\n     */\n    function createRange(fromRight) {\n      return function(start, end, step) {\n        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n          end = step = undefined;\n        }\n        // Ensure the sign of `-0` is preserved.\n        start = toFinite(start);\n        if (end === undefined) {\n          end = start;\n          start = 0;\n        } else {\n          end = toFinite(end);\n        }\n        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n        return baseRange(start, end, step, fromRight);\n      };\n    }\n\n    /**\n     * Creates a function that performs a relational operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @returns {Function} Returns the new relational operation function.\n     */\n    function createRelationalOperation(operator) {\n      return function(value, other) {\n        if (!(typeof value == 'string' && typeof other == 'string')) {\n          value = toNumber(value);\n          other = toNumber(other);\n        }\n        return operator(value, other);\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to continue currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {Function} wrapFunc The function to create the `func` wrapper.\n     * @param {*} placeholder The placeholder value.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n      var isCurry = bitmask & WRAP_CURRY_FLAG,\n          newHolders = isCurry ? holders : undefined,\n          newHoldersRight = isCurry ? undefined : holders,\n          newPartials = isCurry ? partials : undefined,\n          newPartialsRight = isCurry ? undefined : partials;\n\n      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n      }\n      var newData = [\n        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n        newHoldersRight, argPos, ary, arity\n      ];\n\n      var result = wrapFunc.apply(undefined, newData);\n      if (isLaziable(func)) {\n        setData(result, newData);\n      }\n      result.placeholder = placeholder;\n      return setWrapToString(result, func, bitmask);\n    }\n\n    /**\n     * Creates a function like `_.round`.\n     *\n     * @private\n     * @param {string} methodName The name of the `Math` method to use when rounding.\n     * @returns {Function} Returns the new round function.\n     */\n    function createRound(methodName) {\n      var func = Math[methodName];\n      return function(number, precision) {\n        number = toNumber(number);\n        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n        if (precision && nativeIsFinite(number)) {\n          // Shift with exponential notation to avoid floating-point issues.\n          // See [MDN](https://mdn.io/round#Examples) for more details.\n          var pair = (toString(number) + 'e').split('e'),\n              value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n          pair = (toString(value) + 'e').split('e');\n          return +(pair[0] + 'e' + (+pair[1] - precision));\n        }\n        return func(number);\n      };\n    }\n\n    /**\n     * Creates a set object of `values`.\n     *\n     * @private\n     * @param {Array} values The values to add to the set.\n     * @returns {Object} Returns the new set.\n     */\n    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n      return new Set(values);\n    };\n\n    /**\n     * Creates a `_.toPairs` or `_.toPairsIn` function.\n     *\n     * @private\n     * @param {Function} keysFunc The function to get the keys of a given object.\n     * @returns {Function} Returns the new pairs function.\n     */\n    function createToPairs(keysFunc) {\n      return function(object) {\n        var tag = getTag(object);\n        if (tag == mapTag) {\n          return mapToArray(object);\n        }\n        if (tag == setTag) {\n          return setToPairs(object);\n        }\n        return baseToPairs(object, keysFunc(object));\n      };\n    }\n\n    /**\n     * Creates a function that either curries or invokes `func` with optional\n     * `this` binding and partially applied arguments.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags.\n     *    1 - `_.bind`\n     *    2 - `_.bindKey`\n     *    4 - `_.curry` or `_.curryRight` of a bound function\n     *    8 - `_.curry`\n     *   16 - `_.curryRight`\n     *   32 - `_.partial`\n     *   64 - `_.partialRight`\n     *  128 - `_.rearg`\n     *  256 - `_.ary`\n     *  512 - `_.flip`\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to be partially applied.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n      if (!isBindKey && typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var length = partials ? partials.length : 0;\n      if (!length) {\n        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n        partials = holders = undefined;\n      }\n      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n      arity = arity === undefined ? arity : toInteger(arity);\n      length -= holders ? holders.length : 0;\n\n      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n        var partialsRight = partials,\n            holdersRight = holders;\n\n        partials = holders = undefined;\n      }\n      var data = isBindKey ? undefined : getData(func);\n\n      var newData = [\n        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n        argPos, ary, arity\n      ];\n\n      if (data) {\n        mergeData(newData, data);\n      }\n      func = newData[0];\n      bitmask = newData[1];\n      thisArg = newData[2];\n      partials = newData[3];\n      holders = newData[4];\n      arity = newData[9] = newData[9] === undefined\n        ? (isBindKey ? 0 : func.length)\n        : nativeMax(newData[9] - length, 0);\n\n      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n      }\n      if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n        var result = createBind(func, bitmask, thisArg);\n      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n        result = createCurry(func, bitmask, arity);\n      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n        result = createPartial(func, bitmask, thisArg, partials);\n      } else {\n        result = createHybrid.apply(undefined, newData);\n      }\n      var setter = data ? baseSetData : setData;\n      return setWrapToString(setter(result, newData), func, bitmask);\n    }\n\n    /**\n     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n     * of source objects to the destination object for all destination properties\n     * that resolve to `undefined`.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to assign.\n     * @param {Object} object The parent object of `objValue`.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsAssignIn(objValue, srcValue, key, object) {\n      if (objValue === undefined ||\n          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n        return srcValue;\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n     * objects into destination objects that are passed thru.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to merge.\n     * @param {Object} object The parent object of `objValue`.\n     * @param {Object} source The parent object of `srcValue`.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n      if (isObject(objValue) && isObject(srcValue)) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, objValue);\n        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n        stack['delete'](srcValue);\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n     * objects.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {string} key The key of the property to inspect.\n     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n     */\n    function customOmitClone(value) {\n      return isPlainObject(value) ? undefined : value;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for arrays with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Array} array The array to compare.\n     * @param {Array} other The other array to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `array` and `other` objects.\n     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n     */\n    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          arrLength = array.length,\n          othLength = other.length;\n\n      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n        return false;\n      }\n      // Check that cyclic values are equal.\n      var arrStacked = stack.get(array);\n      var othStacked = stack.get(other);\n      if (arrStacked && othStacked) {\n        return arrStacked == other && othStacked == array;\n      }\n      var index = -1,\n          result = true,\n          seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n      stack.set(array, other);\n      stack.set(other, array);\n\n      // Ignore non-index properties.\n      while (++index < arrLength) {\n        var arrValue = array[index],\n            othValue = other[index];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, arrValue, index, other, array, stack)\n            : customizer(arrValue, othValue, index, array, other, stack);\n        }\n        if (compared !== undefined) {\n          if (compared) {\n            continue;\n          }\n          result = false;\n          break;\n        }\n        // Recursively compare arrays (susceptible to call stack limits).\n        if (seen) {\n          if (!arraySome(other, function(othValue, othIndex) {\n                if (!cacheHas(seen, othIndex) &&\n                    (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n                  return seen.push(othIndex);\n                }\n              })) {\n            result = false;\n            break;\n          }\n        } else if (!(\n              arrValue === othValue ||\n                equalFunc(arrValue, othValue, bitmask, customizer, stack)\n            )) {\n          result = false;\n          break;\n        }\n      }\n      stack['delete'](array);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for comparing objects of\n     * the same `toStringTag`.\n     *\n     * **Note:** This function only supports comparing values with tags of\n     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {string} tag The `toStringTag` of the objects to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n      switch (tag) {\n        case dataViewTag:\n          if ((object.byteLength != other.byteLength) ||\n              (object.byteOffset != other.byteOffset)) {\n            return false;\n          }\n          object = object.buffer;\n          other = other.buffer;\n\n        case arrayBufferTag:\n          if ((object.byteLength != other.byteLength) ||\n              !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n            return false;\n          }\n          return true;\n\n        case boolTag:\n        case dateTag:\n        case numberTag:\n          // Coerce booleans to `1` or `0` and dates to milliseconds.\n          // Invalid dates are coerced to `NaN`.\n          return eq(+object, +other);\n\n        case errorTag:\n          return object.name == other.name && object.message == other.message;\n\n        case regexpTag:\n        case stringTag:\n          // Coerce regexes to strings and treat strings, primitives and objects,\n          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n          // for more details.\n          return object == (other + '');\n\n        case mapTag:\n          var convert = mapToArray;\n\n        case setTag:\n          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n          convert || (convert = setToArray);\n\n          if (object.size != other.size && !isPartial) {\n            return false;\n          }\n          // Assume cyclic values are equal.\n          var stacked = stack.get(object);\n          if (stacked) {\n            return stacked == other;\n          }\n          bitmask |= COMPARE_UNORDERED_FLAG;\n\n          // Recursively compare objects (susceptible to call stack limits).\n          stack.set(object, other);\n          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n          stack['delete'](object);\n          return result;\n\n        case symbolTag:\n          if (symbolValueOf) {\n            return symbolValueOf.call(object) == symbolValueOf.call(other);\n          }\n      }\n      return false;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for objects with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          objProps = getAllKeys(object),\n          objLength = objProps.length,\n          othProps = getAllKeys(other),\n          othLength = othProps.length;\n\n      if (objLength != othLength && !isPartial) {\n        return false;\n      }\n      var index = objLength;\n      while (index--) {\n        var key = objProps[index];\n        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n          return false;\n        }\n      }\n      // Check that cyclic values are equal.\n      var objStacked = stack.get(object);\n      var othStacked = stack.get(other);\n      if (objStacked && othStacked) {\n        return objStacked == other && othStacked == object;\n      }\n      var result = true;\n      stack.set(object, other);\n      stack.set(other, object);\n\n      var skipCtor = isPartial;\n      while (++index < objLength) {\n        key = objProps[index];\n        var objValue = object[key],\n            othValue = other[key];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, objValue, key, other, object, stack)\n            : customizer(objValue, othValue, key, object, other, stack);\n        }\n        // Recursively compare objects (susceptible to call stack limits).\n        if (!(compared === undefined\n              ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n              : compared\n            )) {\n          result = false;\n          break;\n        }\n        skipCtor || (skipCtor = key == 'constructor');\n      }\n      if (result && !skipCtor) {\n        var objCtor = object.constructor,\n            othCtor = other.constructor;\n\n        // Non `Object` object instances with different constructors are not equal.\n        if (objCtor != othCtor &&\n            ('constructor' in object && 'constructor' in other) &&\n            !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n              typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n          result = false;\n        }\n      }\n      stack['delete'](object);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseRest` which flattens the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    function flatRest(func) {\n      return setToString(overRest(func, undefined, flatten), func + '');\n    }\n\n    /**\n     * Creates an array of own enumerable property names and symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeys(object) {\n      return baseGetAllKeys(object, keys, getSymbols);\n    }\n\n    /**\n     * Creates an array of own and inherited enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeysIn(object) {\n      return baseGetAllKeys(object, keysIn, getSymbolsIn);\n    }\n\n    /**\n     * Gets metadata for `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {*} Returns the metadata for `func`.\n     */\n    var getData = !metaMap ? noop : function(func) {\n      return metaMap.get(func);\n    };\n\n    /**\n     * Gets the name of `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {string} Returns the function name.\n     */\n    function getFuncName(func) {\n      var result = (func.name + ''),\n          array = realNames[result],\n          length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n      while (length--) {\n        var data = array[length],\n            otherFunc = data.func;\n        if (otherFunc == null || otherFunc == func) {\n          return data.name;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Gets the argument placeholder value for `func`.\n     *\n     * @private\n     * @param {Function} func The function to inspect.\n     * @returns {*} Returns the placeholder value.\n     */\n    function getHolder(func) {\n      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n      return object.placeholder;\n    }\n\n    /**\n     * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n     * this function returns the custom method, otherwise it returns `baseIteratee`.\n     * If arguments are provided, the chosen function is invoked with them and\n     * its result is returned.\n     *\n     * @private\n     * @param {*} [value] The value to convert to an iteratee.\n     * @param {number} [arity] The arity of the created iteratee.\n     * @returns {Function} Returns the chosen function or its result.\n     */\n    function getIteratee() {\n      var result = lodash.iteratee || iteratee;\n      result = result === iteratee ? baseIteratee : result;\n      return arguments.length ? result(arguments[0], arguments[1]) : result;\n    }\n\n    /**\n     * Gets the data for `map`.\n     *\n     * @private\n     * @param {Object} map The map to query.\n     * @param {string} key The reference key.\n     * @returns {*} Returns the map data.\n     */\n    function getMapData(map, key) {\n      var data = map.__data__;\n      return isKeyable(key)\n        ? data[typeof key == 'string' ? 'string' : 'hash']\n        : data.map;\n    }\n\n    /**\n     * Gets the property names, values, and compare flags of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the match data of `object`.\n     */\n    function getMatchData(object) {\n      var result = keys(object),\n          length = result.length;\n\n      while (length--) {\n        var key = result[length],\n            value = object[key];\n\n        result[length] = [key, value, isStrictComparable(value)];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the native function at `key` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the method to get.\n     * @returns {*} Returns the function if it's native, else `undefined`.\n     */\n    function getNative(object, key) {\n      var value = getValue(object, key);\n      return baseIsNative(value) ? value : undefined;\n    }\n\n    /**\n     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the raw `toStringTag`.\n     */\n    function getRawTag(value) {\n      var isOwn = hasOwnProperty.call(value, symToStringTag),\n          tag = value[symToStringTag];\n\n      try {\n        value[symToStringTag] = undefined;\n        var unmasked = true;\n      } catch (e) {}\n\n      var result = nativeObjectToString.call(value);\n      if (unmasked) {\n        if (isOwn) {\n          value[symToStringTag] = tag;\n        } else {\n          delete value[symToStringTag];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array of the own enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n      if (object == null) {\n        return [];\n      }\n      object = Object(object);\n      return arrayFilter(nativeGetSymbols(object), function(symbol) {\n        return propertyIsEnumerable.call(object, symbol);\n      });\n    };\n\n    /**\n     * Creates an array of the own and inherited enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n      var result = [];\n      while (object) {\n        arrayPush(result, getSymbols(object));\n        object = getPrototype(object);\n      }\n      return result;\n    };\n\n    /**\n     * Gets the `toStringTag` of `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    var getTag = baseGetTag;\n\n    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n        (Map && getTag(new Map) != mapTag) ||\n        (Promise && getTag(Promise.resolve()) != promiseTag) ||\n        (Set && getTag(new Set) != setTag) ||\n        (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n      getTag = function(value) {\n        var result = baseGetTag(value),\n            Ctor = result == objectTag ? value.constructor : undefined,\n            ctorString = Ctor ? toSource(Ctor) : '';\n\n        if (ctorString) {\n          switch (ctorString) {\n            case dataViewCtorString: return dataViewTag;\n            case mapCtorString: return mapTag;\n            case promiseCtorString: return promiseTag;\n            case setCtorString: return setTag;\n            case weakMapCtorString: return weakMapTag;\n          }\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Gets the view, applying any `transforms` to the `start` and `end` positions.\n     *\n     * @private\n     * @param {number} start The start of the view.\n     * @param {number} end The end of the view.\n     * @param {Array} transforms The transformations to apply to the view.\n     * @returns {Object} Returns an object containing the `start` and `end`\n     *  positions of the view.\n     */\n    function getView(start, end, transforms) {\n      var index = -1,\n          length = transforms.length;\n\n      while (++index < length) {\n        var data = transforms[index],\n            size = data.size;\n\n        switch (data.type) {\n          case 'drop':      start += size; break;\n          case 'dropRight': end -= size; break;\n          case 'take':      end = nativeMin(end, start + size); break;\n          case 'takeRight': start = nativeMax(start, end - size); break;\n        }\n      }\n      return { 'start': start, 'end': end };\n    }\n\n    /**\n     * Extracts wrapper details from the `source` body comment.\n     *\n     * @private\n     * @param {string} source The source to inspect.\n     * @returns {Array} Returns the wrapper details.\n     */\n    function getWrapDetails(source) {\n      var match = source.match(reWrapDetails);\n      return match ? match[1].split(reSplitDetails) : [];\n    }\n\n    /**\n     * Checks if `path` exists on `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @param {Function} hasFunc The function to check properties.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     */\n    function hasPath(object, path, hasFunc) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          result = false;\n\n      while (++index < length) {\n        var key = toKey(path[index]);\n        if (!(result = object != null && hasFunc(object, key))) {\n          break;\n        }\n        object = object[key];\n      }\n      if (result || ++index != length) {\n        return result;\n      }\n      length = object == null ? 0 : object.length;\n      return !!length && isLength(length) && isIndex(key, length) &&\n        (isArray(object) || isArguments(object));\n    }\n\n    /**\n     * Initializes an array clone.\n     *\n     * @private\n     * @param {Array} array The array to clone.\n     * @returns {Array} Returns the initialized clone.\n     */\n    function initCloneArray(array) {\n      var length = array.length,\n          result = new array.constructor(length);\n\n      // Add properties assigned by `RegExp#exec`.\n      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n        result.index = array.index;\n        result.input = array.input;\n      }\n      return result;\n    }\n\n    /**\n     * Initializes an object clone.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneObject(object) {\n      return (typeof object.constructor == 'function' && !isPrototype(object))\n        ? baseCreate(getPrototype(object))\n        : {};\n    }\n\n    /**\n     * Initializes an object clone based on its `toStringTag`.\n     *\n     * **Note:** This function only supports cloning values with tags of\n     * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @param {string} tag The `toStringTag` of the object to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneByTag(object, tag, isDeep) {\n      var Ctor = object.constructor;\n      switch (tag) {\n        case arrayBufferTag:\n          return cloneArrayBuffer(object);\n\n        case boolTag:\n        case dateTag:\n          return new Ctor(+object);\n\n        case dataViewTag:\n          return cloneDataView(object, isDeep);\n\n        case float32Tag: case float64Tag:\n        case int8Tag: case int16Tag: case int32Tag:\n        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n          return cloneTypedArray(object, isDeep);\n\n        case mapTag:\n          return new Ctor;\n\n        case numberTag:\n        case stringTag:\n          return new Ctor(object);\n\n        case regexpTag:\n          return cloneRegExp(object);\n\n        case setTag:\n          return new Ctor;\n\n        case symbolTag:\n          return cloneSymbol(object);\n      }\n    }\n\n    /**\n     * Inserts wrapper `details` in a comment at the top of the `source` body.\n     *\n     * @private\n     * @param {string} source The source to modify.\n     * @returns {Array} details The details to insert.\n     * @returns {string} Returns the modified source.\n     */\n    function insertWrapDetails(source, details) {\n      var length = details.length;\n      if (!length) {\n        return source;\n      }\n      var lastIndex = length - 1;\n      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n      details = details.join(length > 2 ? ', ' : ' ');\n      return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n    }\n\n    /**\n     * Checks if `value` is a flattenable `arguments` object or array.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n     */\n    function isFlattenable(value) {\n      return isArray(value) || isArguments(value) ||\n        !!(spreadableSymbol && value && value[spreadableSymbol]);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like index.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n     */\n    function isIndex(value, length) {\n      var type = typeof value;\n      length = length == null ? MAX_SAFE_INTEGER : length;\n\n      return !!length &&\n        (type == 'number' ||\n          (type != 'symbol' && reIsUint.test(value))) &&\n            (value > -1 && value % 1 == 0 && value < length);\n    }\n\n    /**\n     * Checks if the given arguments are from an iteratee call.\n     *\n     * @private\n     * @param {*} value The potential iteratee value argument.\n     * @param {*} index The potential iteratee index or key argument.\n     * @param {*} object The potential iteratee object argument.\n     * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n     *  else `false`.\n     */\n    function isIterateeCall(value, index, object) {\n      if (!isObject(object)) {\n        return false;\n      }\n      var type = typeof index;\n      if (type == 'number'\n            ? (isArrayLike(object) && isIndex(index, object.length))\n            : (type == 'string' && index in object)\n          ) {\n        return eq(object[index], value);\n      }\n      return false;\n    }\n\n    /**\n     * Checks if `value` is a property name and not a property path.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n     */\n    function isKey(value, object) {\n      if (isArray(value)) {\n        return false;\n      }\n      var type = typeof value;\n      if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n          value == null || isSymbol(value)) {\n        return true;\n      }\n      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n        (object != null && value in Object(object));\n    }\n\n    /**\n     * Checks if `value` is suitable for use as unique object key.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n     */\n    function isKeyable(value) {\n      var type = typeof value;\n      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n        ? (value !== '__proto__')\n        : (value === null);\n    }\n\n    /**\n     * Checks if `func` has a lazy counterpart.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n     *  else `false`.\n     */\n    function isLaziable(func) {\n      var funcName = getFuncName(func),\n          other = lodash[funcName];\n\n      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n        return false;\n      }\n      if (func === other) {\n        return true;\n      }\n      var data = getData(other);\n      return !!data && func === data[0];\n    }\n\n    /**\n     * Checks if `func` has its source masked.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n     */\n    function isMasked(func) {\n      return !!maskSrcKey && (maskSrcKey in func);\n    }\n\n    /**\n     * Checks if `func` is capable of being masked.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n     */\n    var isMaskable = coreJsData ? isFunction : stubFalse;\n\n    /**\n     * Checks if `value` is likely a prototype object.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n     */\n    function isPrototype(value) {\n      var Ctor = value && value.constructor,\n          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n      return value === proto;\n    }\n\n    /**\n     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` if suitable for strict\n     *  equality comparisons, else `false`.\n     */\n    function isStrictComparable(value) {\n      return value === value && !isObject(value);\n    }\n\n    /**\n     * A specialized version of `matchesProperty` for source values suitable\n     * for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {string} key The key of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function matchesStrictComparable(key, srcValue) {\n      return function(object) {\n        if (object == null) {\n          return false;\n        }\n        return object[key] === srcValue &&\n          (srcValue !== undefined || (key in Object(object)));\n      };\n    }\n\n    /**\n     * A specialized version of `_.memoize` which clears the memoized function's\n     * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n     *\n     * @private\n     * @param {Function} func The function to have its output memoized.\n     * @returns {Function} Returns the new memoized function.\n     */\n    function memoizeCapped(func) {\n      var result = memoize(func, function(key) {\n        if (cache.size === MAX_MEMOIZE_SIZE) {\n          cache.clear();\n        }\n        return key;\n      });\n\n      var cache = result.cache;\n      return result;\n    }\n\n    /**\n     * Merges the function metadata of `source` into `data`.\n     *\n     * Merging metadata reduces the number of wrappers used to invoke a function.\n     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n     * may be applied regardless of execution order. Methods like `_.ary` and\n     * `_.rearg` modify function arguments, making the order in which they are\n     * executed important, preventing the merging of metadata. However, we make\n     * an exception for a safe combined case where curried functions have `_.ary`\n     * and or `_.rearg` applied.\n     *\n     * @private\n     * @param {Array} data The destination metadata.\n     * @param {Array} source The source metadata.\n     * @returns {Array} Returns `data`.\n     */\n    function mergeData(data, source) {\n      var bitmask = data[1],\n          srcBitmask = source[1],\n          newBitmask = bitmask | srcBitmask,\n          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n      var isCombo =\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n      // Exit early if metadata can't be merged.\n      if (!(isCommon || isCombo)) {\n        return data;\n      }\n      // Use source `thisArg` if available.\n      if (srcBitmask & WRAP_BIND_FLAG) {\n        data[2] = source[2];\n        // Set when currying a bound function.\n        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n      }\n      // Compose partial arguments.\n      var value = source[3];\n      if (value) {\n        var partials = data[3];\n        data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n      }\n      // Compose partial right arguments.\n      value = source[5];\n      if (value) {\n        partials = data[5];\n        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n      }\n      // Use source `argPos` if available.\n      value = source[7];\n      if (value) {\n        data[7] = value;\n      }\n      // Use source `ary` if it's smaller.\n      if (srcBitmask & WRAP_ARY_FLAG) {\n        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n      }\n      // Use source `arity` if one is not provided.\n      if (data[9] == null) {\n        data[9] = source[9];\n      }\n      // Use source `func` and merge bitmasks.\n      data[0] = source[0];\n      data[1] = newBitmask;\n\n      return data;\n    }\n\n    /**\n     * This function is like\n     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * except that it includes inherited enumerable properties.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function nativeKeysIn(object) {\n      var result = [];\n      if (object != null) {\n        for (var key in Object(object)) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a string using `Object.prototype.toString`.\n     *\n     * @private\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     */\n    function objectToString(value) {\n      return nativeObjectToString.call(value);\n    }\n\n    /**\n     * A specialized version of `baseRest` which transforms the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @param {Function} transform The rest array transform.\n     * @returns {Function} Returns the new function.\n     */\n    function overRest(func, start, transform) {\n      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n      return function() {\n        var args = arguments,\n            index = -1,\n            length = nativeMax(args.length - start, 0),\n            array = Array(length);\n\n        while (++index < length) {\n          array[index] = args[start + index];\n        }\n        index = -1;\n        var otherArgs = Array(start + 1);\n        while (++index < start) {\n          otherArgs[index] = args[index];\n        }\n        otherArgs[start] = transform(array);\n        return apply(func, this, otherArgs);\n      };\n    }\n\n    /**\n     * Gets the parent value at `path` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array} path The path to get the parent value of.\n     * @returns {*} Returns the parent value.\n     */\n    function parent(object, path) {\n      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n    }\n\n    /**\n     * Reorder `array` according to the specified indexes where the element at\n     * the first index is assigned as the first element, the element at\n     * the second index is assigned as the second element, and so on.\n     *\n     * @private\n     * @param {Array} array The array to reorder.\n     * @param {Array} indexes The arranged array indexes.\n     * @returns {Array} Returns `array`.\n     */\n    function reorder(array, indexes) {\n      var arrLength = array.length,\n          length = nativeMin(indexes.length, arrLength),\n          oldArray = copyArray(array);\n\n      while (length--) {\n        var index = indexes[length];\n        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n      }\n      return array;\n    }\n\n    /**\n     * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the property to get.\n     * @returns {*} Returns the property value.\n     */\n    function safeGet(object, key) {\n      if (key === 'constructor' && typeof object[key] === 'function') {\n        return;\n      }\n\n      if (key == '__proto__') {\n        return;\n      }\n\n      return object[key];\n    }\n\n    /**\n     * Sets metadata for `func`.\n     *\n     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n     * period of time, it will trip its breaker and transition to an identity\n     * function to avoid garbage collection pauses in V8. See\n     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n     * for more details.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var setData = shortOut(baseSetData);\n\n    /**\n     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    var setTimeout = ctxSetTimeout || function(func, wait) {\n      return root.setTimeout(func, wait);\n    };\n\n    /**\n     * Sets the `toString` method of `func` to return `string`.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var setToString = shortOut(baseSetToString);\n\n    /**\n     * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n     * with wrapper details in a comment at the top of the source body.\n     *\n     * @private\n     * @param {Function} wrapper The function to modify.\n     * @param {Function} reference The reference function.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Function} Returns `wrapper`.\n     */\n    function setWrapToString(wrapper, reference, bitmask) {\n      var source = (reference + '');\n      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n    }\n\n    /**\n     * Creates a function that'll short out and invoke `identity` instead\n     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n     * milliseconds.\n     *\n     * @private\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new shortable function.\n     */\n    function shortOut(func) {\n      var count = 0,\n          lastCalled = 0;\n\n      return function() {\n        var stamp = nativeNow(),\n            remaining = HOT_SPAN - (stamp - lastCalled);\n\n        lastCalled = stamp;\n        if (remaining > 0) {\n          if (++count >= HOT_COUNT) {\n            return arguments[0];\n          }\n        } else {\n          count = 0;\n        }\n        return func.apply(undefined, arguments);\n      };\n    }\n\n    /**\n     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @param {number} [size=array.length] The size of `array`.\n     * @returns {Array} Returns `array`.\n     */\n    function shuffleSelf(array, size) {\n      var index = -1,\n          length = array.length,\n          lastIndex = length - 1;\n\n      size = size === undefined ? length : size;\n      while (++index < size) {\n        var rand = baseRandom(index, lastIndex),\n            value = array[rand];\n\n        array[rand] = array[index];\n        array[index] = value;\n      }\n      array.length = size;\n      return array;\n    }\n\n    /**\n     * Converts `string` to a property path array.\n     *\n     * @private\n     * @param {string} string The string to convert.\n     * @returns {Array} Returns the property path array.\n     */\n    var stringToPath = memoizeCapped(function(string) {\n      var result = [];\n      if (string.charCodeAt(0) === 46 /* . */) {\n        result.push('');\n      }\n      string.replace(rePropName, function(match, number, quote, subString) {\n        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n      });\n      return result;\n    });\n\n    /**\n     * Converts `value` to a string key if it's not a string or symbol.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {string|symbol} Returns the key.\n     */\n    function toKey(value) {\n      if (typeof value == 'string' || isSymbol(value)) {\n        return value;\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * Converts `func` to its source code.\n     *\n     * @private\n     * @param {Function} func The function to convert.\n     * @returns {string} Returns the source code.\n     */\n    function toSource(func) {\n      if (func != null) {\n        try {\n          return funcToString.call(func);\n        } catch (e) {}\n        try {\n          return (func + '');\n        } catch (e) {}\n      }\n      return '';\n    }\n\n    /**\n     * Updates wrapper `details` based on `bitmask` flags.\n     *\n     * @private\n     * @returns {Array} details The details to modify.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Array} Returns `details`.\n     */\n    function updateWrapDetails(details, bitmask) {\n      arrayEach(wrapFlags, function(pair) {\n        var value = '_.' + pair[0];\n        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n          details.push(value);\n        }\n      });\n      return details.sort();\n    }\n\n    /**\n     * Creates a clone of `wrapper`.\n     *\n     * @private\n     * @param {Object} wrapper The wrapper to clone.\n     * @returns {Object} Returns the cloned wrapper.\n     */\n    function wrapperClone(wrapper) {\n      if (wrapper instanceof LazyWrapper) {\n        return wrapper.clone();\n      }\n      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n      result.__actions__ = copyArray(wrapper.__actions__);\n      result.__index__  = wrapper.__index__;\n      result.__values__ = wrapper.__values__;\n      return result;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of elements split into groups the length of `size`.\n     * If `array` can't be split evenly, the final chunk will be the remaining\n     * elements.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to process.\n     * @param {number} [size=1] The length of each chunk\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the new array of chunks.\n     * @example\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 2);\n     * // => [['a', 'b'], ['c', 'd']]\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 3);\n     * // => [['a', 'b', 'c'], ['d']]\n     */\n    function chunk(array, size, guard) {\n      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n        size = 1;\n      } else {\n        size = nativeMax(toInteger(size), 0);\n      }\n      var length = array == null ? 0 : array.length;\n      if (!length || size < 1) {\n        return [];\n      }\n      var index = 0,\n          resIndex = 0,\n          result = Array(nativeCeil(length / size));\n\n      while (index < length) {\n        result[resIndex++] = baseSlice(array, index, (index += size));\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array with all falsey values removed. The values `false`, `null`,\n     * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to compact.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.compact([0, 1, false, 2, '', 3]);\n     * // => [1, 2, 3]\n     */\n    function compact(array) {\n      var index = -1,\n          length = array == null ? 0 : array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index];\n        if (value) {\n          result[resIndex++] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates a new array concatenating `array` with any additional arrays\n     * and/or values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to concatenate.\n     * @param {...*} [values] The values to concatenate.\n     * @returns {Array} Returns the new concatenated array.\n     * @example\n     *\n     * var array = [1];\n     * var other = _.concat(array, 2, [3], [[4]]);\n     *\n     * console.log(other);\n     * // => [1, 2, 3, [4]]\n     *\n     * console.log(array);\n     * // => [1]\n     */\n    function concat() {\n      var length = arguments.length;\n      if (!length) {\n        return [];\n      }\n      var args = Array(length - 1),\n          array = arguments[0],\n          index = length;\n\n      while (index--) {\n        args[index - 1] = arguments[index];\n      }\n      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n    }\n\n    /**\n     * Creates an array of `array` values not included in the other given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * **Note:** Unlike `_.pullAll`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.without, _.xor\n     * @example\n     *\n     * _.difference([2, 1], [2, 3]);\n     * // => [1]\n     */\n    var difference = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `iteratee` which\n     * is invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var differenceBy = baseRest(function(array, values) {\n      var iteratee = last(values);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `comparator`\n     * which is invoked to compare elements of `array` to `values`. The order and\n     * references of result values are determined by the first array. The comparator\n     * is invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     *\n     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }]\n     */\n    var differenceWith = baseRest(function(array, values) {\n      var comparator = last(values);\n      if (isArrayLikeObject(comparator)) {\n        comparator = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.drop([1, 2, 3]);\n     * // => [2, 3]\n     *\n     * _.drop([1, 2, 3], 2);\n     * // => [3]\n     *\n     * _.drop([1, 2, 3], 5);\n     * // => []\n     *\n     * _.drop([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function drop(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.dropRight([1, 2, 3]);\n     * // => [1, 2]\n     *\n     * _.dropRight([1, 2, 3], 2);\n     * // => [1]\n     *\n     * _.dropRight([1, 2, 3], 5);\n     * // => []\n     *\n     * _.dropRight([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function dropRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the end.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.dropRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropRightWhile(users, ['active', false]);\n     * // => objects for ['barney']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropRightWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the beginning.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.dropWhile(users, function(o) { return !o.active; });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropWhile(users, ['active', false]);\n     * // => objects for ['pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true)\n        : [];\n    }\n\n    /**\n     * Fills elements of `array` with `value` from `start` up to, but not\n     * including, `end`.\n     *\n     * **Note:** This method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Array\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.fill(array, 'a');\n     * console.log(array);\n     * // => ['a', 'a', 'a']\n     *\n     * _.fill(Array(3), 2);\n     * // => [2, 2, 2]\n     *\n     * _.fill([4, 6, 8, 10], '*', 1, 3);\n     * // => [4, '*', '*', 10]\n     */\n    function fill(array, value, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n        start = 0;\n        end = length;\n      }\n      return baseFill(array, value, start, end);\n    }\n\n    /**\n     * This method is like `_.find` except that it returns the index of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.findIndex(users, function(o) { return o.user == 'barney'; });\n     * // => 0\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findIndex(users, { 'user': 'fred', 'active': false });\n     * // => 1\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findIndex(users, ['active', false]);\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findIndex(users, 'active');\n     * // => 2\n     */\n    function findIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index);\n    }\n\n    /**\n     * This method is like `_.findIndex` except that it iterates over elements\n     * of `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n     * // => 2\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n     * // => 0\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastIndex(users, ['active', false]);\n     * // => 2\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastIndex(users, 'active');\n     * // => 0\n     */\n    function findLastIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length - 1;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = fromIndex < 0\n          ? nativeMax(length + index, 0)\n          : nativeMin(index, length - 1);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n    }\n\n    /**\n     * Flattens `array` a single level deep.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flatten([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, [3, [4]], 5]\n     */\n    function flatten(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, 1) : [];\n    }\n\n    /**\n     * Recursively flattens `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flattenDeep([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, 3, 4, 5]\n     */\n    function flattenDeep(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, INFINITY) : [];\n    }\n\n    /**\n     * Recursively flatten `array` up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * var array = [1, [2, [3, [4]], 5]];\n     *\n     * _.flattenDepth(array, 1);\n     * // => [1, 2, [3, [4]], 5]\n     *\n     * _.flattenDepth(array, 2);\n     * // => [1, 2, 3, [4], 5]\n     */\n    function flattenDepth(array, depth) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(array, depth);\n    }\n\n    /**\n     * The inverse of `_.toPairs`; this method returns an object composed\n     * from key-value `pairs`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} pairs The key-value pairs.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.fromPairs([['a', 1], ['b', 2]]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function fromPairs(pairs) {\n      var index = -1,\n          length = pairs == null ? 0 : pairs.length,\n          result = {};\n\n      while (++index < length) {\n        var pair = pairs[index];\n        result[pair[0]] = pair[1];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias first\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the first element of `array`.\n     * @example\n     *\n     * _.head([1, 2, 3]);\n     * // => 1\n     *\n     * _.head([]);\n     * // => undefined\n     */\n    function head(array) {\n      return (array && array.length) ? array[0] : undefined;\n    }\n\n    /**\n     * Gets the index at which the first occurrence of `value` is found in `array`\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. If `fromIndex` is negative, it's used as the\n     * offset from the end of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.indexOf([1, 2, 1, 2], 2);\n     * // => 1\n     *\n     * // Search from the `fromIndex`.\n     * _.indexOf([1, 2, 1, 2], 2, 2);\n     * // => 3\n     */\n    function indexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseIndexOf(array, value, index);\n    }\n\n    /**\n     * Gets all but the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.initial([1, 2, 3]);\n     * // => [1, 2]\n     */\n    function initial(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 0, -1) : [];\n    }\n\n    /**\n     * Creates an array of unique values that are included in all given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersection([2, 1], [2, 3]);\n     * // => [2]\n     */\n    var intersection = baseRest(function(arrays) {\n      var mapped = arrayMap(arrays, castArrayLikeObject);\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped)\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `iteratee`\n     * which is invoked for each element of each `arrays` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [2.1]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }]\n     */\n    var intersectionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      if (iteratee === last(mapped)) {\n        iteratee = undefined;\n      } else {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `comparator`\n     * which is invoked to compare elements of `arrays`. The order and references\n     * of result values are determined by the first array. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.intersectionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }]\n     */\n    var intersectionWith = baseRest(function(arrays) {\n      var comparator = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      if (comparator) {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Converts all elements in `array` into a string separated by `separator`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to convert.\n     * @param {string} [separator=','] The element separator.\n     * @returns {string} Returns the joined string.\n     * @example\n     *\n     * _.join(['a', 'b', 'c'], '~');\n     * // => 'a~b~c'\n     */\n    function join(array, separator) {\n      return array == null ? '' : nativeJoin.call(array, separator);\n    }\n\n    /**\n     * Gets the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the last element of `array`.\n     * @example\n     *\n     * _.last([1, 2, 3]);\n     * // => 3\n     */\n    function last(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? array[length - 1] : undefined;\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it iterates over elements of\n     * `array` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.lastIndexOf([1, 2, 1, 2], 2);\n     * // => 3\n     *\n     * // Search from the `fromIndex`.\n     * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n     * // => 1\n     */\n    function lastIndexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n      }\n      return value === value\n        ? strictLastIndexOf(array, value, index)\n        : baseFindIndex(array, baseIsNaN, index, true);\n    }\n\n    /**\n     * Gets the element at index `n` of `array`. If `n` is negative, the nth\n     * element from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.11.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=0] The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     *\n     * _.nth(array, 1);\n     * // => 'b'\n     *\n     * _.nth(array, -2);\n     * // => 'c';\n     */\n    function nth(array, n) {\n      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n    }\n\n    /**\n     * Removes all given values from `array` using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n     * to remove elements from an array by predicate.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...*} [values] The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pull(array, 'a', 'c');\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    var pull = baseRest(pullAll);\n\n    /**\n     * This method is like `_.pull` except that it accepts an array of values to remove.\n     *\n     * **Note:** Unlike `_.difference`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pullAll(array, ['a', 'c']);\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    function pullAll(array, values) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values)\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `iteratee` which is\n     * invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The iteratee is invoked with one argument: (value).\n     *\n     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n     *\n     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n     * console.log(array);\n     * // => [{ 'x': 2 }]\n     */\n    function pullAllBy(array, values, iteratee) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, getIteratee(iteratee, 2))\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `comparator` which\n     * is invoked to compare elements of `array` to `values`. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n     *\n     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n     * console.log(array);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n     */\n    function pullAllWith(array, values, comparator) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, undefined, comparator)\n        : array;\n    }\n\n    /**\n     * Removes elements from `array` corresponding to `indexes` and returns an\n     * array of removed elements.\n     *\n     * **Note:** Unlike `_.at`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     * var pulled = _.pullAt(array, [1, 3]);\n     *\n     * console.log(array);\n     * // => ['a', 'c']\n     *\n     * console.log(pulled);\n     * // => ['b', 'd']\n     */\n    var pullAt = flatRest(function(array, indexes) {\n      var length = array == null ? 0 : array.length,\n          result = baseAt(array, indexes);\n\n      basePullAt(array, arrayMap(indexes, function(index) {\n        return isIndex(index, length) ? +index : index;\n      }).sort(compareAscending));\n\n      return result;\n    });\n\n    /**\n     * Removes all elements from `array` that `predicate` returns truthy for\n     * and returns an array of the removed elements. The predicate is invoked\n     * with three arguments: (value, index, array).\n     *\n     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n     * to pull elements from an array by value.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = [1, 2, 3, 4];\n     * var evens = _.remove(array, function(n) {\n     *   return n % 2 == 0;\n     * });\n     *\n     * console.log(array);\n     * // => [1, 3]\n     *\n     * console.log(evens);\n     * // => [2, 4]\n     */\n    function remove(array, predicate) {\n      var result = [];\n      if (!(array && array.length)) {\n        return result;\n      }\n      var index = -1,\n          indexes = [],\n          length = array.length;\n\n      predicate = getIteratee(predicate, 3);\n      while (++index < length) {\n        var value = array[index];\n        if (predicate(value, index, array)) {\n          result.push(value);\n          indexes.push(index);\n        }\n      }\n      basePullAt(array, indexes);\n      return result;\n    }\n\n    /**\n     * Reverses `array` so that the first element becomes the last, the second\n     * element becomes the second to last, and so on.\n     *\n     * **Note:** This method mutates `array` and is based on\n     * [`Array#reverse`](https://mdn.io/Array/reverse).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.reverse(array);\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function reverse(array) {\n      return array == null ? array : nativeReverse.call(array);\n    }\n\n    /**\n     * Creates a slice of `array` from `start` up to, but not including, `end`.\n     *\n     * **Note:** This method is used instead of\n     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n     * returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function slice(array, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n        start = 0;\n        end = length;\n      }\n      else {\n        start = start == null ? 0 : toInteger(start);\n        end = end === undefined ? length : toInteger(end);\n      }\n      return baseSlice(array, start, end);\n    }\n\n    /**\n     * Uses a binary search to determine the lowest index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedIndex([30, 50], 40);\n     * // => 1\n     */\n    function sortedIndex(array, value) {\n      return baseSortedIndex(array, value);\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 0\n     */\n    function sortedIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 1\n     */\n    function sortedIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value);\n        if (index < length && eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it returns the highest\n     * index at which `value` should be inserted into `array` in order to\n     * maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n     * // => 4\n     */\n    function sortedLastIndex(array, value) {\n      return baseSortedIndex(array, value, true);\n    }\n\n    /**\n     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 1\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 1\n     */\n    function sortedLastIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n    }\n\n    /**\n     * This method is like `_.lastIndexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 3\n     */\n    function sortedLastIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value, true) - 1;\n        if (eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.uniq` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniq([1, 1, 2]);\n     * // => [1, 2]\n     */\n    function sortedUniq(array) {\n      return (array && array.length)\n        ? baseSortedUniq(array)\n        : [];\n    }\n\n    /**\n     * This method is like `_.uniqBy` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n     * // => [1.1, 2.3]\n     */\n    function sortedUniqBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSortedUniq(array, getIteratee(iteratee, 2))\n        : [];\n    }\n\n    /**\n     * Gets all but the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.tail([1, 2, 3]);\n     * // => [2, 3]\n     */\n    function tail(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 1, length) : [];\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.take([1, 2, 3]);\n     * // => [1]\n     *\n     * _.take([1, 2, 3], 2);\n     * // => [1, 2]\n     *\n     * _.take([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.take([1, 2, 3], 0);\n     * // => []\n     */\n    function take(array, n, guard) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.takeRight([1, 2, 3]);\n     * // => [3]\n     *\n     * _.takeRight([1, 2, 3], 2);\n     * // => [2, 3]\n     *\n     * _.takeRight([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.takeRight([1, 2, 3], 0);\n     * // => []\n     */\n    function takeRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the end. Elements are\n     * taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.takeRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeRightWhile(users, ['active', false]);\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeRightWhile(users, 'active');\n     * // => []\n     */\n    function takeRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), false, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the beginning. Elements\n     * are taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.takeWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeWhile(users, ['active', false]);\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeWhile(users, 'active');\n     * // => []\n     */\n    function takeWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3))\n        : [];\n    }\n\n    /**\n     * Creates an array of unique values, in order, from all given arrays using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.union([2], [1, 2]);\n     * // => [2, 1]\n     */\n    var union = baseRest(function(arrays) {\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which uniqueness is computed. Result values are chosen from the first\n     * array in which the value occurs. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    var unionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `comparator` which\n     * is invoked to compare elements of `arrays`. Result values are chosen from\n     * the first array in which the value occurs. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.unionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var unionWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n    });\n\n    /**\n     * Creates a duplicate-free version of an array, using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons, in which only the first occurrence of each element\n     * is kept. The order of result values is determined by the order they occur\n     * in the array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniq([2, 1, 2]);\n     * // => [2, 1]\n     */\n    function uniq(array) {\n      return (array && array.length) ? baseUniq(array) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * uniqueness is computed. The order of result values is determined by the\n     * order they occur in the array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    function uniqBy(array, iteratee) {\n      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `comparator` which\n     * is invoked to compare elements of `array`. The order of result values is\n     * determined by the order they occur in the array.The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.uniqWith(objects, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n     */\n    function uniqWith(array, comparator) {\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts an array of grouped\n     * elements and creates an array regrouping the elements to their pre-zip\n     * configuration.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.2.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     *\n     * _.unzip(zipped);\n     * // => [['a', 'b'], [1, 2], [true, false]]\n     */\n    function unzip(array) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var length = 0;\n      array = arrayFilter(array, function(group) {\n        if (isArrayLikeObject(group)) {\n          length = nativeMax(group.length, length);\n          return true;\n        }\n      });\n      return baseTimes(length, function(index) {\n        return arrayMap(array, baseProperty(index));\n      });\n    }\n\n    /**\n     * This method is like `_.unzip` except that it accepts `iteratee` to specify\n     * how regrouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  regrouped values.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n     * // => [[1, 10, 100], [2, 20, 200]]\n     *\n     * _.unzipWith(zipped, _.add);\n     * // => [3, 30, 300]\n     */\n    function unzipWith(array, iteratee) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var result = unzip(array);\n      if (iteratee == null) {\n        return result;\n      }\n      return arrayMap(result, function(group) {\n        return apply(iteratee, undefined, group);\n      });\n    }\n\n    /**\n     * Creates an array excluding all given values using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.pull`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...*} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.xor\n     * @example\n     *\n     * _.without([2, 1, 2, 3], 1, 2);\n     * // => [3]\n     */\n    var without = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, values)\n        : [];\n    });\n\n    /**\n     * Creates an array of unique values that is the\n     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n     * of the given arrays. The order of result values is determined by the order\n     * they occur in the arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.without\n     * @example\n     *\n     * _.xor([2, 1], [2, 3]);\n     * // => [1, 3]\n     */\n    var xor = baseRest(function(arrays) {\n      return baseXor(arrayFilter(arrays, isArrayLikeObject));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which by which they're compared. The order of result values is determined\n     * by the order they occur in the arrays. The iteratee is invoked with one\n     * argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2, 3.4]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var xorBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `comparator` which is\n     * invoked to compare elements of `arrays`. The order of result values is\n     * determined by the order they occur in the arrays. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.xorWith(objects, others, _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var xorWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n    });\n\n    /**\n     * Creates an array of grouped elements, the first of which contains the\n     * first elements of the given arrays, the second of which contains the\n     * second elements of the given arrays, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     */\n    var zip = baseRest(unzip);\n\n    /**\n     * This method is like `_.fromPairs` except that it accepts two arrays,\n     * one of property identifiers and one of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.4.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObject(['a', 'b'], [1, 2]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function zipObject(props, values) {\n      return baseZipObject(props || [], values || [], assignValue);\n    }\n\n    /**\n     * This method is like `_.zipObject` except that it supports property paths.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n     */\n    function zipObjectDeep(props, values) {\n      return baseZipObject(props || [], values || [], baseSet);\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts `iteratee` to specify\n     * how grouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  grouped values.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n     *   return a + b + c;\n     * });\n     * // => [111, 222]\n     */\n    var zipWith = baseRest(function(arrays) {\n      var length = arrays.length,\n          iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n      return unzipWith(arrays, iteratee);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n     * chain sequences enabled. The result of such sequences must be unwrapped\n     * with `_#value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Seq\n     * @param {*} value The value to wrap.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36 },\n     *   { 'user': 'fred',    'age': 40 },\n     *   { 'user': 'pebbles', 'age': 1 }\n     * ];\n     *\n     * var youngest = _\n     *   .chain(users)\n     *   .sortBy('age')\n     *   .map(function(o) {\n     *     return o.user + ' is ' + o.age;\n     *   })\n     *   .head()\n     *   .value();\n     * // => 'pebbles is 1'\n     */\n    function chain(value) {\n      var result = lodash(value);\n      result.__chain__ = true;\n      return result;\n    }\n\n    /**\n     * This method invokes `interceptor` and returns `value`. The interceptor\n     * is invoked with one argument; (value). The purpose of this method is to\n     * \"tap into\" a method chain sequence in order to modify intermediate results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * _([1, 2, 3])\n     *  .tap(function(array) {\n     *    // Mutate input array.\n     *    array.pop();\n     *  })\n     *  .reverse()\n     *  .value();\n     * // => [2, 1]\n     */\n    function tap(value, interceptor) {\n      interceptor(value);\n      return value;\n    }\n\n    /**\n     * This method is like `_.tap` except that it returns the result of `interceptor`.\n     * The purpose of this method is to \"pass thru\" values replacing intermediate\n     * results in a method chain sequence.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns the result of `interceptor`.\n     * @example\n     *\n     * _('  abc  ')\n     *  .chain()\n     *  .trim()\n     *  .thru(function(value) {\n     *    return [value];\n     *  })\n     *  .value();\n     * // => ['abc']\n     */\n    function thru(value, interceptor) {\n      return interceptor(value);\n    }\n\n    /**\n     * This method is the wrapper version of `_.at`.\n     *\n     * @name at\n     * @memberOf _\n     * @since 1.0.0\n     * @category Seq\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _(object).at(['a[0].b.c', 'a[1]']).value();\n     * // => [3, 4]\n     */\n    var wrapperAt = flatRest(function(paths) {\n      var length = paths.length,\n          start = length ? paths[0] : 0,\n          value = this.__wrapped__,\n          interceptor = function(object) { return baseAt(object, paths); };\n\n      if (length > 1 || this.__actions__.length ||\n          !(value instanceof LazyWrapper) || !isIndex(start)) {\n        return this.thru(interceptor);\n      }\n      value = value.slice(start, +start + (length ? 1 : 0));\n      value.__actions__.push({\n        'func': thru,\n        'args': [interceptor],\n        'thisArg': undefined\n      });\n      return new LodashWrapper(value, this.__chain__).thru(function(array) {\n        if (length && !array.length) {\n          array.push(undefined);\n        }\n        return array;\n      });\n    });\n\n    /**\n     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n     *\n     * @name chain\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 40 }\n     * ];\n     *\n     * // A sequence without explicit chaining.\n     * _(users).head();\n     * // => { 'user': 'barney', 'age': 36 }\n     *\n     * // A sequence with explicit chaining.\n     * _(users)\n     *   .chain()\n     *   .head()\n     *   .pick('user')\n     *   .value();\n     * // => { 'user': 'barney' }\n     */\n    function wrapperChain() {\n      return chain(this);\n    }\n\n    /**\n     * Executes the chain sequence and returns the wrapped result.\n     *\n     * @name commit\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2];\n     * var wrapped = _(array).push(3);\n     *\n     * console.log(array);\n     * // => [1, 2]\n     *\n     * wrapped = wrapped.commit();\n     * console.log(array);\n     * // => [1, 2, 3]\n     *\n     * wrapped.last();\n     * // => 3\n     *\n     * console.log(array);\n     * // => [1, 2, 3]\n     */\n    function wrapperCommit() {\n      return new LodashWrapper(this.value(), this.__chain__);\n    }\n\n    /**\n     * Gets the next value on a wrapped object following the\n     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n     *\n     * @name next\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the next iterator value.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 1 }\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 2 }\n     *\n     * wrapped.next();\n     * // => { 'done': true, 'value': undefined }\n     */\n    function wrapperNext() {\n      if (this.__values__ === undefined) {\n        this.__values__ = toArray(this.value());\n      }\n      var done = this.__index__ >= this.__values__.length,\n          value = done ? undefined : this.__values__[this.__index__++];\n\n      return { 'done': done, 'value': value };\n    }\n\n    /**\n     * Enables the wrapper to be iterable.\n     *\n     * @name Symbol.iterator\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the wrapper object.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped[Symbol.iterator]() === wrapped;\n     * // => true\n     *\n     * Array.from(wrapped);\n     * // => [1, 2]\n     */\n    function wrapperToIterator() {\n      return this;\n    }\n\n    /**\n     * Creates a clone of the chain sequence planting `value` as the wrapped value.\n     *\n     * @name plant\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @param {*} value The value to plant.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2]).map(square);\n     * var other = wrapped.plant([3, 4]);\n     *\n     * other.value();\n     * // => [9, 16]\n     *\n     * wrapped.value();\n     * // => [1, 4]\n     */\n    function wrapperPlant(value) {\n      var result,\n          parent = this;\n\n      while (parent instanceof baseLodash) {\n        var clone = wrapperClone(parent);\n        clone.__index__ = 0;\n        clone.__values__ = undefined;\n        if (result) {\n          previous.__wrapped__ = clone;\n        } else {\n          result = clone;\n        }\n        var previous = clone;\n        parent = parent.__wrapped__;\n      }\n      previous.__wrapped__ = value;\n      return result;\n    }\n\n    /**\n     * This method is the wrapper version of `_.reverse`.\n     *\n     * **Note:** This method mutates the wrapped array.\n     *\n     * @name reverse\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _(array).reverse().value()\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function wrapperReverse() {\n      var value = this.__wrapped__;\n      if (value instanceof LazyWrapper) {\n        var wrapped = value;\n        if (this.__actions__.length) {\n          wrapped = new LazyWrapper(this);\n        }\n        wrapped = wrapped.reverse();\n        wrapped.__actions__.push({\n          'func': thru,\n          'args': [reverse],\n          'thisArg': undefined\n        });\n        return new LodashWrapper(wrapped, this.__chain__);\n      }\n      return this.thru(reverse);\n    }\n\n    /**\n     * Executes the chain sequence to resolve the unwrapped value.\n     *\n     * @name value\n     * @memberOf _\n     * @since 0.1.0\n     * @alias toJSON, valueOf\n     * @category Seq\n     * @returns {*} Returns the resolved unwrapped value.\n     * @example\n     *\n     * _([1, 2, 3]).value();\n     * // => [1, 2, 3]\n     */\n    function wrapperValue() {\n      return baseWrapperValue(this.__wrapped__, this.__actions__);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the number of times the key was returned by `iteratee`. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.countBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': 1, '6': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.countBy(['one', 'two', 'three'], 'length');\n     * // => { '3': 2, '5': 1 }\n     */\n    var countBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        ++result[key];\n      } else {\n        baseAssignValue(result, key, 1);\n      }\n    });\n\n    /**\n     * Checks if `predicate` returns truthy for **all** elements of `collection`.\n     * Iteration is stopped once `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * **Note:** This method returns `true` for\n     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n     * elements of empty collections.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.every([true, 1, null, 'yes'], Boolean);\n     * // => false\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.every(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.every(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.every(users, 'active');\n     * // => false\n     */\n    function every(collection, predicate, guard) {\n      var func = isArray(collection) ? arrayEvery : baseEvery;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning an array of all elements\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * **Note:** Unlike `_.remove`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.reject\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * _.filter(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, { 'age': 36, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.filter(users, 'active');\n     * // => objects for ['barney']\n     *\n     * // Combining several predicates using `_.overEvery` or `_.overSome`.\n     * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n     * // => objects for ['fred', 'barney']\n     */\n    function filter(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning the first element\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': true },\n     *   { 'user': 'fred',    'age': 40, 'active': false },\n     *   { 'user': 'pebbles', 'age': 1,  'active': true }\n     * ];\n     *\n     * _.find(users, function(o) { return o.age < 40; });\n     * // => object for 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.find(users, { 'age': 1, 'active': true });\n     * // => object for 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.find(users, ['active', false]);\n     * // => object for 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.find(users, 'active');\n     * // => object for 'barney'\n     */\n    var find = createFind(findIndex);\n\n    /**\n     * This method is like `_.find` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=collection.length-1] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * _.findLast([1, 2, 3, 4], function(n) {\n     *   return n % 2 == 1;\n     * });\n     * // => 3\n     */\n    var findLast = createFind(findLastIndex);\n\n    /**\n     * Creates a flattened array of values by running each element in `collection`\n     * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n     * with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [n, n];\n     * }\n     *\n     * _.flatMap([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMap(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), 1);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDeep([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMapDeep(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), INFINITY);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDepth([1, 2], duplicate, 2);\n     * // => [[1, 1], [2, 2]]\n     */\n    function flatMapDepth(collection, iteratee, depth) {\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(map(collection, iteratee), depth);\n    }\n\n    /**\n     * Iterates over elements of `collection` and invokes `iteratee` for each element.\n     * The iteratee is invoked with three arguments: (value, index|key, collection).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n     * property are iterated like arrays. To avoid this behavior use `_.forIn`\n     * or `_.forOwn` for object iteration.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias each\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEachRight\n     * @example\n     *\n     * _.forEach([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `1` then `2`.\n     *\n     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forEach(collection, iteratee) {\n      var func = isArray(collection) ? arrayEach : baseEach;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forEach` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @alias eachRight\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEach\n     * @example\n     *\n     * _.forEachRight([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `2` then `1`.\n     */\n    function forEachRight(collection, iteratee) {\n      var func = isArray(collection) ? arrayEachRight : baseEachRight;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The order of grouped values\n     * is determined by the order they occur in `collection`. The corresponding\n     * value of each key is an array of elements responsible for generating the\n     * key. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': [4.2], '6': [6.1, 6.3] }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.groupBy(['one', 'two', 'three'], 'length');\n     * // => { '3': ['one', 'two'], '5': ['three'] }\n     */\n    var groupBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        result[key].push(value);\n      } else {\n        baseAssignValue(result, key, [value]);\n      }\n    });\n\n    /**\n     * Checks if `value` is in `collection`. If `collection` is a string, it's\n     * checked for a substring of `value`, otherwise\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * is used for equality comparisons. If `fromIndex` is negative, it's used as\n     * the offset from the end of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {boolean} Returns `true` if `value` is found, else `false`.\n     * @example\n     *\n     * _.includes([1, 2, 3], 1);\n     * // => true\n     *\n     * _.includes([1, 2, 3], 1, 2);\n     * // => false\n     *\n     * _.includes({ 'a': 1, 'b': 2 }, 1);\n     * // => true\n     *\n     * _.includes('abcd', 'bc');\n     * // => true\n     */\n    function includes(collection, value, fromIndex, guard) {\n      collection = isArrayLike(collection) ? collection : values(collection);\n      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n      var length = collection.length;\n      if (fromIndex < 0) {\n        fromIndex = nativeMax(length + fromIndex, 0);\n      }\n      return isString(collection)\n        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n    }\n\n    /**\n     * Invokes the method at `path` of each element in `collection`, returning\n     * an array of the results of each invoked method. Any additional arguments\n     * are provided to each invoked method. If `path` is a function, it's invoked\n     * for, and `this` bound to, each element in `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array|Function|string} path The path of the method to invoke or\n     *  the function invoked per iteration.\n     * @param {...*} [args] The arguments to invoke each method with.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n     * // => [[1, 5, 7], [1, 2, 3]]\n     *\n     * _.invokeMap([123, 456], String.prototype.split, '');\n     * // => [['1', '2', '3'], ['4', '5', '6']]\n     */\n    var invokeMap = baseRest(function(collection, path, args) {\n      var index = -1,\n          isFunc = typeof path == 'function',\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value) {\n        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n      });\n      return result;\n    });\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the last element responsible for generating the key. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * var array = [\n     *   { 'dir': 'left', 'code': 97 },\n     *   { 'dir': 'right', 'code': 100 }\n     * ];\n     *\n     * _.keyBy(array, function(o) {\n     *   return String.fromCharCode(o.code);\n     * });\n     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n     *\n     * _.keyBy(array, 'dir');\n     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n     */\n    var keyBy = createAggregator(function(result, value, key) {\n      baseAssignValue(result, key, value);\n    });\n\n    /**\n     * Creates an array of values by running each element in `collection` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n     *\n     * The guarded methods are:\n     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * _.map([4, 8], square);\n     * // => [16, 64]\n     *\n     * _.map({ 'a': 4, 'b': 8 }, square);\n     * // => [16, 64] (iteration order is not guaranteed)\n     *\n     * var users = [\n     *   { 'user': 'barney' },\n     *   { 'user': 'fred' }\n     * ];\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, 'user');\n     * // => ['barney', 'fred']\n     */\n    function map(collection, iteratee) {\n      var func = isArray(collection) ? arrayMap : baseMap;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.sortBy` except that it allows specifying the sort\n     * orders of the iteratees to sort by. If `orders` is unspecified, all values\n     * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n     * descending or \"asc\" for ascending sort order of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @param {string[]} [orders] The sort orders of `iteratees`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 34 },\n     *   { 'user': 'fred',   'age': 40 },\n     *   { 'user': 'barney', 'age': 36 }\n     * ];\n     *\n     * // Sort by `user` in ascending order and by `age` in descending order.\n     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n     */\n    function orderBy(collection, iteratees, orders, guard) {\n      if (collection == null) {\n        return [];\n      }\n      if (!isArray(iteratees)) {\n        iteratees = iteratees == null ? [] : [iteratees];\n      }\n      orders = guard ? undefined : orders;\n      if (!isArray(orders)) {\n        orders = orders == null ? [] : [orders];\n      }\n      return baseOrderBy(collection, iteratees, orders);\n    }\n\n    /**\n     * Creates an array of elements split into two groups, the first of which\n     * contains elements `predicate` returns truthy for, the second of which\n     * contains elements `predicate` returns falsey for. The predicate is\n     * invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of grouped elements.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': false },\n     *   { 'user': 'fred',    'age': 40, 'active': true },\n     *   { 'user': 'pebbles', 'age': 1,  'active': false }\n     * ];\n     *\n     * _.partition(users, function(o) { return o.active; });\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.partition(users, { 'age': 1, 'active': false });\n     * // => objects for [['pebbles'], ['barney', 'fred']]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.partition(users, ['active', false]);\n     * // => objects for [['barney', 'pebbles'], ['fred']]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.partition(users, 'active');\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     */\n    var partition = createAggregator(function(result, value, key) {\n      result[key ? 0 : 1].push(value);\n    }, function() { return [[], []]; });\n\n    /**\n     * Reduces `collection` to a value which is the accumulated result of running\n     * each element in `collection` thru `iteratee`, where each successive\n     * invocation is supplied the return value of the previous. If `accumulator`\n     * is not given, the first element of `collection` is used as the initial\n     * value. The iteratee is invoked with four arguments:\n     * (accumulator, value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.reduce`, `_.reduceRight`, and `_.transform`.\n     *\n     * The guarded methods are:\n     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n     * and `sortBy`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduceRight\n     * @example\n     *\n     * _.reduce([1, 2], function(sum, n) {\n     *   return sum + n;\n     * }, 0);\n     * // => 3\n     *\n     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     *   return result;\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n     */\n    function reduce(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduce : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n    }\n\n    /**\n     * This method is like `_.reduce` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduce\n     * @example\n     *\n     * var array = [[0, 1], [2, 3], [4, 5]];\n     *\n     * _.reduceRight(array, function(flattened, other) {\n     *   return flattened.concat(other);\n     * }, []);\n     * // => [4, 5, 2, 3, 0, 1]\n     */\n    function reduceRight(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduceRight : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n    }\n\n    /**\n     * The opposite of `_.filter`; this method returns the elements of `collection`\n     * that `predicate` does **not** return truthy for.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.filter\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': true }\n     * ];\n     *\n     * _.reject(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.reject(users, { 'age': 40, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.reject(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.reject(users, 'active');\n     * // => objects for ['barney']\n     */\n    function reject(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, negate(getIteratee(predicate, 3)));\n    }\n\n    /**\n     * Gets a random element from `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     * @example\n     *\n     * _.sample([1, 2, 3, 4]);\n     * // => 2\n     */\n    function sample(collection) {\n      var func = isArray(collection) ? arraySample : baseSample;\n      return func(collection);\n    }\n\n    /**\n     * Gets `n` random elements at unique keys from `collection` up to the\n     * size of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} [n=1] The number of elements to sample.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the random elements.\n     * @example\n     *\n     * _.sampleSize([1, 2, 3], 2);\n     * // => [3, 1]\n     *\n     * _.sampleSize([1, 2, 3], 4);\n     * // => [2, 3, 1]\n     */\n    function sampleSize(collection, n, guard) {\n      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n      return func(collection, n);\n    }\n\n    /**\n     * Creates an array of shuffled values, using a version of the\n     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     * @example\n     *\n     * _.shuffle([1, 2, 3, 4]);\n     * // => [4, 1, 3, 2]\n     */\n    function shuffle(collection) {\n      var func = isArray(collection) ? arrayShuffle : baseShuffle;\n      return func(collection);\n    }\n\n    /**\n     * Gets the size of `collection` by returning its length for array-like\n     * values or the number of own enumerable string keyed properties for objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @returns {number} Returns the collection size.\n     * @example\n     *\n     * _.size([1, 2, 3]);\n     * // => 3\n     *\n     * _.size({ 'a': 1, 'b': 2 });\n     * // => 2\n     *\n     * _.size('pebbles');\n     * // => 7\n     */\n    function size(collection) {\n      if (collection == null) {\n        return 0;\n      }\n      if (isArrayLike(collection)) {\n        return isString(collection) ? stringSize(collection) : collection.length;\n      }\n      var tag = getTag(collection);\n      if (tag == mapTag || tag == setTag) {\n        return collection.size;\n      }\n      return baseKeys(collection).length;\n    }\n\n    /**\n     * Checks if `predicate` returns truthy for **any** element of `collection`.\n     * Iteration is stopped once `predicate` returns truthy. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.some([null, 0, 'yes', false], Boolean);\n     * // => true\n     *\n     * var users = [\n     *   { 'user': 'barney', 'active': true },\n     *   { 'user': 'fred',   'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.some(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.some(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.some(users, 'active');\n     * // => true\n     */\n    function some(collection, predicate, guard) {\n      var func = isArray(collection) ? arraySome : baseSome;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Creates an array of elements, sorted in ascending order by the results of\n     * running each element in a collection thru each iteratee. This method\n     * performs a stable sort, that is, it preserves the original sort order of\n     * equal elements. The iteratees are invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 30 },\n     *   { 'user': 'barney', 'age': 34 }\n     * ];\n     *\n     * _.sortBy(users, [function(o) { return o.user; }]);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n     *\n     * _.sortBy(users, ['user', 'age']);\n     * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n     */\n    var sortBy = baseRest(function(collection, iteratees) {\n      if (collection == null) {\n        return [];\n      }\n      var length = iteratees.length;\n      if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n        iteratees = [];\n      } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n        iteratees = [iteratees[0]];\n      }\n      return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Gets the timestamp of the number of milliseconds that have elapsed since\n     * the Unix epoch (1 January 1970 00:00:00 UTC).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Date\n     * @returns {number} Returns the timestamp.\n     * @example\n     *\n     * _.defer(function(stamp) {\n     *   console.log(_.now() - stamp);\n     * }, _.now());\n     * // => Logs the number of milliseconds it took for the deferred invocation.\n     */\n    var now = ctxNow || function() {\n      return root.Date.now();\n    };\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The opposite of `_.before`; this method creates a function that invokes\n     * `func` once it's called `n` or more times.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {number} n The number of calls before `func` is invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var saves = ['profile', 'settings'];\n     *\n     * var done = _.after(saves.length, function() {\n     *   console.log('done saving!');\n     * });\n     *\n     * _.forEach(saves, function(type) {\n     *   asyncSave({ 'type': type, 'complete': done });\n     * });\n     * // => Logs 'done saving!' after the two async saves have completed.\n     */\n    function after(n, func) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n < 1) {\n          return func.apply(this, arguments);\n        }\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func`, with up to `n` arguments,\n     * ignoring any additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @param {number} [n=func.length] The arity cap.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n     * // => [6, 8, 10]\n     */\n    function ary(func, n, guard) {\n      n = guard ? undefined : n;\n      n = (func && n == null) ? func.length : n;\n      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n    }\n\n    /**\n     * Creates a function that invokes `func`, with the `this` binding and arguments\n     * of the created function, while it's called less than `n` times. Subsequent\n     * calls to the created function return the result of the last `func` invocation.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {number} n The number of calls at which `func` is no longer invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * jQuery(element).on('click', _.before(5, addContactToList));\n     * // => Allows adding up to 4 contacts to the list.\n     */\n    function before(n, func) {\n      var result;\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n > 0) {\n          result = func.apply(this, arguments);\n        }\n        if (n <= 1) {\n          func = undefined;\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of `thisArg`\n     * and `partials` prepended to the arguments it receives.\n     *\n     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n     * property of bound functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to bind.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * function greet(greeting, punctuation) {\n     *   return greeting + ' ' + this.user + punctuation;\n     * }\n     *\n     * var object = { 'user': 'fred' };\n     *\n     * var bound = _.bind(greet, object, 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bind(greet, object, _, '!');\n     * bound('hi');\n     * // => 'hi fred!'\n     */\n    var bind = baseRest(function(func, thisArg, partials) {\n      var bitmask = WRAP_BIND_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bind));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(func, bitmask, thisArg, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes the method at `object[key]` with `partials`\n     * prepended to the arguments it receives.\n     *\n     * This method differs from `_.bind` by allowing bound functions to reference\n     * methods that may be redefined or don't yet exist. See\n     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n     * for more details.\n     *\n     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Function\n     * @param {Object} object The object to invoke the method on.\n     * @param {string} key The key of the method.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * var object = {\n     *   'user': 'fred',\n     *   'greet': function(greeting, punctuation) {\n     *     return greeting + ' ' + this.user + punctuation;\n     *   }\n     * };\n     *\n     * var bound = _.bindKey(object, 'greet', 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * object.greet = function(greeting, punctuation) {\n     *   return greeting + 'ya ' + this.user + punctuation;\n     * };\n     *\n     * bound('!');\n     * // => 'hiya fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bindKey(object, 'greet', _, '!');\n     * bound('hi');\n     * // => 'hiya fred!'\n     */\n    var bindKey = baseRest(function(object, key, partials) {\n      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bindKey));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(key, bitmask, object, partials, holders);\n    });\n\n    /**\n     * Creates a function that accepts arguments of `func` and either invokes\n     * `func` returning its result, if at least `arity` number of arguments have\n     * been provided, or returns a function that accepts the remaining `func`\n     * arguments, and so on. The arity of `func` may be specified if `func.length`\n     * is not sufficient.\n     *\n     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curry(abc);\n     *\n     * curried(1)(2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(1)(_, 3)(2);\n     * // => [1, 2, 3]\n     */\n    function curry(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curry.placeholder;\n      return result;\n    }\n\n    /**\n     * This method is like `_.curry` except that arguments are applied to `func`\n     * in the manner of `_.partialRight` instead of `_.partial`.\n     *\n     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curryRight(abc);\n     *\n     * curried(3)(2)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(2, 3)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(3)(1, _)(2);\n     * // => [1, 2, 3]\n     */\n    function curryRight(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curryRight.placeholder;\n      return result;\n    }\n\n    /**\n     * Creates a debounced function that delays invoking `func` until after `wait`\n     * milliseconds have elapsed since the last time the debounced function was\n     * invoked. The debounced function comes with a `cancel` method to cancel\n     * delayed `func` invocations and a `flush` method to immediately invoke them.\n     * Provide `options` to indicate whether `func` should be invoked on the\n     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n     * with the last arguments provided to the debounced function. Subsequent\n     * calls to the debounced function return the result of the last `func`\n     * invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the debounced function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.debounce` and `_.throttle`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to debounce.\n     * @param {number} [wait=0] The number of milliseconds to delay.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=false]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {number} [options.maxWait]\n     *  The maximum time `func` is allowed to be delayed before it's invoked.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new debounced function.\n     * @example\n     *\n     * // Avoid costly calculations while the window size is in flux.\n     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n     *\n     * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n     * jQuery(element).on('click', _.debounce(sendMail, 300, {\n     *   'leading': true,\n     *   'trailing': false\n     * }));\n     *\n     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n     * var source = new EventSource('/stream');\n     * jQuery(source).on('message', debounced);\n     *\n     * // Cancel the trailing debounced invocation.\n     * jQuery(window).on('popstate', debounced.cancel);\n     */\n    function debounce(func, wait, options) {\n      var lastArgs,\n          lastThis,\n          maxWait,\n          result,\n          timerId,\n          lastCallTime,\n          lastInvokeTime = 0,\n          leading = false,\n          maxing = false,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      wait = toNumber(wait) || 0;\n      if (isObject(options)) {\n        leading = !!options.leading;\n        maxing = 'maxWait' in options;\n        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n\n      function invokeFunc(time) {\n        var args = lastArgs,\n            thisArg = lastThis;\n\n        lastArgs = lastThis = undefined;\n        lastInvokeTime = time;\n        result = func.apply(thisArg, args);\n        return result;\n      }\n\n      function leadingEdge(time) {\n        // Reset any `maxWait` timer.\n        lastInvokeTime = time;\n        // Start the timer for the trailing edge.\n        timerId = setTimeout(timerExpired, wait);\n        // Invoke the leading edge.\n        return leading ? invokeFunc(time) : result;\n      }\n\n      function remainingWait(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime,\n            timeWaiting = wait - timeSinceLastCall;\n\n        return maxing\n          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n          : timeWaiting;\n      }\n\n      function shouldInvoke(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime;\n\n        // Either this is the first call, activity has stopped and we're at the\n        // trailing edge, the system time has gone backwards and we're treating\n        // it as the trailing edge, or we've hit the `maxWait` limit.\n        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n      }\n\n      function timerExpired() {\n        var time = now();\n        if (shouldInvoke(time)) {\n          return trailingEdge(time);\n        }\n        // Restart the timer.\n        timerId = setTimeout(timerExpired, remainingWait(time));\n      }\n\n      function trailingEdge(time) {\n        timerId = undefined;\n\n        // Only invoke if we have `lastArgs` which means `func` has been\n        // debounced at least once.\n        if (trailing && lastArgs) {\n          return invokeFunc(time);\n        }\n        lastArgs = lastThis = undefined;\n        return result;\n      }\n\n      function cancel() {\n        if (timerId !== undefined) {\n          clearTimeout(timerId);\n        }\n        lastInvokeTime = 0;\n        lastArgs = lastCallTime = lastThis = timerId = undefined;\n      }\n\n      function flush() {\n        return timerId === undefined ? result : trailingEdge(now());\n      }\n\n      function debounced() {\n        var time = now(),\n            isInvoking = shouldInvoke(time);\n\n        lastArgs = arguments;\n        lastThis = this;\n        lastCallTime = time;\n\n        if (isInvoking) {\n          if (timerId === undefined) {\n            return leadingEdge(lastCallTime);\n          }\n          if (maxing) {\n            // Handle invocations in a tight loop.\n            clearTimeout(timerId);\n            timerId = setTimeout(timerExpired, wait);\n            return invokeFunc(lastCallTime);\n          }\n        }\n        if (timerId === undefined) {\n          timerId = setTimeout(timerExpired, wait);\n        }\n        return result;\n      }\n      debounced.cancel = cancel;\n      debounced.flush = flush;\n      return debounced;\n    }\n\n    /**\n     * Defers invoking the `func` until the current call stack has cleared. Any\n     * additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to defer.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.defer(function(text) {\n     *   console.log(text);\n     * }, 'deferred');\n     * // => Logs 'deferred' after one millisecond.\n     */\n    var defer = baseRest(function(func, args) {\n      return baseDelay(func, 1, args);\n    });\n\n    /**\n     * Invokes `func` after `wait` milliseconds. Any additional arguments are\n     * provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.delay(function(text) {\n     *   console.log(text);\n     * }, 1000, 'later');\n     * // => Logs 'later' after one second.\n     */\n    var delay = baseRest(function(func, wait, args) {\n      return baseDelay(func, toNumber(wait) || 0, args);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments reversed.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to flip arguments for.\n     * @returns {Function} Returns the new flipped function.\n     * @example\n     *\n     * var flipped = _.flip(function() {\n     *   return _.toArray(arguments);\n     * });\n     *\n     * flipped('a', 'b', 'c', 'd');\n     * // => ['d', 'c', 'b', 'a']\n     */\n    function flip(func) {\n      return createWrap(func, WRAP_FLIP_FLAG);\n    }\n\n    /**\n     * Creates a function that memoizes the result of `func`. If `resolver` is\n     * provided, it determines the cache key for storing the result based on the\n     * arguments provided to the memoized function. By default, the first argument\n     * provided to the memoized function is used as the map cache key. The `func`\n     * is invoked with the `this` binding of the memoized function.\n     *\n     * **Note:** The cache is exposed as the `cache` property on the memoized\n     * function. Its creation may be customized by replacing the `_.memoize.Cache`\n     * constructor with one whose instances implement the\n     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n     * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to have its output memoized.\n     * @param {Function} [resolver] The function to resolve the cache key.\n     * @returns {Function} Returns the new memoized function.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     * var other = { 'c': 3, 'd': 4 };\n     *\n     * var values = _.memoize(_.values);\n     * values(object);\n     * // => [1, 2]\n     *\n     * values(other);\n     * // => [3, 4]\n     *\n     * object.a = 2;\n     * values(object);\n     * // => [1, 2]\n     *\n     * // Modify the result cache.\n     * values.cache.set(object, ['a', 'b']);\n     * values(object);\n     * // => ['a', 'b']\n     *\n     * // Replace `_.memoize.Cache`.\n     * _.memoize.Cache = WeakMap;\n     */\n    function memoize(func, resolver) {\n      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var memoized = function() {\n        var args = arguments,\n            key = resolver ? resolver.apply(this, args) : args[0],\n            cache = memoized.cache;\n\n        if (cache.has(key)) {\n          return cache.get(key);\n        }\n        var result = func.apply(this, args);\n        memoized.cache = cache.set(key, result) || cache;\n        return result;\n      };\n      memoized.cache = new (memoize.Cache || MapCache);\n      return memoized;\n    }\n\n    // Expose `MapCache`.\n    memoize.Cache = MapCache;\n\n    /**\n     * Creates a function that negates the result of the predicate `func`. The\n     * `func` predicate is invoked with the `this` binding and arguments of the\n     * created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} predicate The predicate to negate.\n     * @returns {Function} Returns the new negated function.\n     * @example\n     *\n     * function isEven(n) {\n     *   return n % 2 == 0;\n     * }\n     *\n     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n     * // => [1, 3, 5]\n     */\n    function negate(predicate) {\n      if (typeof predicate != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return function() {\n        var args = arguments;\n        switch (args.length) {\n          case 0: return !predicate.call(this);\n          case 1: return !predicate.call(this, args[0]);\n          case 2: return !predicate.call(this, args[0], args[1]);\n          case 3: return !predicate.call(this, args[0], args[1], args[2]);\n        }\n        return !predicate.apply(this, args);\n      };\n    }\n\n    /**\n     * Creates a function that is restricted to invoking `func` once. Repeat calls\n     * to the function return the value of the first invocation. The `func` is\n     * invoked with the `this` binding and arguments of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var initialize = _.once(createApplication);\n     * initialize();\n     * initialize();\n     * // => `createApplication` is invoked once\n     */\n    function once(func) {\n      return before(2, func);\n    }\n\n    /**\n     * Creates a function that invokes `func` with its arguments transformed.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Function\n     * @param {Function} func The function to wrap.\n     * @param {...(Function|Function[])} [transforms=[_.identity]]\n     *  The argument transforms.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * function doubled(n) {\n     *   return n * 2;\n     * }\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var func = _.overArgs(function(x, y) {\n     *   return [x, y];\n     * }, [square, doubled]);\n     *\n     * func(9, 3);\n     * // => [81, 6]\n     *\n     * func(10, 5);\n     * // => [100, 10]\n     */\n    var overArgs = castRest(function(func, transforms) {\n      transforms = (transforms.length == 1 && isArray(transforms[0]))\n        ? arrayMap(transforms[0], baseUnary(getIteratee()))\n        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n      var funcsLength = transforms.length;\n      return baseRest(function(args) {\n        var index = -1,\n            length = nativeMin(args.length, funcsLength);\n\n        while (++index < length) {\n          args[index] = transforms[index].call(this, args[index]);\n        }\n        return apply(func, this, args);\n      });\n    });\n\n    /**\n     * Creates a function that invokes `func` with `partials` prepended to the\n     * arguments it receives. This method is like `_.bind` except it does **not**\n     * alter the `this` binding.\n     *\n     * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.2.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var sayHelloTo = _.partial(greet, 'hello');\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     *\n     * // Partially applied with placeholders.\n     * var greetFred = _.partial(greet, _, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     */\n    var partial = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partial));\n      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * This method is like `_.partial` except that partially applied arguments\n     * are appended to the arguments it receives.\n     *\n     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var greetFred = _.partialRight(greet, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     *\n     * // Partially applied with placeholders.\n     * var sayHelloTo = _.partialRight(greet, 'hello', _);\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     */\n    var partialRight = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partialRight));\n      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments arranged according\n     * to the specified `indexes` where the argument value at the first index is\n     * provided as the first argument, the argument value at the second index is\n     * provided as the second argument, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to rearrange arguments for.\n     * @param {...(number|number[])} indexes The arranged argument indexes.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var rearged = _.rearg(function(a, b, c) {\n     *   return [a, b, c];\n     * }, [2, 0, 1]);\n     *\n     * rearged('b', 'c', 'a')\n     * // => ['a', 'b', 'c']\n     */\n    var rearg = flatRest(function(func, indexes) {\n      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n    });\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * created function and arguments from `start` and beyond provided as\n     * an array.\n     *\n     * **Note:** This method is based on the\n     * [rest parameter](https://mdn.io/rest_parameters).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.rest(function(what, names) {\n     *   return what + ' ' + _.initial(names).join(', ') +\n     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n     * });\n     *\n     * say('hello', 'fred', 'barney', 'pebbles');\n     * // => 'hello fred, barney, & pebbles'\n     */\n    function rest(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start === undefined ? start : toInteger(start);\n      return baseRest(func, start);\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * create function and an array of arguments much like\n     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n     *\n     * **Note:** This method is based on the\n     * [spread operator](https://mdn.io/spread_operator).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Function\n     * @param {Function} func The function to spread arguments over.\n     * @param {number} [start=0] The start position of the spread.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.spread(function(who, what) {\n     *   return who + ' says ' + what;\n     * });\n     *\n     * say(['fred', 'hello']);\n     * // => 'fred says hello'\n     *\n     * var numbers = Promise.all([\n     *   Promise.resolve(40),\n     *   Promise.resolve(36)\n     * ]);\n     *\n     * numbers.then(_.spread(function(x, y) {\n     *   return x + y;\n     * }));\n     * // => a Promise of 76\n     */\n    function spread(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start == null ? 0 : nativeMax(toInteger(start), 0);\n      return baseRest(function(args) {\n        var array = args[start],\n            otherArgs = castSlice(args, 0, start);\n\n        if (array) {\n          arrayPush(otherArgs, array);\n        }\n        return apply(func, this, otherArgs);\n      });\n    }\n\n    /**\n     * Creates a throttled function that only invokes `func` at most once per\n     * every `wait` milliseconds. The throttled function comes with a `cancel`\n     * method to cancel delayed `func` invocations and a `flush` method to\n     * immediately invoke them. Provide `options` to indicate whether `func`\n     * should be invoked on the leading and/or trailing edge of the `wait`\n     * timeout. The `func` is invoked with the last arguments provided to the\n     * throttled function. Subsequent calls to the throttled function return the\n     * result of the last `func` invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the throttled function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.throttle` and `_.debounce`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to throttle.\n     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=true]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new throttled function.\n     * @example\n     *\n     * // Avoid excessively updating the position while scrolling.\n     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n     *\n     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n     * jQuery(element).on('click', throttled);\n     *\n     * // Cancel the trailing throttled invocation.\n     * jQuery(window).on('popstate', throttled.cancel);\n     */\n    function throttle(func, wait, options) {\n      var leading = true,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      if (isObject(options)) {\n        leading = 'leading' in options ? !!options.leading : leading;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n      return debounce(func, wait, {\n        'leading': leading,\n        'maxWait': wait,\n        'trailing': trailing\n      });\n    }\n\n    /**\n     * Creates a function that accepts up to one argument, ignoring any\n     * additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.unary(parseInt));\n     * // => [6, 8, 10]\n     */\n    function unary(func) {\n      return ary(func, 1);\n    }\n\n    /**\n     * Creates a function that provides `value` to `wrapper` as its first\n     * argument. Any additional arguments provided to the function are appended\n     * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n     * binding of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {*} value The value to wrap.\n     * @param {Function} [wrapper=identity] The wrapper function.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var p = _.wrap(_.escape, function(func, text) {\n     *   return '<p>' + func(text) + '</p>';\n     * });\n     *\n     * p('fred, barney, & pebbles');\n     * // => '<p>fred, barney, &amp; pebbles</p>'\n     */\n    function wrap(value, wrapper) {\n      return partial(castFunction(wrapper), value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Casts `value` as an array if it's not one.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Lang\n     * @param {*} value The value to inspect.\n     * @returns {Array} Returns the cast array.\n     * @example\n     *\n     * _.castArray(1);\n     * // => [1]\n     *\n     * _.castArray({ 'a': 1 });\n     * // => [{ 'a': 1 }]\n     *\n     * _.castArray('abc');\n     * // => ['abc']\n     *\n     * _.castArray(null);\n     * // => [null]\n     *\n     * _.castArray(undefined);\n     * // => [undefined]\n     *\n     * _.castArray();\n     * // => []\n     *\n     * var array = [1, 2, 3];\n     * console.log(_.castArray(array) === array);\n     * // => true\n     */\n    function castArray() {\n      if (!arguments.length) {\n        return [];\n      }\n      var value = arguments[0];\n      return isArray(value) ? value : [value];\n    }\n\n    /**\n     * Creates a shallow clone of `value`.\n     *\n     * **Note:** This method is loosely based on the\n     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n     * and supports cloning arrays, array buffers, booleans, date objects, maps,\n     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n     * arrays. The own enumerable properties of `arguments` objects are cloned\n     * as plain objects. An empty object is returned for uncloneable values such\n     * as error objects, functions, DOM nodes, and WeakMaps.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeep\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var shallow = _.clone(objects);\n     * console.log(shallow[0] === objects[0]);\n     * // => true\n     */\n    function clone(value) {\n      return baseClone(value, CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.clone` except that it accepts `customizer` which\n     * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n     * cloning is handled by the method instead. The `customizer` is invoked with\n     * up to four arguments; (value [, index|key, object, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeepWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(false);\n     *   }\n     * }\n     *\n     * var el = _.cloneWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 0\n     */\n    function cloneWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * This method is like `_.clone` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.clone\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var deep = _.cloneDeep(objects);\n     * console.log(deep[0] === objects[0]);\n     * // => false\n     */\n    function cloneDeep(value) {\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.cloneWith` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.cloneWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(true);\n     *   }\n     * }\n     *\n     * var el = _.cloneDeepWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 20\n     */\n    function cloneDeepWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * Checks if `object` conforms to `source` by invoking the predicate\n     * properties of `source` with the corresponding property values of `object`.\n     *\n     * **Note:** This method is equivalent to `_.conforms` when `source` is\n     * partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n     * // => true\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n     * // => false\n     */\n    function conformsTo(object, source) {\n      return source == null || baseConformsTo(object, source, keys(source));\n    }\n\n    /**\n     * Performs a\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * comparison between two values to determine if they are equivalent.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.eq(object, object);\n     * // => true\n     *\n     * _.eq(object, other);\n     * // => false\n     *\n     * _.eq('a', 'a');\n     * // => true\n     *\n     * _.eq('a', Object('a'));\n     * // => false\n     *\n     * _.eq(NaN, NaN);\n     * // => true\n     */\n    function eq(value, other) {\n      return value === other || (value !== value && other !== other);\n    }\n\n    /**\n     * Checks if `value` is greater than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     * @see _.lt\n     * @example\n     *\n     * _.gt(3, 1);\n     * // => true\n     *\n     * _.gt(3, 3);\n     * // => false\n     *\n     * _.gt(1, 3);\n     * // => false\n     */\n    var gt = createRelationalOperation(baseGt);\n\n    /**\n     * Checks if `value` is greater than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than or equal to\n     *  `other`, else `false`.\n     * @see _.lte\n     * @example\n     *\n     * _.gte(3, 1);\n     * // => true\n     *\n     * _.gte(3, 3);\n     * // => true\n     *\n     * _.gte(1, 3);\n     * // => false\n     */\n    var gte = createRelationalOperation(function(value, other) {\n      return value >= other;\n    });\n\n    /**\n     * Checks if `value` is likely an `arguments` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArguments(function() { return arguments; }());\n     * // => true\n     *\n     * _.isArguments([1, 2, 3]);\n     * // => false\n     */\n    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n        !propertyIsEnumerable.call(value, 'callee');\n    };\n\n    /**\n     * Checks if `value` is classified as an `Array` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n     * @example\n     *\n     * _.isArray([1, 2, 3]);\n     * // => true\n     *\n     * _.isArray(document.body.children);\n     * // => false\n     *\n     * _.isArray('abc');\n     * // => false\n     *\n     * _.isArray(_.noop);\n     * // => false\n     */\n    var isArray = Array.isArray;\n\n    /**\n     * Checks if `value` is classified as an `ArrayBuffer` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     * @example\n     *\n     * _.isArrayBuffer(new ArrayBuffer(2));\n     * // => true\n     *\n     * _.isArrayBuffer(new Array(2));\n     * // => false\n     */\n    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n    /**\n     * Checks if `value` is array-like. A value is considered array-like if it's\n     * not a function and has a `value.length` that's an integer greater than or\n     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n     * @example\n     *\n     * _.isArrayLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLike(document.body.children);\n     * // => true\n     *\n     * _.isArrayLike('abc');\n     * // => true\n     *\n     * _.isArrayLike(_.noop);\n     * // => false\n     */\n    function isArrayLike(value) {\n      return value != null && isLength(value.length) && !isFunction(value);\n    }\n\n    /**\n     * This method is like `_.isArrayLike` except that it also checks if `value`\n     * is an object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array-like object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArrayLikeObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLikeObject(document.body.children);\n     * // => true\n     *\n     * _.isArrayLikeObject('abc');\n     * // => false\n     *\n     * _.isArrayLikeObject(_.noop);\n     * // => false\n     */\n    function isArrayLikeObject(value) {\n      return isObjectLike(value) && isArrayLike(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a boolean primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n     * @example\n     *\n     * _.isBoolean(false);\n     * // => true\n     *\n     * _.isBoolean(null);\n     * // => false\n     */\n    function isBoolean(value) {\n      return value === true || value === false ||\n        (isObjectLike(value) && baseGetTag(value) == boolTag);\n    }\n\n    /**\n     * Checks if `value` is a buffer.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n     * @example\n     *\n     * _.isBuffer(new Buffer(2));\n     * // => true\n     *\n     * _.isBuffer(new Uint8Array(2));\n     * // => false\n     */\n    var isBuffer = nativeIsBuffer || stubFalse;\n\n    /**\n     * Checks if `value` is classified as a `Date` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     * @example\n     *\n     * _.isDate(new Date);\n     * // => true\n     *\n     * _.isDate('Mon April 23 2012');\n     * // => false\n     */\n    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n    /**\n     * Checks if `value` is likely a DOM element.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n     * @example\n     *\n     * _.isElement(document.body);\n     * // => true\n     *\n     * _.isElement('<body>');\n     * // => false\n     */\n    function isElement(value) {\n      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n    }\n\n    /**\n     * Checks if `value` is an empty object, collection, map, or set.\n     *\n     * Objects are considered empty if they have no own enumerable string keyed\n     * properties.\n     *\n     * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n     * jQuery-like collections are considered empty if they have a `length` of `0`.\n     * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n     * @example\n     *\n     * _.isEmpty(null);\n     * // => true\n     *\n     * _.isEmpty(true);\n     * // => true\n     *\n     * _.isEmpty(1);\n     * // => true\n     *\n     * _.isEmpty([1, 2, 3]);\n     * // => false\n     *\n     * _.isEmpty({ 'a': 1 });\n     * // => false\n     */\n    function isEmpty(value) {\n      if (value == null) {\n        return true;\n      }\n      if (isArrayLike(value) &&\n          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n            isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n        return !value.length;\n      }\n      var tag = getTag(value);\n      if (tag == mapTag || tag == setTag) {\n        return !value.size;\n      }\n      if (isPrototype(value)) {\n        return !baseKeys(value).length;\n      }\n      for (var key in value) {\n        if (hasOwnProperty.call(value, key)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * Performs a deep comparison between two values to determine if they are\n     * equivalent.\n     *\n     * **Note:** This method supports comparing arrays, array buffers, booleans,\n     * date objects, error objects, maps, numbers, `Object` objects, regexes,\n     * sets, strings, symbols, and typed arrays. `Object` objects are compared\n     * by their own, not inherited, enumerable properties. Functions and DOM\n     * nodes are compared by strict equality, i.e. `===`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.isEqual(object, other);\n     * // => true\n     *\n     * object === other;\n     * // => false\n     */\n    function isEqual(value, other) {\n      return baseIsEqual(value, other);\n    }\n\n    /**\n     * This method is like `_.isEqual` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with up to\n     * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, othValue) {\n     *   if (isGreeting(objValue) && isGreeting(othValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var array = ['hello', 'goodbye'];\n     * var other = ['hi', 'goodbye'];\n     *\n     * _.isEqualWith(array, other, customizer);\n     * // => true\n     */\n    function isEqualWith(value, other, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      var result = customizer ? customizer(value, other) : undefined;\n      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n    }\n\n    /**\n     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n     * `SyntaxError`, `TypeError`, or `URIError` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n     * @example\n     *\n     * _.isError(new Error);\n     * // => true\n     *\n     * _.isError(Error);\n     * // => false\n     */\n    function isError(value) {\n      if (!isObjectLike(value)) {\n        return false;\n      }\n      var tag = baseGetTag(value);\n      return tag == errorTag || tag == domExcTag ||\n        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n    }\n\n    /**\n     * Checks if `value` is a finite primitive number.\n     *\n     * **Note:** This method is based on\n     * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n     * @example\n     *\n     * _.isFinite(3);\n     * // => true\n     *\n     * _.isFinite(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isFinite(Infinity);\n     * // => false\n     *\n     * _.isFinite('3');\n     * // => false\n     */\n    function isFinite(value) {\n      return typeof value == 'number' && nativeIsFinite(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Function` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n     * @example\n     *\n     * _.isFunction(_);\n     * // => true\n     *\n     * _.isFunction(/abc/);\n     * // => false\n     */\n    function isFunction(value) {\n      if (!isObject(value)) {\n        return false;\n      }\n      // The use of `Object#toString` avoids issues with the `typeof` operator\n      // in Safari 9 which returns 'object' for typed arrays and other constructors.\n      var tag = baseGetTag(value);\n      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n    }\n\n    /**\n     * Checks if `value` is an integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n     * @example\n     *\n     * _.isInteger(3);\n     * // => true\n     *\n     * _.isInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isInteger(Infinity);\n     * // => false\n     *\n     * _.isInteger('3');\n     * // => false\n     */\n    function isInteger(value) {\n      return typeof value == 'number' && value == toInteger(value);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like length.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n     * @example\n     *\n     * _.isLength(3);\n     * // => true\n     *\n     * _.isLength(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isLength(Infinity);\n     * // => false\n     *\n     * _.isLength('3');\n     * // => false\n     */\n    function isLength(value) {\n      return typeof value == 'number' &&\n        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is the\n     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n     * @example\n     *\n     * _.isObject({});\n     * // => true\n     *\n     * _.isObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isObject(_.noop);\n     * // => true\n     *\n     * _.isObject(null);\n     * // => false\n     */\n    function isObject(value) {\n      var type = typeof value;\n      return value != null && (type == 'object' || type == 'function');\n    }\n\n    /**\n     * Checks if `value` is object-like. A value is object-like if it's not `null`\n     * and has a `typeof` result of \"object\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n     * @example\n     *\n     * _.isObjectLike({});\n     * // => true\n     *\n     * _.isObjectLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isObjectLike(_.noop);\n     * // => false\n     *\n     * _.isObjectLike(null);\n     * // => false\n     */\n    function isObjectLike(value) {\n      return value != null && typeof value == 'object';\n    }\n\n    /**\n     * Checks if `value` is classified as a `Map` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     * @example\n     *\n     * _.isMap(new Map);\n     * // => true\n     *\n     * _.isMap(new WeakMap);\n     * // => false\n     */\n    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n    /**\n     * Performs a partial deep comparison between `object` and `source` to\n     * determine if `object` contains equivalent property values.\n     *\n     * **Note:** This method is equivalent to `_.matches` when `source` is\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.isMatch(object, { 'b': 2 });\n     * // => true\n     *\n     * _.isMatch(object, { 'b': 1 });\n     * // => false\n     */\n    function isMatch(object, source) {\n      return object === source || baseIsMatch(object, source, getMatchData(source));\n    }\n\n    /**\n     * This method is like `_.isMatch` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with five\n     * arguments: (objValue, srcValue, index|key, object, source).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (isGreeting(objValue) && isGreeting(srcValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var object = { 'greeting': 'hello' };\n     * var source = { 'greeting': 'hi' };\n     *\n     * _.isMatchWith(object, source, customizer);\n     * // => true\n     */\n    function isMatchWith(object, source, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseIsMatch(object, source, getMatchData(source), customizer);\n    }\n\n    /**\n     * Checks if `value` is `NaN`.\n     *\n     * **Note:** This method is based on\n     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n     * `undefined` and other non-number values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n     * @example\n     *\n     * _.isNaN(NaN);\n     * // => true\n     *\n     * _.isNaN(new Number(NaN));\n     * // => true\n     *\n     * isNaN(undefined);\n     * // => true\n     *\n     * _.isNaN(undefined);\n     * // => false\n     */\n    function isNaN(value) {\n      // An `NaN` primitive is the only value that is not equal to itself.\n      // Perform the `toStringTag` check first to avoid errors with some\n      // ActiveX objects in IE.\n      return isNumber(value) && value != +value;\n    }\n\n    /**\n     * Checks if `value` is a pristine native function.\n     *\n     * **Note:** This method can't reliably detect native functions in the presence\n     * of the core-js package because core-js circumvents this kind of detection.\n     * Despite multiple requests, the core-js maintainer has made it clear: any\n     * attempt to fix the detection will be obstructed. As a result, we're left\n     * with little choice but to throw an error. Unfortunately, this also affects\n     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n     * which rely on core-js.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     * @example\n     *\n     * _.isNative(Array.prototype.push);\n     * // => true\n     *\n     * _.isNative(_);\n     * // => false\n     */\n    function isNative(value) {\n      if (isMaskable(value)) {\n        throw new Error(CORE_ERROR_TEXT);\n      }\n      return baseIsNative(value);\n    }\n\n    /**\n     * Checks if `value` is `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n     * @example\n     *\n     * _.isNull(null);\n     * // => true\n     *\n     * _.isNull(void 0);\n     * // => false\n     */\n    function isNull(value) {\n      return value === null;\n    }\n\n    /**\n     * Checks if `value` is `null` or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n     * @example\n     *\n     * _.isNil(null);\n     * // => true\n     *\n     * _.isNil(void 0);\n     * // => true\n     *\n     * _.isNil(NaN);\n     * // => false\n     */\n    function isNil(value) {\n      return value == null;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Number` primitive or object.\n     *\n     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n     * classified as numbers, use the `_.isFinite` method.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n     * @example\n     *\n     * _.isNumber(3);\n     * // => true\n     *\n     * _.isNumber(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isNumber(Infinity);\n     * // => true\n     *\n     * _.isNumber('3');\n     * // => false\n     */\n    function isNumber(value) {\n      return typeof value == 'number' ||\n        (isObjectLike(value) && baseGetTag(value) == numberTag);\n    }\n\n    /**\n     * Checks if `value` is a plain object, that is, an object created by the\n     * `Object` constructor or one with a `[[Prototype]]` of `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.8.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * _.isPlainObject(new Foo);\n     * // => false\n     *\n     * _.isPlainObject([1, 2, 3]);\n     * // => false\n     *\n     * _.isPlainObject({ 'x': 0, 'y': 0 });\n     * // => true\n     *\n     * _.isPlainObject(Object.create(null));\n     * // => true\n     */\n    function isPlainObject(value) {\n      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n        return false;\n      }\n      var proto = getPrototype(value);\n      if (proto === null) {\n        return true;\n      }\n      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n      return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n        funcToString.call(Ctor) == objectCtorString;\n    }\n\n    /**\n     * Checks if `value` is classified as a `RegExp` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     * @example\n     *\n     * _.isRegExp(/abc/);\n     * // => true\n     *\n     * _.isRegExp('/abc/');\n     * // => false\n     */\n    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n    /**\n     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n     * double precision number which isn't the result of a rounded unsafe integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n     * @example\n     *\n     * _.isSafeInteger(3);\n     * // => true\n     *\n     * _.isSafeInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isSafeInteger(Infinity);\n     * // => false\n     *\n     * _.isSafeInteger('3');\n     * // => false\n     */\n    function isSafeInteger(value) {\n      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Set` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     * @example\n     *\n     * _.isSet(new Set);\n     * // => true\n     *\n     * _.isSet(new WeakSet);\n     * // => false\n     */\n    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n    /**\n     * Checks if `value` is classified as a `String` primitive or object.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n     * @example\n     *\n     * _.isString('abc');\n     * // => true\n     *\n     * _.isString(1);\n     * // => false\n     */\n    function isString(value) {\n      return typeof value == 'string' ||\n        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Symbol` primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n     * @example\n     *\n     * _.isSymbol(Symbol.iterator);\n     * // => true\n     *\n     * _.isSymbol('abc');\n     * // => false\n     */\n    function isSymbol(value) {\n      return typeof value == 'symbol' ||\n        (isObjectLike(value) && baseGetTag(value) == symbolTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a typed array.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     * @example\n     *\n     * _.isTypedArray(new Uint8Array);\n     * // => true\n     *\n     * _.isTypedArray([]);\n     * // => false\n     */\n    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n    /**\n     * Checks if `value` is `undefined`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n     * @example\n     *\n     * _.isUndefined(void 0);\n     * // => true\n     *\n     * _.isUndefined(null);\n     * // => false\n     */\n    function isUndefined(value) {\n      return value === undefined;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakMap` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n     * @example\n     *\n     * _.isWeakMap(new WeakMap);\n     * // => true\n     *\n     * _.isWeakMap(new Map);\n     * // => false\n     */\n    function isWeakMap(value) {\n      return isObjectLike(value) && getTag(value) == weakMapTag;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakSet` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n     * @example\n     *\n     * _.isWeakSet(new WeakSet);\n     * // => true\n     *\n     * _.isWeakSet(new Set);\n     * // => false\n     */\n    function isWeakSet(value) {\n      return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n    }\n\n    /**\n     * Checks if `value` is less than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     * @see _.gt\n     * @example\n     *\n     * _.lt(1, 3);\n     * // => true\n     *\n     * _.lt(3, 3);\n     * // => false\n     *\n     * _.lt(3, 1);\n     * // => false\n     */\n    var lt = createRelationalOperation(baseLt);\n\n    /**\n     * Checks if `value` is less than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than or equal to\n     *  `other`, else `false`.\n     * @see _.gte\n     * @example\n     *\n     * _.lte(1, 3);\n     * // => true\n     *\n     * _.lte(3, 3);\n     * // => true\n     *\n     * _.lte(3, 1);\n     * // => false\n     */\n    var lte = createRelationalOperation(function(value, other) {\n      return value <= other;\n    });\n\n    /**\n     * Converts `value` to an array.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the converted array.\n     * @example\n     *\n     * _.toArray({ 'a': 1, 'b': 2 });\n     * // => [1, 2]\n     *\n     * _.toArray('abc');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toArray(1);\n     * // => []\n     *\n     * _.toArray(null);\n     * // => []\n     */\n    function toArray(value) {\n      if (!value) {\n        return [];\n      }\n      if (isArrayLike(value)) {\n        return isString(value) ? stringToArray(value) : copyArray(value);\n      }\n      if (symIterator && value[symIterator]) {\n        return iteratorToArray(value[symIterator]());\n      }\n      var tag = getTag(value),\n          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n      return func(value);\n    }\n\n    /**\n     * Converts `value` to a finite number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.12.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted number.\n     * @example\n     *\n     * _.toFinite(3.2);\n     * // => 3.2\n     *\n     * _.toFinite(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toFinite(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toFinite('3.2');\n     * // => 3.2\n     */\n    function toFinite(value) {\n      if (!value) {\n        return value === 0 ? value : 0;\n      }\n      value = toNumber(value);\n      if (value === INFINITY || value === -INFINITY) {\n        var sign = (value < 0 ? -1 : 1);\n        return sign * MAX_INTEGER;\n      }\n      return value === value ? value : 0;\n    }\n\n    /**\n     * Converts `value` to an integer.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toInteger(3.2);\n     * // => 3\n     *\n     * _.toInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toInteger(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toInteger('3.2');\n     * // => 3\n     */\n    function toInteger(value) {\n      var result = toFinite(value),\n          remainder = result % 1;\n\n      return result === result ? (remainder ? result - remainder : result) : 0;\n    }\n\n    /**\n     * Converts `value` to an integer suitable for use as the length of an\n     * array-like object.\n     *\n     * **Note:** This method is based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toLength(3.2);\n     * // => 3\n     *\n     * _.toLength(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toLength(Infinity);\n     * // => 4294967295\n     *\n     * _.toLength('3.2');\n     * // => 3\n     */\n    function toLength(value) {\n      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n    }\n\n    /**\n     * Converts `value` to a number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     * @example\n     *\n     * _.toNumber(3.2);\n     * // => 3.2\n     *\n     * _.toNumber(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toNumber(Infinity);\n     * // => Infinity\n     *\n     * _.toNumber('3.2');\n     * // => 3.2\n     */\n    function toNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      if (isObject(value)) {\n        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n        value = isObject(other) ? (other + '') : other;\n      }\n      if (typeof value != 'string') {\n        return value === 0 ? value : +value;\n      }\n      value = baseTrim(value);\n      var isBinary = reIsBinary.test(value);\n      return (isBinary || reIsOctal.test(value))\n        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n        : (reIsBadHex.test(value) ? NAN : +value);\n    }\n\n    /**\n     * Converts `value` to a plain object flattening inherited enumerable string\n     * keyed properties of `value` to own properties of the plain object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Object} Returns the converted plain object.\n     * @example\n     *\n     * function Foo() {\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.assign({ 'a': 1 }, new Foo);\n     * // => { 'a': 1, 'b': 2 }\n     *\n     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n     * // => { 'a': 1, 'b': 2, 'c': 3 }\n     */\n    function toPlainObject(value) {\n      return copyObject(value, keysIn(value));\n    }\n\n    /**\n     * Converts `value` to a safe integer. A safe integer can be compared and\n     * represented correctly.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toSafeInteger(3.2);\n     * // => 3\n     *\n     * _.toSafeInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toSafeInteger(Infinity);\n     * // => 9007199254740991\n     *\n     * _.toSafeInteger('3.2');\n     * // => 3\n     */\n    function toSafeInteger(value) {\n      return value\n        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n        : (value === 0 ? value : 0);\n    }\n\n    /**\n     * Converts `value` to a string. An empty string is returned for `null`\n     * and `undefined` values. The sign of `-0` is preserved.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.toString(null);\n     * // => ''\n     *\n     * _.toString(-0);\n     * // => '-0'\n     *\n     * _.toString([1, 2, 3]);\n     * // => '1,2,3'\n     */\n    function toString(value) {\n      return value == null ? '' : baseToString(value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Assigns own enumerable string keyed properties of source objects to the\n     * destination object. Source objects are applied from left to right.\n     * Subsequent sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object` and is loosely based on\n     * [`Object.assign`](https://mdn.io/Object/assign).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assignIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assign({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var assign = createAssigner(function(object, source) {\n      if (isPrototype(source) || isArrayLike(source)) {\n        copyObject(source, keys(source), object);\n        return;\n      }\n      for (var key in source) {\n        if (hasOwnProperty.call(source, key)) {\n          assignValue(object, key, source[key]);\n        }\n      }\n    });\n\n    /**\n     * This method is like `_.assign` except that it iterates over own and\n     * inherited source properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extend\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assign\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n     */\n    var assignIn = createAssigner(function(object, source) {\n      copyObject(source, keysIn(source), object);\n    });\n\n    /**\n     * This method is like `_.assignIn` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extendWith\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignInWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keysIn(source), object, customizer);\n    });\n\n    /**\n     * This method is like `_.assign` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignInWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keys(source), object, customizer);\n    });\n\n    /**\n     * Creates an array of values corresponding to `paths` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Array} Returns the picked values.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _.at(object, ['a[0].b.c', 'a[1]']);\n     * // => [3, 4]\n     */\n    var at = flatRest(baseAt);\n\n    /**\n     * Creates an object that inherits from the `prototype` object. If a\n     * `properties` object is given, its own enumerable string keyed properties\n     * are assigned to the created object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Object\n     * @param {Object} prototype The object to inherit from.\n     * @param {Object} [properties] The properties to assign to the object.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * function Shape() {\n     *   this.x = 0;\n     *   this.y = 0;\n     * }\n     *\n     * function Circle() {\n     *   Shape.call(this);\n     * }\n     *\n     * Circle.prototype = _.create(Shape.prototype, {\n     *   'constructor': Circle\n     * });\n     *\n     * var circle = new Circle;\n     * circle instanceof Circle;\n     * // => true\n     *\n     * circle instanceof Shape;\n     * // => true\n     */\n    function create(prototype, properties) {\n      var result = baseCreate(prototype);\n      return properties == null ? result : baseAssign(result, properties);\n    }\n\n    /**\n     * Assigns own and inherited enumerable string keyed properties of source\n     * objects to the destination object for all destination properties that\n     * resolve to `undefined`. Source objects are applied from left to right.\n     * Once a property is set, additional values of the same property are ignored.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaultsDeep\n     * @example\n     *\n     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var defaults = baseRest(function(object, sources) {\n      object = Object(object);\n\n      var index = -1;\n      var length = sources.length;\n      var guard = length > 2 ? sources[2] : undefined;\n\n      if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n        length = 1;\n      }\n\n      while (++index < length) {\n        var source = sources[index];\n        var props = keysIn(source);\n        var propsIndex = -1;\n        var propsLength = props.length;\n\n        while (++propsIndex < propsLength) {\n          var key = props[propsIndex];\n          var value = object[key];\n\n          if (value === undefined ||\n              (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n            object[key] = source[key];\n          }\n        }\n      }\n\n      return object;\n    });\n\n    /**\n     * This method is like `_.defaults` except that it recursively assigns\n     * default properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaults\n     * @example\n     *\n     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n     * // => { 'a': { 'b': 2, 'c': 3 } }\n     */\n    var defaultsDeep = baseRest(function(args) {\n      args.push(undefined, customDefaultsMerge);\n      return apply(mergeWith, undefined, args);\n    });\n\n    /**\n     * This method is like `_.find` except that it returns the key of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findKey(users, function(o) { return o.age < 40; });\n     * // => 'barney' (iteration order is not guaranteed)\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findKey(users, { 'age': 1, 'active': true });\n     * // => 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findKey(users, 'active');\n     * // => 'barney'\n     */\n    function findKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n    }\n\n    /**\n     * This method is like `_.findKey` except that it iterates over elements of\n     * a collection in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findLastKey(users, function(o) { return o.age < 40; });\n     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastKey(users, { 'age': 36, 'active': true });\n     * // => 'barney'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastKey(users, 'active');\n     * // => 'pebbles'\n     */\n    function findLastKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n    }\n\n    /**\n     * Iterates over own and inherited enumerable string keyed properties of an\n     * object and invokes `iteratee` for each property. The iteratee is invoked\n     * with three arguments: (value, key, object). Iteratee functions may exit\n     * iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forInRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forIn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n     */\n    function forIn(object, iteratee) {\n      return object == null\n        ? object\n        : baseFor(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * This method is like `_.forIn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forInRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n     */\n    function forInRight(object, iteratee) {\n      return object == null\n        ? object\n        : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * Iterates over own enumerable string keyed properties of an object and\n     * invokes `iteratee` for each property. The iteratee is invoked with three\n     * arguments: (value, key, object). Iteratee functions may exit iteration\n     * early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwnRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forOwn(object, iteratee) {\n      return object && baseForOwn(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forOwn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwnRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n     */\n    function forOwnRight(object, iteratee) {\n      return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an array of function property names from own enumerable properties\n     * of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functionsIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functions(new Foo);\n     * // => ['a', 'b']\n     */\n    function functions(object) {\n      return object == null ? [] : baseFunctions(object, keys(object));\n    }\n\n    /**\n     * Creates an array of function property names from own and inherited\n     * enumerable properties of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functions\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functionsIn(new Foo);\n     * // => ['a', 'b', 'c']\n     */\n    function functionsIn(object) {\n      return object == null ? [] : baseFunctions(object, keysIn(object));\n    }\n\n    /**\n     * Gets the value at `path` of `object`. If the resolved value is\n     * `undefined`, the `defaultValue` is returned in its place.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.get(object, 'a[0].b.c');\n     * // => 3\n     *\n     * _.get(object, ['a', '0', 'b', 'c']);\n     * // => 3\n     *\n     * _.get(object, 'a.b.c', 'default');\n     * // => 'default'\n     */\n    function get(object, path, defaultValue) {\n      var result = object == null ? undefined : baseGet(object, path);\n      return result === undefined ? defaultValue : result;\n    }\n\n    /**\n     * Checks if `path` is a direct property of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = { 'a': { 'b': 2 } };\n     * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.has(object, 'a');\n     * // => true\n     *\n     * _.has(object, 'a.b');\n     * // => true\n     *\n     * _.has(object, ['a', 'b']);\n     * // => true\n     *\n     * _.has(other, 'a');\n     * // => false\n     */\n    function has(object, path) {\n      return object != null && hasPath(object, path, baseHas);\n    }\n\n    /**\n     * Checks if `path` is a direct or inherited property of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.hasIn(object, 'a');\n     * // => true\n     *\n     * _.hasIn(object, 'a.b');\n     * // => true\n     *\n     * _.hasIn(object, ['a', 'b']);\n     * // => true\n     *\n     * _.hasIn(object, 'b');\n     * // => false\n     */\n    function hasIn(object, path) {\n      return object != null && hasPath(object, path, baseHasIn);\n    }\n\n    /**\n     * Creates an object composed of the inverted keys and values of `object`.\n     * If `object` contains duplicate values, subsequent values overwrite\n     * property assignments of previous values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invert(object);\n     * // => { '1': 'c', '2': 'b' }\n     */\n    var invert = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      result[value] = key;\n    }, constant(identity));\n\n    /**\n     * This method is like `_.invert` except that the inverted object is generated\n     * from the results of running each element of `object` thru `iteratee`. The\n     * corresponding inverted value of each inverted key is an array of keys\n     * responsible for generating the inverted value. The iteratee is invoked\n     * with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invertBy(object);\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     *\n     * _.invertBy(object, function(value) {\n     *   return 'group' + value;\n     * });\n     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n     */\n    var invertBy = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      if (hasOwnProperty.call(result, value)) {\n        result[value].push(key);\n      } else {\n        result[value] = [key];\n      }\n    }, getIteratee);\n\n    /**\n     * Invokes the method at `path` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n     *\n     * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n     * // => [2, 3]\n     */\n    var invoke = baseRest(baseInvoke);\n\n    /**\n     * Creates an array of the own enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects. See the\n     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * for more details.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keys(new Foo);\n     * // => ['a', 'b'] (iteration order is not guaranteed)\n     *\n     * _.keys('hi');\n     * // => ['0', '1']\n     */\n    function keys(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keysIn(new Foo);\n     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n     */\n    function keysIn(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n    }\n\n    /**\n     * The opposite of `_.mapValues`; this method creates an object with the\n     * same values as `object` and keys generated by running each own enumerable\n     * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n     * with three arguments: (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapValues\n     * @example\n     *\n     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   return key + value;\n     * });\n     * // => { 'a1': 1, 'b2': 2 }\n     */\n    function mapKeys(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, iteratee(value, key, object), value);\n      });\n      return result;\n    }\n\n    /**\n     * Creates an object with the same keys as `object` and values generated\n     * by running each own enumerable string keyed property of `object` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapKeys\n     * @example\n     *\n     * var users = {\n     *   'fred':    { 'user': 'fred',    'age': 40 },\n     *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n     * };\n     *\n     * _.mapValues(users, function(o) { return o.age; });\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.mapValues(users, 'age');\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     */\n    function mapValues(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, key, iteratee(value, key, object));\n      });\n      return result;\n    }\n\n    /**\n     * This method is like `_.assign` except that it recursively merges own and\n     * inherited enumerable string keyed properties of source objects into the\n     * destination object. Source properties that resolve to `undefined` are\n     * skipped if a destination value exists. Array and plain object properties\n     * are merged recursively. Other objects and value types are overridden by\n     * assignment. Source objects are applied from left to right. Subsequent\n     * sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {\n     *   'a': [{ 'b': 2 }, { 'd': 4 }]\n     * };\n     *\n     * var other = {\n     *   'a': [{ 'c': 3 }, { 'e': 5 }]\n     * };\n     *\n     * _.merge(object, other);\n     * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n     */\n    var merge = createAssigner(function(object, source, srcIndex) {\n      baseMerge(object, source, srcIndex);\n    });\n\n    /**\n     * This method is like `_.merge` except that it accepts `customizer` which\n     * is invoked to produce the merged values of the destination and source\n     * properties. If `customizer` returns `undefined`, merging is handled by the\n     * method instead. The `customizer` is invoked with six arguments:\n     * (objValue, srcValue, key, object, source, stack).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} customizer The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (_.isArray(objValue)) {\n     *     return objValue.concat(srcValue);\n     *   }\n     * }\n     *\n     * var object = { 'a': [1], 'b': [2] };\n     * var other = { 'a': [3], 'b': [4] };\n     *\n     * _.mergeWith(object, other, customizer);\n     * // => { 'a': [1, 3], 'b': [2, 4] }\n     */\n    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n      baseMerge(object, source, srcIndex, customizer);\n    });\n\n    /**\n     * The opposite of `_.pick`; this method creates an object composed of the\n     * own and inherited enumerable property paths of `object` that are not omitted.\n     *\n     * **Note:** This method is considerably slower than `_.pick`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to omit.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omit(object, ['a', 'c']);\n     * // => { 'b': '2' }\n     */\n    var omit = flatRest(function(object, paths) {\n      var result = {};\n      if (object == null) {\n        return result;\n      }\n      var isDeep = false;\n      paths = arrayMap(paths, function(path) {\n        path = castPath(path, object);\n        isDeep || (isDeep = path.length > 1);\n        return path;\n      });\n      copyObject(object, getAllKeysIn(object), result);\n      if (isDeep) {\n        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n      }\n      var length = paths.length;\n      while (length--) {\n        baseUnset(result, paths[length]);\n      }\n      return result;\n    });\n\n    /**\n     * The opposite of `_.pickBy`; this method creates an object composed of\n     * the own and inherited enumerable string keyed properties of `object` that\n     * `predicate` doesn't return truthy for. The predicate is invoked with two\n     * arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omitBy(object, _.isNumber);\n     * // => { 'b': '2' }\n     */\n    function omitBy(object, predicate) {\n      return pickBy(object, negate(getIteratee(predicate)));\n    }\n\n    /**\n     * Creates an object composed of the picked `object` properties.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pick(object, ['a', 'c']);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var pick = flatRest(function(object, paths) {\n      return object == null ? {} : basePick(object, paths);\n    });\n\n    /**\n     * Creates an object composed of the `object` properties `predicate` returns\n     * truthy for. The predicate is invoked with two arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pickBy(object, _.isNumber);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    function pickBy(object, predicate) {\n      if (object == null) {\n        return {};\n      }\n      var props = arrayMap(getAllKeysIn(object), function(prop) {\n        return [prop];\n      });\n      predicate = getIteratee(predicate);\n      return basePickBy(object, props, function(value, path) {\n        return predicate(value, path[0]);\n      });\n    }\n\n    /**\n     * This method is like `_.get` except that if the resolved value is a\n     * function it's invoked with the `this` binding of its parent object and\n     * its result is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to resolve.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n     *\n     * _.result(object, 'a[0].b.c1');\n     * // => 3\n     *\n     * _.result(object, 'a[0].b.c2');\n     * // => 4\n     *\n     * _.result(object, 'a[0].b.c3', 'default');\n     * // => 'default'\n     *\n     * _.result(object, 'a[0].b.c3', _.constant('default'));\n     * // => 'default'\n     */\n    function result(object, path, defaultValue) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length;\n\n      // Ensure the loop is entered when path is empty.\n      if (!length) {\n        length = 1;\n        object = undefined;\n      }\n      while (++index < length) {\n        var value = object == null ? undefined : object[toKey(path[index])];\n        if (value === undefined) {\n          index = length;\n          value = defaultValue;\n        }\n        object = isFunction(value) ? value.call(object) : value;\n      }\n      return object;\n    }\n\n    /**\n     * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n     * it's created. Arrays are created for missing index properties while objects\n     * are created for all other missing properties. Use `_.setWith` to customize\n     * `path` creation.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.set(object, 'a[0].b.c', 4);\n     * console.log(object.a[0].b.c);\n     * // => 4\n     *\n     * _.set(object, ['x', '0', 'y', 'z'], 5);\n     * console.log(object.x[0].y.z);\n     * // => 5\n     */\n    function set(object, path, value) {\n      return object == null ? object : baseSet(object, path, value);\n    }\n\n    /**\n     * This method is like `_.set` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.setWith(object, '[0][1]', 'a', Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function setWith(object, path, value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseSet(object, path, value, customizer);\n    }\n\n    /**\n     * Creates an array of own enumerable string keyed-value pairs for `object`\n     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n     * entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entries\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairs(new Foo);\n     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n     */\n    var toPairs = createToPairs(keys);\n\n    /**\n     * Creates an array of own and inherited enumerable string keyed-value pairs\n     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n     * or set, its entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entriesIn\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairsIn(new Foo);\n     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n     */\n    var toPairsIn = createToPairs(keysIn);\n\n    /**\n     * An alternative to `_.reduce`; this method transforms `object` to a new\n     * `accumulator` object which is the result of running each of its own\n     * enumerable string keyed properties thru `iteratee`, with each invocation\n     * potentially mutating the `accumulator` object. If `accumulator` is not\n     * provided, a new object with the same `[[Prototype]]` will be used. The\n     * iteratee is invoked with four arguments: (accumulator, value, key, object).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The custom accumulator value.\n     * @returns {*} Returns the accumulated value.\n     * @example\n     *\n     * _.transform([2, 3, 4], function(result, n) {\n     *   result.push(n *= n);\n     *   return n % 2 == 0;\n     * }, []);\n     * // => [4, 9]\n     *\n     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     */\n    function transform(object, iteratee, accumulator) {\n      var isArr = isArray(object),\n          isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n      iteratee = getIteratee(iteratee, 4);\n      if (accumulator == null) {\n        var Ctor = object && object.constructor;\n        if (isArrLike) {\n          accumulator = isArr ? new Ctor : [];\n        }\n        else if (isObject(object)) {\n          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n        }\n        else {\n          accumulator = {};\n        }\n      }\n      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n        return iteratee(accumulator, value, index, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * Removes the property at `path` of `object`.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n     * _.unset(object, 'a[0].b.c');\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     *\n     * _.unset(object, ['a', '0', 'b', 'c']);\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     */\n    function unset(object, path) {\n      return object == null ? true : baseUnset(object, path);\n    }\n\n    /**\n     * This method is like `_.set` except that accepts `updater` to produce the\n     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n     * is invoked with one argument: (value).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n     * console.log(object.a[0].b.c);\n     * // => 9\n     *\n     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n     * console.log(object.x[0].y.z);\n     * // => 0\n     */\n    function update(object, path, updater) {\n      return object == null ? object : baseUpdate(object, path, castFunction(updater));\n    }\n\n    /**\n     * This method is like `_.update` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function updateWith(object, path, updater, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n    }\n\n    /**\n     * Creates an array of the own enumerable string keyed property values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.values(new Foo);\n     * // => [1, 2] (iteration order is not guaranteed)\n     *\n     * _.values('hi');\n     * // => ['h', 'i']\n     */\n    function values(object) {\n      return object == null ? [] : baseValues(object, keys(object));\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable string keyed property\n     * values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.valuesIn(new Foo);\n     * // => [1, 2, 3] (iteration order is not guaranteed)\n     */\n    function valuesIn(object) {\n      return object == null ? [] : baseValues(object, keysIn(object));\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Clamps `number` within the inclusive `lower` and `upper` bounds.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Number\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     * @example\n     *\n     * _.clamp(-10, -5, 5);\n     * // => -5\n     *\n     * _.clamp(10, -5, 5);\n     * // => 5\n     */\n    function clamp(number, lower, upper) {\n      if (upper === undefined) {\n        upper = lower;\n        lower = undefined;\n      }\n      if (upper !== undefined) {\n        upper = toNumber(upper);\n        upper = upper === upper ? upper : 0;\n      }\n      if (lower !== undefined) {\n        lower = toNumber(lower);\n        lower = lower === lower ? lower : 0;\n      }\n      return baseClamp(toNumber(number), lower, upper);\n    }\n\n    /**\n     * Checks if `n` is between `start` and up to, but not including, `end`. If\n     * `end` is not specified, it's set to `start` with `start` then set to `0`.\n     * If `start` is greater than `end` the params are swapped to support\n     * negative ranges.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.3.0\n     * @category Number\n     * @param {number} number The number to check.\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     * @see _.range, _.rangeRight\n     * @example\n     *\n     * _.inRange(3, 2, 4);\n     * // => true\n     *\n     * _.inRange(4, 8);\n     * // => true\n     *\n     * _.inRange(4, 2);\n     * // => false\n     *\n     * _.inRange(2, 2);\n     * // => false\n     *\n     * _.inRange(1.2, 2);\n     * // => true\n     *\n     * _.inRange(5.2, 4);\n     * // => false\n     *\n     * _.inRange(-3, -2, -6);\n     * // => true\n     */\n    function inRange(number, start, end) {\n      start = toFinite(start);\n      if (end === undefined) {\n        end = start;\n        start = 0;\n      } else {\n        end = toFinite(end);\n      }\n      number = toNumber(number);\n      return baseInRange(number, start, end);\n    }\n\n    /**\n     * Produces a random number between the inclusive `lower` and `upper` bounds.\n     * If only one argument is provided a number between `0` and the given number\n     * is returned. If `floating` is `true`, or either `lower` or `upper` are\n     * floats, a floating-point number is returned instead of an integer.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Number\n     * @param {number} [lower=0] The lower bound.\n     * @param {number} [upper=1] The upper bound.\n     * @param {boolean} [floating] Specify returning a floating-point number.\n     * @returns {number} Returns the random number.\n     * @example\n     *\n     * _.random(0, 5);\n     * // => an integer between 0 and 5\n     *\n     * _.random(5);\n     * // => also an integer between 0 and 5\n     *\n     * _.random(5, true);\n     * // => a floating-point number between 0 and 5\n     *\n     * _.random(1.2, 5.2);\n     * // => a floating-point number between 1.2 and 5.2\n     */\n    function random(lower, upper, floating) {\n      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n        upper = floating = undefined;\n      }\n      if (floating === undefined) {\n        if (typeof upper == 'boolean') {\n          floating = upper;\n          upper = undefined;\n        }\n        else if (typeof lower == 'boolean') {\n          floating = lower;\n          lower = undefined;\n        }\n      }\n      if (lower === undefined && upper === undefined) {\n        lower = 0;\n        upper = 1;\n      }\n      else {\n        lower = toFinite(lower);\n        if (upper === undefined) {\n          upper = lower;\n          lower = 0;\n        } else {\n          upper = toFinite(upper);\n        }\n      }\n      if (lower > upper) {\n        var temp = lower;\n        lower = upper;\n        upper = temp;\n      }\n      if (floating || lower % 1 || upper % 1) {\n        var rand = nativeRandom();\n        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n      }\n      return baseRandom(lower, upper);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the camel cased string.\n     * @example\n     *\n     * _.camelCase('Foo Bar');\n     * // => 'fooBar'\n     *\n     * _.camelCase('--foo-bar--');\n     * // => 'fooBar'\n     *\n     * _.camelCase('__FOO_BAR__');\n     * // => 'fooBar'\n     */\n    var camelCase = createCompounder(function(result, word, index) {\n      word = word.toLowerCase();\n      return result + (index ? capitalize(word) : word);\n    });\n\n    /**\n     * Converts the first character of `string` to upper case and the remaining\n     * to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to capitalize.\n     * @returns {string} Returns the capitalized string.\n     * @example\n     *\n     * _.capitalize('FRED');\n     * // => 'Fred'\n     */\n    function capitalize(string) {\n      return upperFirst(toString(string).toLowerCase());\n    }\n\n    /**\n     * Deburrs `string` by converting\n     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n     * letters to basic Latin letters and removing\n     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to deburr.\n     * @returns {string} Returns the deburred string.\n     * @example\n     *\n     * _.deburr('déjà vu');\n     * // => 'deja vu'\n     */\n    function deburr(string) {\n      string = toString(string);\n      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n    }\n\n    /**\n     * Checks if `string` ends with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=string.length] The position to search up to.\n     * @returns {boolean} Returns `true` if `string` ends with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.endsWith('abc', 'c');\n     * // => true\n     *\n     * _.endsWith('abc', 'b');\n     * // => false\n     *\n     * _.endsWith('abc', 'b', 2);\n     * // => true\n     */\n    function endsWith(string, target, position) {\n      string = toString(string);\n      target = baseToString(target);\n\n      var length = string.length;\n      position = position === undefined\n        ? length\n        : baseClamp(toInteger(position), 0, length);\n\n      var end = position;\n      position -= target.length;\n      return position >= 0 && string.slice(position, end) == target;\n    }\n\n    /**\n     * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n     * corresponding HTML entities.\n     *\n     * **Note:** No other characters are escaped. To escape additional\n     * characters use a third-party library like [_he_](https://mths.be/he).\n     *\n     * Though the \">\" character is escaped for symmetry, characters like\n     * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n     * unless they're part of a tag or unquoted attribute value. See\n     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n     * (under \"semi-related fun fact\") for more details.\n     *\n     * When working with HTML you should always\n     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n     * XSS vectors.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escape('fred, barney, & pebbles');\n     * // => 'fred, barney, &amp; pebbles'\n     */\n    function escape(string) {\n      string = toString(string);\n      return (string && reHasUnescapedHtml.test(string))\n        ? string.replace(reUnescapedHtml, escapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n     * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escapeRegExp('[lodash](https://lodash.com/)');\n     * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n     */\n    function escapeRegExp(string) {\n      string = toString(string);\n      return (string && reHasRegExpChar.test(string))\n        ? string.replace(reRegExpChar, '\\\\$&')\n        : string;\n    }\n\n    /**\n     * Converts `string` to\n     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the kebab cased string.\n     * @example\n     *\n     * _.kebabCase('Foo Bar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('fooBar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('__FOO_BAR__');\n     * // => 'foo-bar'\n     */\n    var kebabCase = createCompounder(function(result, word, index) {\n      return result + (index ? '-' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts `string`, as space separated words, to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.lowerCase('--Foo-Bar--');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('fooBar');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('__FOO_BAR__');\n     * // => 'foo bar'\n     */\n    var lowerCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts the first character of `string` to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.lowerFirst('Fred');\n     * // => 'fred'\n     *\n     * _.lowerFirst('FRED');\n     * // => 'fRED'\n     */\n    var lowerFirst = createCaseFirst('toLowerCase');\n\n    /**\n     * Pads `string` on the left and right sides if it's shorter than `length`.\n     * Padding characters are truncated if they can't be evenly divided by `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.pad('abc', 8);\n     * // => '  abc   '\n     *\n     * _.pad('abc', 8, '_-');\n     * // => '_-abc_-_'\n     *\n     * _.pad('abc', 3);\n     * // => 'abc'\n     */\n    function pad(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      if (!length || strLength >= length) {\n        return string;\n      }\n      var mid = (length - strLength) / 2;\n      return (\n        createPadding(nativeFloor(mid), chars) +\n        string +\n        createPadding(nativeCeil(mid), chars)\n      );\n    }\n\n    /**\n     * Pads `string` on the right side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padEnd('abc', 6);\n     * // => 'abc   '\n     *\n     * _.padEnd('abc', 6, '_-');\n     * // => 'abc_-_'\n     *\n     * _.padEnd('abc', 3);\n     * // => 'abc'\n     */\n    function padEnd(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (string + createPadding(length - strLength, chars))\n        : string;\n    }\n\n    /**\n     * Pads `string` on the left side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padStart('abc', 6);\n     * // => '   abc'\n     *\n     * _.padStart('abc', 6, '_-');\n     * // => '_-_abc'\n     *\n     * _.padStart('abc', 3);\n     * // => 'abc'\n     */\n    function padStart(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (createPadding(length - strLength, chars) + string)\n        : string;\n    }\n\n    /**\n     * Converts `string` to an integer of the specified radix. If `radix` is\n     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n     * hexadecimal, in which case a `radix` of `16` is used.\n     *\n     * **Note:** This method aligns with the\n     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category String\n     * @param {string} string The string to convert.\n     * @param {number} [radix=10] The radix to interpret `value` by.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.parseInt('08');\n     * // => 8\n     *\n     * _.map(['6', '08', '10'], _.parseInt);\n     * // => [6, 8, 10]\n     */\n    function parseInt(string, radix, guard) {\n      if (guard || radix == null) {\n        radix = 0;\n      } else if (radix) {\n        radix = +radix;\n      }\n      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n    }\n\n    /**\n     * Repeats the given string `n` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to repeat.\n     * @param {number} [n=1] The number of times to repeat the string.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the repeated string.\n     * @example\n     *\n     * _.repeat('*', 3);\n     * // => '***'\n     *\n     * _.repeat('abc', 2);\n     * // => 'abcabc'\n     *\n     * _.repeat('abc', 0);\n     * // => ''\n     */\n    function repeat(string, n, guard) {\n      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      return baseRepeat(toString(string), n);\n    }\n\n    /**\n     * Replaces matches for `pattern` in `string` with `replacement`.\n     *\n     * **Note:** This method is based on\n     * [`String#replace`](https://mdn.io/String/replace).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to modify.\n     * @param {RegExp|string} pattern The pattern to replace.\n     * @param {Function|string} replacement The match replacement.\n     * @returns {string} Returns the modified string.\n     * @example\n     *\n     * _.replace('Hi Fred', 'Fred', 'Barney');\n     * // => 'Hi Barney'\n     */\n    function replace() {\n      var args = arguments,\n          string = toString(args[0]);\n\n      return args.length < 3 ? string : string.replace(args[1], args[2]);\n    }\n\n    /**\n     * Converts `string` to\n     * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the snake cased string.\n     * @example\n     *\n     * _.snakeCase('Foo Bar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('fooBar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('--FOO-BAR--');\n     * // => 'foo_bar'\n     */\n    var snakeCase = createCompounder(function(result, word, index) {\n      return result + (index ? '_' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Splits `string` by `separator`.\n     *\n     * **Note:** This method is based on\n     * [`String#split`](https://mdn.io/String/split).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to split.\n     * @param {RegExp|string} separator The separator pattern to split by.\n     * @param {number} [limit] The length to truncate results to.\n     * @returns {Array} Returns the string segments.\n     * @example\n     *\n     * _.split('a-b-c', '-', 2);\n     * // => ['a', 'b']\n     */\n    function split(string, separator, limit) {\n      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n        separator = limit = undefined;\n      }\n      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n      if (!limit) {\n        return [];\n      }\n      string = toString(string);\n      if (string && (\n            typeof separator == 'string' ||\n            (separator != null && !isRegExp(separator))\n          )) {\n        separator = baseToString(separator);\n        if (!separator && hasUnicode(string)) {\n          return castSlice(stringToArray(string), 0, limit);\n        }\n      }\n      return string.split(separator, limit);\n    }\n\n    /**\n     * Converts `string` to\n     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.1.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the start cased string.\n     * @example\n     *\n     * _.startCase('--foo-bar--');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('fooBar');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('__FOO_BAR__');\n     * // => 'FOO BAR'\n     */\n    var startCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + upperFirst(word);\n    });\n\n    /**\n     * Checks if `string` starts with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=0] The position to search from.\n     * @returns {boolean} Returns `true` if `string` starts with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.startsWith('abc', 'a');\n     * // => true\n     *\n     * _.startsWith('abc', 'b');\n     * // => false\n     *\n     * _.startsWith('abc', 'b', 1);\n     * // => true\n     */\n    function startsWith(string, target, position) {\n      string = toString(string);\n      position = position == null\n        ? 0\n        : baseClamp(toInteger(position), 0, string.length);\n\n      target = baseToString(target);\n      return string.slice(position, position + target.length) == target;\n    }\n\n    /**\n     * Creates a compiled template function that can interpolate data properties\n     * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n     * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n     * properties may be accessed as free variables in the template. If a setting\n     * object is given, it takes precedence over `_.templateSettings` values.\n     *\n     * **Note:** In the development build `_.template` utilizes\n     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n     * for easier debugging.\n     *\n     * For more information on precompiling templates see\n     * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n     *\n     * For more information on Chrome extension sandboxes see\n     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The template string.\n     * @param {Object} [options={}] The options object.\n     * @param {RegExp} [options.escape=_.templateSettings.escape]\n     *  The HTML \"escape\" delimiter.\n     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n     *  The \"evaluate\" delimiter.\n     * @param {Object} [options.imports=_.templateSettings.imports]\n     *  An object to import into the template as free variables.\n     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n     *  The \"interpolate\" delimiter.\n     * @param {string} [options.sourceURL='lodash.templateSources[n]']\n     *  The sourceURL of the compiled template.\n     * @param {string} [options.variable='obj']\n     *  The data object variable name.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the compiled template function.\n     * @example\n     *\n     * // Use the \"interpolate\" delimiter to create a compiled template.\n     * var compiled = _.template('hello <%= user %>!');\n     * compiled({ 'user': 'fred' });\n     * // => 'hello fred!'\n     *\n     * // Use the HTML \"escape\" delimiter to escape data property values.\n     * var compiled = _.template('<b><%- value %></b>');\n     * compiled({ 'value': '<script>' });\n     * // => '<b>&lt;script&gt;</b>'\n     *\n     * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the internal `print` function in \"evaluate\" delimiters.\n     * var compiled = _.template('<% print(\"hello \" + user); %>!');\n     * compiled({ 'user': 'barney' });\n     * // => 'hello barney!'\n     *\n     * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n     * // Disable support by replacing the \"interpolate\" delimiter.\n     * var compiled = _.template('hello ${ user }!');\n     * compiled({ 'user': 'pebbles' });\n     * // => 'hello pebbles!'\n     *\n     * // Use backslashes to treat delimiters as plain text.\n     * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n     * compiled({ 'value': 'ignored' });\n     * // => '<%- value %>'\n     *\n     * // Use the `imports` option to import `jQuery` as `jq`.\n     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n     * compiled(data);\n     * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n     *\n     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n     * compiled.source;\n     * // => function(data) {\n     * //   var __t, __p = '';\n     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n     * //   return __p;\n     * // }\n     *\n     * // Use custom template delimiters.\n     * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n     * var compiled = _.template('hello {{ user }}!');\n     * compiled({ 'user': 'mustache' });\n     * // => 'hello mustache!'\n     *\n     * // Use the `source` property to inline compiled templates for meaningful\n     * // line numbers in error messages and stack traces.\n     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n     *   var JST = {\\\n     *     \"main\": ' + _.template(mainText).source + '\\\n     *   };\\\n     * ');\n     */\n    function template(string, options, guard) {\n      // Based on John Resig's `tmpl` implementation\n      // (http://ejohn.org/blog/javascript-micro-templating/)\n      // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n      var settings = lodash.templateSettings;\n\n      if (guard && isIterateeCall(string, options, guard)) {\n        options = undefined;\n      }\n      string = toString(string);\n      options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n      var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n          importsKeys = keys(imports),\n          importsValues = baseValues(imports, importsKeys);\n\n      var isEscaping,\n          isEvaluating,\n          index = 0,\n          interpolate = options.interpolate || reNoMatch,\n          source = \"__p += '\";\n\n      // Compile the regexp to match each delimiter.\n      var reDelimiters = RegExp(\n        (options.escape || reNoMatch).source + '|' +\n        interpolate.source + '|' +\n        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n        (options.evaluate || reNoMatch).source + '|$'\n      , 'g');\n\n      // Use a sourceURL for easier debugging.\n      // The sourceURL gets injected into the source that's eval-ed, so be careful\n      // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n      // and escape the comment, thus injecting code that gets evaled.\n      var sourceURL = '//# sourceURL=' +\n        (hasOwnProperty.call(options, 'sourceURL')\n          ? (options.sourceURL + '').replace(/\\s/g, ' ')\n          : ('lodash.templateSources[' + (++templateCounter) + ']')\n        ) + '\\n';\n\n      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n        interpolateValue || (interpolateValue = esTemplateValue);\n\n        // Escape characters that can't be included in string literals.\n        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n        // Replace delimiters with snippets.\n        if (escapeValue) {\n          isEscaping = true;\n          source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n        }\n        if (evaluateValue) {\n          isEvaluating = true;\n          source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n        }\n        if (interpolateValue) {\n          source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n        }\n        index = offset + match.length;\n\n        // The JS engine embedded in Adobe products needs `match` returned in\n        // order to produce the correct `offset` value.\n        return match;\n      });\n\n      source += \"';\\n\";\n\n      // If `variable` is not specified wrap a with-statement around the generated\n      // code to add the data object to the top of the scope chain.\n      var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n      if (!variable) {\n        source = 'with (obj) {\\n' + source + '\\n}\\n';\n      }\n      // Throw an error if a forbidden character was found in `variable`, to prevent\n      // potential command injection attacks.\n      else if (reForbiddenIdentifierChars.test(variable)) {\n        throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n      }\n\n      // Cleanup code by stripping empty strings.\n      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n        .replace(reEmptyStringMiddle, '$1')\n        .replace(reEmptyStringTrailing, '$1;');\n\n      // Frame code as the function body.\n      source = 'function(' + (variable || 'obj') + ') {\\n' +\n        (variable\n          ? ''\n          : 'obj || (obj = {});\\n'\n        ) +\n        \"var __t, __p = ''\" +\n        (isEscaping\n           ? ', __e = _.escape'\n           : ''\n        ) +\n        (isEvaluating\n          ? ', __j = Array.prototype.join;\\n' +\n            \"function print() { __p += __j.call(arguments, '') }\\n\"\n          : ';\\n'\n        ) +\n        source +\n        'return __p\\n}';\n\n      var result = attempt(function() {\n        return Function(importsKeys, sourceURL + 'return ' + source)\n          .apply(undefined, importsValues);\n      });\n\n      // Provide the compiled function's source by its `toString` method or\n      // the `source` property as a convenience for inlining compiled templates.\n      result.source = source;\n      if (isError(result)) {\n        throw result;\n      }\n      return result;\n    }\n\n    /**\n     * Converts `string`, as a whole, to lower case just like\n     * [String#toLowerCase](https://mdn.io/toLowerCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.toLower('--Foo-Bar--');\n     * // => '--foo-bar--'\n     *\n     * _.toLower('fooBar');\n     * // => 'foobar'\n     *\n     * _.toLower('__FOO_BAR__');\n     * // => '__foo_bar__'\n     */\n    function toLower(value) {\n      return toString(value).toLowerCase();\n    }\n\n    /**\n     * Converts `string`, as a whole, to upper case just like\n     * [String#toUpperCase](https://mdn.io/toUpperCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.toUpper('--foo-bar--');\n     * // => '--FOO-BAR--'\n     *\n     * _.toUpper('fooBar');\n     * // => 'FOOBAR'\n     *\n     * _.toUpper('__foo_bar__');\n     * // => '__FOO_BAR__'\n     */\n    function toUpper(value) {\n      return toString(value).toUpperCase();\n    }\n\n    /**\n     * Removes leading and trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trim('  abc  ');\n     * // => 'abc'\n     *\n     * _.trim('-_-abc-_-', '_-');\n     * // => 'abc'\n     *\n     * _.map(['  foo  ', '  bar  '], _.trim);\n     * // => ['foo', 'bar']\n     */\n    function trim(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return baseTrim(string);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          chrSymbols = stringToArray(chars),\n          start = charsStartIndex(strSymbols, chrSymbols),\n          end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n      return castSlice(strSymbols, start, end).join('');\n    }\n\n    /**\n     * Removes trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimEnd('  abc  ');\n     * // => '  abc'\n     *\n     * _.trimEnd('-_-abc-_-', '_-');\n     * // => '-_-abc'\n     */\n    function trimEnd(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.slice(0, trimmedEndIndex(string) + 1);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n      return castSlice(strSymbols, 0, end).join('');\n    }\n\n    /**\n     * Removes leading whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimStart('  abc  ');\n     * // => 'abc  '\n     *\n     * _.trimStart('-_-abc-_-', '_-');\n     * // => 'abc-_-'\n     */\n    function trimStart(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.replace(reTrimStart, '');\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          start = charsStartIndex(strSymbols, stringToArray(chars));\n\n      return castSlice(strSymbols, start).join('');\n    }\n\n    /**\n     * Truncates `string` if it's longer than the given maximum string length.\n     * The last characters of the truncated string are replaced with the omission\n     * string which defaults to \"...\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to truncate.\n     * @param {Object} [options={}] The options object.\n     * @param {number} [options.length=30] The maximum string length.\n     * @param {string} [options.omission='...'] The string to indicate text is omitted.\n     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n     * @returns {string} Returns the truncated string.\n     * @example\n     *\n     * _.truncate('hi-diddly-ho there, neighborino');\n     * // => 'hi-diddly-ho there, neighbo...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': ' '\n     * });\n     * // => 'hi-diddly-ho there,...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': /,? +/\n     * });\n     * // => 'hi-diddly-ho there...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'omission': ' [...]'\n     * });\n     * // => 'hi-diddly-ho there, neig [...]'\n     */\n    function truncate(string, options) {\n      var length = DEFAULT_TRUNC_LENGTH,\n          omission = DEFAULT_TRUNC_OMISSION;\n\n      if (isObject(options)) {\n        var separator = 'separator' in options ? options.separator : separator;\n        length = 'length' in options ? toInteger(options.length) : length;\n        omission = 'omission' in options ? baseToString(options.omission) : omission;\n      }\n      string = toString(string);\n\n      var strLength = string.length;\n      if (hasUnicode(string)) {\n        var strSymbols = stringToArray(string);\n        strLength = strSymbols.length;\n      }\n      if (length >= strLength) {\n        return string;\n      }\n      var end = length - stringSize(omission);\n      if (end < 1) {\n        return omission;\n      }\n      var result = strSymbols\n        ? castSlice(strSymbols, 0, end).join('')\n        : string.slice(0, end);\n\n      if (separator === undefined) {\n        return result + omission;\n      }\n      if (strSymbols) {\n        end += (result.length - end);\n      }\n      if (isRegExp(separator)) {\n        if (string.slice(end).search(separator)) {\n          var match,\n              substring = result;\n\n          if (!separator.global) {\n            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n          }\n          separator.lastIndex = 0;\n          while ((match = separator.exec(substring))) {\n            var newEnd = match.index;\n          }\n          result = result.slice(0, newEnd === undefined ? end : newEnd);\n        }\n      } else if (string.indexOf(baseToString(separator), end) != end) {\n        var index = result.lastIndexOf(separator);\n        if (index > -1) {\n          result = result.slice(0, index);\n        }\n      }\n      return result + omission;\n    }\n\n    /**\n     * The inverse of `_.escape`; this method converts the HTML entities\n     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n     * their corresponding characters.\n     *\n     * **Note:** No other HTML entities are unescaped. To unescape additional\n     * HTML entities use a third-party library like [_he_](https://mths.be/he).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.6.0\n     * @category String\n     * @param {string} [string=''] The string to unescape.\n     * @returns {string} Returns the unescaped string.\n     * @example\n     *\n     * _.unescape('fred, barney, &amp; pebbles');\n     * // => 'fred, barney, & pebbles'\n     */\n    function unescape(string) {\n      string = toString(string);\n      return (string && reHasEscapedHtml.test(string))\n        ? string.replace(reEscapedHtml, unescapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Converts `string`, as space separated words, to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.upperCase('--foo-bar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('fooBar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('__foo_bar__');\n     * // => 'FOO BAR'\n     */\n    var upperCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toUpperCase();\n    });\n\n    /**\n     * Converts the first character of `string` to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.upperFirst('fred');\n     * // => 'Fred'\n     *\n     * _.upperFirst('FRED');\n     * // => 'FRED'\n     */\n    var upperFirst = createCaseFirst('toUpperCase');\n\n    /**\n     * Splits `string` into an array of its words.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {RegExp|string} [pattern] The pattern to match words.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the words of `string`.\n     * @example\n     *\n     * _.words('fred, barney, & pebbles');\n     * // => ['fred', 'barney', 'pebbles']\n     *\n     * _.words('fred, barney, & pebbles', /[^, ]+/g);\n     * // => ['fred', 'barney', '&', 'pebbles']\n     */\n    function words(string, pattern, guard) {\n      string = toString(string);\n      pattern = guard ? undefined : pattern;\n\n      if (pattern === undefined) {\n        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n      }\n      return string.match(pattern) || [];\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Attempts to invoke `func`, returning either the result or the caught error\n     * object. Any additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Function} func The function to attempt.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {*} Returns the `func` result or error object.\n     * @example\n     *\n     * // Avoid throwing errors for invalid selectors.\n     * var elements = _.attempt(function(selector) {\n     *   return document.querySelectorAll(selector);\n     * }, '>_>');\n     *\n     * if (_.isError(elements)) {\n     *   elements = [];\n     * }\n     */\n    var attempt = baseRest(function(func, args) {\n      try {\n        return apply(func, undefined, args);\n      } catch (e) {\n        return isError(e) ? e : new Error(e);\n      }\n    });\n\n    /**\n     * Binds methods of an object to the object itself, overwriting the existing\n     * method.\n     *\n     * **Note:** This method doesn't set the \"length\" property of bound functions.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Object} object The object to bind and assign the bound methods to.\n     * @param {...(string|string[])} methodNames The object method names to bind.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var view = {\n     *   'label': 'docs',\n     *   'click': function() {\n     *     console.log('clicked ' + this.label);\n     *   }\n     * };\n     *\n     * _.bindAll(view, ['click']);\n     * jQuery(element).on('click', view.click);\n     * // => Logs 'clicked docs' when clicked.\n     */\n    var bindAll = flatRest(function(object, methodNames) {\n      arrayEach(methodNames, function(key) {\n        key = toKey(key);\n        baseAssignValue(object, key, bind(object[key], object));\n      });\n      return object;\n    });\n\n    /**\n     * Creates a function that iterates over `pairs` and invokes the corresponding\n     * function of the first predicate to return truthy. The predicate-function\n     * pairs are invoked with the `this` binding and arguments of the created\n     * function.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Array} pairs The predicate-function pairs.\n     * @returns {Function} Returns the new composite function.\n     * @example\n     *\n     * var func = _.cond([\n     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],\n     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n     *   [_.stubTrue,                      _.constant('no match')]\n     * ]);\n     *\n     * func({ 'a': 1, 'b': 2 });\n     * // => 'matches A'\n     *\n     * func({ 'a': 0, 'b': 1 });\n     * // => 'matches B'\n     *\n     * func({ 'a': '1', 'b': '2' });\n     * // => 'no match'\n     */\n    function cond(pairs) {\n      var length = pairs == null ? 0 : pairs.length,\n          toIteratee = getIteratee();\n\n      pairs = !length ? [] : arrayMap(pairs, function(pair) {\n        if (typeof pair[1] != 'function') {\n          throw new TypeError(FUNC_ERROR_TEXT);\n        }\n        return [toIteratee(pair[0]), pair[1]];\n      });\n\n      return baseRest(function(args) {\n        var index = -1;\n        while (++index < length) {\n          var pair = pairs[index];\n          if (apply(pair[0], this, args)) {\n            return apply(pair[1], this, args);\n          }\n        }\n      });\n    }\n\n    /**\n     * Creates a function that invokes the predicate properties of `source` with\n     * the corresponding property values of a given object, returning `true` if\n     * all predicates return truthy, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.conformsTo` with\n     * `source` partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 2, 'b': 1 },\n     *   { 'a': 1, 'b': 2 }\n     * ];\n     *\n     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n     * // => [{ 'a': 1, 'b': 2 }]\n     */\n    function conforms(source) {\n      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that returns `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {*} value The value to return from the new function.\n     * @returns {Function} Returns the new constant function.\n     * @example\n     *\n     * var objects = _.times(2, _.constant({ 'a': 1 }));\n     *\n     * console.log(objects);\n     * // => [{ 'a': 1 }, { 'a': 1 }]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => true\n     */\n    function constant(value) {\n      return function() {\n        return value;\n      };\n    }\n\n    /**\n     * Checks `value` to determine whether a default value should be returned in\n     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n     * or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Util\n     * @param {*} value The value to check.\n     * @param {*} defaultValue The default value.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * _.defaultTo(1, 10);\n     * // => 1\n     *\n     * _.defaultTo(undefined, 10);\n     * // => 10\n     */\n    function defaultTo(value, defaultValue) {\n      return (value == null || value !== value) ? defaultValue : value;\n    }\n\n    /**\n     * Creates a function that returns the result of invoking the given functions\n     * with the `this` binding of the created function, where each successive\n     * invocation is supplied the return value of the previous.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flowRight\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flow([_.add, square]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flow = createFlow();\n\n    /**\n     * This method is like `_.flow` except that it creates a function that\n     * invokes the given functions from right to left.\n     *\n     * @static\n     * @since 3.0.0\n     * @memberOf _\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flow\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flowRight([square, _.add]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flowRight = createFlow(true);\n\n    /**\n     * This method returns the first argument it receives.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {*} value Any value.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     *\n     * console.log(_.identity(object) === object);\n     * // => true\n     */\n    function identity(value) {\n      return value;\n    }\n\n    /**\n     * Creates a function that invokes `func` with the arguments of the created\n     * function. If `func` is a property name, the created function returns the\n     * property value for a given element. If `func` is an array or object, the\n     * created function returns `true` for elements that contain the equivalent\n     * source properties, otherwise it returns `false`.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Util\n     * @param {*} [func=_.identity] The value to convert to a callback.\n     * @returns {Function} Returns the callback.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, _.iteratee(['user', 'fred']));\n     * // => [{ 'user': 'fred', 'age': 40 }]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, _.iteratee('user'));\n     * // => ['barney', 'fred']\n     *\n     * // Create custom iteratee shorthands.\n     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {\n     *     return func.test(string);\n     *   };\n     * });\n     *\n     * _.filter(['abc', 'def'], /ef/);\n     * // => ['def']\n     */\n    function iteratee(func) {\n      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between a given\n     * object and `source`, returning `true` if the given object has equivalent\n     * property values, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.isMatch` with `source`\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matches(source) {\n      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between the\n     * value at `path` of a given object to `srcValue`, returning `true` if the\n     * object value is equivalent, else `false`.\n     *\n     * **Note:** Partial comparisons will match empty array and empty object\n     * `srcValue` values against any array or object value, respectively. See\n     * `_.isEqual` for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.find(objects, _.matchesProperty('a', 4));\n     * // => { 'a': 4, 'b': 5, 'c': 6 }\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matchesProperty(path, srcValue) {\n      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that invokes the method at `path` of a given object.\n     * Any additional arguments are provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': _.constant(2) } },\n     *   { 'a': { 'b': _.constant(1) } }\n     * ];\n     *\n     * _.map(objects, _.method('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(objects, _.method(['a', 'b']));\n     * // => [2, 1]\n     */\n    var method = baseRest(function(path, args) {\n      return function(object) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * The opposite of `_.method`; this method creates a function that invokes\n     * the method at a given path of `object`. Any additional arguments are\n     * provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var array = _.times(3, _.constant),\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n     * // => [2, 0]\n     */\n    var methodOf = baseRest(function(object, args) {\n      return function(path) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * Adds all own enumerable string keyed function properties of a source\n     * object to the destination object. If `object` is a function, then methods\n     * are added to its prototype as well.\n     *\n     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n     * avoid conflicts caused by modifying the original.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Function|Object} [object=lodash] The destination object.\n     * @param {Object} source The object of functions to add.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n     * @returns {Function|Object} Returns `object`.\n     * @example\n     *\n     * function vowels(string) {\n     *   return _.filter(string, function(v) {\n     *     return /[aeiou]/i.test(v);\n     *   });\n     * }\n     *\n     * _.mixin({ 'vowels': vowels });\n     * _.vowels('fred');\n     * // => ['e']\n     *\n     * _('fred').vowels().value();\n     * // => ['e']\n     *\n     * _.mixin({ 'vowels': vowels }, { 'chain': false });\n     * _('fred').vowels();\n     * // => ['e']\n     */\n    function mixin(object, source, options) {\n      var props = keys(source),\n          methodNames = baseFunctions(source, props);\n\n      if (options == null &&\n          !(isObject(source) && (methodNames.length || !props.length))) {\n        options = source;\n        source = object;\n        object = this;\n        methodNames = baseFunctions(source, keys(source));\n      }\n      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n          isFunc = isFunction(object);\n\n      arrayEach(methodNames, function(methodName) {\n        var func = source[methodName];\n        object[methodName] = func;\n        if (isFunc) {\n          object.prototype[methodName] = function() {\n            var chainAll = this.__chain__;\n            if (chain || chainAll) {\n              var result = object(this.__wrapped__),\n                  actions = result.__actions__ = copyArray(this.__actions__);\n\n              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n              result.__chain__ = chainAll;\n              return result;\n            }\n            return func.apply(object, arrayPush([this.value()], arguments));\n          };\n        }\n      });\n\n      return object;\n    }\n\n    /**\n     * Reverts the `_` variable to its previous value and returns a reference to\n     * the `lodash` function.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @returns {Function} Returns the `lodash` function.\n     * @example\n     *\n     * var lodash = _.noConflict();\n     */\n    function noConflict() {\n      if (root._ === this) {\n        root._ = oldDash;\n      }\n      return this;\n    }\n\n    /**\n     * This method returns `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Util\n     * @example\n     *\n     * _.times(2, _.noop);\n     * // => [undefined, undefined]\n     */\n    function noop() {\n      // No operation performed.\n    }\n\n    /**\n     * Creates a function that gets the argument at index `n`. If `n` is negative,\n     * the nth argument from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [n=0] The index of the argument to return.\n     * @returns {Function} Returns the new pass-thru function.\n     * @example\n     *\n     * var func = _.nthArg(1);\n     * func('a', 'b', 'c', 'd');\n     * // => 'b'\n     *\n     * var func = _.nthArg(-2);\n     * func('a', 'b', 'c', 'd');\n     * // => 'c'\n     */\n    function nthArg(n) {\n      n = toInteger(n);\n      return baseRest(function(args) {\n        return baseNth(args, n);\n      });\n    }\n\n    /**\n     * Creates a function that invokes `iteratees` with the arguments it receives\n     * and returns their results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to invoke.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.over([Math.max, Math.min]);\n     *\n     * func(1, 2, 3, 4);\n     * // => [4, 1]\n     */\n    var over = createOver(arrayMap);\n\n    /**\n     * Creates a function that checks if **all** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overEvery([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => false\n     *\n     * func(NaN);\n     * // => false\n     */\n    var overEvery = createOver(arrayEvery);\n\n    /**\n     * Creates a function that checks if **any** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overSome([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => true\n     *\n     * func(NaN);\n     * // => false\n     *\n     * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n     * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n     */\n    var overSome = createOver(arraySome);\n\n    /**\n     * Creates a function that returns the value at `path` of a given object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': 2 } },\n     *   { 'a': { 'b': 1 } }\n     * ];\n     *\n     * _.map(objects, _.property('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n     * // => [1, 2]\n     */\n    function property(path) {\n      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n    }\n\n    /**\n     * The opposite of `_.property`; this method creates a function that returns\n     * the value at a given path of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var array = [0, 1, 2],\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n     * // => [2, 0]\n     */\n    function propertyOf(object) {\n      return function(path) {\n        return object == null ? undefined : baseGet(object, path);\n      };\n    }\n\n    /**\n     * Creates an array of numbers (positive and/or negative) progressing from\n     * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n     * `start` is specified without an `end` or `step`. If `end` is not specified,\n     * it's set to `start` with `start` then set to `0`.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.rangeRight\n     * @example\n     *\n     * _.range(4);\n     * // => [0, 1, 2, 3]\n     *\n     * _.range(-4);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 5);\n     * // => [1, 2, 3, 4]\n     *\n     * _.range(0, 20, 5);\n     * // => [0, 5, 10, 15]\n     *\n     * _.range(0, -4, -1);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.range(0);\n     * // => []\n     */\n    var range = createRange();\n\n    /**\n     * This method is like `_.range` except that it populates values in\n     * descending order.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.range\n     * @example\n     *\n     * _.rangeRight(4);\n     * // => [3, 2, 1, 0]\n     *\n     * _.rangeRight(-4);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 5);\n     * // => [4, 3, 2, 1]\n     *\n     * _.rangeRight(0, 20, 5);\n     * // => [15, 10, 5, 0]\n     *\n     * _.rangeRight(0, -4, -1);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.rangeRight(0);\n     * // => []\n     */\n    var rangeRight = createRange(true);\n\n    /**\n     * This method returns a new empty array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Array} Returns the new empty array.\n     * @example\n     *\n     * var arrays = _.times(2, _.stubArray);\n     *\n     * console.log(arrays);\n     * // => [[], []]\n     *\n     * console.log(arrays[0] === arrays[1]);\n     * // => false\n     */\n    function stubArray() {\n      return [];\n    }\n\n    /**\n     * This method returns `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `false`.\n     * @example\n     *\n     * _.times(2, _.stubFalse);\n     * // => [false, false]\n     */\n    function stubFalse() {\n      return false;\n    }\n\n    /**\n     * This method returns a new empty object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Object} Returns the new empty object.\n     * @example\n     *\n     * var objects = _.times(2, _.stubObject);\n     *\n     * console.log(objects);\n     * // => [{}, {}]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => false\n     */\n    function stubObject() {\n      return {};\n    }\n\n    /**\n     * This method returns an empty string.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {string} Returns the empty string.\n     * @example\n     *\n     * _.times(2, _.stubString);\n     * // => ['', '']\n     */\n    function stubString() {\n      return '';\n    }\n\n    /**\n     * This method returns `true`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `true`.\n     * @example\n     *\n     * _.times(2, _.stubTrue);\n     * // => [true, true]\n     */\n    function stubTrue() {\n      return true;\n    }\n\n    /**\n     * Invokes the iteratee `n` times, returning an array of the results of\n     * each invocation. The iteratee is invoked with one argument; (index).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} n The number of times to invoke `iteratee`.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.times(3, String);\n     * // => ['0', '1', '2']\n     *\n     *  _.times(4, _.constant(0));\n     * // => [0, 0, 0, 0]\n     */\n    function times(n, iteratee) {\n      n = toInteger(n);\n      if (n < 1 || n > MAX_SAFE_INTEGER) {\n        return [];\n      }\n      var index = MAX_ARRAY_LENGTH,\n          length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n      iteratee = getIteratee(iteratee);\n      n -= MAX_ARRAY_LENGTH;\n\n      var result = baseTimes(length, iteratee);\n      while (++index < n) {\n        iteratee(index);\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a property path array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the new property path array.\n     * @example\n     *\n     * _.toPath('a.b.c');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toPath('a[0].b.c');\n     * // => ['a', '0', 'b', 'c']\n     */\n    function toPath(value) {\n      if (isArray(value)) {\n        return arrayMap(value, toKey);\n      }\n      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n    }\n\n    /**\n     * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {string} [prefix=''] The value to prefix the ID with.\n     * @returns {string} Returns the unique ID.\n     * @example\n     *\n     * _.uniqueId('contact_');\n     * // => 'contact_104'\n     *\n     * _.uniqueId();\n     * // => '105'\n     */\n    function uniqueId(prefix) {\n      var id = ++idCounter;\n      return toString(prefix) + id;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Adds two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {number} augend The first number in an addition.\n     * @param {number} addend The second number in an addition.\n     * @returns {number} Returns the total.\n     * @example\n     *\n     * _.add(6, 4);\n     * // => 10\n     */\n    var add = createMathOperation(function(augend, addend) {\n      return augend + addend;\n    }, 0);\n\n    /**\n     * Computes `number` rounded up to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round up.\n     * @param {number} [precision=0] The precision to round up to.\n     * @returns {number} Returns the rounded up number.\n     * @example\n     *\n     * _.ceil(4.006);\n     * // => 5\n     *\n     * _.ceil(6.004, 2);\n     * // => 6.01\n     *\n     * _.ceil(6040, -2);\n     * // => 6100\n     */\n    var ceil = createRound('ceil');\n\n    /**\n     * Divide two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} dividend The first number in a division.\n     * @param {number} divisor The second number in a division.\n     * @returns {number} Returns the quotient.\n     * @example\n     *\n     * _.divide(6, 4);\n     * // => 1.5\n     */\n    var divide = createMathOperation(function(dividend, divisor) {\n      return dividend / divisor;\n    }, 1);\n\n    /**\n     * Computes `number` rounded down to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round down.\n     * @param {number} [precision=0] The precision to round down to.\n     * @returns {number} Returns the rounded down number.\n     * @example\n     *\n     * _.floor(4.006);\n     * // => 4\n     *\n     * _.floor(0.046, 2);\n     * // => 0.04\n     *\n     * _.floor(4060, -2);\n     * // => 4000\n     */\n    var floor = createRound('floor');\n\n    /**\n     * Computes the maximum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * _.max([4, 2, 8, 6]);\n     * // => 8\n     *\n     * _.max([]);\n     * // => undefined\n     */\n    function max(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseGt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.max` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.maxBy(objects, function(o) { return o.n; });\n     * // => { 'n': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.maxBy(objects, 'n');\n     * // => { 'n': 2 }\n     */\n    function maxBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n        : undefined;\n    }\n\n    /**\n     * Computes the mean of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * _.mean([4, 2, 8, 6]);\n     * // => 5\n     */\n    function mean(array) {\n      return baseMean(array, identity);\n    }\n\n    /**\n     * This method is like `_.mean` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be averaged.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.meanBy(objects, function(o) { return o.n; });\n     * // => 5\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.meanBy(objects, 'n');\n     * // => 5\n     */\n    function meanBy(array, iteratee) {\n      return baseMean(array, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * Computes the minimum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * _.min([4, 2, 8, 6]);\n     * // => 2\n     *\n     * _.min([]);\n     * // => undefined\n     */\n    function min(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseLt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.min` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.minBy(objects, function(o) { return o.n; });\n     * // => { 'n': 1 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.minBy(objects, 'n');\n     * // => { 'n': 1 }\n     */\n    function minBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n        : undefined;\n    }\n\n    /**\n     * Multiply two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} multiplier The first number in a multiplication.\n     * @param {number} multiplicand The second number in a multiplication.\n     * @returns {number} Returns the product.\n     * @example\n     *\n     * _.multiply(6, 4);\n     * // => 24\n     */\n    var multiply = createMathOperation(function(multiplier, multiplicand) {\n      return multiplier * multiplicand;\n    }, 1);\n\n    /**\n     * Computes `number` rounded to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round.\n     * @param {number} [precision=0] The precision to round to.\n     * @returns {number} Returns the rounded number.\n     * @example\n     *\n     * _.round(4.006);\n     * // => 4\n     *\n     * _.round(4.006, 2);\n     * // => 4.01\n     *\n     * _.round(4060, -2);\n     * // => 4100\n     */\n    var round = createRound('round');\n\n    /**\n     * Subtract two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {number} minuend The first number in a subtraction.\n     * @param {number} subtrahend The second number in a subtraction.\n     * @returns {number} Returns the difference.\n     * @example\n     *\n     * _.subtract(6, 4);\n     * // => 2\n     */\n    var subtract = createMathOperation(function(minuend, subtrahend) {\n      return minuend - subtrahend;\n    }, 0);\n\n    /**\n     * Computes the sum of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * _.sum([4, 2, 8, 6]);\n     * // => 20\n     */\n    function sum(array) {\n      return (array && array.length)\n        ? baseSum(array, identity)\n        : 0;\n    }\n\n    /**\n     * This method is like `_.sum` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be summed.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.sumBy(objects, function(o) { return o.n; });\n     * // => 20\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sumBy(objects, 'n');\n     * // => 20\n     */\n    function sumBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSum(array, getIteratee(iteratee, 2))\n        : 0;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return wrapped values in chain sequences.\n    lodash.after = after;\n    lodash.ary = ary;\n    lodash.assign = assign;\n    lodash.assignIn = assignIn;\n    lodash.assignInWith = assignInWith;\n    lodash.assignWith = assignWith;\n    lodash.at = at;\n    lodash.before = before;\n    lodash.bind = bind;\n    lodash.bindAll = bindAll;\n    lodash.bindKey = bindKey;\n    lodash.castArray = castArray;\n    lodash.chain = chain;\n    lodash.chunk = chunk;\n    lodash.compact = compact;\n    lodash.concat = concat;\n    lodash.cond = cond;\n    lodash.conforms = conforms;\n    lodash.constant = constant;\n    lodash.countBy = countBy;\n    lodash.create = create;\n    lodash.curry = curry;\n    lodash.curryRight = curryRight;\n    lodash.debounce = debounce;\n    lodash.defaults = defaults;\n    lodash.defaultsDeep = defaultsDeep;\n    lodash.defer = defer;\n    lodash.delay = delay;\n    lodash.difference = difference;\n    lodash.differenceBy = differenceBy;\n    lodash.differenceWith = differenceWith;\n    lodash.drop = drop;\n    lodash.dropRight = dropRight;\n    lodash.dropRightWhile = dropRightWhile;\n    lodash.dropWhile = dropWhile;\n    lodash.fill = fill;\n    lodash.filter = filter;\n    lodash.flatMap = flatMap;\n    lodash.flatMapDeep = flatMapDeep;\n    lodash.flatMapDepth = flatMapDepth;\n    lodash.flatten = flatten;\n    lodash.flattenDeep = flattenDeep;\n    lodash.flattenDepth = flattenDepth;\n    lodash.flip = flip;\n    lodash.flow = flow;\n    lodash.flowRight = flowRight;\n    lodash.fromPairs = fromPairs;\n    lodash.functions = functions;\n    lodash.functionsIn = functionsIn;\n    lodash.groupBy = groupBy;\n    lodash.initial = initial;\n    lodash.intersection = intersection;\n    lodash.intersectionBy = intersectionBy;\n    lodash.intersectionWith = intersectionWith;\n    lodash.invert = invert;\n    lodash.invertBy = invertBy;\n    lodash.invokeMap = invokeMap;\n    lodash.iteratee = iteratee;\n    lodash.keyBy = keyBy;\n    lodash.keys = keys;\n    lodash.keysIn = keysIn;\n    lodash.map = map;\n    lodash.mapKeys = mapKeys;\n    lodash.mapValues = mapValues;\n    lodash.matches = matches;\n    lodash.matchesProperty = matchesProperty;\n    lodash.memoize = memoize;\n    lodash.merge = merge;\n    lodash.mergeWith = mergeWith;\n    lodash.method = method;\n    lodash.methodOf = methodOf;\n    lodash.mixin = mixin;\n    lodash.negate = negate;\n    lodash.nthArg = nthArg;\n    lodash.omit = omit;\n    lodash.omitBy = omitBy;\n    lodash.once = once;\n    lodash.orderBy = orderBy;\n    lodash.over = over;\n    lodash.overArgs = overArgs;\n    lodash.overEvery = overEvery;\n    lodash.overSome = overSome;\n    lodash.partial = partial;\n    lodash.partialRight = partialRight;\n    lodash.partition = partition;\n    lodash.pick = pick;\n    lodash.pickBy = pickBy;\n    lodash.property = property;\n    lodash.propertyOf = propertyOf;\n    lodash.pull = pull;\n    lodash.pullAll = pullAll;\n    lodash.pullAllBy = pullAllBy;\n    lodash.pullAllWith = pullAllWith;\n    lodash.pullAt = pullAt;\n    lodash.range = range;\n    lodash.rangeRight = rangeRight;\n    lodash.rearg = rearg;\n    lodash.reject = reject;\n    lodash.remove = remove;\n    lodash.rest = rest;\n    lodash.reverse = reverse;\n    lodash.sampleSize = sampleSize;\n    lodash.set = set;\n    lodash.setWith = setWith;\n    lodash.shuffle = shuffle;\n    lodash.slice = slice;\n    lodash.sortBy = sortBy;\n    lodash.sortedUniq = sortedUniq;\n    lodash.sortedUniqBy = sortedUniqBy;\n    lodash.split = split;\n    lodash.spread = spread;\n    lodash.tail = tail;\n    lodash.take = take;\n    lodash.takeRight = takeRight;\n    lodash.takeRightWhile = takeRightWhile;\n    lodash.takeWhile = takeWhile;\n    lodash.tap = tap;\n    lodash.throttle = throttle;\n    lodash.thru = thru;\n    lodash.toArray = toArray;\n    lodash.toPairs = toPairs;\n    lodash.toPairsIn = toPairsIn;\n    lodash.toPath = toPath;\n    lodash.toPlainObject = toPlainObject;\n    lodash.transform = transform;\n    lodash.unary = unary;\n    lodash.union = union;\n    lodash.unionBy = unionBy;\n    lodash.unionWith = unionWith;\n    lodash.uniq = uniq;\n    lodash.uniqBy = uniqBy;\n    lodash.uniqWith = uniqWith;\n    lodash.unset = unset;\n    lodash.unzip = unzip;\n    lodash.unzipWith = unzipWith;\n    lodash.update = update;\n    lodash.updateWith = updateWith;\n    lodash.values = values;\n    lodash.valuesIn = valuesIn;\n    lodash.without = without;\n    lodash.words = words;\n    lodash.wrap = wrap;\n    lodash.xor = xor;\n    lodash.xorBy = xorBy;\n    lodash.xorWith = xorWith;\n    lodash.zip = zip;\n    lodash.zipObject = zipObject;\n    lodash.zipObjectDeep = zipObjectDeep;\n    lodash.zipWith = zipWith;\n\n    // Add aliases.\n    lodash.entries = toPairs;\n    lodash.entriesIn = toPairsIn;\n    lodash.extend = assignIn;\n    lodash.extendWith = assignInWith;\n\n    // Add methods to `lodash.prototype`.\n    mixin(lodash, lodash);\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return unwrapped values in chain sequences.\n    lodash.add = add;\n    lodash.attempt = attempt;\n    lodash.camelCase = camelCase;\n    lodash.capitalize = capitalize;\n    lodash.ceil = ceil;\n    lodash.clamp = clamp;\n    lodash.clone = clone;\n    lodash.cloneDeep = cloneDeep;\n    lodash.cloneDeepWith = cloneDeepWith;\n    lodash.cloneWith = cloneWith;\n    lodash.conformsTo = conformsTo;\n    lodash.deburr = deburr;\n    lodash.defaultTo = defaultTo;\n    lodash.divide = divide;\n    lodash.endsWith = endsWith;\n    lodash.eq = eq;\n    lodash.escape = escape;\n    lodash.escapeRegExp = escapeRegExp;\n    lodash.every = every;\n    lodash.find = find;\n    lodash.findIndex = findIndex;\n    lodash.findKey = findKey;\n    lodash.findLast = findLast;\n    lodash.findLastIndex = findLastIndex;\n    lodash.findLastKey = findLastKey;\n    lodash.floor = floor;\n    lodash.forEach = forEach;\n    lodash.forEachRight = forEachRight;\n    lodash.forIn = forIn;\n    lodash.forInRight = forInRight;\n    lodash.forOwn = forOwn;\n    lodash.forOwnRight = forOwnRight;\n    lodash.get = get;\n    lodash.gt = gt;\n    lodash.gte = gte;\n    lodash.has = has;\n    lodash.hasIn = hasIn;\n    lodash.head = head;\n    lodash.identity = identity;\n    lodash.includes = includes;\n    lodash.indexOf = indexOf;\n    lodash.inRange = inRange;\n    lodash.invoke = invoke;\n    lodash.isArguments = isArguments;\n    lodash.isArray = isArray;\n    lodash.isArrayBuffer = isArrayBuffer;\n    lodash.isArrayLike = isArrayLike;\n    lodash.isArrayLikeObject = isArrayLikeObject;\n    lodash.isBoolean = isBoolean;\n    lodash.isBuffer = isBuffer;\n    lodash.isDate = isDate;\n    lodash.isElement = isElement;\n    lodash.isEmpty = isEmpty;\n    lodash.isEqual = isEqual;\n    lodash.isEqualWith = isEqualWith;\n    lodash.isError = isError;\n    lodash.isFinite = isFinite;\n    lodash.isFunction = isFunction;\n    lodash.isInteger = isInteger;\n    lodash.isLength = isLength;\n    lodash.isMap = isMap;\n    lodash.isMatch = isMatch;\n    lodash.isMatchWith = isMatchWith;\n    lodash.isNaN = isNaN;\n    lodash.isNative = isNative;\n    lodash.isNil = isNil;\n    lodash.isNull = isNull;\n    lodash.isNumber = isNumber;\n    lodash.isObject = isObject;\n    lodash.isObjectLike = isObjectLike;\n    lodash.isPlainObject = isPlainObject;\n    lodash.isRegExp = isRegExp;\n    lodash.isSafeInteger = isSafeInteger;\n    lodash.isSet = isSet;\n    lodash.isString = isString;\n    lodash.isSymbol = isSymbol;\n    lodash.isTypedArray = isTypedArray;\n    lodash.isUndefined = isUndefined;\n    lodash.isWeakMap = isWeakMap;\n    lodash.isWeakSet = isWeakSet;\n    lodash.join = join;\n    lodash.kebabCase = kebabCase;\n    lodash.last = last;\n    lodash.lastIndexOf = lastIndexOf;\n    lodash.lowerCase = lowerCase;\n    lodash.lowerFirst = lowerFirst;\n    lodash.lt = lt;\n    lodash.lte = lte;\n    lodash.max = max;\n    lodash.maxBy = maxBy;\n    lodash.mean = mean;\n    lodash.meanBy = meanBy;\n    lodash.min = min;\n    lodash.minBy = minBy;\n    lodash.stubArray = stubArray;\n    lodash.stubFalse = stubFalse;\n    lodash.stubObject = stubObject;\n    lodash.stubString = stubString;\n    lodash.stubTrue = stubTrue;\n    lodash.multiply = multiply;\n    lodash.nth = nth;\n    lodash.noConflict = noConflict;\n    lodash.noop = noop;\n    lodash.now = now;\n    lodash.pad = pad;\n    lodash.padEnd = padEnd;\n    lodash.padStart = padStart;\n    lodash.parseInt = parseInt;\n    lodash.random = random;\n    lodash.reduce = reduce;\n    lodash.reduceRight = reduceRight;\n    lodash.repeat = repeat;\n    lodash.replace = replace;\n    lodash.result = result;\n    lodash.round = round;\n    lodash.runInContext = runInContext;\n    lodash.sample = sample;\n    lodash.size = size;\n    lodash.snakeCase = snakeCase;\n    lodash.some = some;\n    lodash.sortedIndex = sortedIndex;\n    lodash.sortedIndexBy = sortedIndexBy;\n    lodash.sortedIndexOf = sortedIndexOf;\n    lodash.sortedLastIndex = sortedLastIndex;\n    lodash.sortedLastIndexBy = sortedLastIndexBy;\n    lodash.sortedLastIndexOf = sortedLastIndexOf;\n    lodash.startCase = startCase;\n    lodash.startsWith = startsWith;\n    lodash.subtract = subtract;\n    lodash.sum = sum;\n    lodash.sumBy = sumBy;\n    lodash.template = template;\n    lodash.times = times;\n    lodash.toFinite = toFinite;\n    lodash.toInteger = toInteger;\n    lodash.toLength = toLength;\n    lodash.toLower = toLower;\n    lodash.toNumber = toNumber;\n    lodash.toSafeInteger = toSafeInteger;\n    lodash.toString = toString;\n    lodash.toUpper = toUpper;\n    lodash.trim = trim;\n    lodash.trimEnd = trimEnd;\n    lodash.trimStart = trimStart;\n    lodash.truncate = truncate;\n    lodash.unescape = unescape;\n    lodash.uniqueId = uniqueId;\n    lodash.upperCase = upperCase;\n    lodash.upperFirst = upperFirst;\n\n    // Add aliases.\n    lodash.each = forEach;\n    lodash.eachRight = forEachRight;\n    lodash.first = head;\n\n    mixin(lodash, (function() {\n      var source = {};\n      baseForOwn(lodash, function(func, methodName) {\n        if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n          source[methodName] = func;\n        }\n      });\n      return source;\n    }()), { 'chain': false });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The semantic version number.\n     *\n     * @static\n     * @memberOf _\n     * @type {string}\n     */\n    lodash.VERSION = VERSION;\n\n    // Assign default placeholders.\n    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n      lodash[methodName].placeholder = lodash;\n    });\n\n    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n    arrayEach(['drop', 'take'], function(methodName, index) {\n      LazyWrapper.prototype[methodName] = function(n) {\n        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n        var result = (this.__filtered__ && !index)\n          ? new LazyWrapper(this)\n          : this.clone();\n\n        if (result.__filtered__) {\n          result.__takeCount__ = nativeMin(n, result.__takeCount__);\n        } else {\n          result.__views__.push({\n            'size': nativeMin(n, MAX_ARRAY_LENGTH),\n            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n          });\n        }\n        return result;\n      };\n\n      LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n        return this.reverse()[methodName](n).reverse();\n      };\n    });\n\n    // Add `LazyWrapper` methods that accept an `iteratee` value.\n    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n      var type = index + 1,\n          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n      LazyWrapper.prototype[methodName] = function(iteratee) {\n        var result = this.clone();\n        result.__iteratees__.push({\n          'iteratee': getIteratee(iteratee, 3),\n          'type': type\n        });\n        result.__filtered__ = result.__filtered__ || isFilter;\n        return result;\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.head` and `_.last`.\n    arrayEach(['head', 'last'], function(methodName, index) {\n      var takeName = 'take' + (index ? 'Right' : '');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this[takeName](1).value()[0];\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n    arrayEach(['initial', 'tail'], function(methodName, index) {\n      var dropName = 'drop' + (index ? '' : 'Right');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n      };\n    });\n\n    LazyWrapper.prototype.compact = function() {\n      return this.filter(identity);\n    };\n\n    LazyWrapper.prototype.find = function(predicate) {\n      return this.filter(predicate).head();\n    };\n\n    LazyWrapper.prototype.findLast = function(predicate) {\n      return this.reverse().find(predicate);\n    };\n\n    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n      if (typeof path == 'function') {\n        return new LazyWrapper(this);\n      }\n      return this.map(function(value) {\n        return baseInvoke(value, path, args);\n      });\n    });\n\n    LazyWrapper.prototype.reject = function(predicate) {\n      return this.filter(negate(getIteratee(predicate)));\n    };\n\n    LazyWrapper.prototype.slice = function(start, end) {\n      start = toInteger(start);\n\n      var result = this;\n      if (result.__filtered__ && (start > 0 || end < 0)) {\n        return new LazyWrapper(result);\n      }\n      if (start < 0) {\n        result = result.takeRight(-start);\n      } else if (start) {\n        result = result.drop(start);\n      }\n      if (end !== undefined) {\n        end = toInteger(end);\n        result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n      }\n      return result;\n    };\n\n    LazyWrapper.prototype.takeRightWhile = function(predicate) {\n      return this.reverse().takeWhile(predicate).reverse();\n    };\n\n    LazyWrapper.prototype.toArray = function() {\n      return this.take(MAX_ARRAY_LENGTH);\n    };\n\n    // Add `LazyWrapper` methods to `lodash.prototype`.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n          isTaker = /^(?:head|last)$/.test(methodName),\n          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n          retUnwrapped = isTaker || /^find/.test(methodName);\n\n      if (!lodashFunc) {\n        return;\n      }\n      lodash.prototype[methodName] = function() {\n        var value = this.__wrapped__,\n            args = isTaker ? [1] : arguments,\n            isLazy = value instanceof LazyWrapper,\n            iteratee = args[0],\n            useLazy = isLazy || isArray(value);\n\n        var interceptor = function(value) {\n          var result = lodashFunc.apply(lodash, arrayPush([value], args));\n          return (isTaker && chainAll) ? result[0] : result;\n        };\n\n        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n          // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n          isLazy = useLazy = false;\n        }\n        var chainAll = this.__chain__,\n            isHybrid = !!this.__actions__.length,\n            isUnwrapped = retUnwrapped && !chainAll,\n            onlyLazy = isLazy && !isHybrid;\n\n        if (!retUnwrapped && useLazy) {\n          value = onlyLazy ? value : new LazyWrapper(this);\n          var result = func.apply(value, args);\n          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n          return new LodashWrapper(result, chainAll);\n        }\n        if (isUnwrapped && onlyLazy) {\n          return func.apply(this, args);\n        }\n        result = this.thru(interceptor);\n        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n      };\n    });\n\n    // Add `Array` methods to `lodash.prototype`.\n    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n      var func = arrayProto[methodName],\n          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n          retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n      lodash.prototype[methodName] = function() {\n        var args = arguments;\n        if (retUnwrapped && !this.__chain__) {\n          var value = this.value();\n          return func.apply(isArray(value) ? value : [], args);\n        }\n        return this[chainName](function(value) {\n          return func.apply(isArray(value) ? value : [], args);\n        });\n      };\n    });\n\n    // Map minified method names to their real names.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var lodashFunc = lodash[methodName];\n      if (lodashFunc) {\n        var key = lodashFunc.name + '';\n        if (!hasOwnProperty.call(realNames, key)) {\n          realNames[key] = [];\n        }\n        realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n      }\n    });\n\n    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n      'name': 'wrapper',\n      'func': undefined\n    }];\n\n    // Add methods to `LazyWrapper`.\n    LazyWrapper.prototype.clone = lazyClone;\n    LazyWrapper.prototype.reverse = lazyReverse;\n    LazyWrapper.prototype.value = lazyValue;\n\n    // Add chain sequence methods to the `lodash` wrapper.\n    lodash.prototype.at = wrapperAt;\n    lodash.prototype.chain = wrapperChain;\n    lodash.prototype.commit = wrapperCommit;\n    lodash.prototype.next = wrapperNext;\n    lodash.prototype.plant = wrapperPlant;\n    lodash.prototype.reverse = wrapperReverse;\n    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n    // Add lazy aliases.\n    lodash.prototype.first = lodash.prototype.head;\n\n    if (symIterator) {\n      lodash.prototype[symIterator] = wrapperToIterator;\n    }\n    return lodash;\n  });\n\n  /*--------------------------------------------------------------------------*/\n\n  // Export lodash.\n  var _ = runInContext();\n\n  // Some AMD build optimizers, like r.js, check for condition patterns like:\n  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n    // Expose Lodash on the global object to prevent errors when Lodash is\n    // loaded by a script tag in the presence of an AMD loader.\n    // See http://requirejs.org/docs/errors.html#mismatch for more details.\n    // Use `_.noConflict` to remove Lodash from the global object.\n    root._ = _;\n\n    // Define as an anonymous module so, through path mapping, it can be\n    // referenced as the \"underscore\" module.\n    define(function() {\n      return _;\n    });\n  }\n  // Check for `exports` after `define` in case a build optimizer adds it.\n  else if (freeModule) {\n    // Export for Node.js.\n    (freeModule.exports = _)._ = _;\n    // Export for CommonJS support.\n    freeExports._ = _;\n  }\n  else {\n    // Export to the global object.\n    root._ = _;\n  }\n}.call(this));\n","(typeof document !== \"undefined\") && (typeof navigator !== \"undefined\") && (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.lottie = factory());\n})(this, (function () { 'use strict';\n\n  var svgNS = 'http://www.w3.org/2000/svg';\n  var locationHref = '';\n  var _useWebWorker = false;\n  var initialDefaultFrame = -999999;\n  var setWebWorker = function setWebWorker(flag) {\n    _useWebWorker = !!flag;\n  };\n  var getWebWorker = function getWebWorker() {\n    return _useWebWorker;\n  };\n  var setLocationHref = function setLocationHref(value) {\n    locationHref = value;\n  };\n  var getLocationHref = function getLocationHref() {\n    return locationHref;\n  };\n\n  function createTag(type) {\n    // return {appendChild:function(){},setAttribute:function(){},style:{}}\n    return document.createElement(type);\n  }\n\n  function extendPrototype(sources, destination) {\n    var i;\n    var len = sources.length;\n    var sourcePrototype;\n    for (i = 0; i < len; i += 1) {\n      sourcePrototype = sources[i].prototype;\n      for (var attr in sourcePrototype) {\n        if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n      }\n    }\n  }\n  function getDescriptor(object, prop) {\n    return Object.getOwnPropertyDescriptor(object, prop);\n  }\n  function createProxyFunction(prototype) {\n    function ProxyFunction() {}\n    ProxyFunction.prototype = prototype;\n    return ProxyFunction;\n  }\n\n  // import Howl from '../../3rd_party/howler';\n\n  var audioControllerFactory = function () {\n    function AudioController(audioFactory) {\n      this.audios = [];\n      this.audioFactory = audioFactory;\n      this._volume = 1;\n      this._isMuted = false;\n    }\n    AudioController.prototype = {\n      addAudio: function addAudio(audio) {\n        this.audios.push(audio);\n      },\n      pause: function pause() {\n        var i;\n        var len = this.audios.length;\n        for (i = 0; i < len; i += 1) {\n          this.audios[i].pause();\n        }\n      },\n      resume: function resume() {\n        var i;\n        var len = this.audios.length;\n        for (i = 0; i < len; i += 1) {\n          this.audios[i].resume();\n        }\n      },\n      setRate: function setRate(rateValue) {\n        var i;\n        var len = this.audios.length;\n        for (i = 0; i < len; i += 1) {\n          this.audios[i].setRate(rateValue);\n        }\n      },\n      createAudio: function createAudio(assetPath) {\n        if (this.audioFactory) {\n          return this.audioFactory(assetPath);\n        }\n        if (window.Howl) {\n          return new window.Howl({\n            src: [assetPath]\n          });\n        }\n        return {\n          isPlaying: false,\n          play: function play() {\n            this.isPlaying = true;\n          },\n          seek: function seek() {\n            this.isPlaying = false;\n          },\n          playing: function playing() {},\n          rate: function rate() {},\n          setVolume: function setVolume() {}\n        };\n      },\n      setAudioFactory: function setAudioFactory(audioFactory) {\n        this.audioFactory = audioFactory;\n      },\n      setVolume: function setVolume(value) {\n        this._volume = value;\n        this._updateVolume();\n      },\n      mute: function mute() {\n        this._isMuted = true;\n        this._updateVolume();\n      },\n      unmute: function unmute() {\n        this._isMuted = false;\n        this._updateVolume();\n      },\n      getVolume: function getVolume() {\n        return this._volume;\n      },\n      _updateVolume: function _updateVolume() {\n        var i;\n        var len = this.audios.length;\n        for (i = 0; i < len; i += 1) {\n          this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n        }\n      }\n    };\n    return function () {\n      return new AudioController();\n    };\n  }();\n\n  var createTypedArray = function () {\n    function createRegularArray(type, len) {\n      var i = 0;\n      var arr = [];\n      var value;\n      switch (type) {\n        case 'int16':\n        case 'uint8c':\n          value = 1;\n          break;\n        default:\n          value = 1.1;\n          break;\n      }\n      for (i = 0; i < len; i += 1) {\n        arr.push(value);\n      }\n      return arr;\n    }\n    function createTypedArrayFactory(type, len) {\n      if (type === 'float32') {\n        return new Float32Array(len);\n      }\n      if (type === 'int16') {\n        return new Int16Array(len);\n      }\n      if (type === 'uint8c') {\n        return new Uint8ClampedArray(len);\n      }\n      return createRegularArray(type, len);\n    }\n    if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n      return createTypedArrayFactory;\n    }\n    return createRegularArray;\n  }();\n  function createSizedArray(len) {\n    return Array.apply(null, {\n      length: len\n    });\n  }\n\n  function _typeof$6(o) { \"@babel/helpers - typeof\"; return _typeof$6 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$6(o); }\n  var subframeEnabled = true;\n  var expressionsPlugin = null;\n  var expressionsInterfaces = null;\n  var idPrefix$1 = '';\n  var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n  var _shouldRoundValues = false;\n  var bmPow = Math.pow;\n  var bmSqrt = Math.sqrt;\n  var bmFloor = Math.floor;\n  var bmMax = Math.max;\n  var bmMin = Math.min;\n  var BMMath = {};\n  (function () {\n    var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n    var i;\n    var len = propertyNames.length;\n    for (i = 0; i < len; i += 1) {\n      BMMath[propertyNames[i]] = Math[propertyNames[i]];\n    }\n  })();\n  function ProjectInterface$1() {\n    return {};\n  }\n  BMMath.random = Math.random;\n  BMMath.abs = function (val) {\n    var tOfVal = _typeof$6(val);\n    if (tOfVal === 'object' && val.length) {\n      var absArr = createSizedArray(val.length);\n      var i;\n      var len = val.length;\n      for (i = 0; i < len; i += 1) {\n        absArr[i] = Math.abs(val[i]);\n      }\n      return absArr;\n    }\n    return Math.abs(val);\n  };\n  var defaultCurveSegments = 150;\n  var degToRads = Math.PI / 180;\n  var roundCorner = 0.5519;\n  function roundValues(flag) {\n    _shouldRoundValues = !!flag;\n  }\n  function bmRnd(value) {\n    if (_shouldRoundValues) {\n      return Math.round(value);\n    }\n    return value;\n  }\n  function styleDiv(element) {\n    element.style.position = 'absolute';\n    element.style.top = 0;\n    element.style.left = 0;\n    element.style.display = 'block';\n    element.style.transformOrigin = '0 0';\n    element.style.webkitTransformOrigin = '0 0';\n    element.style.backfaceVisibility = 'visible';\n    element.style.webkitBackfaceVisibility = 'visible';\n    element.style.transformStyle = 'preserve-3d';\n    element.style.webkitTransformStyle = 'preserve-3d';\n    element.style.mozTransformStyle = 'preserve-3d';\n  }\n  function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n    this.type = type;\n    this.currentTime = currentTime;\n    this.totalTime = totalTime;\n    this.direction = frameMultiplier < 0 ? -1 : 1;\n  }\n  function BMCompleteEvent(type, frameMultiplier) {\n    this.type = type;\n    this.direction = frameMultiplier < 0 ? -1 : 1;\n  }\n  function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n    this.type = type;\n    this.currentLoop = currentLoop;\n    this.totalLoops = totalLoops;\n    this.direction = frameMultiplier < 0 ? -1 : 1;\n  }\n  function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n    this.type = type;\n    this.firstFrame = firstFrame;\n    this.totalFrames = totalFrames;\n  }\n  function BMDestroyEvent(type, target) {\n    this.type = type;\n    this.target = target;\n  }\n  function BMRenderFrameErrorEvent(nativeError, currentTime) {\n    this.type = 'renderFrameError';\n    this.nativeError = nativeError;\n    this.currentTime = currentTime;\n  }\n  function BMConfigErrorEvent(nativeError) {\n    this.type = 'configError';\n    this.nativeError = nativeError;\n  }\n  function BMAnimationConfigErrorEvent(type, nativeError) {\n    this.type = type;\n    this.nativeError = nativeError;\n  }\n  var createElementID = function () {\n    var _count = 0;\n    return function createID() {\n      _count += 1;\n      return idPrefix$1 + '__lottie_element_' + _count;\n    };\n  }();\n  function HSVtoRGB(h, s, v) {\n    var r;\n    var g;\n    var b;\n    var i;\n    var f;\n    var p;\n    var q;\n    var t;\n    i = Math.floor(h * 6);\n    f = h * 6 - i;\n    p = v * (1 - s);\n    q = v * (1 - f * s);\n    t = v * (1 - (1 - f) * s);\n    switch (i % 6) {\n      case 0:\n        r = v;\n        g = t;\n        b = p;\n        break;\n      case 1:\n        r = q;\n        g = v;\n        b = p;\n        break;\n      case 2:\n        r = p;\n        g = v;\n        b = t;\n        break;\n      case 3:\n        r = p;\n        g = q;\n        b = v;\n        break;\n      case 4:\n        r = t;\n        g = p;\n        b = v;\n        break;\n      case 5:\n        r = v;\n        g = p;\n        b = q;\n        break;\n      default:\n        break;\n    }\n    return [r, g, b];\n  }\n  function RGBtoHSV(r, g, b) {\n    var max = Math.max(r, g, b);\n    var min = Math.min(r, g, b);\n    var d = max - min;\n    var h;\n    var s = max === 0 ? 0 : d / max;\n    var v = max / 255;\n    switch (max) {\n      case min:\n        h = 0;\n        break;\n      case r:\n        h = g - b + d * (g < b ? 6 : 0);\n        h /= 6 * d;\n        break;\n      case g:\n        h = b - r + d * 2;\n        h /= 6 * d;\n        break;\n      case b:\n        h = r - g + d * 4;\n        h /= 6 * d;\n        break;\n      default:\n        break;\n    }\n    return [h, s, v];\n  }\n  function addSaturationToRGB(color, offset) {\n    var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n    hsv[1] += offset;\n    if (hsv[1] > 1) {\n      hsv[1] = 1;\n    } else if (hsv[1] <= 0) {\n      hsv[1] = 0;\n    }\n    return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n  }\n  function addBrightnessToRGB(color, offset) {\n    var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n    hsv[2] += offset;\n    if (hsv[2] > 1) {\n      hsv[2] = 1;\n    } else if (hsv[2] < 0) {\n      hsv[2] = 0;\n    }\n    return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n  }\n  function addHueToRGB(color, offset) {\n    var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n    hsv[0] += offset / 360;\n    if (hsv[0] > 1) {\n      hsv[0] -= 1;\n    } else if (hsv[0] < 0) {\n      hsv[0] += 1;\n    }\n    return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n  }\n  var rgbToHex = function () {\n    var colorMap = [];\n    var i;\n    var hex;\n    for (i = 0; i < 256; i += 1) {\n      hex = i.toString(16);\n      colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n    }\n    return function (r, g, b) {\n      if (r < 0) {\n        r = 0;\n      }\n      if (g < 0) {\n        g = 0;\n      }\n      if (b < 0) {\n        b = 0;\n      }\n      return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n    };\n  }();\n  var setSubframeEnabled = function setSubframeEnabled(flag) {\n    subframeEnabled = !!flag;\n  };\n  var getSubframeEnabled = function getSubframeEnabled() {\n    return subframeEnabled;\n  };\n  var setExpressionsPlugin = function setExpressionsPlugin(value) {\n    expressionsPlugin = value;\n  };\n  var getExpressionsPlugin = function getExpressionsPlugin() {\n    return expressionsPlugin;\n  };\n  var setExpressionInterfaces = function setExpressionInterfaces(value) {\n    expressionsInterfaces = value;\n  };\n  var getExpressionInterfaces = function getExpressionInterfaces() {\n    return expressionsInterfaces;\n  };\n  var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n    defaultCurveSegments = value;\n  };\n  var getDefaultCurveSegments = function getDefaultCurveSegments() {\n    return defaultCurveSegments;\n  };\n  var setIdPrefix = function setIdPrefix(value) {\n    idPrefix$1 = value;\n  };\n  var getIdPrefix = function getIdPrefix() {\n    return idPrefix$1;\n  };\n\n  function createNS(type) {\n    // return {appendChild:function(){},setAttribute:function(){},style:{}}\n    return document.createElementNS(svgNS, type);\n  }\n\n  function _typeof$5(o) { \"@babel/helpers - typeof\"; return _typeof$5 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$5(o); }\n  var dataManager = function () {\n    var _counterId = 1;\n    var processes = [];\n    var workerFn;\n    var workerInstance;\n    var workerProxy = {\n      onmessage: function onmessage() {},\n      postMessage: function postMessage(path) {\n        workerFn({\n          data: path\n        });\n      }\n    };\n    var _workerSelf = {\n      postMessage: function postMessage(data) {\n        workerProxy.onmessage({\n          data: data\n        });\n      }\n    };\n    function createWorker(fn) {\n      if (window.Worker && window.Blob && getWebWorker()) {\n        var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n          type: 'text/javascript'\n        });\n        // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n        var url = URL.createObjectURL(blob);\n        return new Worker(url);\n      }\n      workerFn = fn;\n      return workerProxy;\n    }\n    function setupWorker() {\n      if (!workerInstance) {\n        workerInstance = createWorker(function workerStart(e) {\n          function dataFunctionManager() {\n            function completeLayers(layers, comps) {\n              var layerData;\n              var i;\n              var len = layers.length;\n              var j;\n              var jLen;\n              var k;\n              var kLen;\n              for (i = 0; i < len; i += 1) {\n                layerData = layers[i];\n                if ('ks' in layerData && !layerData.completed) {\n                  layerData.completed = true;\n                  if (layerData.hasMask) {\n                    var maskProps = layerData.masksProperties;\n                    jLen = maskProps.length;\n                    for (j = 0; j < jLen; j += 1) {\n                      if (maskProps[j].pt.k.i) {\n                        convertPathsToAbsoluteValues(maskProps[j].pt.k);\n                      } else {\n                        kLen = maskProps[j].pt.k.length;\n                        for (k = 0; k < kLen; k += 1) {\n                          if (maskProps[j].pt.k[k].s) {\n                            convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n                          }\n                          if (maskProps[j].pt.k[k].e) {\n                            convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n                          }\n                        }\n                      }\n                    }\n                  }\n                  if (layerData.ty === 0) {\n                    layerData.layers = findCompLayers(layerData.refId, comps);\n                    completeLayers(layerData.layers, comps);\n                  } else if (layerData.ty === 4) {\n                    completeShapes(layerData.shapes);\n                  } else if (layerData.ty === 5) {\n                    completeText(layerData);\n                  }\n                }\n              }\n            }\n            function completeChars(chars, assets) {\n              if (chars) {\n                var i = 0;\n                var len = chars.length;\n                for (i = 0; i < len; i += 1) {\n                  if (chars[i].t === 1) {\n                    // var compData = findComp(chars[i].data.refId, assets);\n                    chars[i].data.layers = findCompLayers(chars[i].data.refId, assets);\n                    // chars[i].data.ip = 0;\n                    // chars[i].data.op = 99999;\n                    // chars[i].data.st = 0;\n                    // chars[i].data.sr = 1;\n                    // chars[i].w = compData.w;\n                    // chars[i].data.ks = {\n                    //   a: { k: [0, 0, 0], a: 0 },\n                    //   p: { k: [0, -compData.h, 0], a: 0 },\n                    //   r: { k: 0, a: 0 },\n                    //   s: { k: [100, 100], a: 0 },\n                    //   o: { k: 100, a: 0 },\n                    // };\n                    completeLayers(chars[i].data.layers, assets);\n                  }\n                }\n              }\n            }\n            function findComp(id, comps) {\n              var i = 0;\n              var len = comps.length;\n              while (i < len) {\n                if (comps[i].id === id) {\n                  return comps[i];\n                }\n                i += 1;\n              }\n              return null;\n            }\n            function findCompLayers(id, comps) {\n              var comp = findComp(id, comps);\n              if (comp) {\n                if (!comp.layers.__used) {\n                  comp.layers.__used = true;\n                  return comp.layers;\n                }\n                return JSON.parse(JSON.stringify(comp.layers));\n              }\n              return null;\n            }\n            function completeShapes(arr) {\n              var i;\n              var len = arr.length;\n              var j;\n              var jLen;\n              for (i = len - 1; i >= 0; i -= 1) {\n                if (arr[i].ty === 'sh') {\n                  if (arr[i].ks.k.i) {\n                    convertPathsToAbsoluteValues(arr[i].ks.k);\n                  } else {\n                    jLen = arr[i].ks.k.length;\n                    for (j = 0; j < jLen; j += 1) {\n                      if (arr[i].ks.k[j].s) {\n                        convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n                      }\n                      if (arr[i].ks.k[j].e) {\n                        convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n                      }\n                    }\n                  }\n                } else if (arr[i].ty === 'gr') {\n                  completeShapes(arr[i].it);\n                }\n              }\n            }\n            function convertPathsToAbsoluteValues(path) {\n              var i;\n              var len = path.i.length;\n              for (i = 0; i < len; i += 1) {\n                path.i[i][0] += path.v[i][0];\n                path.i[i][1] += path.v[i][1];\n                path.o[i][0] += path.v[i][0];\n                path.o[i][1] += path.v[i][1];\n              }\n            }\n            function checkVersion(minimum, animVersionString) {\n              var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n              if (minimum[0] > animVersion[0]) {\n                return true;\n              }\n              if (animVersion[0] > minimum[0]) {\n                return false;\n              }\n              if (minimum[1] > animVersion[1]) {\n                return true;\n              }\n              if (animVersion[1] > minimum[1]) {\n                return false;\n              }\n              if (minimum[2] > animVersion[2]) {\n                return true;\n              }\n              if (animVersion[2] > minimum[2]) {\n                return false;\n              }\n              return null;\n            }\n            var checkText = function () {\n              var minimumVersion = [4, 4, 14];\n              function updateTextLayer(textLayer) {\n                var documentData = textLayer.t.d;\n                textLayer.t.d = {\n                  k: [{\n                    s: documentData,\n                    t: 0\n                  }]\n                };\n              }\n              function iterateLayers(layers) {\n                var i;\n                var len = layers.length;\n                for (i = 0; i < len; i += 1) {\n                  if (layers[i].ty === 5) {\n                    updateTextLayer(layers[i]);\n                  }\n                }\n              }\n              return function (animationData) {\n                if (checkVersion(minimumVersion, animationData.v)) {\n                  iterateLayers(animationData.layers);\n                  if (animationData.assets) {\n                    var i;\n                    var len = animationData.assets.length;\n                    for (i = 0; i < len; i += 1) {\n                      if (animationData.assets[i].layers) {\n                        iterateLayers(animationData.assets[i].layers);\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n            var checkChars = function () {\n              var minimumVersion = [4, 7, 99];\n              return function (animationData) {\n                if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n                  var i;\n                  var len = animationData.chars.length;\n                  for (i = 0; i < len; i += 1) {\n                    var charData = animationData.chars[i];\n                    if (charData.data && charData.data.shapes) {\n                      completeShapes(charData.data.shapes);\n                      charData.data.ip = 0;\n                      charData.data.op = 99999;\n                      charData.data.st = 0;\n                      charData.data.sr = 1;\n                      charData.data.ks = {\n                        p: {\n                          k: [0, 0],\n                          a: 0\n                        },\n                        s: {\n                          k: [100, 100],\n                          a: 0\n                        },\n                        a: {\n                          k: [0, 0],\n                          a: 0\n                        },\n                        r: {\n                          k: 0,\n                          a: 0\n                        },\n                        o: {\n                          k: 100,\n                          a: 0\n                        }\n                      };\n                      if (!animationData.chars[i].t) {\n                        charData.data.shapes.push({\n                          ty: 'no'\n                        });\n                        charData.data.shapes[0].it.push({\n                          p: {\n                            k: [0, 0],\n                            a: 0\n                          },\n                          s: {\n                            k: [100, 100],\n                            a: 0\n                          },\n                          a: {\n                            k: [0, 0],\n                            a: 0\n                          },\n                          r: {\n                            k: 0,\n                            a: 0\n                          },\n                          o: {\n                            k: 100,\n                            a: 0\n                          },\n                          sk: {\n                            k: 0,\n                            a: 0\n                          },\n                          sa: {\n                            k: 0,\n                            a: 0\n                          },\n                          ty: 'tr'\n                        });\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n            var checkPathProperties = function () {\n              var minimumVersion = [5, 7, 15];\n              function updateTextLayer(textLayer) {\n                var pathData = textLayer.t.p;\n                if (typeof pathData.a === 'number') {\n                  pathData.a = {\n                    a: 0,\n                    k: pathData.a\n                  };\n                }\n                if (typeof pathData.p === 'number') {\n                  pathData.p = {\n                    a: 0,\n                    k: pathData.p\n                  };\n                }\n                if (typeof pathData.r === 'number') {\n                  pathData.r = {\n                    a: 0,\n                    k: pathData.r\n                  };\n                }\n              }\n              function iterateLayers(layers) {\n                var i;\n                var len = layers.length;\n                for (i = 0; i < len; i += 1) {\n                  if (layers[i].ty === 5) {\n                    updateTextLayer(layers[i]);\n                  }\n                }\n              }\n              return function (animationData) {\n                if (checkVersion(minimumVersion, animationData.v)) {\n                  iterateLayers(animationData.layers);\n                  if (animationData.assets) {\n                    var i;\n                    var len = animationData.assets.length;\n                    for (i = 0; i < len; i += 1) {\n                      if (animationData.assets[i].layers) {\n                        iterateLayers(animationData.assets[i].layers);\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n            var checkColors = function () {\n              var minimumVersion = [4, 1, 9];\n              function iterateShapes(shapes) {\n                var i;\n                var len = shapes.length;\n                var j;\n                var jLen;\n                for (i = 0; i < len; i += 1) {\n                  if (shapes[i].ty === 'gr') {\n                    iterateShapes(shapes[i].it);\n                  } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n                    if (shapes[i].c.k && shapes[i].c.k[0].i) {\n                      jLen = shapes[i].c.k.length;\n                      for (j = 0; j < jLen; j += 1) {\n                        if (shapes[i].c.k[j].s) {\n                          shapes[i].c.k[j].s[0] /= 255;\n                          shapes[i].c.k[j].s[1] /= 255;\n                          shapes[i].c.k[j].s[2] /= 255;\n                          shapes[i].c.k[j].s[3] /= 255;\n                        }\n                        if (shapes[i].c.k[j].e) {\n                          shapes[i].c.k[j].e[0] /= 255;\n                          shapes[i].c.k[j].e[1] /= 255;\n                          shapes[i].c.k[j].e[2] /= 255;\n                          shapes[i].c.k[j].e[3] /= 255;\n                        }\n                      }\n                    } else {\n                      shapes[i].c.k[0] /= 255;\n                      shapes[i].c.k[1] /= 255;\n                      shapes[i].c.k[2] /= 255;\n                      shapes[i].c.k[3] /= 255;\n                    }\n                  }\n                }\n              }\n              function iterateLayers(layers) {\n                var i;\n                var len = layers.length;\n                for (i = 0; i < len; i += 1) {\n                  if (layers[i].ty === 4) {\n                    iterateShapes(layers[i].shapes);\n                  }\n                }\n              }\n              return function (animationData) {\n                if (checkVersion(minimumVersion, animationData.v)) {\n                  iterateLayers(animationData.layers);\n                  if (animationData.assets) {\n                    var i;\n                    var len = animationData.assets.length;\n                    for (i = 0; i < len; i += 1) {\n                      if (animationData.assets[i].layers) {\n                        iterateLayers(animationData.assets[i].layers);\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n            var checkShapes = function () {\n              var minimumVersion = [4, 4, 18];\n              function completeClosingShapes(arr) {\n                var i;\n                var len = arr.length;\n                var j;\n                var jLen;\n                for (i = len - 1; i >= 0; i -= 1) {\n                  if (arr[i].ty === 'sh') {\n                    if (arr[i].ks.k.i) {\n                      arr[i].ks.k.c = arr[i].closed;\n                    } else {\n                      jLen = arr[i].ks.k.length;\n                      for (j = 0; j < jLen; j += 1) {\n                        if (arr[i].ks.k[j].s) {\n                          arr[i].ks.k[j].s[0].c = arr[i].closed;\n                        }\n                        if (arr[i].ks.k[j].e) {\n                          arr[i].ks.k[j].e[0].c = arr[i].closed;\n                        }\n                      }\n                    }\n                  } else if (arr[i].ty === 'gr') {\n                    completeClosingShapes(arr[i].it);\n                  }\n                }\n              }\n              function iterateLayers(layers) {\n                var layerData;\n                var i;\n                var len = layers.length;\n                var j;\n                var jLen;\n                var k;\n                var kLen;\n                for (i = 0; i < len; i += 1) {\n                  layerData = layers[i];\n                  if (layerData.hasMask) {\n                    var maskProps = layerData.masksProperties;\n                    jLen = maskProps.length;\n                    for (j = 0; j < jLen; j += 1) {\n                      if (maskProps[j].pt.k.i) {\n                        maskProps[j].pt.k.c = maskProps[j].cl;\n                      } else {\n                        kLen = maskProps[j].pt.k.length;\n                        for (k = 0; k < kLen; k += 1) {\n                          if (maskProps[j].pt.k[k].s) {\n                            maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n                          }\n                          if (maskProps[j].pt.k[k].e) {\n                            maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n                          }\n                        }\n                      }\n                    }\n                  }\n                  if (layerData.ty === 4) {\n                    completeClosingShapes(layerData.shapes);\n                  }\n                }\n              }\n              return function (animationData) {\n                if (checkVersion(minimumVersion, animationData.v)) {\n                  iterateLayers(animationData.layers);\n                  if (animationData.assets) {\n                    var i;\n                    var len = animationData.assets.length;\n                    for (i = 0; i < len; i += 1) {\n                      if (animationData.assets[i].layers) {\n                        iterateLayers(animationData.assets[i].layers);\n                      }\n                    }\n                  }\n                }\n              };\n            }();\n            function completeData(animationData) {\n              if (animationData.__complete) {\n                return;\n              }\n              checkColors(animationData);\n              checkText(animationData);\n              checkChars(animationData);\n              checkPathProperties(animationData);\n              checkShapes(animationData);\n              completeLayers(animationData.layers, animationData.assets);\n              completeChars(animationData.chars, animationData.assets);\n              animationData.__complete = true;\n            }\n            function completeText(data) {\n              if (data.t.a.length === 0 && !('m' in data.t.p)) {\n                // data.singleShape = true;\n              }\n            }\n            var moduleOb = {};\n            moduleOb.completeData = completeData;\n            moduleOb.checkColors = checkColors;\n            moduleOb.checkChars = checkChars;\n            moduleOb.checkPathProperties = checkPathProperties;\n            moduleOb.checkShapes = checkShapes;\n            moduleOb.completeLayers = completeLayers;\n            return moduleOb;\n          }\n          if (!_workerSelf.dataManager) {\n            _workerSelf.dataManager = dataFunctionManager();\n          }\n          if (!_workerSelf.assetLoader) {\n            _workerSelf.assetLoader = function () {\n              function formatResponse(xhr) {\n                // using typeof doubles the time of execution of this method,\n                // so if available, it's better to use the header to validate the type\n                var contentTypeHeader = xhr.getResponseHeader('content-type');\n                if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n                  return xhr.response;\n                }\n                if (xhr.response && _typeof$5(xhr.response) === 'object') {\n                  return xhr.response;\n                }\n                if (xhr.response && typeof xhr.response === 'string') {\n                  return JSON.parse(xhr.response);\n                }\n                if (xhr.responseText) {\n                  return JSON.parse(xhr.responseText);\n                }\n                return null;\n              }\n              function loadAsset(path, fullPath, callback, errorCallback) {\n                var response;\n                var xhr = new XMLHttpRequest();\n                // set responseType after calling open or IE will break.\n                try {\n                  // This crashes on Android WebView prior to KitKat\n                  xhr.responseType = 'json';\n                } catch (err) {} // eslint-disable-line no-empty\n                xhr.onreadystatechange = function () {\n                  if (xhr.readyState === 4) {\n                    if (xhr.status === 200) {\n                      response = formatResponse(xhr);\n                      callback(response);\n                    } else {\n                      try {\n                        response = formatResponse(xhr);\n                        callback(response);\n                      } catch (err) {\n                        if (errorCallback) {\n                          errorCallback(err);\n                        }\n                      }\n                    }\n                  }\n                };\n                try {\n                  // Hack to workaround banner validation\n                  xhr.open(['G', 'E', 'T'].join(''), path, true);\n                } catch (error) {\n                  // Hack to workaround banner validation\n                  xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n                }\n                xhr.send();\n              }\n              return {\n                load: loadAsset\n              };\n            }();\n          }\n          if (e.data.type === 'loadAnimation') {\n            _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n              _workerSelf.dataManager.completeData(data);\n              _workerSelf.postMessage({\n                id: e.data.id,\n                payload: data,\n                status: 'success'\n              });\n            }, function () {\n              _workerSelf.postMessage({\n                id: e.data.id,\n                status: 'error'\n              });\n            });\n          } else if (e.data.type === 'complete') {\n            var animation = e.data.animation;\n            _workerSelf.dataManager.completeData(animation);\n            _workerSelf.postMessage({\n              id: e.data.id,\n              payload: animation,\n              status: 'success'\n            });\n          } else if (e.data.type === 'loadData') {\n            _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n              _workerSelf.postMessage({\n                id: e.data.id,\n                payload: data,\n                status: 'success'\n              });\n            }, function () {\n              _workerSelf.postMessage({\n                id: e.data.id,\n                status: 'error'\n              });\n            });\n          }\n        });\n        workerInstance.onmessage = function (event) {\n          var data = event.data;\n          var id = data.id;\n          var process = processes[id];\n          processes[id] = null;\n          if (data.status === 'success') {\n            process.onComplete(data.payload);\n          } else if (process.onError) {\n            process.onError();\n          }\n        };\n      }\n    }\n    function createProcess(onComplete, onError) {\n      _counterId += 1;\n      var id = 'processId_' + _counterId;\n      processes[id] = {\n        onComplete: onComplete,\n        onError: onError\n      };\n      return id;\n    }\n    function loadAnimation(path, onComplete, onError) {\n      setupWorker();\n      var processId = createProcess(onComplete, onError);\n      workerInstance.postMessage({\n        type: 'loadAnimation',\n        path: path,\n        fullPath: window.location.origin + window.location.pathname,\n        id: processId\n      });\n    }\n    function loadData(path, onComplete, onError) {\n      setupWorker();\n      var processId = createProcess(onComplete, onError);\n      workerInstance.postMessage({\n        type: 'loadData',\n        path: path,\n        fullPath: window.location.origin + window.location.pathname,\n        id: processId\n      });\n    }\n    function completeAnimation(anim, onComplete, onError) {\n      setupWorker();\n      var processId = createProcess(onComplete, onError);\n      workerInstance.postMessage({\n        type: 'complete',\n        animation: anim,\n        id: processId\n      });\n    }\n    return {\n      loadAnimation: loadAnimation,\n      loadData: loadData,\n      completeAnimation: completeAnimation\n    };\n  }();\n\n  var ImagePreloader = function () {\n    var proxyImage = function () {\n      var canvas = createTag('canvas');\n      canvas.width = 1;\n      canvas.height = 1;\n      var ctx = canvas.getContext('2d');\n      ctx.fillStyle = 'rgba(0,0,0,0)';\n      ctx.fillRect(0, 0, 1, 1);\n      return canvas;\n    }();\n    function imageLoaded() {\n      this.loadedAssets += 1;\n      if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n        if (this.imagesLoadedCb) {\n          this.imagesLoadedCb(null);\n        }\n      }\n    }\n    function footageLoaded() {\n      this.loadedFootagesCount += 1;\n      if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n        if (this.imagesLoadedCb) {\n          this.imagesLoadedCb(null);\n        }\n      }\n    }\n    function getAssetsPath(assetData, assetsPath, originalPath) {\n      var path = '';\n      if (assetData.e) {\n        path = assetData.p;\n      } else if (assetsPath) {\n        var imagePath = assetData.p;\n        if (imagePath.indexOf('images/') !== -1) {\n          imagePath = imagePath.split('/')[1];\n        }\n        path = assetsPath + imagePath;\n      } else {\n        path = originalPath;\n        path += assetData.u ? assetData.u : '';\n        path += assetData.p;\n      }\n      return path;\n    }\n    function testImageLoaded(img) {\n      var _count = 0;\n      var intervalId = setInterval(function () {\n        var box = img.getBBox();\n        if (box.width || _count > 500) {\n          this._imageLoaded();\n          clearInterval(intervalId);\n        }\n        _count += 1;\n      }.bind(this), 50);\n    }\n    function createImageData(assetData) {\n      var path = getAssetsPath(assetData, this.assetsPath, this.path);\n      var img = createNS('image');\n      if (isSafari) {\n        this.testImageLoaded(img);\n      } else {\n        img.addEventListener('load', this._imageLoaded, false);\n      }\n      img.addEventListener('error', function () {\n        ob.img = proxyImage;\n        this._imageLoaded();\n      }.bind(this), false);\n      img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n      if (this._elementHelper.append) {\n        this._elementHelper.append(img);\n      } else {\n        this._elementHelper.appendChild(img);\n      }\n      var ob = {\n        img: img,\n        assetData: assetData\n      };\n      return ob;\n    }\n    function createImgData(assetData) {\n      var path = getAssetsPath(assetData, this.assetsPath, this.path);\n      var img = createTag('img');\n      img.crossOrigin = 'anonymous';\n      img.addEventListener('load', this._imageLoaded, false);\n      img.addEventListener('error', function () {\n        ob.img = proxyImage;\n        this._imageLoaded();\n      }.bind(this), false);\n      img.src = path;\n      var ob = {\n        img: img,\n        assetData: assetData\n      };\n      return ob;\n    }\n    function createFootageData(data) {\n      var ob = {\n        assetData: data\n      };\n      var path = getAssetsPath(data, this.assetsPath, this.path);\n      dataManager.loadData(path, function (footageData) {\n        ob.img = footageData;\n        this._footageLoaded();\n      }.bind(this), function () {\n        ob.img = {};\n        this._footageLoaded();\n      }.bind(this));\n      return ob;\n    }\n    function loadAssets(assets, cb) {\n      this.imagesLoadedCb = cb;\n      var i;\n      var len = assets.length;\n      for (i = 0; i < len; i += 1) {\n        if (!assets[i].layers) {\n          if (!assets[i].t || assets[i].t === 'seq') {\n            this.totalImages += 1;\n            this.images.push(this._createImageData(assets[i]));\n          } else if (assets[i].t === 3) {\n            this.totalFootages += 1;\n            this.images.push(this.createFootageData(assets[i]));\n          }\n        }\n      }\n    }\n    function setPath(path) {\n      this.path = path || '';\n    }\n    function setAssetsPath(path) {\n      this.assetsPath = path || '';\n    }\n    function getAsset(assetData) {\n      var i = 0;\n      var len = this.images.length;\n      while (i < len) {\n        if (this.images[i].assetData === assetData) {\n          return this.images[i].img;\n        }\n        i += 1;\n      }\n      return null;\n    }\n    function destroy() {\n      this.imagesLoadedCb = null;\n      this.images.length = 0;\n    }\n    function loadedImages() {\n      return this.totalImages === this.loadedAssets;\n    }\n    function loadedFootages() {\n      return this.totalFootages === this.loadedFootagesCount;\n    }\n    function setCacheType(type, elementHelper) {\n      if (type === 'svg') {\n        this._elementHelper = elementHelper;\n        this._createImageData = this.createImageData.bind(this);\n      } else {\n        this._createImageData = this.createImgData.bind(this);\n      }\n    }\n    function ImagePreloaderFactory() {\n      this._imageLoaded = imageLoaded.bind(this);\n      this._footageLoaded = footageLoaded.bind(this);\n      this.testImageLoaded = testImageLoaded.bind(this);\n      this.createFootageData = createFootageData.bind(this);\n      this.assetsPath = '';\n      this.path = '';\n      this.totalImages = 0;\n      this.totalFootages = 0;\n      this.loadedAssets = 0;\n      this.loadedFootagesCount = 0;\n      this.imagesLoadedCb = null;\n      this.images = [];\n    }\n    ImagePreloaderFactory.prototype = {\n      loadAssets: loadAssets,\n      setAssetsPath: setAssetsPath,\n      setPath: setPath,\n      loadedImages: loadedImages,\n      loadedFootages: loadedFootages,\n      destroy: destroy,\n      getAsset: getAsset,\n      createImgData: createImgData,\n      createImageData: createImageData,\n      imageLoaded: imageLoaded,\n      footageLoaded: footageLoaded,\n      setCacheType: setCacheType\n    };\n    return ImagePreloaderFactory;\n  }();\n\n  function BaseEvent() {}\n  BaseEvent.prototype = {\n    triggerEvent: function triggerEvent(eventName, args) {\n      if (this._cbs[eventName]) {\n        var callbacks = this._cbs[eventName];\n        for (var i = 0; i < callbacks.length; i += 1) {\n          callbacks[i](args);\n        }\n      }\n    },\n    addEventListener: function addEventListener(eventName, callback) {\n      if (!this._cbs[eventName]) {\n        this._cbs[eventName] = [];\n      }\n      this._cbs[eventName].push(callback);\n      return function () {\n        this.removeEventListener(eventName, callback);\n      }.bind(this);\n    },\n    removeEventListener: function removeEventListener(eventName, callback) {\n      if (!callback) {\n        this._cbs[eventName] = null;\n      } else if (this._cbs[eventName]) {\n        var i = 0;\n        var len = this._cbs[eventName].length;\n        while (i < len) {\n          if (this._cbs[eventName][i] === callback) {\n            this._cbs[eventName].splice(i, 1);\n            i -= 1;\n            len -= 1;\n          }\n          i += 1;\n        }\n        if (!this._cbs[eventName].length) {\n          this._cbs[eventName] = null;\n        }\n      }\n    }\n  };\n\n  var markerParser = function () {\n    function parsePayloadLines(payload) {\n      var lines = payload.split('\\r\\n');\n      var keys = {};\n      var line;\n      var keysCount = 0;\n      for (var i = 0; i < lines.length; i += 1) {\n        line = lines[i].split(':');\n        if (line.length === 2) {\n          keys[line[0]] = line[1].trim();\n          keysCount += 1;\n        }\n      }\n      if (keysCount === 0) {\n        throw new Error();\n      }\n      return keys;\n    }\n    return function (_markers) {\n      var markers = [];\n      for (var i = 0; i < _markers.length; i += 1) {\n        var _marker = _markers[i];\n        var markerData = {\n          time: _marker.tm,\n          duration: _marker.dr\n        };\n        try {\n          markerData.payload = JSON.parse(_markers[i].cm);\n        } catch (_) {\n          try {\n            markerData.payload = parsePayloadLines(_markers[i].cm);\n          } catch (__) {\n            markerData.payload = {\n              name: _markers[i].cm\n            };\n          }\n        }\n        markers.push(markerData);\n      }\n      return markers;\n    };\n  }();\n\n  var ProjectInterface = function () {\n    function registerComposition(comp) {\n      this.compositions.push(comp);\n    }\n    return function () {\n      function _thisProjectFunction(name) {\n        var i = 0;\n        var len = this.compositions.length;\n        while (i < len) {\n          if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n            if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n              this.compositions[i].prepareFrame(this.currentFrame);\n            }\n            return this.compositions[i].compInterface;\n          }\n          i += 1;\n        }\n        return null;\n      }\n      _thisProjectFunction.compositions = [];\n      _thisProjectFunction.currentFrame = 0;\n      _thisProjectFunction.registerComposition = registerComposition;\n      return _thisProjectFunction;\n    };\n  }();\n\n  var renderers = {};\n  var registerRenderer = function registerRenderer(key, value) {\n    renderers[key] = value;\n  };\n  function getRenderer(key) {\n    return renderers[key];\n  }\n  function getRegisteredRenderer() {\n    // Returns canvas by default for compatibility\n    if (renderers.canvas) {\n      return 'canvas';\n    }\n    // Returns any renderer that is registered\n    for (var key in renderers) {\n      if (renderers[key]) {\n        return key;\n      }\n    }\n    return '';\n  }\n\n  function _typeof$4(o) { \"@babel/helpers - typeof\"; return _typeof$4 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$4(o); }\n  var AnimationItem = function AnimationItem() {\n    this._cbs = [];\n    this.name = '';\n    this.path = '';\n    this.isLoaded = false;\n    this.currentFrame = 0;\n    this.currentRawFrame = 0;\n    this.firstFrame = 0;\n    this.totalFrames = 0;\n    this.frameRate = 0;\n    this.frameMult = 0;\n    this.playSpeed = 1;\n    this.playDirection = 1;\n    this.playCount = 0;\n    this.animationData = {};\n    this.assets = [];\n    this.isPaused = true;\n    this.autoplay = false;\n    this.loop = true;\n    this.renderer = null;\n    this.animationID = createElementID();\n    this.assetsPath = '';\n    this.timeCompleted = 0;\n    this.segmentPos = 0;\n    this.isSubframeEnabled = getSubframeEnabled();\n    this.segments = [];\n    this._idle = true;\n    this._completedLoop = false;\n    this.projectInterface = ProjectInterface();\n    this.imagePreloader = new ImagePreloader();\n    this.audioController = audioControllerFactory();\n    this.markers = [];\n    this.configAnimation = this.configAnimation.bind(this);\n    this.onSetupError = this.onSetupError.bind(this);\n    this.onSegmentComplete = this.onSegmentComplete.bind(this);\n    this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n    this.expressionsPlugin = getExpressionsPlugin();\n  };\n  extendPrototype([BaseEvent], AnimationItem);\n  AnimationItem.prototype.setParams = function (params) {\n    if (params.wrapper || params.container) {\n      this.wrapper = params.wrapper || params.container;\n    }\n    var animType = 'svg';\n    if (params.animType) {\n      animType = params.animType;\n    } else if (params.renderer) {\n      animType = params.renderer;\n    }\n    var RendererClass = getRenderer(animType);\n    this.renderer = new RendererClass(this, params.rendererSettings);\n    this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n    this.renderer.setProjectInterface(this.projectInterface);\n    this.animType = animType;\n    if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n      this.loop = true;\n    } else if (params.loop === false) {\n      this.loop = false;\n    } else {\n      this.loop = parseInt(params.loop, 10);\n    }\n    this.autoplay = 'autoplay' in params ? params.autoplay : true;\n    this.name = params.name ? params.name : '';\n    this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n    this.assetsPath = params.assetsPath;\n    this.initialSegment = params.initialSegment;\n    if (params.audioFactory) {\n      this.audioController.setAudioFactory(params.audioFactory);\n    }\n    if (params.animationData) {\n      this.setupAnimation(params.animationData);\n    } else if (params.path) {\n      if (params.path.lastIndexOf('\\\\') !== -1) {\n        this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n      } else {\n        this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n      }\n      this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n      this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n      dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n    }\n  };\n  AnimationItem.prototype.onSetupError = function () {\n    this.trigger('data_failed');\n  };\n  AnimationItem.prototype.setupAnimation = function (data) {\n    dataManager.completeAnimation(data, this.configAnimation);\n  };\n  AnimationItem.prototype.setData = function (wrapper, animationData) {\n    if (animationData) {\n      if (_typeof$4(animationData) !== 'object') {\n        animationData = JSON.parse(animationData);\n      }\n    }\n    var params = {\n      wrapper: wrapper,\n      animationData: animationData\n    };\n    var wrapperAttributes = wrapper.attributes;\n    params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n    params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n    var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n    if (loop === 'false') {\n      params.loop = false;\n    } else if (loop === 'true') {\n      params.loop = true;\n    } else if (loop !== '') {\n      params.loop = parseInt(loop, 10);\n    }\n    var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n    params.autoplay = autoplay !== 'false';\n    params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n    var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n    ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n    if (prerender === 'false') {\n      params.prerender = false;\n    }\n    if (!params.path) {\n      this.trigger('destroy');\n    } else {\n      this.setParams(params);\n    }\n  };\n  AnimationItem.prototype.includeLayers = function (data) {\n    if (data.op > this.animationData.op) {\n      this.animationData.op = data.op;\n      this.totalFrames = Math.floor(data.op - this.animationData.ip);\n    }\n    var layers = this.animationData.layers;\n    var i;\n    var len = layers.length;\n    var newLayers = data.layers;\n    var j;\n    var jLen = newLayers.length;\n    for (j = 0; j < jLen; j += 1) {\n      i = 0;\n      while (i < len) {\n        if (layers[i].id === newLayers[j].id) {\n          layers[i] = newLayers[j];\n          break;\n        }\n        i += 1;\n      }\n    }\n    if (data.chars || data.fonts) {\n      this.renderer.globalData.fontManager.addChars(data.chars);\n      this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n    }\n    if (data.assets) {\n      len = data.assets.length;\n      for (i = 0; i < len; i += 1) {\n        this.animationData.assets.push(data.assets[i]);\n      }\n    }\n    this.animationData.__complete = false;\n    dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n  };\n  AnimationItem.prototype.onSegmentComplete = function (data) {\n    this.animationData = data;\n    var expressionsPlugin = getExpressionsPlugin();\n    if (expressionsPlugin) {\n      expressionsPlugin.initExpressions(this);\n    }\n    this.loadNextSegment();\n  };\n  AnimationItem.prototype.loadNextSegment = function () {\n    var segments = this.animationData.segments;\n    if (!segments || segments.length === 0 || !this.autoloadSegments) {\n      this.trigger('data_ready');\n      this.timeCompleted = this.totalFrames;\n      return;\n    }\n    var segment = segments.shift();\n    this.timeCompleted = segment.time * this.frameRate;\n    var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n    this.segmentPos += 1;\n    dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n      this.trigger('data_failed');\n    }.bind(this));\n  };\n  AnimationItem.prototype.loadSegments = function () {\n    var segments = this.animationData.segments;\n    if (!segments) {\n      this.timeCompleted = this.totalFrames;\n    }\n    this.loadNextSegment();\n  };\n  AnimationItem.prototype.imagesLoaded = function () {\n    this.trigger('loaded_images');\n    this.checkLoaded();\n  };\n  AnimationItem.prototype.preloadImages = function () {\n    this.imagePreloader.setAssetsPath(this.assetsPath);\n    this.imagePreloader.setPath(this.path);\n    this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n  };\n  AnimationItem.prototype.configAnimation = function (animData) {\n    if (!this.renderer) {\n      return;\n    }\n    try {\n      this.animationData = animData;\n      if (this.initialSegment) {\n        this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n        this.firstFrame = Math.round(this.initialSegment[0]);\n      } else {\n        this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n        this.firstFrame = Math.round(this.animationData.ip);\n      }\n      this.renderer.configAnimation(animData);\n      if (!animData.assets) {\n        animData.assets = [];\n      }\n      this.assets = this.animationData.assets;\n      this.frameRate = this.animationData.fr;\n      this.frameMult = this.animationData.fr / 1000;\n      this.renderer.searchExtraCompositions(animData.assets);\n      this.markers = markerParser(animData.markers || []);\n      this.trigger('config_ready');\n      this.preloadImages();\n      this.loadSegments();\n      this.updaFrameModifier();\n      this.waitForFontsLoaded();\n      if (this.isPaused) {\n        this.audioController.pause();\n      }\n    } catch (error) {\n      this.triggerConfigError(error);\n    }\n  };\n  AnimationItem.prototype.waitForFontsLoaded = function () {\n    if (!this.renderer) {\n      return;\n    }\n    if (this.renderer.globalData.fontManager.isLoaded) {\n      this.checkLoaded();\n    } else {\n      setTimeout(this.waitForFontsLoaded.bind(this), 20);\n    }\n  };\n  AnimationItem.prototype.checkLoaded = function () {\n    if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n      this.isLoaded = true;\n      var expressionsPlugin = getExpressionsPlugin();\n      if (expressionsPlugin) {\n        expressionsPlugin.initExpressions(this);\n      }\n      this.renderer.initItems();\n      setTimeout(function () {\n        this.trigger('DOMLoaded');\n      }.bind(this), 0);\n      this.gotoFrame();\n      if (this.autoplay) {\n        this.play();\n      }\n    }\n  };\n  AnimationItem.prototype.resize = function (width, height) {\n    // Adding this validation for backwards compatibility in case an event object was being passed down\n    var _width = typeof width === 'number' ? width : undefined;\n    var _height = typeof height === 'number' ? height : undefined;\n    this.renderer.updateContainerSize(_width, _height);\n  };\n  AnimationItem.prototype.setSubframe = function (flag) {\n    this.isSubframeEnabled = !!flag;\n  };\n  AnimationItem.prototype.gotoFrame = function () {\n    this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n    if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n      this.currentFrame = this.timeCompleted;\n    }\n    this.trigger('enterFrame');\n    this.renderFrame();\n    this.trigger('drawnFrame');\n  };\n  AnimationItem.prototype.renderFrame = function () {\n    if (this.isLoaded === false || !this.renderer) {\n      return;\n    }\n    try {\n      if (this.expressionsPlugin) {\n        this.expressionsPlugin.resetFrame();\n      }\n      this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n    } catch (error) {\n      this.triggerRenderFrameError(error);\n    }\n  };\n  AnimationItem.prototype.play = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n    if (this.isPaused === true) {\n      this.isPaused = false;\n      this.trigger('_play');\n      this.audioController.resume();\n      if (this._idle) {\n        this._idle = false;\n        this.trigger('_active');\n      }\n    }\n  };\n  AnimationItem.prototype.pause = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n    if (this.isPaused === false) {\n      this.isPaused = true;\n      this.trigger('_pause');\n      this._idle = true;\n      this.trigger('_idle');\n      this.audioController.pause();\n    }\n  };\n  AnimationItem.prototype.togglePause = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n    if (this.isPaused === true) {\n      this.play();\n    } else {\n      this.pause();\n    }\n  };\n  AnimationItem.prototype.stop = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n    this.pause();\n    this.playCount = 0;\n    this._completedLoop = false;\n    this.setCurrentRawFrameValue(0);\n  };\n  AnimationItem.prototype.getMarkerData = function (markerName) {\n    var marker;\n    for (var i = 0; i < this.markers.length; i += 1) {\n      marker = this.markers[i];\n      if (marker.payload && marker.payload.name === markerName) {\n        return marker;\n      }\n    }\n    return null;\n  };\n  AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n    if (name && this.name !== name) {\n      return;\n    }\n    var numValue = Number(value);\n    if (isNaN(numValue)) {\n      var marker = this.getMarkerData(value);\n      if (marker) {\n        this.goToAndStop(marker.time, true);\n      }\n    } else if (isFrame) {\n      this.setCurrentRawFrameValue(value);\n    } else {\n      this.setCurrentRawFrameValue(value * this.frameModifier);\n    }\n    this.pause();\n  };\n  AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n    if (name && this.name !== name) {\n      return;\n    }\n    var numValue = Number(value);\n    if (isNaN(numValue)) {\n      var marker = this.getMarkerData(value);\n      if (marker) {\n        if (!marker.duration) {\n          this.goToAndStop(marker.time, true);\n        } else {\n          this.playSegments([marker.time, marker.time + marker.duration], true);\n        }\n      }\n    } else {\n      this.goToAndStop(numValue, isFrame, name);\n    }\n    this.play();\n  };\n  AnimationItem.prototype.advanceTime = function (value) {\n    if (this.isPaused === true || this.isLoaded === false) {\n      return;\n    }\n    var nextValue = this.currentRawFrame + value * this.frameModifier;\n    var _isComplete = false;\n    // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n    // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n    if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n      if (!this.loop || this.playCount === this.loop) {\n        if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n          _isComplete = true;\n          nextValue = this.totalFrames - 1;\n        }\n      } else if (nextValue >= this.totalFrames) {\n        this.playCount += 1;\n        if (!this.checkSegments(nextValue % this.totalFrames)) {\n          this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n          this._completedLoop = true;\n          this.trigger('loopComplete');\n        }\n      } else {\n        this.setCurrentRawFrameValue(nextValue);\n      }\n    } else if (nextValue < 0) {\n      if (!this.checkSegments(nextValue % this.totalFrames)) {\n        if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n          // eslint-disable-line no-plusplus\n          this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n          if (!this._completedLoop) {\n            this._completedLoop = true;\n          } else {\n            this.trigger('loopComplete');\n          }\n        } else {\n          _isComplete = true;\n          nextValue = 0;\n        }\n      }\n    } else {\n      this.setCurrentRawFrameValue(nextValue);\n    }\n    if (_isComplete) {\n      this.setCurrentRawFrameValue(nextValue);\n      this.pause();\n      this.trigger('complete');\n    }\n  };\n  AnimationItem.prototype.adjustSegment = function (arr, offset) {\n    this.playCount = 0;\n    if (arr[1] < arr[0]) {\n      if (this.frameModifier > 0) {\n        if (this.playSpeed < 0) {\n          this.setSpeed(-this.playSpeed);\n        } else {\n          this.setDirection(-1);\n        }\n      }\n      this.totalFrames = arr[0] - arr[1];\n      this.timeCompleted = this.totalFrames;\n      this.firstFrame = arr[1];\n      this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n    } else if (arr[1] > arr[0]) {\n      if (this.frameModifier < 0) {\n        if (this.playSpeed < 0) {\n          this.setSpeed(-this.playSpeed);\n        } else {\n          this.setDirection(1);\n        }\n      }\n      this.totalFrames = arr[1] - arr[0];\n      this.timeCompleted = this.totalFrames;\n      this.firstFrame = arr[0];\n      this.setCurrentRawFrameValue(0.001 + offset);\n    }\n    this.trigger('segmentStart');\n  };\n  AnimationItem.prototype.setSegment = function (init, end) {\n    var pendingFrame = -1;\n    if (this.isPaused) {\n      if (this.currentRawFrame + this.firstFrame < init) {\n        pendingFrame = init;\n      } else if (this.currentRawFrame + this.firstFrame > end) {\n        pendingFrame = end - init;\n      }\n    }\n    this.firstFrame = init;\n    this.totalFrames = end - init;\n    this.timeCompleted = this.totalFrames;\n    if (pendingFrame !== -1) {\n      this.goToAndStop(pendingFrame, true);\n    }\n  };\n  AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n    if (forceFlag) {\n      this.segments.length = 0;\n    }\n    if (_typeof$4(arr[0]) === 'object') {\n      var i;\n      var len = arr.length;\n      for (i = 0; i < len; i += 1) {\n        this.segments.push(arr[i]);\n      }\n    } else {\n      this.segments.push(arr);\n    }\n    if (this.segments.length && forceFlag) {\n      this.adjustSegment(this.segments.shift(), 0);\n    }\n    if (this.isPaused) {\n      this.play();\n    }\n  };\n  AnimationItem.prototype.resetSegments = function (forceFlag) {\n    this.segments.length = 0;\n    this.segments.push([this.animationData.ip, this.animationData.op]);\n    if (forceFlag) {\n      this.checkSegments(0);\n    }\n  };\n  AnimationItem.prototype.checkSegments = function (offset) {\n    if (this.segments.length) {\n      this.adjustSegment(this.segments.shift(), offset);\n      return true;\n    }\n    return false;\n  };\n  AnimationItem.prototype.destroy = function (name) {\n    if (name && this.name !== name || !this.renderer) {\n      return;\n    }\n    this.renderer.destroy();\n    this.imagePreloader.destroy();\n    this.trigger('destroy');\n    this._cbs = null;\n    this.onEnterFrame = null;\n    this.onLoopComplete = null;\n    this.onComplete = null;\n    this.onSegmentStart = null;\n    this.onDestroy = null;\n    this.renderer = null;\n    this.expressionsPlugin = null;\n    this.imagePreloader = null;\n    this.projectInterface = null;\n  };\n  AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n    this.currentRawFrame = value;\n    this.gotoFrame();\n  };\n  AnimationItem.prototype.setSpeed = function (val) {\n    this.playSpeed = val;\n    this.updaFrameModifier();\n  };\n  AnimationItem.prototype.setDirection = function (val) {\n    this.playDirection = val < 0 ? -1 : 1;\n    this.updaFrameModifier();\n  };\n  AnimationItem.prototype.setLoop = function (isLooping) {\n    this.loop = isLooping;\n  };\n  AnimationItem.prototype.setVolume = function (val, name) {\n    if (name && this.name !== name) {\n      return;\n    }\n    this.audioController.setVolume(val);\n  };\n  AnimationItem.prototype.getVolume = function () {\n    return this.audioController.getVolume();\n  };\n  AnimationItem.prototype.mute = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n    this.audioController.mute();\n  };\n  AnimationItem.prototype.unmute = function (name) {\n    if (name && this.name !== name) {\n      return;\n    }\n    this.audioController.unmute();\n  };\n  AnimationItem.prototype.updaFrameModifier = function () {\n    this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n    this.audioController.setRate(this.playSpeed * this.playDirection);\n  };\n  AnimationItem.prototype.getPath = function () {\n    return this.path;\n  };\n  AnimationItem.prototype.getAssetsPath = function (assetData) {\n    var path = '';\n    if (assetData.e) {\n      path = assetData.p;\n    } else if (this.assetsPath) {\n      var imagePath = assetData.p;\n      if (imagePath.indexOf('images/') !== -1) {\n        imagePath = imagePath.split('/')[1];\n      }\n      path = this.assetsPath + imagePath;\n    } else {\n      path = this.path;\n      path += assetData.u ? assetData.u : '';\n      path += assetData.p;\n    }\n    return path;\n  };\n  AnimationItem.prototype.getAssetData = function (id) {\n    var i = 0;\n    var len = this.assets.length;\n    while (i < len) {\n      if (id === this.assets[i].id) {\n        return this.assets[i];\n      }\n      i += 1;\n    }\n    return null;\n  };\n  AnimationItem.prototype.hide = function () {\n    this.renderer.hide();\n  };\n  AnimationItem.prototype.show = function () {\n    this.renderer.show();\n  };\n  AnimationItem.prototype.getDuration = function (isFrame) {\n    return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n  };\n  AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n    try {\n      var element = this.renderer.getElementByPath(path);\n      element.updateDocumentData(documentData, index);\n    } catch (error) {\n      // TODO: decide how to handle catch case\n    }\n  };\n  AnimationItem.prototype.trigger = function (name) {\n    if (this._cbs && this._cbs[name]) {\n      switch (name) {\n        case 'enterFrame':\n          this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n          break;\n        case 'drawnFrame':\n          this.drawnFrameEvent.currentTime = this.currentFrame;\n          this.drawnFrameEvent.totalTime = this.totalFrames;\n          this.drawnFrameEvent.direction = this.frameModifier;\n          this.triggerEvent(name, this.drawnFrameEvent);\n          break;\n        case 'loopComplete':\n          this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n          break;\n        case 'complete':\n          this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n          break;\n        case 'segmentStart':\n          this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n          break;\n        case 'destroy':\n          this.triggerEvent(name, new BMDestroyEvent(name, this));\n          break;\n        default:\n          this.triggerEvent(name);\n      }\n    }\n    if (name === 'enterFrame' && this.onEnterFrame) {\n      this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n    }\n    if (name === 'loopComplete' && this.onLoopComplete) {\n      this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n    }\n    if (name === 'complete' && this.onComplete) {\n      this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n    }\n    if (name === 'segmentStart' && this.onSegmentStart) {\n      this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n    }\n    if (name === 'destroy' && this.onDestroy) {\n      this.onDestroy.call(this, new BMDestroyEvent(name, this));\n    }\n  };\n  AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n    var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n    this.triggerEvent('error', error);\n    if (this.onError) {\n      this.onError.call(this, error);\n    }\n  };\n  AnimationItem.prototype.triggerConfigError = function (nativeError) {\n    var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n    this.triggerEvent('error', error);\n    if (this.onError) {\n      this.onError.call(this, error);\n    }\n  };\n\n  var animationManager = function () {\n    var moduleOb = {};\n    var registeredAnimations = [];\n    var initTime = 0;\n    var len = 0;\n    var playingAnimationsNum = 0;\n    var _stopped = true;\n    var _isFrozen = false;\n    function removeElement(ev) {\n      var i = 0;\n      var animItem = ev.target;\n      while (i < len) {\n        if (registeredAnimations[i].animation === animItem) {\n          registeredAnimations.splice(i, 1);\n          i -= 1;\n          len -= 1;\n          if (!animItem.isPaused) {\n            subtractPlayingCount();\n          }\n        }\n        i += 1;\n      }\n    }\n    function registerAnimation(element, animationData) {\n      if (!element) {\n        return null;\n      }\n      var i = 0;\n      while (i < len) {\n        if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n          return registeredAnimations[i].animation;\n        }\n        i += 1;\n      }\n      var animItem = new AnimationItem();\n      setupAnimation(animItem, element);\n      animItem.setData(element, animationData);\n      return animItem;\n    }\n    function getRegisteredAnimations() {\n      var i;\n      var lenAnims = registeredAnimations.length;\n      var animations = [];\n      for (i = 0; i < lenAnims; i += 1) {\n        animations.push(registeredAnimations[i].animation);\n      }\n      return animations;\n    }\n    function addPlayingCount() {\n      playingAnimationsNum += 1;\n      activate();\n    }\n    function subtractPlayingCount() {\n      playingAnimationsNum -= 1;\n    }\n    function setupAnimation(animItem, element) {\n      animItem.addEventListener('destroy', removeElement);\n      animItem.addEventListener('_active', addPlayingCount);\n      animItem.addEventListener('_idle', subtractPlayingCount);\n      registeredAnimations.push({\n        elem: element,\n        animation: animItem\n      });\n      len += 1;\n    }\n    function loadAnimation(params) {\n      var animItem = new AnimationItem();\n      setupAnimation(animItem, null);\n      animItem.setParams(params);\n      return animItem;\n    }\n    function setSpeed(val, animation) {\n      var i;\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.setSpeed(val, animation);\n      }\n    }\n    function setDirection(val, animation) {\n      var i;\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.setDirection(val, animation);\n      }\n    }\n    function play(animation) {\n      var i;\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.play(animation);\n      }\n    }\n    function resume(nowTime) {\n      var elapsedTime = nowTime - initTime;\n      var i;\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.advanceTime(elapsedTime);\n      }\n      initTime = nowTime;\n      if (playingAnimationsNum && !_isFrozen) {\n        window.requestAnimationFrame(resume);\n      } else {\n        _stopped = true;\n      }\n    }\n    function first(nowTime) {\n      initTime = nowTime;\n      window.requestAnimationFrame(resume);\n    }\n    function pause(animation) {\n      var i;\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.pause(animation);\n      }\n    }\n    function goToAndStop(value, isFrame, animation) {\n      var i;\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n      }\n    }\n    function stop(animation) {\n      var i;\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.stop(animation);\n      }\n    }\n    function togglePause(animation) {\n      var i;\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.togglePause(animation);\n      }\n    }\n    function destroy(animation) {\n      var i;\n      for (i = len - 1; i >= 0; i -= 1) {\n        registeredAnimations[i].animation.destroy(animation);\n      }\n    }\n    function searchAnimations(animationData, standalone, renderer) {\n      var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n      var i;\n      var lenAnims = animElements.length;\n      for (i = 0; i < lenAnims; i += 1) {\n        if (renderer) {\n          animElements[i].setAttribute('data-bm-type', renderer);\n        }\n        registerAnimation(animElements[i], animationData);\n      }\n      if (standalone && lenAnims === 0) {\n        if (!renderer) {\n          renderer = 'svg';\n        }\n        var body = document.getElementsByTagName('body')[0];\n        body.innerText = '';\n        var div = createTag('div');\n        div.style.width = '100%';\n        div.style.height = '100%';\n        div.setAttribute('data-bm-type', renderer);\n        body.appendChild(div);\n        registerAnimation(div, animationData);\n      }\n    }\n    function resize() {\n      var i;\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.resize();\n      }\n    }\n    function activate() {\n      if (!_isFrozen && playingAnimationsNum) {\n        if (_stopped) {\n          window.requestAnimationFrame(first);\n          _stopped = false;\n        }\n      }\n    }\n    function freeze() {\n      _isFrozen = true;\n    }\n    function unfreeze() {\n      _isFrozen = false;\n      activate();\n    }\n    function setVolume(val, animation) {\n      var i;\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.setVolume(val, animation);\n      }\n    }\n    function mute(animation) {\n      var i;\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.mute(animation);\n      }\n    }\n    function unmute(animation) {\n      var i;\n      for (i = 0; i < len; i += 1) {\n        registeredAnimations[i].animation.unmute(animation);\n      }\n    }\n    moduleOb.registerAnimation = registerAnimation;\n    moduleOb.loadAnimation = loadAnimation;\n    moduleOb.setSpeed = setSpeed;\n    moduleOb.setDirection = setDirection;\n    moduleOb.play = play;\n    moduleOb.pause = pause;\n    moduleOb.stop = stop;\n    moduleOb.togglePause = togglePause;\n    moduleOb.searchAnimations = searchAnimations;\n    moduleOb.resize = resize;\n    // moduleOb.start = start;\n    moduleOb.goToAndStop = goToAndStop;\n    moduleOb.destroy = destroy;\n    moduleOb.freeze = freeze;\n    moduleOb.unfreeze = unfreeze;\n    moduleOb.setVolume = setVolume;\n    moduleOb.mute = mute;\n    moduleOb.unmute = unmute;\n    moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n    return moduleOb;\n  }();\n\n  /* eslint-disable */\n  var BezierFactory = function () {\n    /**\n       * BezierEasing - use bezier curve for transition easing function\n       * by Gaëtan Renaudeau 2014 - 2015 – MIT License\n       *\n       * Credits: is based on Firefox's nsSMILKeySpline.cpp\n       * Usage:\n       * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\n       * spline.get(x) => returns the easing value | x must be in [0, 1] range\n       *\n       */\n\n    var ob = {};\n    ob.getBezierEasing = getBezierEasing;\n    var beziers = {};\n    function getBezierEasing(a, b, c, d, nm) {\n      var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n      if (beziers[str]) {\n        return beziers[str];\n      }\n      var bezEasing = new BezierEasing([a, b, c, d]);\n      beziers[str] = bezEasing;\n      return bezEasing;\n    }\n\n    // These values are established by empiricism with tests (tradeoff: performance VS precision)\n    var NEWTON_ITERATIONS = 4;\n    var NEWTON_MIN_SLOPE = 0.001;\n    var SUBDIVISION_PRECISION = 0.0000001;\n    var SUBDIVISION_MAX_ITERATIONS = 10;\n    var kSplineTableSize = 11;\n    var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n    var float32ArraySupported = typeof Float32Array === 'function';\n    function A(aA1, aA2) {\n      return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n    }\n    function B(aA1, aA2) {\n      return 3.0 * aA2 - 6.0 * aA1;\n    }\n    function C(aA1) {\n      return 3.0 * aA1;\n    }\n\n    // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n    function calcBezier(aT, aA1, aA2) {\n      return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n    }\n\n    // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n    function getSlope(aT, aA1, aA2) {\n      return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n    }\n    function binarySubdivide(aX, aA, aB, mX1, mX2) {\n      var currentX,\n        currentT,\n        i = 0;\n      do {\n        currentT = aA + (aB - aA) / 2.0;\n        currentX = calcBezier(currentT, mX1, mX2) - aX;\n        if (currentX > 0.0) {\n          aB = currentT;\n        } else {\n          aA = currentT;\n        }\n      } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n      return currentT;\n    }\n    function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n      for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n        var currentSlope = getSlope(aGuessT, mX1, mX2);\n        if (currentSlope === 0.0) return aGuessT;\n        var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n        aGuessT -= currentX / currentSlope;\n      }\n      return aGuessT;\n    }\n\n    /**\n       * points is an array of [ mX1, mY1, mX2, mY2 ]\n       */\n    function BezierEasing(points) {\n      this._p = points;\n      this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n      this._precomputed = false;\n      this.get = this.get.bind(this);\n    }\n    BezierEasing.prototype = {\n      get: function get(x) {\n        var mX1 = this._p[0],\n          mY1 = this._p[1],\n          mX2 = this._p[2],\n          mY2 = this._p[3];\n        if (!this._precomputed) this._precompute();\n        if (mX1 === mY1 && mX2 === mY2) return x; // linear\n        // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n        if (x === 0) return 0;\n        if (x === 1) return 1;\n        return calcBezier(this._getTForX(x), mY1, mY2);\n      },\n      // Private part\n\n      _precompute: function _precompute() {\n        var mX1 = this._p[0],\n          mY1 = this._p[1],\n          mX2 = this._p[2],\n          mY2 = this._p[3];\n        this._precomputed = true;\n        if (mX1 !== mY1 || mX2 !== mY2) {\n          this._calcSampleValues();\n        }\n      },\n      _calcSampleValues: function _calcSampleValues() {\n        var mX1 = this._p[0],\n          mX2 = this._p[2];\n        for (var i = 0; i < kSplineTableSize; ++i) {\n          this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n        }\n      },\n      /**\n           * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\n           */\n      _getTForX: function _getTForX(aX) {\n        var mX1 = this._p[0],\n          mX2 = this._p[2],\n          mSampleValues = this._mSampleValues;\n        var intervalStart = 0.0;\n        var currentSample = 1;\n        var lastSample = kSplineTableSize - 1;\n        for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n          intervalStart += kSampleStepSize;\n        }\n        --currentSample;\n\n        // Interpolate to provide an initial guess for t\n        var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n        var guessForT = intervalStart + dist * kSampleStepSize;\n        var initialSlope = getSlope(guessForT, mX1, mX2);\n        if (initialSlope >= NEWTON_MIN_SLOPE) {\n          return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n        }\n        if (initialSlope === 0.0) {\n          return guessForT;\n        }\n        return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n      }\n    };\n    return ob;\n  }();\n\n  var pooling = function () {\n    function _double(arr) {\n      return arr.concat(createSizedArray(arr.length));\n    }\n    return {\n      \"double\": _double\n    };\n  }();\n\n  var poolFactory = function () {\n    return function (initialLength, _create, _release) {\n      var _length = 0;\n      var _maxLength = initialLength;\n      var pool = createSizedArray(_maxLength);\n      var ob = {\n        newElement: newElement,\n        release: release\n      };\n      function newElement() {\n        var element;\n        if (_length) {\n          _length -= 1;\n          element = pool[_length];\n        } else {\n          element = _create();\n        }\n        return element;\n      }\n      function release(element) {\n        if (_length === _maxLength) {\n          pool = pooling[\"double\"](pool);\n          _maxLength *= 2;\n        }\n        if (_release) {\n          _release(element);\n        }\n        pool[_length] = element;\n        _length += 1;\n      }\n      return ob;\n    };\n  }();\n\n  var bezierLengthPool = function () {\n    function create() {\n      return {\n        addedLength: 0,\n        percents: createTypedArray('float32', getDefaultCurveSegments()),\n        lengths: createTypedArray('float32', getDefaultCurveSegments())\n      };\n    }\n    return poolFactory(8, create);\n  }();\n\n  var segmentsLengthPool = function () {\n    function create() {\n      return {\n        lengths: [],\n        totalLength: 0\n      };\n    }\n    function release(element) {\n      var i;\n      var len = element.lengths.length;\n      for (i = 0; i < len; i += 1) {\n        bezierLengthPool.release(element.lengths[i]);\n      }\n      element.lengths.length = 0;\n    }\n    return poolFactory(8, create, release);\n  }();\n\n  function bezFunction() {\n    var math = Math;\n    function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n      var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n      return det1 > -0.001 && det1 < 0.001;\n    }\n    function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n      if (z1 === 0 && z2 === 0 && z3 === 0) {\n        return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n      }\n      var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n      var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n      var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n      var diffDist;\n      if (dist1 > dist2) {\n        if (dist1 > dist3) {\n          diffDist = dist1 - dist2 - dist3;\n        } else {\n          diffDist = dist3 - dist2 - dist1;\n        }\n      } else if (dist3 > dist2) {\n        diffDist = dist3 - dist2 - dist1;\n      } else {\n        diffDist = dist2 - dist1 - dist3;\n      }\n      return diffDist > -0.0001 && diffDist < 0.0001;\n    }\n    var getBezierLength = function () {\n      return function (pt1, pt2, pt3, pt4) {\n        var curveSegments = getDefaultCurveSegments();\n        var k;\n        var i;\n        var len;\n        var ptCoord;\n        var perc;\n        var addedLength = 0;\n        var ptDistance;\n        var point = [];\n        var lastPoint = [];\n        var lengthData = bezierLengthPool.newElement();\n        len = pt3.length;\n        for (k = 0; k < curveSegments; k += 1) {\n          perc = k / (curveSegments - 1);\n          ptDistance = 0;\n          for (i = 0; i < len; i += 1) {\n            ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n            point[i] = ptCoord;\n            if (lastPoint[i] !== null) {\n              ptDistance += bmPow(point[i] - lastPoint[i], 2);\n            }\n            lastPoint[i] = point[i];\n          }\n          if (ptDistance) {\n            ptDistance = bmSqrt(ptDistance);\n            addedLength += ptDistance;\n          }\n          lengthData.percents[k] = perc;\n          lengthData.lengths[k] = addedLength;\n        }\n        lengthData.addedLength = addedLength;\n        return lengthData;\n      };\n    }();\n    function getSegmentsLength(shapeData) {\n      var segmentsLength = segmentsLengthPool.newElement();\n      var closed = shapeData.c;\n      var pathV = shapeData.v;\n      var pathO = shapeData.o;\n      var pathI = shapeData.i;\n      var i;\n      var len = shapeData._length;\n      var lengths = segmentsLength.lengths;\n      var totalLength = 0;\n      for (i = 0; i < len - 1; i += 1) {\n        lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n        totalLength += lengths[i].addedLength;\n      }\n      if (closed && len) {\n        lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n        totalLength += lengths[i].addedLength;\n      }\n      segmentsLength.totalLength = totalLength;\n      return segmentsLength;\n    }\n    function BezierData(length) {\n      this.segmentLength = 0;\n      this.points = new Array(length);\n    }\n    function PointData(partial, point) {\n      this.partialLength = partial;\n      this.point = point;\n    }\n    var buildBezierData = function () {\n      var storedData = {};\n      return function (pt1, pt2, pt3, pt4) {\n        var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n        if (!storedData[bezierName]) {\n          var curveSegments = getDefaultCurveSegments();\n          var k;\n          var i;\n          var len;\n          var ptCoord;\n          var perc;\n          var addedLength = 0;\n          var ptDistance;\n          var point;\n          var lastPoint = null;\n          if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n            curveSegments = 2;\n          }\n          var bezierData = new BezierData(curveSegments);\n          len = pt3.length;\n          for (k = 0; k < curveSegments; k += 1) {\n            point = createSizedArray(len);\n            perc = k / (curveSegments - 1);\n            ptDistance = 0;\n            for (i = 0; i < len; i += 1) {\n              ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n              point[i] = ptCoord;\n              if (lastPoint !== null) {\n                ptDistance += bmPow(point[i] - lastPoint[i], 2);\n              }\n            }\n            ptDistance = bmSqrt(ptDistance);\n            addedLength += ptDistance;\n            bezierData.points[k] = new PointData(ptDistance, point);\n            lastPoint = point;\n          }\n          bezierData.segmentLength = addedLength;\n          storedData[bezierName] = bezierData;\n        }\n        return storedData[bezierName];\n      };\n    }();\n    function getDistancePerc(perc, bezierData) {\n      var percents = bezierData.percents;\n      var lengths = bezierData.lengths;\n      var len = percents.length;\n      var initPos = bmFloor((len - 1) * perc);\n      var lengthPos = perc * bezierData.addedLength;\n      var lPerc = 0;\n      if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n        return percents[initPos];\n      }\n      var dir = lengths[initPos] > lengthPos ? -1 : 1;\n      var flag = true;\n      while (flag) {\n        if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n          lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n          flag = false;\n        } else {\n          initPos += dir;\n        }\n        if (initPos < 0 || initPos >= len - 1) {\n          // FIX for TypedArrays that don't store floating point values with enough accuracy\n          if (initPos === len - 1) {\n            return percents[initPos];\n          }\n          flag = false;\n        }\n      }\n      return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n    }\n    function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n      var t1 = getDistancePerc(percent, bezierData);\n      var u1 = 1 - t1;\n      var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n      var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n      return [ptX, ptY];\n    }\n    var bezierSegmentPoints = createTypedArray('float32', 8);\n    function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n      if (startPerc < 0) {\n        startPerc = 0;\n      } else if (startPerc > 1) {\n        startPerc = 1;\n      }\n      var t0 = getDistancePerc(startPerc, bezierData);\n      endPerc = endPerc > 1 ? 1 : endPerc;\n      var t1 = getDistancePerc(endPerc, bezierData);\n      var i;\n      var len = pt1.length;\n      var u0 = 1 - t0;\n      var u1 = 1 - t1;\n      var u0u0u0 = u0 * u0 * u0;\n      var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n      var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n      var t0t0t0 = t0 * t0 * t0;\n      //\n      var u0u0u1 = u0 * u0 * u1;\n      var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n      var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n      var t0t0t1 = t0 * t0 * t1;\n      //\n      var u0u1u1 = u0 * u1 * u1;\n      var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n      var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n      var t0t1t1 = t0 * t1 * t1;\n      //\n      var u1u1u1 = u1 * u1 * u1;\n      var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n      var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n      var t1t1t1 = t1 * t1 * t1;\n      for (i = 0; i < len; i += 1) {\n        bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n        bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n        bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n        bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n      }\n      return bezierSegmentPoints;\n    }\n    return {\n      getSegmentsLength: getSegmentsLength,\n      getNewSegment: getNewSegment,\n      getPointInSegment: getPointInSegment,\n      buildBezierData: buildBezierData,\n      pointOnLine2D: pointOnLine2D,\n      pointOnLine3D: pointOnLine3D\n    };\n  }\n  var bez = bezFunction();\n\n  var initFrame = initialDefaultFrame;\n  var mathAbs = Math.abs;\n  function interpolateValue(frameNum, caching) {\n    var offsetTime = this.offsetTime;\n    var newValue;\n    if (this.propType === 'multidimensional') {\n      newValue = createTypedArray('float32', this.pv.length);\n    }\n    var iterationIndex = caching.lastIndex;\n    var i = iterationIndex;\n    var len = this.keyframes.length - 1;\n    var flag = true;\n    var keyData;\n    var nextKeyData;\n    var keyframeMetadata;\n    while (flag) {\n      keyData = this.keyframes[i];\n      nextKeyData = this.keyframes[i + 1];\n      if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n        if (keyData.h) {\n          keyData = nextKeyData;\n        }\n        iterationIndex = 0;\n        break;\n      }\n      if (nextKeyData.t - offsetTime > frameNum) {\n        iterationIndex = i;\n        break;\n      }\n      if (i < len - 1) {\n        i += 1;\n      } else {\n        iterationIndex = 0;\n        flag = false;\n      }\n    }\n    keyframeMetadata = this.keyframesMetadata[i] || {};\n    var k;\n    var kLen;\n    var perc;\n    var jLen;\n    var j;\n    var fnc;\n    var nextKeyTime = nextKeyData.t - offsetTime;\n    var keyTime = keyData.t - offsetTime;\n    var endValue;\n    if (keyData.to) {\n      if (!keyframeMetadata.bezierData) {\n        keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n      }\n      var bezierData = keyframeMetadata.bezierData;\n      if (frameNum >= nextKeyTime || frameNum < keyTime) {\n        var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n        kLen = bezierData.points[ind].point.length;\n        for (k = 0; k < kLen; k += 1) {\n          newValue[k] = bezierData.points[ind].point[k];\n        }\n        // caching._lastKeyframeIndex = -1;\n      } else {\n        if (keyframeMetadata.__fnct) {\n          fnc = keyframeMetadata.__fnct;\n        } else {\n          fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n          keyframeMetadata.__fnct = fnc;\n        }\n        perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n        var distanceInLine = bezierData.segmentLength * perc;\n        var segmentPerc;\n        var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n        j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n        flag = true;\n        jLen = bezierData.points.length;\n        while (flag) {\n          addedLength += bezierData.points[j].partialLength;\n          if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n            kLen = bezierData.points[j].point.length;\n            for (k = 0; k < kLen; k += 1) {\n              newValue[k] = bezierData.points[j].point[k];\n            }\n            break;\n          } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n            segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n            kLen = bezierData.points[j].point.length;\n            for (k = 0; k < kLen; k += 1) {\n              newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n            }\n            break;\n          }\n          if (j < jLen - 1) {\n            j += 1;\n          } else {\n            flag = false;\n          }\n        }\n        caching._lastPoint = j;\n        caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n        caching._lastKeyframeIndex = i;\n      }\n    } else {\n      var outX;\n      var outY;\n      var inX;\n      var inY;\n      var keyValue;\n      len = keyData.s.length;\n      endValue = nextKeyData.s || keyData.e;\n      if (this.sh && keyData.h !== 1) {\n        if (frameNum >= nextKeyTime) {\n          newValue[0] = endValue[0];\n          newValue[1] = endValue[1];\n          newValue[2] = endValue[2];\n        } else if (frameNum <= keyTime) {\n          newValue[0] = keyData.s[0];\n          newValue[1] = keyData.s[1];\n          newValue[2] = keyData.s[2];\n        } else {\n          var quatStart = createQuaternion(keyData.s);\n          var quatEnd = createQuaternion(endValue);\n          var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n          quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n        }\n      } else {\n        for (i = 0; i < len; i += 1) {\n          if (keyData.h !== 1) {\n            if (frameNum >= nextKeyTime) {\n              perc = 1;\n            } else if (frameNum < keyTime) {\n              perc = 0;\n            } else {\n              if (keyData.o.x.constructor === Array) {\n                if (!keyframeMetadata.__fnct) {\n                  keyframeMetadata.__fnct = [];\n                }\n                if (!keyframeMetadata.__fnct[i]) {\n                  outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n                  outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n                  inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n                  inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n                  fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n                  keyframeMetadata.__fnct[i] = fnc;\n                } else {\n                  fnc = keyframeMetadata.__fnct[i];\n                }\n              } else if (!keyframeMetadata.__fnct) {\n                outX = keyData.o.x;\n                outY = keyData.o.y;\n                inX = keyData.i.x;\n                inY = keyData.i.y;\n                fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n                keyData.keyframeMetadata = fnc;\n              } else {\n                fnc = keyframeMetadata.__fnct;\n              }\n              perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n            }\n          }\n          endValue = nextKeyData.s || keyData.e;\n          keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n          if (this.propType === 'multidimensional') {\n            newValue[i] = keyValue;\n          } else {\n            newValue = keyValue;\n          }\n        }\n      }\n    }\n    caching.lastIndex = iterationIndex;\n    return newValue;\n  }\n\n  // based on @Toji's https://github.com/toji/gl-matrix/\n  function slerp(a, b, t) {\n    var out = [];\n    var ax = a[0];\n    var ay = a[1];\n    var az = a[2];\n    var aw = a[3];\n    var bx = b[0];\n    var by = b[1];\n    var bz = b[2];\n    var bw = b[3];\n    var omega;\n    var cosom;\n    var sinom;\n    var scale0;\n    var scale1;\n    cosom = ax * bx + ay * by + az * bz + aw * bw;\n    if (cosom < 0.0) {\n      cosom = -cosom;\n      bx = -bx;\n      by = -by;\n      bz = -bz;\n      bw = -bw;\n    }\n    if (1.0 - cosom > 0.000001) {\n      omega = Math.acos(cosom);\n      sinom = Math.sin(omega);\n      scale0 = Math.sin((1.0 - t) * omega) / sinom;\n      scale1 = Math.sin(t * omega) / sinom;\n    } else {\n      scale0 = 1.0 - t;\n      scale1 = t;\n    }\n    out[0] = scale0 * ax + scale1 * bx;\n    out[1] = scale0 * ay + scale1 * by;\n    out[2] = scale0 * az + scale1 * bz;\n    out[3] = scale0 * aw + scale1 * bw;\n    return out;\n  }\n  function quaternionToEuler(out, quat) {\n    var qx = quat[0];\n    var qy = quat[1];\n    var qz = quat[2];\n    var qw = quat[3];\n    var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n    var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n    var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n    out[0] = heading / degToRads;\n    out[1] = attitude / degToRads;\n    out[2] = bank / degToRads;\n  }\n  function createQuaternion(values) {\n    var heading = values[0] * degToRads;\n    var attitude = values[1] * degToRads;\n    var bank = values[2] * degToRads;\n    var c1 = Math.cos(heading / 2);\n    var c2 = Math.cos(attitude / 2);\n    var c3 = Math.cos(bank / 2);\n    var s1 = Math.sin(heading / 2);\n    var s2 = Math.sin(attitude / 2);\n    var s3 = Math.sin(bank / 2);\n    var w = c1 * c2 * c3 - s1 * s2 * s3;\n    var x = s1 * s2 * c3 + c1 * c2 * s3;\n    var y = s1 * c2 * c3 + c1 * s2 * s3;\n    var z = c1 * s2 * c3 - s1 * c2 * s3;\n    return [x, y, z, w];\n  }\n  function getValueAtCurrentTime() {\n    var frameNum = this.comp.renderedFrame - this.offsetTime;\n    var initTime = this.keyframes[0].t - this.offsetTime;\n    var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n    if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n      if (this._caching.lastFrame >= frameNum) {\n        this._caching._lastKeyframeIndex = -1;\n        this._caching.lastIndex = 0;\n      }\n      var renderResult = this.interpolateValue(frameNum, this._caching);\n      this.pv = renderResult;\n    }\n    this._caching.lastFrame = frameNum;\n    return this.pv;\n  }\n  function setVValue(val) {\n    var multipliedValue;\n    if (this.propType === 'unidimensional') {\n      multipliedValue = val * this.mult;\n      if (mathAbs(this.v - multipliedValue) > 0.00001) {\n        this.v = multipliedValue;\n        this._mdf = true;\n      }\n    } else {\n      var i = 0;\n      var len = this.v.length;\n      while (i < len) {\n        multipliedValue = val[i] * this.mult;\n        if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n          this.v[i] = multipliedValue;\n          this._mdf = true;\n        }\n        i += 1;\n      }\n    }\n  }\n  function processEffectsSequence() {\n    if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n      return;\n    }\n    if (this.lock) {\n      this.setVValue(this.pv);\n      return;\n    }\n    this.lock = true;\n    this._mdf = this._isFirstFrame;\n    var i;\n    var len = this.effectsSequence.length;\n    var finalValue = this.kf ? this.pv : this.data.k;\n    for (i = 0; i < len; i += 1) {\n      finalValue = this.effectsSequence[i](finalValue);\n    }\n    this.setVValue(finalValue);\n    this._isFirstFrame = false;\n    this.lock = false;\n    this.frameId = this.elem.globalData.frameId;\n  }\n  function addEffect(effectFunction) {\n    this.effectsSequence.push(effectFunction);\n    this.container.addDynamicProperty(this);\n  }\n  function ValueProperty(elem, data, mult, container) {\n    this.propType = 'unidimensional';\n    this.mult = mult || 1;\n    this.data = data;\n    this.v = mult ? data.k * mult : data.k;\n    this.pv = data.k;\n    this._mdf = false;\n    this.elem = elem;\n    this.container = container;\n    this.comp = elem.comp;\n    this.k = false;\n    this.kf = false;\n    this.vel = 0;\n    this.effectsSequence = [];\n    this._isFirstFrame = true;\n    this.getValue = processEffectsSequence;\n    this.setVValue = setVValue;\n    this.addEffect = addEffect;\n  }\n  function MultiDimensionalProperty(elem, data, mult, container) {\n    this.propType = 'multidimensional';\n    this.mult = mult || 1;\n    this.data = data;\n    this._mdf = false;\n    this.elem = elem;\n    this.container = container;\n    this.comp = elem.comp;\n    this.k = false;\n    this.kf = false;\n    this.frameId = -1;\n    var i;\n    var len = data.k.length;\n    this.v = createTypedArray('float32', len);\n    this.pv = createTypedArray('float32', len);\n    this.vel = createTypedArray('float32', len);\n    for (i = 0; i < len; i += 1) {\n      this.v[i] = data.k[i] * this.mult;\n      this.pv[i] = data.k[i];\n    }\n    this._isFirstFrame = true;\n    this.effectsSequence = [];\n    this.getValue = processEffectsSequence;\n    this.setVValue = setVValue;\n    this.addEffect = addEffect;\n  }\n  function KeyframedValueProperty(elem, data, mult, container) {\n    this.propType = 'unidimensional';\n    this.keyframes = data.k;\n    this.keyframesMetadata = [];\n    this.offsetTime = elem.data.st;\n    this.frameId = -1;\n    this._caching = {\n      lastFrame: initFrame,\n      lastIndex: 0,\n      value: 0,\n      _lastKeyframeIndex: -1\n    };\n    this.k = true;\n    this.kf = true;\n    this.data = data;\n    this.mult = mult || 1;\n    this.elem = elem;\n    this.container = container;\n    this.comp = elem.comp;\n    this.v = initFrame;\n    this.pv = initFrame;\n    this._isFirstFrame = true;\n    this.getValue = processEffectsSequence;\n    this.setVValue = setVValue;\n    this.interpolateValue = interpolateValue;\n    this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n    this.addEffect = addEffect;\n  }\n  function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n    this.propType = 'multidimensional';\n    var i;\n    var len = data.k.length;\n    var s;\n    var e;\n    var to;\n    var ti;\n    for (i = 0; i < len - 1; i += 1) {\n      if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n        s = data.k[i].s;\n        e = data.k[i + 1].s;\n        to = data.k[i].to;\n        ti = data.k[i].ti;\n        if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n          data.k[i].to = null;\n          data.k[i].ti = null;\n        }\n        if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n          if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n            data.k[i].to = null;\n            data.k[i].ti = null;\n          }\n        }\n      }\n    }\n    this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n    this.data = data;\n    this.keyframes = data.k;\n    this.keyframesMetadata = [];\n    this.offsetTime = elem.data.st;\n    this.k = true;\n    this.kf = true;\n    this._isFirstFrame = true;\n    this.mult = mult || 1;\n    this.elem = elem;\n    this.container = container;\n    this.comp = elem.comp;\n    this.getValue = processEffectsSequence;\n    this.setVValue = setVValue;\n    this.interpolateValue = interpolateValue;\n    this.frameId = -1;\n    var arrLen = data.k[0].s.length;\n    this.v = createTypedArray('float32', arrLen);\n    this.pv = createTypedArray('float32', arrLen);\n    for (i = 0; i < arrLen; i += 1) {\n      this.v[i] = initFrame;\n      this.pv[i] = initFrame;\n    }\n    this._caching = {\n      lastFrame: initFrame,\n      lastIndex: 0,\n      value: createTypedArray('float32', arrLen)\n    };\n    this.addEffect = addEffect;\n  }\n  var PropertyFactory = function () {\n    function getProp(elem, data, type, mult, container) {\n      if (data.sid) {\n        data = elem.globalData.slotManager.getProp(data);\n      }\n      var p;\n      if (!data.k.length) {\n        p = new ValueProperty(elem, data, mult, container);\n      } else if (typeof data.k[0] === 'number') {\n        p = new MultiDimensionalProperty(elem, data, mult, container);\n      } else {\n        switch (type) {\n          case 0:\n            p = new KeyframedValueProperty(elem, data, mult, container);\n            break;\n          case 1:\n            p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n            break;\n          default:\n            break;\n        }\n      }\n      if (p.effectsSequence.length) {\n        container.addDynamicProperty(p);\n      }\n      return p;\n    }\n    var ob = {\n      getProp: getProp\n    };\n    return ob;\n  }();\n\n  function DynamicPropertyContainer() {}\n  DynamicPropertyContainer.prototype = {\n    addDynamicProperty: function addDynamicProperty(prop) {\n      if (this.dynamicProperties.indexOf(prop) === -1) {\n        this.dynamicProperties.push(prop);\n        this.container.addDynamicProperty(this);\n        this._isAnimated = true;\n      }\n    },\n    iterateDynamicProperties: function iterateDynamicProperties() {\n      this._mdf = false;\n      var i;\n      var len = this.dynamicProperties.length;\n      for (i = 0; i < len; i += 1) {\n        this.dynamicProperties[i].getValue();\n        if (this.dynamicProperties[i]._mdf) {\n          this._mdf = true;\n        }\n      }\n    },\n    initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n      this.container = container;\n      this.dynamicProperties = [];\n      this._mdf = false;\n      this._isAnimated = false;\n    }\n  };\n\n  var pointPool = function () {\n    function create() {\n      return createTypedArray('float32', 2);\n    }\n    return poolFactory(8, create);\n  }();\n\n  function ShapePath() {\n    this.c = false;\n    this._length = 0;\n    this._maxLength = 8;\n    this.v = createSizedArray(this._maxLength);\n    this.o = createSizedArray(this._maxLength);\n    this.i = createSizedArray(this._maxLength);\n  }\n  ShapePath.prototype.setPathData = function (closed, len) {\n    this.c = closed;\n    this.setLength(len);\n    var i = 0;\n    while (i < len) {\n      this.v[i] = pointPool.newElement();\n      this.o[i] = pointPool.newElement();\n      this.i[i] = pointPool.newElement();\n      i += 1;\n    }\n  };\n  ShapePath.prototype.setLength = function (len) {\n    while (this._maxLength < len) {\n      this.doubleArrayLength();\n    }\n    this._length = len;\n  };\n  ShapePath.prototype.doubleArrayLength = function () {\n    this.v = this.v.concat(createSizedArray(this._maxLength));\n    this.i = this.i.concat(createSizedArray(this._maxLength));\n    this.o = this.o.concat(createSizedArray(this._maxLength));\n    this._maxLength *= 2;\n  };\n  ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n    var arr;\n    this._length = Math.max(this._length, pos + 1);\n    if (this._length >= this._maxLength) {\n      this.doubleArrayLength();\n    }\n    switch (type) {\n      case 'v':\n        arr = this.v;\n        break;\n      case 'i':\n        arr = this.i;\n        break;\n      case 'o':\n        arr = this.o;\n        break;\n      default:\n        arr = [];\n        break;\n    }\n    if (!arr[pos] || arr[pos] && !replace) {\n      arr[pos] = pointPool.newElement();\n    }\n    arr[pos][0] = x;\n    arr[pos][1] = y;\n  };\n  ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n    this.setXYAt(vX, vY, 'v', pos, replace);\n    this.setXYAt(oX, oY, 'o', pos, replace);\n    this.setXYAt(iX, iY, 'i', pos, replace);\n  };\n  ShapePath.prototype.reverse = function () {\n    var newPath = new ShapePath();\n    newPath.setPathData(this.c, this._length);\n    var vertices = this.v;\n    var outPoints = this.o;\n    var inPoints = this.i;\n    var init = 0;\n    if (this.c) {\n      newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n      init = 1;\n    }\n    var cnt = this._length - 1;\n    var len = this._length;\n    var i;\n    for (i = init; i < len; i += 1) {\n      newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n      cnt -= 1;\n    }\n    return newPath;\n  };\n  ShapePath.prototype.length = function () {\n    return this._length;\n  };\n\n  var shapePool = function () {\n    function create() {\n      return new ShapePath();\n    }\n    function release(shapePath) {\n      var len = shapePath._length;\n      var i;\n      for (i = 0; i < len; i += 1) {\n        pointPool.release(shapePath.v[i]);\n        pointPool.release(shapePath.i[i]);\n        pointPool.release(shapePath.o[i]);\n        shapePath.v[i] = null;\n        shapePath.i[i] = null;\n        shapePath.o[i] = null;\n      }\n      shapePath._length = 0;\n      shapePath.c = false;\n    }\n    function clone(shape) {\n      var cloned = factory.newElement();\n      var i;\n      var len = shape._length === undefined ? shape.v.length : shape._length;\n      cloned.setLength(len);\n      cloned.c = shape.c;\n      for (i = 0; i < len; i += 1) {\n        cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n      }\n      return cloned;\n    }\n    var factory = poolFactory(4, create, release);\n    factory.clone = clone;\n    return factory;\n  }();\n\n  function ShapeCollection() {\n    this._length = 0;\n    this._maxLength = 4;\n    this.shapes = createSizedArray(this._maxLength);\n  }\n  ShapeCollection.prototype.addShape = function (shapeData) {\n    if (this._length === this._maxLength) {\n      this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n      this._maxLength *= 2;\n    }\n    this.shapes[this._length] = shapeData;\n    this._length += 1;\n  };\n  ShapeCollection.prototype.releaseShapes = function () {\n    var i;\n    for (i = 0; i < this._length; i += 1) {\n      shapePool.release(this.shapes[i]);\n    }\n    this._length = 0;\n  };\n\n  var shapeCollectionPool = function () {\n    var ob = {\n      newShapeCollection: newShapeCollection,\n      release: release\n    };\n    var _length = 0;\n    var _maxLength = 4;\n    var pool = createSizedArray(_maxLength);\n    function newShapeCollection() {\n      var shapeCollection;\n      if (_length) {\n        _length -= 1;\n        shapeCollection = pool[_length];\n      } else {\n        shapeCollection = new ShapeCollection();\n      }\n      return shapeCollection;\n    }\n    function release(shapeCollection) {\n      var i;\n      var len = shapeCollection._length;\n      for (i = 0; i < len; i += 1) {\n        shapePool.release(shapeCollection.shapes[i]);\n      }\n      shapeCollection._length = 0;\n      if (_length === _maxLength) {\n        pool = pooling[\"double\"](pool);\n        _maxLength *= 2;\n      }\n      pool[_length] = shapeCollection;\n      _length += 1;\n    }\n    return ob;\n  }();\n\n  var ShapePropertyFactory = function () {\n    var initFrame = -999999;\n    function interpolateShape(frameNum, previousValue, caching) {\n      var iterationIndex = caching.lastIndex;\n      var keyPropS;\n      var keyPropE;\n      var isHold;\n      var j;\n      var k;\n      var jLen;\n      var kLen;\n      var perc;\n      var vertexValue;\n      var kf = this.keyframes;\n      if (frameNum < kf[0].t - this.offsetTime) {\n        keyPropS = kf[0].s[0];\n        isHold = true;\n        iterationIndex = 0;\n      } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n        keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n        /* if(kf[kf.length - 1].s){\n                  keyPropS = kf[kf.length - 1].s[0];\n              }else{\n                  keyPropS = kf[kf.length - 2].e[0];\n              } */\n        isHold = true;\n      } else {\n        var i = iterationIndex;\n        var len = kf.length - 1;\n        var flag = true;\n        var keyData;\n        var nextKeyData;\n        var keyframeMetadata;\n        while (flag) {\n          keyData = kf[i];\n          nextKeyData = kf[i + 1];\n          if (nextKeyData.t - this.offsetTime > frameNum) {\n            break;\n          }\n          if (i < len - 1) {\n            i += 1;\n          } else {\n            flag = false;\n          }\n        }\n        keyframeMetadata = this.keyframesMetadata[i] || {};\n        isHold = keyData.h === 1;\n        iterationIndex = i;\n        if (!isHold) {\n          if (frameNum >= nextKeyData.t - this.offsetTime) {\n            perc = 1;\n          } else if (frameNum < keyData.t - this.offsetTime) {\n            perc = 0;\n          } else {\n            var fnc;\n            if (keyframeMetadata.__fnct) {\n              fnc = keyframeMetadata.__fnct;\n            } else {\n              fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n              keyframeMetadata.__fnct = fnc;\n            }\n            perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n          }\n          keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n        }\n        keyPropS = keyData.s[0];\n      }\n      jLen = previousValue._length;\n      kLen = keyPropS.i[0].length;\n      caching.lastIndex = iterationIndex;\n      for (j = 0; j < jLen; j += 1) {\n        for (k = 0; k < kLen; k += 1) {\n          vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n          previousValue.i[j][k] = vertexValue;\n          vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n          previousValue.o[j][k] = vertexValue;\n          vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n          previousValue.v[j][k] = vertexValue;\n        }\n      }\n    }\n    function interpolateShapeCurrentTime() {\n      var frameNum = this.comp.renderedFrame - this.offsetTime;\n      var initTime = this.keyframes[0].t - this.offsetTime;\n      var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n      var lastFrame = this._caching.lastFrame;\n      if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n        /// /\n        this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n        this.interpolateShape(frameNum, this.pv, this._caching);\n        /// /\n      }\n      this._caching.lastFrame = frameNum;\n      return this.pv;\n    }\n    function resetShape() {\n      this.paths = this.localShapeCollection;\n    }\n    function shapesEqual(shape1, shape2) {\n      if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n        return false;\n      }\n      var i;\n      var len = shape1._length;\n      for (i = 0; i < len; i += 1) {\n        if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n          return false;\n        }\n      }\n      return true;\n    }\n    function setVValue(newPath) {\n      if (!shapesEqual(this.v, newPath)) {\n        this.v = shapePool.clone(newPath);\n        this.localShapeCollection.releaseShapes();\n        this.localShapeCollection.addShape(this.v);\n        this._mdf = true;\n        this.paths = this.localShapeCollection;\n      }\n    }\n    function processEffectsSequence() {\n      if (this.elem.globalData.frameId === this.frameId) {\n        return;\n      }\n      if (!this.effectsSequence.length) {\n        this._mdf = false;\n        return;\n      }\n      if (this.lock) {\n        this.setVValue(this.pv);\n        return;\n      }\n      this.lock = true;\n      this._mdf = false;\n      var finalValue;\n      if (this.kf) {\n        finalValue = this.pv;\n      } else if (this.data.ks) {\n        finalValue = this.data.ks.k;\n      } else {\n        finalValue = this.data.pt.k;\n      }\n      var i;\n      var len = this.effectsSequence.length;\n      for (i = 0; i < len; i += 1) {\n        finalValue = this.effectsSequence[i](finalValue);\n      }\n      this.setVValue(finalValue);\n      this.lock = false;\n      this.frameId = this.elem.globalData.frameId;\n    }\n    function ShapeProperty(elem, data, type) {\n      this.propType = 'shape';\n      this.comp = elem.comp;\n      this.container = elem;\n      this.elem = elem;\n      this.data = data;\n      this.k = false;\n      this.kf = false;\n      this._mdf = false;\n      var pathData = type === 3 ? data.pt.k : data.ks.k;\n      this.v = shapePool.clone(pathData);\n      this.pv = shapePool.clone(this.v);\n      this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n      this.paths = this.localShapeCollection;\n      this.paths.addShape(this.v);\n      this.reset = resetShape;\n      this.effectsSequence = [];\n    }\n    function addEffect(effectFunction) {\n      this.effectsSequence.push(effectFunction);\n      this.container.addDynamicProperty(this);\n    }\n    ShapeProperty.prototype.interpolateShape = interpolateShape;\n    ShapeProperty.prototype.getValue = processEffectsSequence;\n    ShapeProperty.prototype.setVValue = setVValue;\n    ShapeProperty.prototype.addEffect = addEffect;\n    function KeyframedShapeProperty(elem, data, type) {\n      this.propType = 'shape';\n      this.comp = elem.comp;\n      this.elem = elem;\n      this.container = elem;\n      this.offsetTime = elem.data.st;\n      this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n      this.keyframesMetadata = [];\n      this.k = true;\n      this.kf = true;\n      var len = this.keyframes[0].s[0].i.length;\n      this.v = shapePool.newElement();\n      this.v.setPathData(this.keyframes[0].s[0].c, len);\n      this.pv = shapePool.clone(this.v);\n      this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n      this.paths = this.localShapeCollection;\n      this.paths.addShape(this.v);\n      this.lastFrame = initFrame;\n      this.reset = resetShape;\n      this._caching = {\n        lastFrame: initFrame,\n        lastIndex: 0\n      };\n      this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n    }\n    KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n    KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n    KeyframedShapeProperty.prototype.setVValue = setVValue;\n    KeyframedShapeProperty.prototype.addEffect = addEffect;\n    var EllShapeProperty = function () {\n      var cPoint = roundCorner;\n      function EllShapePropertyFactory(elem, data) {\n        this.v = shapePool.newElement();\n        this.v.setPathData(true, 4);\n        this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n        this.paths = this.localShapeCollection;\n        this.localShapeCollection.addShape(this.v);\n        this.d = data.d;\n        this.elem = elem;\n        this.comp = elem.comp;\n        this.frameId = -1;\n        this.initDynamicPropertyContainer(elem);\n        this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n        this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n        if (this.dynamicProperties.length) {\n          this.k = true;\n        } else {\n          this.k = false;\n          this.convertEllToPath();\n        }\n      }\n      EllShapePropertyFactory.prototype = {\n        reset: resetShape,\n        getValue: function getValue() {\n          if (this.elem.globalData.frameId === this.frameId) {\n            return;\n          }\n          this.frameId = this.elem.globalData.frameId;\n          this.iterateDynamicProperties();\n          if (this._mdf) {\n            this.convertEllToPath();\n          }\n        },\n        convertEllToPath: function convertEllToPath() {\n          var p0 = this.p.v[0];\n          var p1 = this.p.v[1];\n          var s0 = this.s.v[0] / 2;\n          var s1 = this.s.v[1] / 2;\n          var _cw = this.d !== 3;\n          var _v = this.v;\n          _v.v[0][0] = p0;\n          _v.v[0][1] = p1 - s1;\n          _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n          _v.v[1][1] = p1;\n          _v.v[2][0] = p0;\n          _v.v[2][1] = p1 + s1;\n          _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n          _v.v[3][1] = p1;\n          _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n          _v.i[0][1] = p1 - s1;\n          _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n          _v.i[1][1] = p1 - s1 * cPoint;\n          _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n          _v.i[2][1] = p1 + s1;\n          _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n          _v.i[3][1] = p1 + s1 * cPoint;\n          _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n          _v.o[0][1] = p1 - s1;\n          _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n          _v.o[1][1] = p1 + s1 * cPoint;\n          _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n          _v.o[2][1] = p1 + s1;\n          _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n          _v.o[3][1] = p1 - s1 * cPoint;\n        }\n      };\n      extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n      return EllShapePropertyFactory;\n    }();\n    var StarShapeProperty = function () {\n      function StarShapePropertyFactory(elem, data) {\n        this.v = shapePool.newElement();\n        this.v.setPathData(true, 0);\n        this.elem = elem;\n        this.comp = elem.comp;\n        this.data = data;\n        this.frameId = -1;\n        this.d = data.d;\n        this.initDynamicPropertyContainer(elem);\n        if (data.sy === 1) {\n          this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n          this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n          this.convertToPath = this.convertStarToPath;\n        } else {\n          this.convertToPath = this.convertPolygonToPath;\n        }\n        this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n        this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n        this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n        this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n        this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n        this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n        this.localShapeCollection.addShape(this.v);\n        this.paths = this.localShapeCollection;\n        if (this.dynamicProperties.length) {\n          this.k = true;\n        } else {\n          this.k = false;\n          this.convertToPath();\n        }\n      }\n      StarShapePropertyFactory.prototype = {\n        reset: resetShape,\n        getValue: function getValue() {\n          if (this.elem.globalData.frameId === this.frameId) {\n            return;\n          }\n          this.frameId = this.elem.globalData.frameId;\n          this.iterateDynamicProperties();\n          if (this._mdf) {\n            this.convertToPath();\n          }\n        },\n        convertStarToPath: function convertStarToPath() {\n          var numPts = Math.floor(this.pt.v) * 2;\n          var angle = Math.PI * 2 / numPts;\n          /* this.v.v.length = numPts;\n                  this.v.i.length = numPts;\n                  this.v.o.length = numPts; */\n          var longFlag = true;\n          var longRad = this.or.v;\n          var shortRad = this.ir.v;\n          var longRound = this.os.v;\n          var shortRound = this.is.v;\n          var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n          var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n          var i;\n          var rad;\n          var roundness;\n          var perimSegment;\n          var currentAng = -Math.PI / 2;\n          currentAng += this.r.v;\n          var dir = this.data.d === 3 ? -1 : 1;\n          this.v._length = 0;\n          for (i = 0; i < numPts; i += 1) {\n            rad = longFlag ? longRad : shortRad;\n            roundness = longFlag ? longRound : shortRound;\n            perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n            var x = rad * Math.cos(currentAng);\n            var y = rad * Math.sin(currentAng);\n            var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n            var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n            x += +this.p.v[0];\n            y += +this.p.v[1];\n            this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n\n            /* this.v.v[i] = [x,y];\n                      this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\n                      this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\n                      this.v._length = numPts; */\n            longFlag = !longFlag;\n            currentAng += angle * dir;\n          }\n        },\n        convertPolygonToPath: function convertPolygonToPath() {\n          var numPts = Math.floor(this.pt.v);\n          var angle = Math.PI * 2 / numPts;\n          var rad = this.or.v;\n          var roundness = this.os.v;\n          var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n          var i;\n          var currentAng = -Math.PI * 0.5;\n          var dir = this.data.d === 3 ? -1 : 1;\n          currentAng += this.r.v;\n          this.v._length = 0;\n          for (i = 0; i < numPts; i += 1) {\n            var x = rad * Math.cos(currentAng);\n            var y = rad * Math.sin(currentAng);\n            var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n            var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n            x += +this.p.v[0];\n            y += +this.p.v[1];\n            this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n            currentAng += angle * dir;\n          }\n          this.paths.length = 0;\n          this.paths[0] = this.v;\n        }\n      };\n      extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n      return StarShapePropertyFactory;\n    }();\n    var RectShapeProperty = function () {\n      function RectShapePropertyFactory(elem, data) {\n        this.v = shapePool.newElement();\n        this.v.c = true;\n        this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n        this.localShapeCollection.addShape(this.v);\n        this.paths = this.localShapeCollection;\n        this.elem = elem;\n        this.comp = elem.comp;\n        this.frameId = -1;\n        this.d = data.d;\n        this.initDynamicPropertyContainer(elem);\n        this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n        this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n        this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n        if (this.dynamicProperties.length) {\n          this.k = true;\n        } else {\n          this.k = false;\n          this.convertRectToPath();\n        }\n      }\n      RectShapePropertyFactory.prototype = {\n        convertRectToPath: function convertRectToPath() {\n          var p0 = this.p.v[0];\n          var p1 = this.p.v[1];\n          var v0 = this.s.v[0] / 2;\n          var v1 = this.s.v[1] / 2;\n          var round = bmMin(v0, v1, this.r.v);\n          var cPoint = round * (1 - roundCorner);\n          this.v._length = 0;\n          if (this.d === 2 || this.d === 1) {\n            this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n            this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n            if (round !== 0) {\n              this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n              this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n              this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n              this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n              this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n              this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n            } else {\n              this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n              this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n            }\n          } else {\n            this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n            if (round !== 0) {\n              this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n              this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n              this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n              this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n              this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n              this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n              this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n            } else {\n              this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n              this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n              this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n            }\n          }\n        },\n        getValue: function getValue() {\n          if (this.elem.globalData.frameId === this.frameId) {\n            return;\n          }\n          this.frameId = this.elem.globalData.frameId;\n          this.iterateDynamicProperties();\n          if (this._mdf) {\n            this.convertRectToPath();\n          }\n        },\n        reset: resetShape\n      };\n      extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n      return RectShapePropertyFactory;\n    }();\n    function getShapeProp(elem, data, type) {\n      var prop;\n      if (type === 3 || type === 4) {\n        var dataProp = type === 3 ? data.pt : data.ks;\n        var keys = dataProp.k;\n        if (keys.length) {\n          prop = new KeyframedShapeProperty(elem, data, type);\n        } else {\n          prop = new ShapeProperty(elem, data, type);\n        }\n      } else if (type === 5) {\n        prop = new RectShapeProperty(elem, data);\n      } else if (type === 6) {\n        prop = new EllShapeProperty(elem, data);\n      } else if (type === 7) {\n        prop = new StarShapeProperty(elem, data);\n      }\n      if (prop.k) {\n        elem.addDynamicProperty(prop);\n      }\n      return prop;\n    }\n    function getConstructorFunction() {\n      return ShapeProperty;\n    }\n    function getKeyframedConstructorFunction() {\n      return KeyframedShapeProperty;\n    }\n    var ob = {};\n    ob.getShapeProp = getShapeProp;\n    ob.getConstructorFunction = getConstructorFunction;\n    ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n    return ob;\n  }();\n\n  /*!\n   Transformation Matrix v2.0\n   (c) Epistemex 2014-2015\n   www.epistemex.com\n   By Ken Fyrstenberg\n   Contributions by leeoniya.\n   License: MIT, header required.\n   */\n\n  /**\n   * 2D transformation matrix object initialized with identity matrix.\n   *\n   * The matrix can synchronize a canvas context by supplying the context\n   * as an argument, or later apply current absolute transform to an\n   * existing context.\n   *\n   * All values are handled as floating point values.\n   *\n   * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\n   * @prop {number} a - scale x\n   * @prop {number} b - shear y\n   * @prop {number} c - shear x\n   * @prop {number} d - scale y\n   * @prop {number} e - translate x\n   * @prop {number} f - translate y\n   * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\n   * @constructor\n   */\n\n  var Matrix = function () {\n    var _cos = Math.cos;\n    var _sin = Math.sin;\n    var _tan = Math.tan;\n    var _rnd = Math.round;\n    function reset() {\n      this.props[0] = 1;\n      this.props[1] = 0;\n      this.props[2] = 0;\n      this.props[3] = 0;\n      this.props[4] = 0;\n      this.props[5] = 1;\n      this.props[6] = 0;\n      this.props[7] = 0;\n      this.props[8] = 0;\n      this.props[9] = 0;\n      this.props[10] = 1;\n      this.props[11] = 0;\n      this.props[12] = 0;\n      this.props[13] = 0;\n      this.props[14] = 0;\n      this.props[15] = 1;\n      return this;\n    }\n    function rotate(angle) {\n      if (angle === 0) {\n        return this;\n      }\n      var mCos = _cos(angle);\n      var mSin = _sin(angle);\n      return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n    }\n    function rotateX(angle) {\n      if (angle === 0) {\n        return this;\n      }\n      var mCos = _cos(angle);\n      var mSin = _sin(angle);\n      return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n    }\n    function rotateY(angle) {\n      if (angle === 0) {\n        return this;\n      }\n      var mCos = _cos(angle);\n      var mSin = _sin(angle);\n      return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n    }\n    function rotateZ(angle) {\n      if (angle === 0) {\n        return this;\n      }\n      var mCos = _cos(angle);\n      var mSin = _sin(angle);\n      return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n    }\n    function shear(sx, sy) {\n      return this._t(1, sy, sx, 1, 0, 0);\n    }\n    function skew(ax, ay) {\n      return this.shear(_tan(ax), _tan(ay));\n    }\n    function skewFromAxis(ax, angle) {\n      var mCos = _cos(angle);\n      var mSin = _sin(angle);\n      return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n      // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n    }\n    function scale(sx, sy, sz) {\n      if (!sz && sz !== 0) {\n        sz = 1;\n      }\n      if (sx === 1 && sy === 1 && sz === 1) {\n        return this;\n      }\n      return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n    }\n    function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n      this.props[0] = a;\n      this.props[1] = b;\n      this.props[2] = c;\n      this.props[3] = d;\n      this.props[4] = e;\n      this.props[5] = f;\n      this.props[6] = g;\n      this.props[7] = h;\n      this.props[8] = i;\n      this.props[9] = j;\n      this.props[10] = k;\n      this.props[11] = l;\n      this.props[12] = m;\n      this.props[13] = n;\n      this.props[14] = o;\n      this.props[15] = p;\n      return this;\n    }\n    function translate(tx, ty, tz) {\n      tz = tz || 0;\n      if (tx !== 0 || ty !== 0 || tz !== 0) {\n        return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n      }\n      return this;\n    }\n    function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n      var _p = this.props;\n      if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n        // NOTE: commenting this condition because TurboFan deoptimizes code when present\n        // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n        _p[12] = _p[12] * a2 + _p[15] * m2;\n        _p[13] = _p[13] * f2 + _p[15] * n2;\n        _p[14] = _p[14] * k2 + _p[15] * o2;\n        _p[15] *= p2;\n        // }\n        this._identityCalculated = false;\n        return this;\n      }\n      var a1 = _p[0];\n      var b1 = _p[1];\n      var c1 = _p[2];\n      var d1 = _p[3];\n      var e1 = _p[4];\n      var f1 = _p[5];\n      var g1 = _p[6];\n      var h1 = _p[7];\n      var i1 = _p[8];\n      var j1 = _p[9];\n      var k1 = _p[10];\n      var l1 = _p[11];\n      var m1 = _p[12];\n      var n1 = _p[13];\n      var o1 = _p[14];\n      var p1 = _p[15];\n\n      /* matrix order (canvas compatible):\n           * ace\n           * bdf\n           * 001\n           */\n      _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n      _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n      _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n      _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n      _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n      _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n      _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n      _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n      _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n      _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n      _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n      _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n      _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n      _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n      _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n      _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n      this._identityCalculated = false;\n      return this;\n    }\n    function multiply(matrix) {\n      var matrixProps = matrix.props;\n      return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n    }\n    function isIdentity() {\n      if (!this._identityCalculated) {\n        this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n        this._identityCalculated = true;\n      }\n      return this._identity;\n    }\n    function equals(matr) {\n      var i = 0;\n      while (i < 16) {\n        if (matr.props[i] !== this.props[i]) {\n          return false;\n        }\n        i += 1;\n      }\n      return true;\n    }\n    function clone(matr) {\n      var i;\n      for (i = 0; i < 16; i += 1) {\n        matr.props[i] = this.props[i];\n      }\n      return matr;\n    }\n    function cloneFromProps(props) {\n      var i;\n      for (i = 0; i < 16; i += 1) {\n        this.props[i] = props[i];\n      }\n    }\n    function applyToPoint(x, y, z) {\n      return {\n        x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n        y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n        z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n      };\n      /* return {\n           x: x * me.a + y * me.c + me.e,\n           y: x * me.b + y * me.d + me.f\n           }; */\n    }\n    function applyToX(x, y, z) {\n      return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n    }\n    function applyToY(x, y, z) {\n      return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n    }\n    function applyToZ(x, y, z) {\n      return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n    }\n    function getInverseMatrix() {\n      var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n      var a = this.props[5] / determinant;\n      var b = -this.props[1] / determinant;\n      var c = -this.props[4] / determinant;\n      var d = this.props[0] / determinant;\n      var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n      var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n      var inverseMatrix = new Matrix();\n      inverseMatrix.props[0] = a;\n      inverseMatrix.props[1] = b;\n      inverseMatrix.props[4] = c;\n      inverseMatrix.props[5] = d;\n      inverseMatrix.props[12] = e;\n      inverseMatrix.props[13] = f;\n      return inverseMatrix;\n    }\n    function inversePoint(pt) {\n      var inverseMatrix = this.getInverseMatrix();\n      return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n    }\n    function inversePoints(pts) {\n      var i;\n      var len = pts.length;\n      var retPts = [];\n      for (i = 0; i < len; i += 1) {\n        retPts[i] = inversePoint(pts[i]);\n      }\n      return retPts;\n    }\n    function applyToTriplePoints(pt1, pt2, pt3) {\n      var arr = createTypedArray('float32', 6);\n      if (this.isIdentity()) {\n        arr[0] = pt1[0];\n        arr[1] = pt1[1];\n        arr[2] = pt2[0];\n        arr[3] = pt2[1];\n        arr[4] = pt3[0];\n        arr[5] = pt3[1];\n      } else {\n        var p0 = this.props[0];\n        var p1 = this.props[1];\n        var p4 = this.props[4];\n        var p5 = this.props[5];\n        var p12 = this.props[12];\n        var p13 = this.props[13];\n        arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n        arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n        arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n        arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n        arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n        arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n      }\n      return arr;\n    }\n    function applyToPointArray(x, y, z) {\n      var arr;\n      if (this.isIdentity()) {\n        arr = [x, y, z];\n      } else {\n        arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n      }\n      return arr;\n    }\n    function applyToPointStringified(x, y) {\n      if (this.isIdentity()) {\n        return x + ',' + y;\n      }\n      var _p = this.props;\n      return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n    }\n    function toCSS() {\n      // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n      /* if(this.isIdentity()) {\n              return '';\n          } */\n      var i = 0;\n      var props = this.props;\n      var cssValue = 'matrix3d(';\n      var v = 10000;\n      while (i < 16) {\n        cssValue += _rnd(props[i] * v) / v;\n        cssValue += i === 15 ? ')' : ',';\n        i += 1;\n      }\n      return cssValue;\n    }\n    function roundMatrixProperty(val) {\n      var v = 10000;\n      if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n        return _rnd(val * v) / v;\n      }\n      return val;\n    }\n    function to2dCSS() {\n      // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n      /* if(this.isIdentity()) {\n              return '';\n          } */\n      var props = this.props;\n      var _a = roundMatrixProperty(props[0]);\n      var _b = roundMatrixProperty(props[1]);\n      var _c = roundMatrixProperty(props[4]);\n      var _d = roundMatrixProperty(props[5]);\n      var _e = roundMatrixProperty(props[12]);\n      var _f = roundMatrixProperty(props[13]);\n      return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n    }\n    return function () {\n      this.reset = reset;\n      this.rotate = rotate;\n      this.rotateX = rotateX;\n      this.rotateY = rotateY;\n      this.rotateZ = rotateZ;\n      this.skew = skew;\n      this.skewFromAxis = skewFromAxis;\n      this.shear = shear;\n      this.scale = scale;\n      this.setTransform = setTransform;\n      this.translate = translate;\n      this.transform = transform;\n      this.multiply = multiply;\n      this.applyToPoint = applyToPoint;\n      this.applyToX = applyToX;\n      this.applyToY = applyToY;\n      this.applyToZ = applyToZ;\n      this.applyToPointArray = applyToPointArray;\n      this.applyToTriplePoints = applyToTriplePoints;\n      this.applyToPointStringified = applyToPointStringified;\n      this.toCSS = toCSS;\n      this.to2dCSS = to2dCSS;\n      this.clone = clone;\n      this.cloneFromProps = cloneFromProps;\n      this.equals = equals;\n      this.inversePoints = inversePoints;\n      this.inversePoint = inversePoint;\n      this.getInverseMatrix = getInverseMatrix;\n      this._t = this.transform;\n      this.isIdentity = isIdentity;\n      this._identity = true;\n      this._identityCalculated = false;\n      this.props = createTypedArray('float32', 16);\n      this.reset();\n    };\n  }();\n\n  function _typeof$3(o) { \"@babel/helpers - typeof\"; return _typeof$3 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$3(o); }\n  var lottie = {};\n  var standalone = '__[STANDALONE]__';\n  var animationData = '__[ANIMATIONDATA]__';\n  var renderer = '';\n  function setLocation(href) {\n    setLocationHref(href);\n  }\n  function searchAnimations() {\n    if (standalone === true) {\n      animationManager.searchAnimations(animationData, standalone, renderer);\n    } else {\n      animationManager.searchAnimations();\n    }\n  }\n  function setSubframeRendering(flag) {\n    setSubframeEnabled(flag);\n  }\n  function setPrefix(prefix) {\n    setIdPrefix(prefix);\n  }\n  function loadAnimation(params) {\n    if (standalone === true) {\n      params.animationData = JSON.parse(animationData);\n    }\n    return animationManager.loadAnimation(params);\n  }\n  function setQuality(value) {\n    if (typeof value === 'string') {\n      switch (value) {\n        case 'high':\n          setDefaultCurveSegments(200);\n          break;\n        default:\n        case 'medium':\n          setDefaultCurveSegments(50);\n          break;\n        case 'low':\n          setDefaultCurveSegments(10);\n          break;\n      }\n    } else if (!isNaN(value) && value > 1) {\n      setDefaultCurveSegments(value);\n    }\n    if (getDefaultCurveSegments() >= 50) {\n      roundValues(false);\n    } else {\n      roundValues(true);\n    }\n  }\n  function inBrowser() {\n    return typeof navigator !== 'undefined';\n  }\n  function installPlugin(type, plugin) {\n    if (type === 'expressions') {\n      setExpressionsPlugin(plugin);\n    }\n  }\n  function getFactory(name) {\n    switch (name) {\n      case 'propertyFactory':\n        return PropertyFactory;\n      case 'shapePropertyFactory':\n        return ShapePropertyFactory;\n      case 'matrix':\n        return Matrix;\n      default:\n        return null;\n    }\n  }\n  lottie.play = animationManager.play;\n  lottie.pause = animationManager.pause;\n  lottie.setLocationHref = setLocation;\n  lottie.togglePause = animationManager.togglePause;\n  lottie.setSpeed = animationManager.setSpeed;\n  lottie.setDirection = animationManager.setDirection;\n  lottie.stop = animationManager.stop;\n  lottie.searchAnimations = searchAnimations;\n  lottie.registerAnimation = animationManager.registerAnimation;\n  lottie.loadAnimation = loadAnimation;\n  lottie.setSubframeRendering = setSubframeRendering;\n  lottie.resize = animationManager.resize;\n  // lottie.start = start;\n  lottie.goToAndStop = animationManager.goToAndStop;\n  lottie.destroy = animationManager.destroy;\n  lottie.setQuality = setQuality;\n  lottie.inBrowser = inBrowser;\n  lottie.installPlugin = installPlugin;\n  lottie.freeze = animationManager.freeze;\n  lottie.unfreeze = animationManager.unfreeze;\n  lottie.setVolume = animationManager.setVolume;\n  lottie.mute = animationManager.mute;\n  lottie.unmute = animationManager.unmute;\n  lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n  lottie.useWebWorker = setWebWorker;\n  lottie.setIDPrefix = setPrefix;\n  lottie.__getFactory = getFactory;\n  lottie.version = '5.13.0';\n  function checkReady() {\n    if (document.readyState === 'complete') {\n      clearInterval(readyStateCheckInterval);\n      searchAnimations();\n    }\n  }\n  function getQueryVariable(variable) {\n    var vars = queryString.split('&');\n    for (var i = 0; i < vars.length; i += 1) {\n      var pair = vars[i].split('=');\n      if (decodeURIComponent(pair[0]) == variable) {\n        // eslint-disable-line eqeqeq\n        return decodeURIComponent(pair[1]);\n      }\n    }\n    return null;\n  }\n  var queryString = '';\n  if (standalone) {\n    var scripts = document.getElementsByTagName('script');\n    var index = scripts.length - 1;\n    var myScript = scripts[index] || {\n      src: ''\n    };\n    queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n    renderer = getQueryVariable('renderer');\n  }\n  var readyStateCheckInterval = setInterval(checkReady, 100);\n\n  // this adds bodymovin to the window object for backwards compatibility\n  try {\n    if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n    ) {\n      window.bodymovin = lottie;\n    }\n  } catch (err) {\n    //\n  }\n\n  var ShapeModifiers = function () {\n    var ob = {};\n    var modifiers = {};\n    ob.registerModifier = registerModifier;\n    ob.getModifier = getModifier;\n    function registerModifier(nm, factory) {\n      if (!modifiers[nm]) {\n        modifiers[nm] = factory;\n      }\n    }\n    function getModifier(nm, elem, data) {\n      return new modifiers[nm](elem, data);\n    }\n    return ob;\n  }();\n  function ShapeModifier() {}\n  ShapeModifier.prototype.initModifierProperties = function () {};\n  ShapeModifier.prototype.addShapeToModifier = function () {};\n  ShapeModifier.prototype.addShape = function (data) {\n    if (!this.closed) {\n      // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n      data.sh.container.addDynamicProperty(data.sh);\n      var shapeData = {\n        shape: data.sh,\n        data: data,\n        localShapeCollection: shapeCollectionPool.newShapeCollection()\n      };\n      this.shapes.push(shapeData);\n      this.addShapeToModifier(shapeData);\n      if (this._isAnimated) {\n        data.setAsAnimated();\n      }\n    }\n  };\n  ShapeModifier.prototype.init = function (elem, data) {\n    this.shapes = [];\n    this.elem = elem;\n    this.initDynamicPropertyContainer(elem);\n    this.initModifierProperties(elem, data);\n    this.frameId = initialDefaultFrame;\n    this.closed = false;\n    this.k = false;\n    if (this.dynamicProperties.length) {\n      this.k = true;\n    } else {\n      this.getValue(true);\n    }\n  };\n  ShapeModifier.prototype.processKeys = function () {\n    if (this.elem.globalData.frameId === this.frameId) {\n      return;\n    }\n    this.frameId = this.elem.globalData.frameId;\n    this.iterateDynamicProperties();\n  };\n  extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n  function TrimModifier() {}\n  extendPrototype([ShapeModifier], TrimModifier);\n  TrimModifier.prototype.initModifierProperties = function (elem, data) {\n    this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n    this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n    this.sValue = 0;\n    this.eValue = 0;\n    this.getValue = this.processKeys;\n    this.m = data.m;\n    this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n  };\n  TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n    shapeData.pathsData = [];\n  };\n  TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n    var segments = [];\n    if (e <= 1) {\n      segments.push({\n        s: s,\n        e: e\n      });\n    } else if (s >= 1) {\n      segments.push({\n        s: s - 1,\n        e: e - 1\n      });\n    } else {\n      segments.push({\n        s: s,\n        e: 1\n      });\n      segments.push({\n        s: 0,\n        e: e - 1\n      });\n    }\n    var shapeSegments = [];\n    var i;\n    var len = segments.length;\n    var segmentOb;\n    for (i = 0; i < len; i += 1) {\n      segmentOb = segments[i];\n      if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n        var shapeS;\n        var shapeE;\n        if (segmentOb.s * totalModifierLength <= addedLength) {\n          shapeS = 0;\n        } else {\n          shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n        }\n        if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n          shapeE = 1;\n        } else {\n          shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n        }\n        shapeSegments.push([shapeS, shapeE]);\n      }\n    }\n    if (!shapeSegments.length) {\n      shapeSegments.push([0, 0]);\n    }\n    return shapeSegments;\n  };\n  TrimModifier.prototype.releasePathsData = function (pathsData) {\n    var i;\n    var len = pathsData.length;\n    for (i = 0; i < len; i += 1) {\n      segmentsLengthPool.release(pathsData[i]);\n    }\n    pathsData.length = 0;\n    return pathsData;\n  };\n  TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n    var s;\n    var e;\n    if (this._mdf || _isFirstFrame) {\n      var o = this.o.v % 360 / 360;\n      if (o < 0) {\n        o += 1;\n      }\n      if (this.s.v > 1) {\n        s = 1 + o;\n      } else if (this.s.v < 0) {\n        s = 0 + o;\n      } else {\n        s = this.s.v + o;\n      }\n      if (this.e.v > 1) {\n        e = 1 + o;\n      } else if (this.e.v < 0) {\n        e = 0 + o;\n      } else {\n        e = this.e.v + o;\n      }\n      if (s > e) {\n        var _s = s;\n        s = e;\n        e = _s;\n      }\n      s = Math.round(s * 10000) * 0.0001;\n      e = Math.round(e * 10000) * 0.0001;\n      this.sValue = s;\n      this.eValue = e;\n    } else {\n      s = this.sValue;\n      e = this.eValue;\n    }\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var pathsData;\n    var pathData;\n    var totalShapeLength;\n    var totalModifierLength = 0;\n    if (e === s) {\n      for (i = 0; i < len; i += 1) {\n        this.shapes[i].localShapeCollection.releaseShapes();\n        this.shapes[i].shape._mdf = true;\n        this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n        if (this._mdf) {\n          this.shapes[i].pathsData.length = 0;\n        }\n      }\n    } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n      var segments = [];\n      var shapeData;\n      var localShapeCollection;\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i];\n        // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n        if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n          shapeData.shape.paths = shapeData.localShapeCollection;\n        } else {\n          shapePaths = shapeData.shape.paths;\n          jLen = shapePaths._length;\n          totalShapeLength = 0;\n          if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n            totalShapeLength = shapeData.totalShapeLength;\n          } else {\n            pathsData = this.releasePathsData(shapeData.pathsData);\n            for (j = 0; j < jLen; j += 1) {\n              pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n              pathsData.push(pathData);\n              totalShapeLength += pathData.totalLength;\n            }\n            shapeData.totalShapeLength = totalShapeLength;\n            shapeData.pathsData = pathsData;\n          }\n          totalModifierLength += totalShapeLength;\n          shapeData.shape._mdf = true;\n        }\n      }\n      var shapeS = s;\n      var shapeE = e;\n      var addedLength = 0;\n      var edges;\n      for (i = len - 1; i >= 0; i -= 1) {\n        shapeData = this.shapes[i];\n        if (shapeData.shape._mdf) {\n          localShapeCollection = shapeData.localShapeCollection;\n          localShapeCollection.releaseShapes();\n          // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n          if (this.m === 2 && len > 1) {\n            edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n            addedLength += shapeData.totalShapeLength;\n          } else {\n            edges = [[shapeS, shapeE]];\n          }\n          jLen = edges.length;\n          for (j = 0; j < jLen; j += 1) {\n            shapeS = edges[j][0];\n            shapeE = edges[j][1];\n            segments.length = 0;\n            if (shapeE <= 1) {\n              segments.push({\n                s: shapeData.totalShapeLength * shapeS,\n                e: shapeData.totalShapeLength * shapeE\n              });\n            } else if (shapeS >= 1) {\n              segments.push({\n                s: shapeData.totalShapeLength * (shapeS - 1),\n                e: shapeData.totalShapeLength * (shapeE - 1)\n              });\n            } else {\n              segments.push({\n                s: shapeData.totalShapeLength * shapeS,\n                e: shapeData.totalShapeLength\n              });\n              segments.push({\n                s: 0,\n                e: shapeData.totalShapeLength * (shapeE - 1)\n              });\n            }\n            var newShapesData = this.addShapes(shapeData, segments[0]);\n            if (segments[0].s !== segments[0].e) {\n              if (segments.length > 1) {\n                var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n                if (lastShapeInCollection.c) {\n                  var lastShape = newShapesData.pop();\n                  this.addPaths(newShapesData, localShapeCollection);\n                  newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n                } else {\n                  this.addPaths(newShapesData, localShapeCollection);\n                  newShapesData = this.addShapes(shapeData, segments[1]);\n                }\n              }\n              this.addPaths(newShapesData, localShapeCollection);\n            }\n          }\n          shapeData.shape.paths = localShapeCollection;\n        }\n      }\n    } else if (this._mdf) {\n      for (i = 0; i < len; i += 1) {\n        // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n        // Don't remove this even if it's losing cached info.\n        this.shapes[i].pathsData.length = 0;\n        this.shapes[i].shape._mdf = true;\n      }\n    }\n  };\n  TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n    var i;\n    var len = newPaths.length;\n    for (i = 0; i < len; i += 1) {\n      localShapeCollection.addShape(newPaths[i]);\n    }\n  };\n  TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n    shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n    shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n    if (newShape) {\n      shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n    }\n    shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n  };\n  TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n    shapePath.setXYAt(points[1], points[5], 'o', pos);\n    shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n    if (newShape) {\n      shapePath.setXYAt(points[0], points[4], 'v', pos);\n    }\n    shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n  };\n  TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n    var pathsData = shapeData.pathsData;\n    var shapePaths = shapeData.shape.paths.shapes;\n    var i;\n    var len = shapeData.shape.paths._length;\n    var j;\n    var jLen;\n    var addedLength = 0;\n    var currentLengthData;\n    var segmentCount;\n    var lengths;\n    var segment;\n    var shapes = [];\n    var initPos;\n    var newShape = true;\n    if (!shapePath) {\n      shapePath = shapePool.newElement();\n      segmentCount = 0;\n      initPos = 0;\n    } else {\n      segmentCount = shapePath._length;\n      initPos = shapePath._length;\n    }\n    shapes.push(shapePath);\n    for (i = 0; i < len; i += 1) {\n      lengths = pathsData[i].lengths;\n      shapePath.c = shapePaths[i].c;\n      jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n      for (j = 1; j < jLen; j += 1) {\n        currentLengthData = lengths[j - 1];\n        if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n          addedLength += currentLengthData.addedLength;\n          shapePath.c = false;\n        } else if (addedLength > shapeSegment.e) {\n          shapePath.c = false;\n          break;\n        } else {\n          if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n            this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n            newShape = false;\n          } else {\n            segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n            this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\n            // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n            newShape = false;\n            shapePath.c = false;\n          }\n          addedLength += currentLengthData.addedLength;\n          segmentCount += 1;\n        }\n      }\n      if (shapePaths[i].c && lengths.length) {\n        currentLengthData = lengths[j - 1];\n        if (addedLength <= shapeSegment.e) {\n          var segmentLength = lengths[j - 1].addedLength;\n          if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n            this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n            newShape = false;\n          } else {\n            segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n            this.addSegmentFromArray(segment, shapePath, segmentCount, newShape);\n            // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n            newShape = false;\n            shapePath.c = false;\n          }\n        } else {\n          shapePath.c = false;\n        }\n        addedLength += currentLengthData.addedLength;\n        segmentCount += 1;\n      }\n      if (shapePath._length) {\n        shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n        shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n      }\n      if (addedLength > shapeSegment.e) {\n        break;\n      }\n      if (i < len - 1) {\n        shapePath = shapePool.newElement();\n        newShape = true;\n        shapes.push(shapePath);\n        segmentCount = 0;\n      }\n    }\n    return shapes;\n  };\n\n  function PuckerAndBloatModifier() {}\n  extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n  PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n    this._isAnimated = !!this.amount.effectsSequence.length;\n  };\n  PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n    var percent = amount / 100;\n    var centerPoint = [0, 0];\n    var pathLength = path._length;\n    var i = 0;\n    for (i = 0; i < pathLength; i += 1) {\n      centerPoint[0] += path.v[i][0];\n      centerPoint[1] += path.v[i][1];\n    }\n    centerPoint[0] /= pathLength;\n    centerPoint[1] /= pathLength;\n    var clonedPath = shapePool.newElement();\n    clonedPath.c = path.c;\n    var vX;\n    var vY;\n    var oX;\n    var oY;\n    var iX;\n    var iY;\n    for (i = 0; i < pathLength; i += 1) {\n      vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n      vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n      oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n      oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n      iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n      iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n      clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n    }\n    return clonedPath;\n  };\n  PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var amount = this.amount.v;\n    if (amount !== 0) {\n      var shapeData;\n      var localShapeCollection;\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i];\n        localShapeCollection = shapeData.localShapeCollection;\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n          localShapeCollection.releaseShapes();\n          shapeData.shape._mdf = true;\n          shapePaths = shapeData.shape.paths.shapes;\n          jLen = shapeData.shape.paths._length;\n          for (j = 0; j < jLen; j += 1) {\n            localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n          }\n        }\n        shapeData.shape.paths = shapeData.localShapeCollection;\n      }\n    }\n    if (!this.dynamicProperties.length) {\n      this._mdf = false;\n    }\n  };\n\n  var TransformPropertyFactory = function () {\n    var defaultVector = [0, 0];\n    function applyToMatrix(mat) {\n      var _mdf = this._mdf;\n      this.iterateDynamicProperties();\n      this._mdf = this._mdf || _mdf;\n      if (this.a) {\n        mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n      }\n      if (this.s) {\n        mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n      }\n      if (this.sk) {\n        mat.skewFromAxis(-this.sk.v, this.sa.v);\n      }\n      if (this.r) {\n        mat.rotate(-this.r.v);\n      } else {\n        mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n      }\n      if (this.data.p.s) {\n        if (this.data.p.z) {\n          mat.translate(this.px.v, this.py.v, -this.pz.v);\n        } else {\n          mat.translate(this.px.v, this.py.v, 0);\n        }\n      } else {\n        mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n      }\n    }\n    function processKeys(forceRender) {\n      if (this.elem.globalData.frameId === this.frameId) {\n        return;\n      }\n      if (this._isDirty) {\n        this.precalculateMatrix();\n        this._isDirty = false;\n      }\n      this.iterateDynamicProperties();\n      if (this._mdf || forceRender) {\n        var frameRate;\n        this.v.cloneFromProps(this.pre.props);\n        if (this.appliedTransformations < 1) {\n          this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n        }\n        if (this.appliedTransformations < 2) {\n          this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n        }\n        if (this.sk && this.appliedTransformations < 3) {\n          this.v.skewFromAxis(-this.sk.v, this.sa.v);\n        }\n        if (this.r && this.appliedTransformations < 4) {\n          this.v.rotate(-this.r.v);\n        } else if (!this.r && this.appliedTransformations < 4) {\n          this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n        }\n        if (this.autoOriented) {\n          var v1;\n          var v2;\n          frameRate = this.elem.globalData.frameRate;\n          if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n            if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n              v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n              v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n            } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n              v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n              v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n            } else {\n              v1 = this.p.pv;\n              v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n            }\n          } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n            v1 = [];\n            v2 = [];\n            var px = this.px;\n            var py = this.py;\n            if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n              v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n              v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n              v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n              v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n            } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n              v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n              v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n              v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n              v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n            } else {\n              v1 = [px.pv, py.pv];\n              v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n              v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n            }\n          } else {\n            v2 = defaultVector;\n            v1 = v2;\n          }\n          this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n        }\n        if (this.data.p && this.data.p.s) {\n          if (this.data.p.z) {\n            this.v.translate(this.px.v, this.py.v, -this.pz.v);\n          } else {\n            this.v.translate(this.px.v, this.py.v, 0);\n          }\n        } else {\n          this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n        }\n      }\n      this.frameId = this.elem.globalData.frameId;\n    }\n    function precalculateMatrix() {\n      this.appliedTransformations = 0;\n      this.pre.reset();\n      if (!this.a.effectsSequence.length) {\n        this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n        this.appliedTransformations = 1;\n      } else {\n        return;\n      }\n      if (!this.s.effectsSequence.length) {\n        this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n        this.appliedTransformations = 2;\n      } else {\n        return;\n      }\n      if (this.sk) {\n        if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n          this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n          this.appliedTransformations = 3;\n        } else {\n          return;\n        }\n      }\n      if (this.r) {\n        if (!this.r.effectsSequence.length) {\n          this.pre.rotate(-this.r.v);\n          this.appliedTransformations = 4;\n        }\n      } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n        this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n        this.appliedTransformations = 4;\n      }\n    }\n    function autoOrient() {\n      //\n      // var prevP = this.getValueAtTime();\n    }\n    function addDynamicProperty(prop) {\n      this._addDynamicProperty(prop);\n      this.elem.addDynamicProperty(prop);\n      this._isDirty = true;\n    }\n    function TransformProperty(elem, data, container) {\n      this.elem = elem;\n      this.frameId = -1;\n      this.propType = 'transform';\n      this.data = data;\n      this.v = new Matrix();\n      // Precalculated matrix with non animated properties\n      this.pre = new Matrix();\n      this.appliedTransformations = 0;\n      this.initDynamicPropertyContainer(container || elem);\n      if (data.p && data.p.s) {\n        this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n        this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n        if (data.p.z) {\n          this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n        }\n      } else {\n        this.p = PropertyFactory.getProp(elem, data.p || {\n          k: [0, 0, 0]\n        }, 1, 0, this);\n      }\n      if (data.rx) {\n        this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n        this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n        this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n        if (data.or.k[0].ti) {\n          var i;\n          var len = data.or.k.length;\n          for (i = 0; i < len; i += 1) {\n            data.or.k[i].to = null;\n            data.or.k[i].ti = null;\n          }\n        }\n        this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this);\n        // sh Indicates it needs to be capped between -180 and 180\n        this.or.sh = true;\n      } else {\n        this.r = PropertyFactory.getProp(elem, data.r || {\n          k: 0\n        }, 0, degToRads, this);\n      }\n      if (data.sk) {\n        this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n        this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n      }\n      this.a = PropertyFactory.getProp(elem, data.a || {\n        k: [0, 0, 0]\n      }, 1, 0, this);\n      this.s = PropertyFactory.getProp(elem, data.s || {\n        k: [100, 100, 100]\n      }, 1, 0.01, this);\n      // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n      if (data.o) {\n        this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n      } else {\n        this.o = {\n          _mdf: false,\n          v: 1\n        };\n      }\n      this._isDirty = true;\n      if (!this.dynamicProperties.length) {\n        this.getValue(true);\n      }\n    }\n    TransformProperty.prototype = {\n      applyToMatrix: applyToMatrix,\n      getValue: processKeys,\n      precalculateMatrix: precalculateMatrix,\n      autoOrient: autoOrient\n    };\n    extendPrototype([DynamicPropertyContainer], TransformProperty);\n    TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n    TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n    function getTransformProperty(elem, data, container) {\n      return new TransformProperty(elem, data, container);\n    }\n    return {\n      getTransformProperty: getTransformProperty\n    };\n  }();\n\n  function RepeaterModifier() {}\n  extendPrototype([ShapeModifier], RepeaterModifier);\n  RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n    this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n    this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n    this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n    this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n    this.data = data;\n    if (!this.dynamicProperties.length) {\n      this.getValue(true);\n    }\n    this._isAnimated = !!this.dynamicProperties.length;\n    this.pMatrix = new Matrix();\n    this.rMatrix = new Matrix();\n    this.sMatrix = new Matrix();\n    this.tMatrix = new Matrix();\n    this.matrix = new Matrix();\n  };\n  RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n    var dir = inv ? -1 : 1;\n    var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n    var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n    pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n    rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n    rMatrix.rotate(-transform.r.v * dir * perc);\n    rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n    sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n    sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n    sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n  };\n  RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n    this.elem = elem;\n    this.arr = arr;\n    this.pos = pos;\n    this.elemsData = elemsData;\n    this._currentCopies = 0;\n    this._elements = [];\n    this._groups = [];\n    this.frameId = -1;\n    this.initDynamicPropertyContainer(elem);\n    this.initModifierProperties(elem, arr[pos]);\n    while (pos > 0) {\n      pos -= 1;\n      // this._elements.unshift(arr.splice(pos,1)[0]);\n      this._elements.unshift(arr[pos]);\n    }\n    if (this.dynamicProperties.length) {\n      this.k = true;\n    } else {\n      this.getValue(true);\n    }\n  };\n  RepeaterModifier.prototype.resetElements = function (elements) {\n    var i;\n    var len = elements.length;\n    for (i = 0; i < len; i += 1) {\n      elements[i]._processed = false;\n      if (elements[i].ty === 'gr') {\n        this.resetElements(elements[i].it);\n      }\n    }\n  };\n  RepeaterModifier.prototype.cloneElements = function (elements) {\n    var newElements = JSON.parse(JSON.stringify(elements));\n    this.resetElements(newElements);\n    return newElements;\n  };\n  RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n    var i;\n    var len = elements.length;\n    for (i = 0; i < len; i += 1) {\n      elements[i]._render = renderFlag;\n      if (elements[i].ty === 'gr') {\n        this.changeGroupRender(elements[i].it, renderFlag);\n      }\n    }\n  };\n  RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n    var items;\n    var itemsTransform;\n    var i;\n    var dir;\n    var cont;\n    var hasReloaded = false;\n    if (this._mdf || _isFirstFrame) {\n      var copies = Math.ceil(this.c.v);\n      if (this._groups.length < copies) {\n        while (this._groups.length < copies) {\n          var group = {\n            it: this.cloneElements(this._elements),\n            ty: 'gr'\n          };\n          group.it.push({\n            a: {\n              a: 0,\n              ix: 1,\n              k: [0, 0]\n            },\n            nm: 'Transform',\n            o: {\n              a: 0,\n              ix: 7,\n              k: 100\n            },\n            p: {\n              a: 0,\n              ix: 2,\n              k: [0, 0]\n            },\n            r: {\n              a: 1,\n              ix: 6,\n              k: [{\n                s: 0,\n                e: 0,\n                t: 0\n              }, {\n                s: 0,\n                e: 0,\n                t: 1\n              }]\n            },\n            s: {\n              a: 0,\n              ix: 3,\n              k: [100, 100]\n            },\n            sa: {\n              a: 0,\n              ix: 5,\n              k: 0\n            },\n            sk: {\n              a: 0,\n              ix: 4,\n              k: 0\n            },\n            ty: 'tr'\n          });\n          this.arr.splice(0, 0, group);\n          this._groups.splice(0, 0, group);\n          this._currentCopies += 1;\n        }\n        this.elem.reloadShapes();\n        hasReloaded = true;\n      }\n      cont = 0;\n      var renderFlag;\n      for (i = 0; i <= this._groups.length - 1; i += 1) {\n        renderFlag = cont < copies;\n        this._groups[i]._render = renderFlag;\n        this.changeGroupRender(this._groups[i].it, renderFlag);\n        if (!renderFlag) {\n          var elems = this.elemsData[i].it;\n          var transformData = elems[elems.length - 1];\n          if (transformData.transform.op.v !== 0) {\n            transformData.transform.op._mdf = true;\n            transformData.transform.op.v = 0;\n          } else {\n            transformData.transform.op._mdf = false;\n          }\n        }\n        cont += 1;\n      }\n      this._currentCopies = copies;\n      /// /\n\n      var offset = this.o.v;\n      var offsetModulo = offset % 1;\n      var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n      var pProps = this.pMatrix.props;\n      var rProps = this.rMatrix.props;\n      var sProps = this.sMatrix.props;\n      this.pMatrix.reset();\n      this.rMatrix.reset();\n      this.sMatrix.reset();\n      this.tMatrix.reset();\n      this.matrix.reset();\n      var iteration = 0;\n      if (offset > 0) {\n        while (iteration < roundOffset) {\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n          iteration += 1;\n        }\n        if (offsetModulo) {\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n          iteration += offsetModulo;\n        }\n      } else if (offset < 0) {\n        while (iteration > roundOffset) {\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n          iteration -= 1;\n        }\n        if (offsetModulo) {\n          this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n          iteration -= offsetModulo;\n        }\n      }\n      i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n      dir = this.data.m === 1 ? 1 : -1;\n      cont = this._currentCopies;\n      var j;\n      var jLen;\n      while (cont) {\n        items = this.elemsData[i].it;\n        itemsTransform = items[items.length - 1].transform.mProps.v.props;\n        jLen = itemsTransform.length;\n        items[items.length - 1].transform.mProps._mdf = true;\n        items[items.length - 1].transform.op._mdf = true;\n        items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n        if (iteration !== 0) {\n          if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n            this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n          }\n          this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n          this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n          this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n          for (j = 0; j < jLen; j += 1) {\n            itemsTransform[j] = this.matrix.props[j];\n          }\n          this.matrix.reset();\n        } else {\n          this.matrix.reset();\n          for (j = 0; j < jLen; j += 1) {\n            itemsTransform[j] = this.matrix.props[j];\n          }\n        }\n        iteration += 1;\n        cont -= 1;\n        i += dir;\n      }\n    } else {\n      cont = this._currentCopies;\n      i = 0;\n      dir = 1;\n      while (cont) {\n        items = this.elemsData[i].it;\n        itemsTransform = items[items.length - 1].transform.mProps.v.props;\n        items[items.length - 1].transform.mProps._mdf = false;\n        items[items.length - 1].transform.op._mdf = false;\n        cont -= 1;\n        i += dir;\n      }\n    }\n    return hasReloaded;\n  };\n  RepeaterModifier.prototype.addShape = function () {};\n\n  function RoundCornersModifier() {}\n  extendPrototype([ShapeModifier], RoundCornersModifier);\n  RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n    this._isAnimated = !!this.rd.effectsSequence.length;\n  };\n  RoundCornersModifier.prototype.processPath = function (path, round) {\n    var clonedPath = shapePool.newElement();\n    clonedPath.c = path.c;\n    var i;\n    var len = path._length;\n    var currentV;\n    var currentI;\n    var currentO;\n    var closerV;\n    var distance;\n    var newPosPerc;\n    var index = 0;\n    var vX;\n    var vY;\n    var oX;\n    var oY;\n    var iX;\n    var iY;\n    for (i = 0; i < len; i += 1) {\n      currentV = path.v[i];\n      currentO = path.o[i];\n      currentI = path.i[i];\n      if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n        if ((i === 0 || i === len - 1) && !path.c) {\n          clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n          /* clonedPath.v[index] = currentV;\n                  clonedPath.o[index] = currentO;\n                  clonedPath.i[index] = currentI; */\n          index += 1;\n        } else {\n          if (i === 0) {\n            closerV = path.v[len - 1];\n          } else {\n            closerV = path.v[i - 1];\n          }\n          distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n          newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n          iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n          vX = iX;\n          iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n          vY = iY;\n          oX = vX - (vX - currentV[0]) * roundCorner;\n          oY = vY - (vY - currentV[1]) * roundCorner;\n          clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n          index += 1;\n          if (i === len - 1) {\n            closerV = path.v[0];\n          } else {\n            closerV = path.v[i + 1];\n          }\n          distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n          newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n          oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n          vX = oX;\n          oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n          vY = oY;\n          iX = vX - (vX - currentV[0]) * roundCorner;\n          iY = vY - (vY - currentV[1]) * roundCorner;\n          clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n          index += 1;\n        }\n      } else {\n        clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n        index += 1;\n      }\n    }\n    return clonedPath;\n  };\n  RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var rd = this.rd.v;\n    if (rd !== 0) {\n      var shapeData;\n      var localShapeCollection;\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i];\n        localShapeCollection = shapeData.localShapeCollection;\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n          localShapeCollection.releaseShapes();\n          shapeData.shape._mdf = true;\n          shapePaths = shapeData.shape.paths.shapes;\n          jLen = shapeData.shape.paths._length;\n          for (j = 0; j < jLen; j += 1) {\n            localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n          }\n        }\n        shapeData.shape.paths = shapeData.localShapeCollection;\n      }\n    }\n    if (!this.dynamicProperties.length) {\n      this._mdf = false;\n    }\n  };\n\n  function floatEqual(a, b) {\n    return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n  }\n  function floatZero(f) {\n    return Math.abs(f) <= 0.00001;\n  }\n  function lerp(p0, p1, amount) {\n    return p0 * (1 - amount) + p1 * amount;\n  }\n  function lerpPoint(p0, p1, amount) {\n    return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n  }\n  function quadRoots(a, b, c) {\n    // no root\n    if (a === 0) return [];\n    var s = b * b - 4 * a * c;\n    // Complex roots\n    if (s < 0) return [];\n    var singleRoot = -b / (2 * a);\n    // 1 root\n    if (s === 0) return [singleRoot];\n    var delta = Math.sqrt(s) / (2 * a);\n    // 2 roots\n    return [singleRoot - delta, singleRoot + delta];\n  }\n  function polynomialCoefficients(p0, p1, p2, p3) {\n    return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n  }\n  function singlePoint(p) {\n    return new PolynomialBezier(p, p, p, p, false);\n  }\n  function PolynomialBezier(p0, p1, p2, p3, linearize) {\n    if (linearize && pointEqual(p0, p1)) {\n      p1 = lerpPoint(p0, p3, 1 / 3);\n    }\n    if (linearize && pointEqual(p2, p3)) {\n      p2 = lerpPoint(p0, p3, 2 / 3);\n    }\n    var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n    var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n    this.a = [coeffx[0], coeffy[0]];\n    this.b = [coeffx[1], coeffy[1]];\n    this.c = [coeffx[2], coeffy[2]];\n    this.d = [coeffx[3], coeffy[3]];\n    this.points = [p0, p1, p2, p3];\n  }\n  PolynomialBezier.prototype.point = function (t) {\n    return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n  };\n  PolynomialBezier.prototype.derivative = function (t) {\n    return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n  };\n  PolynomialBezier.prototype.tangentAngle = function (t) {\n    var p = this.derivative(t);\n    return Math.atan2(p[1], p[0]);\n  };\n  PolynomialBezier.prototype.normalAngle = function (t) {\n    var p = this.derivative(t);\n    return Math.atan2(p[0], p[1]);\n  };\n  PolynomialBezier.prototype.inflectionPoints = function () {\n    var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n    if (floatZero(denom)) return [];\n    var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n    var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n    if (square < 0) return [];\n    var root = Math.sqrt(square);\n    if (floatZero(root)) {\n      if (root > 0 && root < 1) return [tcusp];\n      return [];\n    }\n    return [tcusp - root, tcusp + root].filter(function (r) {\n      return r > 0 && r < 1;\n    });\n  };\n  PolynomialBezier.prototype.split = function (t) {\n    if (t <= 0) return [singlePoint(this.points[0]), this];\n    if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n    var p10 = lerpPoint(this.points[0], this.points[1], t);\n    var p11 = lerpPoint(this.points[1], this.points[2], t);\n    var p12 = lerpPoint(this.points[2], this.points[3], t);\n    var p20 = lerpPoint(p10, p11, t);\n    var p21 = lerpPoint(p11, p12, t);\n    var p3 = lerpPoint(p20, p21, t);\n    return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n  };\n  function extrema(bez, comp) {\n    var min = bez.points[0][comp];\n    var max = bez.points[bez.points.length - 1][comp];\n    if (min > max) {\n      var e = max;\n      max = min;\n      min = e;\n    }\n    // Derivative roots to find min/max\n    var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n    for (var i = 0; i < f.length; i += 1) {\n      if (f[i] > 0 && f[i] < 1) {\n        var val = bez.point(f[i])[comp];\n        if (val < min) min = val;else if (val > max) max = val;\n      }\n    }\n    return {\n      min: min,\n      max: max\n    };\n  }\n  PolynomialBezier.prototype.bounds = function () {\n    return {\n      x: extrema(this, 0),\n      y: extrema(this, 1)\n    };\n  };\n  PolynomialBezier.prototype.boundingBox = function () {\n    var bounds = this.bounds();\n    return {\n      left: bounds.x.min,\n      right: bounds.x.max,\n      top: bounds.y.min,\n      bottom: bounds.y.max,\n      width: bounds.x.max - bounds.x.min,\n      height: bounds.y.max - bounds.y.min,\n      cx: (bounds.x.max + bounds.x.min) / 2,\n      cy: (bounds.y.max + bounds.y.min) / 2\n    };\n  };\n  function intersectData(bez, t1, t2) {\n    var box = bez.boundingBox();\n    return {\n      cx: box.cx,\n      cy: box.cy,\n      width: box.width,\n      height: box.height,\n      bez: bez,\n      t: (t1 + t2) / 2,\n      t1: t1,\n      t2: t2\n    };\n  }\n  function splitData(data) {\n    var split = data.bez.split(0.5);\n    return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n  }\n  function boxIntersect(b1, b2) {\n    return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n  }\n  function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n    if (!boxIntersect(d1, d2)) return;\n    if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n      intersections.push([d1.t, d2.t]);\n      return;\n    }\n    var d1s = splitData(d1);\n    var d2s = splitData(d2);\n    intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n    intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n    intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n    intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n  }\n  PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n    if (tolerance === undefined) tolerance = 2;\n    if (maxRecursion === undefined) maxRecursion = 7;\n    var intersections = [];\n    intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n    return intersections;\n  };\n  PolynomialBezier.shapeSegment = function (shapePath, index) {\n    var nextIndex = (index + 1) % shapePath.length();\n    return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n  };\n  PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n    var nextIndex = (index + 1) % shapePath.length();\n    return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n  };\n  function crossProduct(a, b) {\n    return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n  }\n  function lineIntersection(start1, end1, start2, end2) {\n    var v1 = [start1[0], start1[1], 1];\n    var v2 = [end1[0], end1[1], 1];\n    var v3 = [start2[0], start2[1], 1];\n    var v4 = [end2[0], end2[1], 1];\n    var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n    if (floatZero(r[2])) return null;\n    return [r[0] / r[2], r[1] / r[2]];\n  }\n  function polarOffset(p, angle, length) {\n    return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n  }\n  function pointDistance(p1, p2) {\n    return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n  }\n  function pointEqual(p1, p2) {\n    return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n  }\n\n  function ZigZagModifier() {}\n  extendPrototype([ShapeModifier], ZigZagModifier);\n  ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n    this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n    this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n    this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n  };\n  function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n    var angO = angle - Math.PI / 2;\n    var angI = angle + Math.PI / 2;\n    var px = point[0] + Math.cos(angle) * direction * amplitude;\n    var py = point[1] - Math.sin(angle) * direction * amplitude;\n    outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n  }\n  function getPerpendicularVector(pt1, pt2) {\n    var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n    var rot = -Math.PI * 0.5;\n    var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n    return rotatedVector;\n  }\n  function getProjectingAngle(path, cur) {\n    var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n    var nextIndex = (cur + 1) % path.length();\n    var prevPoint = path.v[prevIndex];\n    var nextPoint = path.v[nextIndex];\n    var pVector = getPerpendicularVector(prevPoint, nextPoint);\n    return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n  }\n  function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n    var angle = getProjectingAngle(path, cur);\n    var point = path.v[cur % path._length];\n    var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n    var nextPoint = path.v[(cur + 1) % path._length];\n    var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n    var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n    setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n  }\n  function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n    for (var i = 0; i < frequency; i += 1) {\n      var t = (i + 1) / (frequency + 1);\n      var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n      var angle = segment.normalAngle(t);\n      var point = segment.point(t);\n      setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n      direction = -direction;\n    }\n    return direction;\n  }\n  ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n    var count = path._length;\n    var clonedPath = shapePool.newElement();\n    clonedPath.c = path.c;\n    if (!path.c) {\n      count -= 1;\n    }\n    if (count === 0) return clonedPath;\n    var direction = -1;\n    var segment = PolynomialBezier.shapeSegment(path, 0);\n    zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n    for (var i = 0; i < count; i += 1) {\n      direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n      if (i === count - 1 && !path.c) {\n        segment = null;\n      } else {\n        segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n      }\n      zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n    }\n    return clonedPath;\n  };\n  ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var amplitude = this.amplitude.v;\n    var frequency = Math.max(0, Math.round(this.frequency.v));\n    var pointType = this.pointsType.v;\n    if (amplitude !== 0) {\n      var shapeData;\n      var localShapeCollection;\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i];\n        localShapeCollection = shapeData.localShapeCollection;\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n          localShapeCollection.releaseShapes();\n          shapeData.shape._mdf = true;\n          shapePaths = shapeData.shape.paths.shapes;\n          jLen = shapeData.shape.paths._length;\n          for (j = 0; j < jLen; j += 1) {\n            localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n          }\n        }\n        shapeData.shape.paths = shapeData.localShapeCollection;\n      }\n    }\n    if (!this.dynamicProperties.length) {\n      this._mdf = false;\n    }\n  };\n\n  function linearOffset(p1, p2, amount) {\n    var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n    return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n  }\n  function offsetSegment(segment, amount) {\n    var p0;\n    var p1a;\n    var p1b;\n    var p2b;\n    var p2a;\n    var p3;\n    var e;\n    e = linearOffset(segment.points[0], segment.points[1], amount);\n    p0 = e[0];\n    p1a = e[1];\n    e = linearOffset(segment.points[1], segment.points[2], amount);\n    p1b = e[0];\n    p2b = e[1];\n    e = linearOffset(segment.points[2], segment.points[3], amount);\n    p2a = e[0];\n    p3 = e[1];\n    var p1 = lineIntersection(p0, p1a, p1b, p2b);\n    if (p1 === null) p1 = p1a;\n    var p2 = lineIntersection(p2a, p3, p1b, p2b);\n    if (p2 === null) p2 = p2a;\n    return new PolynomialBezier(p0, p1, p2, p3);\n  }\n  function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n    var p0 = seg1.points[3];\n    var p1 = seg2.points[0];\n\n    // Bevel\n    if (lineJoin === 3) return p0;\n\n    // Connected, they don't need a joint\n    if (pointEqual(p0, p1)) return p0;\n\n    // Round\n    if (lineJoin === 2) {\n      var angleOut = -seg1.tangentAngle(1);\n      var angleIn = -seg2.tangentAngle(0) + Math.PI;\n      var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n      var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n      var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n      outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n      tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n      outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n      return p1;\n    }\n\n    // Miter\n    var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n    var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n    var intersection = lineIntersection(t0, p0, p1, t1);\n    if (intersection && pointDistance(intersection, p0) < miterLimit) {\n      outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n      return intersection;\n    }\n    return p0;\n  }\n  function getIntersection(a, b) {\n    var intersect = a.intersections(b);\n    if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n    if (intersect.length) return intersect[0];\n    return null;\n  }\n  function pruneSegmentIntersection(a, b) {\n    var outa = a.slice();\n    var outb = b.slice();\n    var intersect = getIntersection(a[a.length - 1], b[0]);\n    if (intersect) {\n      outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n      outb[0] = b[0].split(intersect[1])[1];\n    }\n    if (a.length > 1 && b.length > 1) {\n      intersect = getIntersection(a[0], b[b.length - 1]);\n      if (intersect) {\n        return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n      }\n    }\n    return [outa, outb];\n  }\n  function pruneIntersections(segments) {\n    var e;\n    for (var i = 1; i < segments.length; i += 1) {\n      e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n      segments[i - 1] = e[0];\n      segments[i] = e[1];\n    }\n    if (segments.length > 1) {\n      e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n      segments[segments.length - 1] = e[0];\n      segments[0] = e[1];\n    }\n    return segments;\n  }\n  function offsetSegmentSplit(segment, amount) {\n    /*\n      We split each bezier segment into smaller pieces based\n      on inflection points, this ensures the control point\n      polygon is convex.\n       (A cubic bezier can have none, one, or two inflection points)\n    */\n    var flex = segment.inflectionPoints();\n    var left;\n    var right;\n    var split;\n    var mid;\n    if (flex.length === 0) {\n      return [offsetSegment(segment, amount)];\n    }\n    if (flex.length === 1 || floatEqual(flex[1], 1)) {\n      split = segment.split(flex[0]);\n      left = split[0];\n      right = split[1];\n      return [offsetSegment(left, amount), offsetSegment(right, amount)];\n    }\n    split = segment.split(flex[0]);\n    left = split[0];\n    var t = (flex[1] - flex[0]) / (1 - flex[0]);\n    split = split[1].split(t);\n    mid = split[0];\n    right = split[1];\n    return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n  }\n  function OffsetPathModifier() {}\n  extendPrototype([ShapeModifier], OffsetPathModifier);\n  OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n    this.getValue = this.processKeys;\n    this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n    this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n    this.lineJoin = data.lj;\n    this._isAnimated = this.amount.effectsSequence.length !== 0;\n  };\n  OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n    var outputBezier = shapePool.newElement();\n    outputBezier.c = inputBezier.c;\n    var count = inputBezier.length();\n    if (!inputBezier.c) {\n      count -= 1;\n    }\n    var i;\n    var j;\n    var segment;\n    var multiSegments = [];\n    for (i = 0; i < count; i += 1) {\n      segment = PolynomialBezier.shapeSegment(inputBezier, i);\n      multiSegments.push(offsetSegmentSplit(segment, amount));\n    }\n    if (!inputBezier.c) {\n      for (i = count - 1; i >= 0; i -= 1) {\n        segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n        multiSegments.push(offsetSegmentSplit(segment, amount));\n      }\n    }\n    multiSegments = pruneIntersections(multiSegments);\n\n    // Add bezier segments to the output and apply line joints\n    var lastPoint = null;\n    var lastSeg = null;\n    for (i = 0; i < multiSegments.length; i += 1) {\n      var multiSegment = multiSegments[i];\n      if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n      lastSeg = multiSegment[multiSegment.length - 1];\n      for (j = 0; j < multiSegment.length; j += 1) {\n        segment = multiSegment[j];\n        if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n          outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n        } else {\n          outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n        }\n        outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n        lastPoint = segment.points[3];\n      }\n    }\n    if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n    return outputBezier;\n  };\n  OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n    var shapePaths;\n    var i;\n    var len = this.shapes.length;\n    var j;\n    var jLen;\n    var amount = this.amount.v;\n    var miterLimit = this.miterLimit.v;\n    var lineJoin = this.lineJoin;\n    if (amount !== 0) {\n      var shapeData;\n      var localShapeCollection;\n      for (i = 0; i < len; i += 1) {\n        shapeData = this.shapes[i];\n        localShapeCollection = shapeData.localShapeCollection;\n        if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n          localShapeCollection.releaseShapes();\n          shapeData.shape._mdf = true;\n          shapePaths = shapeData.shape.paths.shapes;\n          jLen = shapeData.shape.paths._length;\n          for (j = 0; j < jLen; j += 1) {\n            localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n          }\n        }\n        shapeData.shape.paths = shapeData.localShapeCollection;\n      }\n    }\n    if (!this.dynamicProperties.length) {\n      this._mdf = false;\n    }\n  };\n\n  function getFontProperties(fontData) {\n    var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n    var fWeight = 'normal';\n    var fStyle = 'normal';\n    var len = styles.length;\n    var styleName;\n    for (var i = 0; i < len; i += 1) {\n      styleName = styles[i].toLowerCase();\n      switch (styleName) {\n        case 'italic':\n          fStyle = 'italic';\n          break;\n        case 'bold':\n          fWeight = '700';\n          break;\n        case 'black':\n          fWeight = '900';\n          break;\n        case 'medium':\n          fWeight = '500';\n          break;\n        case 'regular':\n        case 'normal':\n          fWeight = '400';\n          break;\n        case 'light':\n        case 'thin':\n          fWeight = '200';\n          break;\n        default:\n          break;\n      }\n    }\n    return {\n      style: fStyle,\n      weight: fontData.fWeight || fWeight\n    };\n  }\n\n  var FontManager = function () {\n    var maxWaitingTime = 5000;\n    var emptyChar = {\n      w: 0,\n      size: 0,\n      shapes: [],\n      data: {\n        shapes: []\n      }\n    };\n    var combinedCharacters = [];\n    // Hindi characters\n    combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n    var BLACK_FLAG_CODE_POINT = 127988;\n    var CANCEL_TAG_CODE_POINT = 917631;\n    var A_TAG_CODE_POINT = 917601;\n    var Z_TAG_CODE_POINT = 917626;\n    var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n    var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n    var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n    var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n    var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n    function trimFontOptions(font) {\n      var familyArray = font.split(',');\n      var i;\n      var len = familyArray.length;\n      var enabledFamilies = [];\n      for (i = 0; i < len; i += 1) {\n        if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n          enabledFamilies.push(familyArray[i]);\n        }\n      }\n      return enabledFamilies.join(',');\n    }\n    function setUpNode(font, family) {\n      var parentNode = createTag('span');\n      // Node is invisible to screen readers.\n      parentNode.setAttribute('aria-hidden', true);\n      parentNode.style.fontFamily = family;\n      var node = createTag('span');\n      // Characters that vary significantly among different fonts\n      node.innerText = 'giItT1WQy@!-/#';\n      // Visible - so we can measure it - but not on the screen\n      parentNode.style.position = 'absolute';\n      parentNode.style.left = '-10000px';\n      parentNode.style.top = '-10000px';\n      // Large font size makes even subtle changes obvious\n      parentNode.style.fontSize = '300px';\n      // Reset any font properties\n      parentNode.style.fontVariant = 'normal';\n      parentNode.style.fontStyle = 'normal';\n      parentNode.style.fontWeight = 'normal';\n      parentNode.style.letterSpacing = '0';\n      parentNode.appendChild(node);\n      document.body.appendChild(parentNode);\n\n      // Remember width with no applied web font\n      var width = node.offsetWidth;\n      node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n      return {\n        node: node,\n        w: width,\n        parent: parentNode\n      };\n    }\n    function checkLoadedFonts() {\n      var i;\n      var len = this.fonts.length;\n      var node;\n      var w;\n      var loadedCount = len;\n      for (i = 0; i < len; i += 1) {\n        if (this.fonts[i].loaded) {\n          loadedCount -= 1;\n        } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n          this.fonts[i].loaded = true;\n        } else {\n          node = this.fonts[i].monoCase.node;\n          w = this.fonts[i].monoCase.w;\n          if (node.offsetWidth !== w) {\n            loadedCount -= 1;\n            this.fonts[i].loaded = true;\n          } else {\n            node = this.fonts[i].sansCase.node;\n            w = this.fonts[i].sansCase.w;\n            if (node.offsetWidth !== w) {\n              loadedCount -= 1;\n              this.fonts[i].loaded = true;\n            }\n          }\n          if (this.fonts[i].loaded) {\n            this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n            this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n          }\n        }\n      }\n      if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n        setTimeout(this.checkLoadedFontsBinded, 20);\n      } else {\n        setTimeout(this.setIsLoadedBinded, 10);\n      }\n    }\n    function createHelper(fontData, def) {\n      var engine = document.body && def ? 'svg' : 'canvas';\n      var helper;\n      var fontProps = getFontProperties(fontData);\n      if (engine === 'svg') {\n        var tHelper = createNS('text');\n        tHelper.style.fontSize = '100px';\n        // tHelper.style.fontFamily = fontData.fFamily;\n        tHelper.setAttribute('font-family', fontData.fFamily);\n        tHelper.setAttribute('font-style', fontProps.style);\n        tHelper.setAttribute('font-weight', fontProps.weight);\n        tHelper.textContent = '1';\n        if (fontData.fClass) {\n          tHelper.style.fontFamily = 'inherit';\n          tHelper.setAttribute('class', fontData.fClass);\n        } else {\n          tHelper.style.fontFamily = fontData.fFamily;\n        }\n        def.appendChild(tHelper);\n        helper = tHelper;\n      } else {\n        var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n        tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n        helper = tCanvasHelper;\n      }\n      function measure(text) {\n        if (engine === 'svg') {\n          helper.textContent = text;\n          return helper.getComputedTextLength();\n        }\n        return helper.measureText(text).width;\n      }\n      return {\n        measureText: measure\n      };\n    }\n    function addFonts(fontData, defs) {\n      if (!fontData) {\n        this.isLoaded = true;\n        return;\n      }\n      if (this.chars) {\n        this.isLoaded = true;\n        this.fonts = fontData.list;\n        return;\n      }\n      if (!document.body) {\n        this.isLoaded = true;\n        fontData.list.forEach(function (data) {\n          data.helper = createHelper(data);\n          data.cache = {};\n        });\n        this.fonts = fontData.list;\n        return;\n      }\n      var fontArr = fontData.list;\n      var i;\n      var len = fontArr.length;\n      var _pendingFonts = len;\n      for (i = 0; i < len; i += 1) {\n        var shouldLoadFont = true;\n        var loadedSelector;\n        var j;\n        fontArr[i].loaded = false;\n        fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n        fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n        if (!fontArr[i].fPath) {\n          fontArr[i].loaded = true;\n          _pendingFonts -= 1;\n        } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n          loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n          if (loadedSelector.length > 0) {\n            shouldLoadFont = false;\n          }\n          if (shouldLoadFont) {\n            var s = createTag('style');\n            s.setAttribute('f-forigin', fontArr[i].fOrigin);\n            s.setAttribute('f-origin', fontArr[i].origin);\n            s.setAttribute('f-family', fontArr[i].fFamily);\n            s.type = 'text/css';\n            s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n            defs.appendChild(s);\n          }\n        } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n          loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n          for (j = 0; j < loadedSelector.length; j += 1) {\n            if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n              // Font is already loaded\n              shouldLoadFont = false;\n            }\n          }\n          if (shouldLoadFont) {\n            var l = createTag('link');\n            l.setAttribute('f-forigin', fontArr[i].fOrigin);\n            l.setAttribute('f-origin', fontArr[i].origin);\n            l.type = 'text/css';\n            l.rel = 'stylesheet';\n            l.href = fontArr[i].fPath;\n            document.body.appendChild(l);\n          }\n        } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n          loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n          for (j = 0; j < loadedSelector.length; j += 1) {\n            if (fontArr[i].fPath === loadedSelector[j].src) {\n              // Font is already loaded\n              shouldLoadFont = false;\n            }\n          }\n          if (shouldLoadFont) {\n            var sc = createTag('link');\n            sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n            sc.setAttribute('f-origin', fontArr[i].origin);\n            sc.setAttribute('rel', 'stylesheet');\n            sc.setAttribute('href', fontArr[i].fPath);\n            defs.appendChild(sc);\n          }\n        }\n        fontArr[i].helper = createHelper(fontArr[i], defs);\n        fontArr[i].cache = {};\n        this.fonts.push(fontArr[i]);\n      }\n      if (_pendingFonts === 0) {\n        this.isLoaded = true;\n      } else {\n        // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n        // Adding this timeout seems to fix it\n        setTimeout(this.checkLoadedFonts.bind(this), 100);\n      }\n    }\n    function addChars(chars) {\n      if (!chars) {\n        return;\n      }\n      if (!this.chars) {\n        this.chars = [];\n      }\n      var i;\n      var len = chars.length;\n      var j;\n      var jLen = this.chars.length;\n      var found;\n      for (i = 0; i < len; i += 1) {\n        j = 0;\n        found = false;\n        while (j < jLen) {\n          if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n            found = true;\n          }\n          j += 1;\n        }\n        if (!found) {\n          this.chars.push(chars[i]);\n          jLen += 1;\n        }\n      }\n    }\n    function getCharData(_char, style, font) {\n      var i = 0;\n      var len = this.chars.length;\n      while (i < len) {\n        if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n          return this.chars[i];\n        }\n        i += 1;\n      }\n      if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n      && !this._warned) {\n        this._warned = true;\n        console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n      }\n      return emptyChar;\n    }\n    function measureText(_char2, fontName, size) {\n      var fontData = this.getFontByName(fontName);\n      // Using the char instead of char.charCodeAt(0)\n      // to avoid collisions between equal chars\n      var index = _char2;\n      if (!fontData.cache[index]) {\n        var tHelper = fontData.helper;\n        if (_char2 === ' ') {\n          var doubleSize = tHelper.measureText('|' + _char2 + '|');\n          var singleSize = tHelper.measureText('||');\n          fontData.cache[index] = (doubleSize - singleSize) / 100;\n        } else {\n          fontData.cache[index] = tHelper.measureText(_char2) / 100;\n        }\n      }\n      return fontData.cache[index] * size;\n    }\n    function getFontByName(name) {\n      var i = 0;\n      var len = this.fonts.length;\n      while (i < len) {\n        if (this.fonts[i].fName === name) {\n          return this.fonts[i];\n        }\n        i += 1;\n      }\n      return this.fonts[0];\n    }\n    function getCodePoint(string) {\n      var codePoint = 0;\n      var first = string.charCodeAt(0);\n      if (first >= 0xD800 && first <= 0xDBFF) {\n        var second = string.charCodeAt(1);\n        if (second >= 0xDC00 && second <= 0xDFFF) {\n          codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n        }\n      }\n      return codePoint;\n    }\n\n    // Skin tone modifiers\n    function isModifier(firstCharCode, secondCharCode) {\n      var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n      return surrogateModifiers.indexOf(sum) !== -1;\n    }\n    function isZeroWidthJoiner(charCode) {\n      return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n    }\n\n    // This codepoint may change the appearance of the preceding character.\n    // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n    // as a colorful image as compared to a monochrome text variant.\n    function isVariationSelector(charCode) {\n      return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n    }\n\n    // The regional indicator symbols are a set of 26 alphabetic Unicode\n    /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n    // two-letter country codes in a way that allows optional special treatment.\n    function isRegionalCode(string) {\n      var codePoint = getCodePoint(string);\n      if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n        return true;\n      }\n      return false;\n    }\n\n    // Some Emoji implementations represent combinations of\n    // two “regional indicator” letters as a single flag symbol.\n    function isFlagEmoji(string) {\n      return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n    }\n    function isCombinedCharacter(_char3) {\n      return combinedCharacters.indexOf(_char3) !== -1;\n    }\n\n    // Regional flags start with a BLACK_FLAG_CODE_POINT\n    // folowed by 5 chars in the TAG range\n    // and end with a CANCEL_TAG_CODE_POINT\n    function isRegionalFlag(text, index) {\n      var codePoint = getCodePoint(text.substr(index, 2));\n      if (codePoint !== BLACK_FLAG_CODE_POINT) {\n        return false;\n      }\n      var count = 0;\n      index += 2;\n      while (count < 5) {\n        codePoint = getCodePoint(text.substr(index, 2));\n        if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n          return false;\n        }\n        count += 1;\n        index += 2;\n      }\n      return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n    }\n    function setIsLoaded() {\n      this.isLoaded = true;\n    }\n    var Font = function Font() {\n      this.fonts = [];\n      this.chars = null;\n      this.typekitLoaded = 0;\n      this.isLoaded = false;\n      this._warned = false;\n      this.initTime = Date.now();\n      this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n      this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n    };\n    Font.isModifier = isModifier;\n    Font.isZeroWidthJoiner = isZeroWidthJoiner;\n    Font.isFlagEmoji = isFlagEmoji;\n    Font.isRegionalCode = isRegionalCode;\n    Font.isCombinedCharacter = isCombinedCharacter;\n    Font.isRegionalFlag = isRegionalFlag;\n    Font.isVariationSelector = isVariationSelector;\n    Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n    var fontPrototype = {\n      addChars: addChars,\n      addFonts: addFonts,\n      getCharData: getCharData,\n      getFontByName: getFontByName,\n      measureText: measureText,\n      checkLoadedFonts: checkLoadedFonts,\n      setIsLoaded: setIsLoaded\n    };\n    Font.prototype = fontPrototype;\n    return Font;\n  }();\n\n  function SlotManager(animationData) {\n    this.animationData = animationData;\n  }\n  SlotManager.prototype.getProp = function (data) {\n    if (this.animationData.slots && this.animationData.slots[data.sid]) {\n      return Object.assign(data, this.animationData.slots[data.sid].p);\n    }\n    return data;\n  };\n  function slotFactory(animationData) {\n    return new SlotManager(animationData);\n  }\n\n  function RenderableElement() {}\n  RenderableElement.prototype = {\n    initRenderable: function initRenderable() {\n      // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n      this.isInRange = false;\n      // layer's display state\n      this.hidden = false;\n      // If layer's transparency equals 0, it can be hidden\n      this.isTransparent = false;\n      // list of animated components\n      this.renderableComponents = [];\n    },\n    addRenderableComponent: function addRenderableComponent(component) {\n      if (this.renderableComponents.indexOf(component) === -1) {\n        this.renderableComponents.push(component);\n      }\n    },\n    removeRenderableComponent: function removeRenderableComponent(component) {\n      if (this.renderableComponents.indexOf(component) !== -1) {\n        this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n      }\n    },\n    prepareRenderableFrame: function prepareRenderableFrame(num) {\n      this.checkLayerLimits(num);\n    },\n    checkTransparency: function checkTransparency() {\n      if (this.finalTransform.mProp.o.v <= 0) {\n        if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n          this.isTransparent = true;\n          this.hide();\n        }\n      } else if (this.isTransparent) {\n        this.isTransparent = false;\n        this.show();\n      }\n    },\n    /**\n       * @function\n       * Initializes frame related properties.\n       *\n       * @param {number} num\n       * current frame number in Layer's time\n       *\n       */\n    checkLayerLimits: function checkLayerLimits(num) {\n      if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n        if (this.isInRange !== true) {\n          this.globalData._mdf = true;\n          this._mdf = true;\n          this.isInRange = true;\n          this.show();\n        }\n      } else if (this.isInRange !== false) {\n        this.globalData._mdf = true;\n        this.isInRange = false;\n        this.hide();\n      }\n    },\n    renderRenderable: function renderRenderable() {\n      var i;\n      var len = this.renderableComponents.length;\n      for (i = 0; i < len; i += 1) {\n        this.renderableComponents[i].renderFrame(this._isFirstFrame);\n      }\n      /* this.maskManager.renderFrame(this.finalTransform.mat);\n          this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n    },\n    sourceRectAtTime: function sourceRectAtTime() {\n      return {\n        top: 0,\n        left: 0,\n        width: 100,\n        height: 100\n      };\n    },\n    getLayerSize: function getLayerSize() {\n      if (this.data.ty === 5) {\n        return {\n          w: this.data.textData.width,\n          h: this.data.textData.height\n        };\n      }\n      return {\n        w: this.data.width,\n        h: this.data.height\n      };\n    }\n  };\n\n  var getBlendMode = function () {\n    var blendModeEnums = {\n      0: 'source-over',\n      1: 'multiply',\n      2: 'screen',\n      3: 'overlay',\n      4: 'darken',\n      5: 'lighten',\n      6: 'color-dodge',\n      7: 'color-burn',\n      8: 'hard-light',\n      9: 'soft-light',\n      10: 'difference',\n      11: 'exclusion',\n      12: 'hue',\n      13: 'saturation',\n      14: 'color',\n      15: 'luminosity'\n    };\n    return function (mode) {\n      return blendModeEnums[mode] || '';\n    };\n  }();\n\n  function SliderEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n  function AngleEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n  function ColorEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n  }\n  function PointEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n  }\n  function LayerIndexEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n  function MaskIndexEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n  function CheckboxEffect(data, elem, container) {\n    this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n  }\n  function NoValueEffect() {\n    this.p = {};\n  }\n\n  function EffectsManager(data, element) {\n    var effects = data.ef || [];\n    this.effectElements = [];\n    var i;\n    var len = effects.length;\n    var effectItem;\n    for (i = 0; i < len; i += 1) {\n      effectItem = new GroupEffect(effects[i], element);\n      this.effectElements.push(effectItem);\n    }\n  }\n  function GroupEffect(data, element) {\n    this.init(data, element);\n  }\n  extendPrototype([DynamicPropertyContainer], GroupEffect);\n  GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n  GroupEffect.prototype.init = function (data, element) {\n    this.data = data;\n    this.effectElements = [];\n    this.initDynamicPropertyContainer(element);\n    var i;\n    var len = this.data.ef.length;\n    var eff;\n    var effects = this.data.ef;\n    for (i = 0; i < len; i += 1) {\n      eff = null;\n      switch (effects[i].ty) {\n        case 0:\n          eff = new SliderEffect(effects[i], element, this);\n          break;\n        case 1:\n          eff = new AngleEffect(effects[i], element, this);\n          break;\n        case 2:\n          eff = new ColorEffect(effects[i], element, this);\n          break;\n        case 3:\n          eff = new PointEffect(effects[i], element, this);\n          break;\n        case 4:\n        case 7:\n          eff = new CheckboxEffect(effects[i], element, this);\n          break;\n        case 10:\n          eff = new LayerIndexEffect(effects[i], element, this);\n          break;\n        case 11:\n          eff = new MaskIndexEffect(effects[i], element, this);\n          break;\n        case 5:\n          eff = new EffectsManager(effects[i], element, this);\n          break;\n        // case 6:\n        default:\n          eff = new NoValueEffect(effects[i], element, this);\n          break;\n      }\n      if (eff) {\n        this.effectElements.push(eff);\n      }\n    }\n  };\n\n  function BaseElement() {}\n  BaseElement.prototype = {\n    checkMasks: function checkMasks() {\n      if (!this.data.hasMask) {\n        return false;\n      }\n      var i = 0;\n      var len = this.data.masksProperties.length;\n      while (i < len) {\n        if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n          return true;\n        }\n        i += 1;\n      }\n      return false;\n    },\n    initExpressions: function initExpressions() {\n      var expressionsInterfaces = getExpressionInterfaces();\n      if (!expressionsInterfaces) {\n        return;\n      }\n      var LayerExpressionInterface = expressionsInterfaces('layer');\n      var EffectsExpressionInterface = expressionsInterfaces('effects');\n      var ShapeExpressionInterface = expressionsInterfaces('shape');\n      var TextExpressionInterface = expressionsInterfaces('text');\n      var CompExpressionInterface = expressionsInterfaces('comp');\n      this.layerInterface = LayerExpressionInterface(this);\n      if (this.data.hasMask && this.maskManager) {\n        this.layerInterface.registerMaskInterface(this.maskManager);\n      }\n      var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n      this.layerInterface.registerEffectsInterface(effectsInterface);\n      if (this.data.ty === 0 || this.data.xt) {\n        this.compInterface = CompExpressionInterface(this);\n      } else if (this.data.ty === 4) {\n        this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n        this.layerInterface.content = this.layerInterface.shapeInterface;\n      } else if (this.data.ty === 5) {\n        this.layerInterface.textInterface = TextExpressionInterface(this);\n        this.layerInterface.text = this.layerInterface.textInterface;\n      }\n    },\n    setBlendMode: function setBlendMode() {\n      var blendModeValue = getBlendMode(this.data.bm);\n      var elem = this.baseElement || this.layerElement;\n      elem.style['mix-blend-mode'] = blendModeValue;\n    },\n    initBaseData: function initBaseData(data, globalData, comp) {\n      this.globalData = globalData;\n      this.comp = comp;\n      this.data = data;\n      this.layerId = createElementID();\n\n      // Stretch factor for old animations missing this property.\n      if (!this.data.sr) {\n        this.data.sr = 1;\n      }\n      // effects manager\n      this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n    },\n    getType: function getType() {\n      return this.type;\n    },\n    sourceRectAtTime: function sourceRectAtTime() {}\n  };\n\n  /**\n   * @file\n   * Handles element's layer frame update.\n   * Checks layer in point and out point\n   *\n   */\n\n  function FrameElement() {}\n  FrameElement.prototype = {\n    /**\n       * @function\n       * Initializes frame related properties.\n       *\n       */\n    initFrame: function initFrame() {\n      // set to true when inpoint is rendered\n      this._isFirstFrame = false;\n      // list of animated properties\n      this.dynamicProperties = [];\n      // If layer has been modified in current tick this will be true\n      this._mdf = false;\n    },\n    /**\n       * @function\n       * Calculates all dynamic values\n       *\n       * @param {number} num\n       * current frame number in Layer's time\n       * @param {boolean} isVisible\n       * if layers is currently in range\n       *\n       */\n    prepareProperties: function prepareProperties(num, isVisible) {\n      var i;\n      var len = this.dynamicProperties.length;\n      for (i = 0; i < len; i += 1) {\n        if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n          this.dynamicProperties[i].getValue();\n          if (this.dynamicProperties[i]._mdf) {\n            this.globalData._mdf = true;\n            this._mdf = true;\n          }\n        }\n      }\n    },\n    addDynamicProperty: function addDynamicProperty(prop) {\n      if (this.dynamicProperties.indexOf(prop) === -1) {\n        this.dynamicProperties.push(prop);\n      }\n    }\n  };\n\n  function FootageElement(data, globalData, comp) {\n    this.initFrame();\n    this.initRenderable();\n    this.assetData = globalData.getAssetData(data.refId);\n    this.footageData = globalData.imageLoader.getAsset(this.assetData);\n    this.initBaseData(data, globalData, comp);\n  }\n  FootageElement.prototype.prepareFrame = function () {};\n  extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n  FootageElement.prototype.getBaseElement = function () {\n    return null;\n  };\n  FootageElement.prototype.renderFrame = function () {};\n  FootageElement.prototype.destroy = function () {};\n  FootageElement.prototype.initExpressions = function () {\n    var expressionsInterfaces = getExpressionInterfaces();\n    if (!expressionsInterfaces) {\n      return;\n    }\n    var FootageInterface = expressionsInterfaces('footage');\n    this.layerInterface = FootageInterface(this);\n  };\n  FootageElement.prototype.getFootageData = function () {\n    return this.footageData;\n  };\n\n  function AudioElement(data, globalData, comp) {\n    this.initFrame();\n    this.initRenderable();\n    this.assetData = globalData.getAssetData(data.refId);\n    this.initBaseData(data, globalData, comp);\n    this._isPlaying = false;\n    this._canPlay = false;\n    var assetPath = this.globalData.getAssetsPath(this.assetData);\n    this.audio = this.globalData.audioController.createAudio(assetPath);\n    this._currentTime = 0;\n    this.globalData.audioController.addAudio(this);\n    this._volumeMultiplier = 1;\n    this._volume = 1;\n    this._previousVolume = null;\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n      _placeholder: true\n    };\n    this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n      k: [100]\n    }, 1, 0.01, this);\n  }\n  AudioElement.prototype.prepareFrame = function (num) {\n    this.prepareRenderableFrame(num, true);\n    this.prepareProperties(num, true);\n    if (!this.tm._placeholder) {\n      var timeRemapped = this.tm.v;\n      this._currentTime = timeRemapped;\n    } else {\n      this._currentTime = num / this.data.sr;\n    }\n    this._volume = this.lv.v[0];\n    var totalVolume = this._volume * this._volumeMultiplier;\n    if (this._previousVolume !== totalVolume) {\n      this._previousVolume = totalVolume;\n      this.audio.volume(totalVolume);\n    }\n  };\n  extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n  AudioElement.prototype.renderFrame = function () {\n    if (this.isInRange && this._canPlay) {\n      if (!this._isPlaying) {\n        this.audio.play();\n        this.audio.seek(this._currentTime / this.globalData.frameRate);\n        this._isPlaying = true;\n      } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n        this.audio.seek(this._currentTime / this.globalData.frameRate);\n      }\n    }\n  };\n  AudioElement.prototype.show = function () {\n    // this.audio.play()\n  };\n  AudioElement.prototype.hide = function () {\n    this.audio.pause();\n    this._isPlaying = false;\n  };\n  AudioElement.prototype.pause = function () {\n    this.audio.pause();\n    this._isPlaying = false;\n    this._canPlay = false;\n  };\n  AudioElement.prototype.resume = function () {\n    this._canPlay = true;\n  };\n  AudioElement.prototype.setRate = function (rateValue) {\n    this.audio.rate(rateValue);\n  };\n  AudioElement.prototype.volume = function (volumeValue) {\n    this._volumeMultiplier = volumeValue;\n    this._previousVolume = volumeValue * this._volume;\n    this.audio.volume(this._previousVolume);\n  };\n  AudioElement.prototype.getBaseElement = function () {\n    return null;\n  };\n  AudioElement.prototype.destroy = function () {};\n  AudioElement.prototype.sourceRectAtTime = function () {};\n  AudioElement.prototype.initExpressions = function () {};\n\n  function BaseRenderer() {}\n  BaseRenderer.prototype.checkLayers = function (num) {\n    var i;\n    var len = this.layers.length;\n    var data;\n    this.completeLayers = true;\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (!this.elements[i]) {\n        data = this.layers[i];\n        if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n          this.buildItem(i);\n        }\n      }\n      this.completeLayers = this.elements[i] ? this.completeLayers : false;\n    }\n    this.checkPendingElements();\n  };\n  BaseRenderer.prototype.createItem = function (layer) {\n    switch (layer.ty) {\n      case 2:\n        return this.createImage(layer);\n      case 0:\n        return this.createComp(layer);\n      case 1:\n        return this.createSolid(layer);\n      case 3:\n        return this.createNull(layer);\n      case 4:\n        return this.createShape(layer);\n      case 5:\n        return this.createText(layer);\n      case 6:\n        return this.createAudio(layer);\n      case 13:\n        return this.createCamera(layer);\n      case 15:\n        return this.createFootage(layer);\n      default:\n        return this.createNull(layer);\n    }\n  };\n  BaseRenderer.prototype.createCamera = function () {\n    throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n  };\n  BaseRenderer.prototype.createAudio = function (data) {\n    return new AudioElement(data, this.globalData, this);\n  };\n  BaseRenderer.prototype.createFootage = function (data) {\n    return new FootageElement(data, this.globalData, this);\n  };\n  BaseRenderer.prototype.buildAllItems = function () {\n    var i;\n    var len = this.layers.length;\n    for (i = 0; i < len; i += 1) {\n      this.buildItem(i);\n    }\n    this.checkPendingElements();\n  };\n  BaseRenderer.prototype.includeLayers = function (newLayers) {\n    this.completeLayers = false;\n    var i;\n    var len = newLayers.length;\n    var j;\n    var jLen = this.layers.length;\n    for (i = 0; i < len; i += 1) {\n      j = 0;\n      while (j < jLen) {\n        if (this.layers[j].id === newLayers[i].id) {\n          this.layers[j] = newLayers[i];\n          break;\n        }\n        j += 1;\n      }\n    }\n  };\n  BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n    this.globalData.projectInterface = pInterface;\n  };\n  BaseRenderer.prototype.initItems = function () {\n    if (!this.globalData.progressiveLoad) {\n      this.buildAllItems();\n    }\n  };\n  BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n    var elements = this.elements;\n    var layers = this.layers;\n    var i = 0;\n    var len = layers.length;\n    while (i < len) {\n      if (layers[i].ind == parentName) {\n        // eslint-disable-line eqeqeq\n        if (!elements[i] || elements[i] === true) {\n          this.buildItem(i);\n          this.addPendingElement(element);\n        } else {\n          hierarchy.push(elements[i]);\n          elements[i].setAsParent();\n          if (layers[i].parent !== undefined) {\n            this.buildElementParenting(element, layers[i].parent, hierarchy);\n          } else {\n            element.setHierarchy(hierarchy);\n          }\n        }\n      }\n      i += 1;\n    }\n  };\n  BaseRenderer.prototype.addPendingElement = function (element) {\n    this.pendingElements.push(element);\n  };\n  BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n    var i;\n    var len = assets.length;\n    for (i = 0; i < len; i += 1) {\n      if (assets[i].xt) {\n        var comp = this.createComp(assets[i]);\n        comp.initExpressions();\n        this.globalData.projectInterface.registerComposition(comp);\n      }\n    }\n  };\n  BaseRenderer.prototype.getElementById = function (ind) {\n    var i;\n    var len = this.elements.length;\n    for (i = 0; i < len; i += 1) {\n      if (this.elements[i].data.ind === ind) {\n        return this.elements[i];\n      }\n    }\n    return null;\n  };\n  BaseRenderer.prototype.getElementByPath = function (path) {\n    var pathValue = path.shift();\n    var element;\n    if (typeof pathValue === 'number') {\n      element = this.elements[pathValue];\n    } else {\n      var i;\n      var len = this.elements.length;\n      for (i = 0; i < len; i += 1) {\n        if (this.elements[i].data.nm === pathValue) {\n          element = this.elements[i];\n          break;\n        }\n      }\n    }\n    if (path.length === 0) {\n      return element;\n    }\n    return element.getElementByPath(path);\n  };\n  BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n    this.globalData.fontManager = new FontManager();\n    this.globalData.slotManager = slotFactory(animData);\n    this.globalData.fontManager.addChars(animData.chars);\n    this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n    this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n    this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n    this.globalData.imageLoader = this.animationItem.imagePreloader;\n    this.globalData.audioController = this.animationItem.audioController;\n    this.globalData.frameId = 0;\n    this.globalData.frameRate = animData.fr;\n    this.globalData.nm = animData.nm;\n    this.globalData.compSize = {\n      w: animData.w,\n      h: animData.h\n    };\n  };\n\n  var effectTypes = {\n    TRANSFORM_EFFECT: 'transformEFfect'\n  };\n\n  function TransformElement() {}\n  TransformElement.prototype = {\n    initTransform: function initTransform() {\n      var mat = new Matrix();\n      this.finalTransform = {\n        mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n          o: 0\n        },\n        _matMdf: false,\n        _localMatMdf: false,\n        _opMdf: false,\n        mat: mat,\n        localMat: mat,\n        localOpacity: 1\n      };\n      if (this.data.ao) {\n        this.finalTransform.mProp.autoOriented = true;\n      }\n\n      // TODO: check TYPE 11: Guided elements\n      if (this.data.ty !== 11) {\n        // this.createElements();\n      }\n    },\n    renderTransform: function renderTransform() {\n      this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n      this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n      if (this.hierarchy) {\n        var mat;\n        var finalMat = this.finalTransform.mat;\n        var i = 0;\n        var len = this.hierarchy.length;\n        // Checking if any of the transformation matrices in the hierarchy chain has changed.\n        if (!this.finalTransform._matMdf) {\n          while (i < len) {\n            if (this.hierarchy[i].finalTransform.mProp._mdf) {\n              this.finalTransform._matMdf = true;\n              break;\n            }\n            i += 1;\n          }\n        }\n        if (this.finalTransform._matMdf) {\n          mat = this.finalTransform.mProp.v.props;\n          finalMat.cloneFromProps(mat);\n          for (i = 0; i < len; i += 1) {\n            finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n          }\n        }\n      }\n      if (!this.localTransforms || this.finalTransform._matMdf) {\n        this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n      }\n      if (this.finalTransform._opMdf) {\n        this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n      }\n    },\n    renderLocalTransform: function renderLocalTransform() {\n      if (this.localTransforms) {\n        var i = 0;\n        var len = this.localTransforms.length;\n        this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n        if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n          while (i < len) {\n            if (this.localTransforms[i]._mdf) {\n              this.finalTransform._localMatMdf = true;\n            }\n            if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n              this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n              this.finalTransform._opMdf = true;\n            }\n            i += 1;\n          }\n        }\n        if (this.finalTransform._localMatMdf) {\n          var localMat = this.finalTransform.localMat;\n          this.localTransforms[0].matrix.clone(localMat);\n          for (i = 1; i < len; i += 1) {\n            var lmat = this.localTransforms[i].matrix;\n            localMat.multiply(lmat);\n          }\n          localMat.multiply(this.finalTransform.mat);\n        }\n        if (this.finalTransform._opMdf) {\n          var localOp = this.finalTransform.localOpacity;\n          for (i = 0; i < len; i += 1) {\n            localOp *= this.localTransforms[i].opacity * 0.01;\n          }\n          this.finalTransform.localOpacity = localOp;\n        }\n      }\n    },\n    searchEffectTransforms: function searchEffectTransforms() {\n      if (this.renderableEffectsManager) {\n        var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n        if (transformEffects.length) {\n          this.localTransforms = [];\n          this.finalTransform.localMat = new Matrix();\n          var i = 0;\n          var len = transformEffects.length;\n          for (i = 0; i < len; i += 1) {\n            this.localTransforms.push(transformEffects[i]);\n          }\n        }\n      }\n    },\n    globalToLocal: function globalToLocal(pt) {\n      var transforms = [];\n      transforms.push(this.finalTransform);\n      var flag = true;\n      var comp = this.comp;\n      while (flag) {\n        if (comp.finalTransform) {\n          if (comp.data.hasMask) {\n            transforms.splice(0, 0, comp.finalTransform);\n          }\n          comp = comp.comp;\n        } else {\n          flag = false;\n        }\n      }\n      var i;\n      var len = transforms.length;\n      var ptNew;\n      for (i = 0; i < len; i += 1) {\n        ptNew = transforms[i].mat.applyToPointArray(0, 0, 0);\n        // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n        pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n      }\n      return pt;\n    },\n    mHelper: new Matrix()\n  };\n\n  function MaskElement(data, element, globalData) {\n    this.data = data;\n    this.element = element;\n    this.globalData = globalData;\n    this.storedData = [];\n    this.masksProperties = this.data.masksProperties || [];\n    this.maskElement = null;\n    var defs = this.globalData.defs;\n    var i;\n    var len = this.masksProperties ? this.masksProperties.length : 0;\n    this.viewData = createSizedArray(len);\n    this.solidPath = '';\n    var path;\n    var properties = this.masksProperties;\n    var count = 0;\n    var currentMasks = [];\n    var j;\n    var jLen;\n    var layerId = createElementID();\n    var rect;\n    var expansor;\n    var feMorph;\n    var x;\n    var maskType = 'clipPath';\n    var maskRef = 'clip-path';\n    for (i = 0; i < len; i += 1) {\n      if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n        maskType = 'mask';\n        maskRef = 'mask';\n      }\n      if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n        rect = createNS('rect');\n        rect.setAttribute('fill', '#ffffff');\n        rect.setAttribute('width', this.element.comp.data.w || 0);\n        rect.setAttribute('height', this.element.comp.data.h || 0);\n        currentMasks.push(rect);\n      } else {\n        rect = null;\n      }\n      path = createNS('path');\n      if (properties[i].mode === 'n') {\n        // TODO move this to a factory or to a constructor\n        this.viewData[i] = {\n          op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n          prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n          elem: path,\n          lastPath: ''\n        };\n        defs.appendChild(path);\n      } else {\n        count += 1;\n        path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n        path.setAttribute('clip-rule', 'nonzero');\n        var filterID;\n        if (properties[i].x.k !== 0) {\n          maskType = 'mask';\n          maskRef = 'mask';\n          x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n          filterID = createElementID();\n          expansor = createNS('filter');\n          expansor.setAttribute('id', filterID);\n          feMorph = createNS('feMorphology');\n          feMorph.setAttribute('operator', 'erode');\n          feMorph.setAttribute('in', 'SourceGraphic');\n          feMorph.setAttribute('radius', '0');\n          expansor.appendChild(feMorph);\n          defs.appendChild(expansor);\n          path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n        } else {\n          feMorph = null;\n          x = null;\n        }\n\n        // TODO move this to a factory or to a constructor\n        this.storedData[i] = {\n          elem: path,\n          x: x,\n          expan: feMorph,\n          lastPath: '',\n          lastOperator: '',\n          filterId: filterID,\n          lastRadius: 0\n        };\n        if (properties[i].mode === 'i') {\n          jLen = currentMasks.length;\n          var g = createNS('g');\n          for (j = 0; j < jLen; j += 1) {\n            g.appendChild(currentMasks[j]);\n          }\n          var mask = createNS('mask');\n          mask.setAttribute('mask-type', 'alpha');\n          mask.setAttribute('id', layerId + '_' + count);\n          mask.appendChild(path);\n          defs.appendChild(mask);\n          g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n          currentMasks.length = 0;\n          currentMasks.push(g);\n        } else {\n          currentMasks.push(path);\n        }\n        if (properties[i].inv && !this.solidPath) {\n          this.solidPath = this.createLayerSolidPath();\n        }\n        // TODO move this to a factory or to a constructor\n        this.viewData[i] = {\n          elem: path,\n          lastPath: '',\n          op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n          prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n          invRect: rect\n        };\n        if (!this.viewData[i].prop.k) {\n          this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n        }\n      }\n    }\n    this.maskElement = createNS(maskType);\n    len = currentMasks.length;\n    for (i = 0; i < len; i += 1) {\n      this.maskElement.appendChild(currentMasks[i]);\n    }\n    if (count > 0) {\n      this.maskElement.setAttribute('id', layerId);\n      this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n      defs.appendChild(this.maskElement);\n    }\n    if (this.viewData.length) {\n      this.element.addRenderableComponent(this);\n    }\n  }\n  MaskElement.prototype.getMaskProperty = function (pos) {\n    return this.viewData[pos].prop;\n  };\n  MaskElement.prototype.renderFrame = function (isFirstFrame) {\n    var finalMat = this.element.finalTransform.mat;\n    var i;\n    var len = this.masksProperties.length;\n    for (i = 0; i < len; i += 1) {\n      if (this.viewData[i].prop._mdf || isFirstFrame) {\n        this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n      }\n      if (this.viewData[i].op._mdf || isFirstFrame) {\n        this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n      }\n      if (this.masksProperties[i].mode !== 'n') {\n        if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n          this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n        }\n        if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n          var feMorph = this.storedData[i].expan;\n          if (this.storedData[i].x.v < 0) {\n            if (this.storedData[i].lastOperator !== 'erode') {\n              this.storedData[i].lastOperator = 'erode';\n              this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n            }\n            feMorph.setAttribute('radius', -this.storedData[i].x.v);\n          } else {\n            if (this.storedData[i].lastOperator !== 'dilate') {\n              this.storedData[i].lastOperator = 'dilate';\n              this.storedData[i].elem.setAttribute('filter', null);\n            }\n            this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n          }\n        }\n      }\n    }\n  };\n  MaskElement.prototype.getMaskelement = function () {\n    return this.maskElement;\n  };\n  MaskElement.prototype.createLayerSolidPath = function () {\n    var path = 'M0,0 ';\n    path += ' h' + this.globalData.compSize.w;\n    path += ' v' + this.globalData.compSize.h;\n    path += ' h-' + this.globalData.compSize.w;\n    path += ' v-' + this.globalData.compSize.h + ' ';\n    return path;\n  };\n  MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n    var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n    var i;\n    var len;\n    len = pathNodes._length;\n    for (i = 1; i < len; i += 1) {\n      // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n      pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n    }\n    // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n    if (pathNodes.c && len > 1) {\n      pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n    }\n    // pathNodes.__renderedString = pathString;\n\n    if (viewData.lastPath !== pathString) {\n      var pathShapeValue = '';\n      if (viewData.elem) {\n        if (pathNodes.c) {\n          pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n        }\n        viewData.elem.setAttribute('d', pathShapeValue);\n      }\n      viewData.lastPath = pathString;\n    }\n  };\n  MaskElement.prototype.destroy = function () {\n    this.element = null;\n    this.globalData = null;\n    this.maskElement = null;\n    this.data = null;\n    this.masksProperties = null;\n  };\n\n  var filtersFactory = function () {\n    var ob = {};\n    ob.createFilter = createFilter;\n    ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n    function createFilter(filId, skipCoordinates) {\n      var fil = createNS('filter');\n      fil.setAttribute('id', filId);\n      if (skipCoordinates !== true) {\n        fil.setAttribute('filterUnits', 'objectBoundingBox');\n        fil.setAttribute('x', '0%');\n        fil.setAttribute('y', '0%');\n        fil.setAttribute('width', '100%');\n        fil.setAttribute('height', '100%');\n      }\n      return fil;\n    }\n    function createAlphaToLuminanceFilter() {\n      var feColorMatrix = createNS('feColorMatrix');\n      feColorMatrix.setAttribute('type', 'matrix');\n      feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n      feColorMatrix.setAttribute('values', '0 0 0 1 0  0 0 0 1 0  0 0 0 1 0  0 0 0 1 1');\n      return feColorMatrix;\n    }\n    return ob;\n  }();\n\n  var featureSupport = function () {\n    var ob = {\n      maskType: true,\n      svgLumaHidden: true,\n      offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n    };\n    if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n      ob.maskType = false;\n    }\n    if (/firefox/i.test(navigator.userAgent)) {\n      ob.svgLumaHidden = false;\n    }\n    return ob;\n  }();\n\n  var registeredEffects$1 = {};\n  var idPrefix = 'filter_result_';\n  function SVGEffects(elem) {\n    var i;\n    var source = 'SourceGraphic';\n    var len = elem.data.ef ? elem.data.ef.length : 0;\n    var filId = createElementID();\n    var fil = filtersFactory.createFilter(filId, true);\n    var count = 0;\n    this.filters = [];\n    var filterManager;\n    for (i = 0; i < len; i += 1) {\n      filterManager = null;\n      var type = elem.data.ef[i].ty;\n      if (registeredEffects$1[type]) {\n        var Effect = registeredEffects$1[type].effect;\n        filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n        source = idPrefix + count;\n        if (registeredEffects$1[type].countsAsEffect) {\n          count += 1;\n        }\n      }\n      if (filterManager) {\n        this.filters.push(filterManager);\n      }\n    }\n    if (count) {\n      elem.globalData.defs.appendChild(fil);\n      elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n    }\n    if (this.filters.length) {\n      elem.addRenderableComponent(this);\n    }\n  }\n  SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n    var i;\n    var len = this.filters.length;\n    for (i = 0; i < len; i += 1) {\n      this.filters[i].renderFrame(_isFirstFrame);\n    }\n  };\n  SVGEffects.prototype.getEffects = function (type) {\n    var i;\n    var len = this.filters.length;\n    var effects = [];\n    for (i = 0; i < len; i += 1) {\n      if (this.filters[i].type === type) {\n        effects.push(this.filters[i]);\n      }\n    }\n    return effects;\n  };\n  function registerEffect$1(id, effect, countsAsEffect) {\n    registeredEffects$1[id] = {\n      effect: effect,\n      countsAsEffect: countsAsEffect\n    };\n  }\n\n  function SVGBaseElement() {}\n  SVGBaseElement.prototype = {\n    initRendererElement: function initRendererElement() {\n      this.layerElement = createNS('g');\n    },\n    createContainerElements: function createContainerElements() {\n      this.matteElement = createNS('g');\n      this.transformedElement = this.layerElement;\n      this.maskedElement = this.layerElement;\n      this._sizeChanged = false;\n      var layerElementParent = null;\n      // If this layer acts as a mask for the following layer\n      if (this.data.td) {\n        this.matteMasks = {};\n        var gg = createNS('g');\n        gg.setAttribute('id', this.layerId);\n        gg.appendChild(this.layerElement);\n        layerElementParent = gg;\n        this.globalData.defs.appendChild(gg);\n      } else if (this.data.tt) {\n        this.matteElement.appendChild(this.layerElement);\n        layerElementParent = this.matteElement;\n        this.baseElement = this.matteElement;\n      } else {\n        this.baseElement = this.layerElement;\n      }\n      if (this.data.ln) {\n        this.layerElement.setAttribute('id', this.data.ln);\n      }\n      if (this.data.cl) {\n        this.layerElement.setAttribute('class', this.data.cl);\n      }\n      // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n      if (this.data.ty === 0 && !this.data.hd) {\n        var cp = createNS('clipPath');\n        var pt = createNS('path');\n        pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n        var clipId = createElementID();\n        cp.setAttribute('id', clipId);\n        cp.appendChild(pt);\n        this.globalData.defs.appendChild(cp);\n        if (this.checkMasks()) {\n          var cpGroup = createNS('g');\n          cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n          cpGroup.appendChild(this.layerElement);\n          this.transformedElement = cpGroup;\n          if (layerElementParent) {\n            layerElementParent.appendChild(this.transformedElement);\n          } else {\n            this.baseElement = this.transformedElement;\n          }\n        } else {\n          this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n        }\n      }\n      if (this.data.bm !== 0) {\n        this.setBlendMode();\n      }\n    },\n    renderElement: function renderElement() {\n      if (this.finalTransform._localMatMdf) {\n        this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n      }\n      if (this.finalTransform._opMdf) {\n        this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n      }\n    },\n    destroyBaseElement: function destroyBaseElement() {\n      this.layerElement = null;\n      this.matteElement = null;\n      this.maskManager.destroy();\n    },\n    getBaseElement: function getBaseElement() {\n      if (this.data.hd) {\n        return null;\n      }\n      return this.baseElement;\n    },\n    createRenderableComponents: function createRenderableComponents() {\n      this.maskManager = new MaskElement(this.data, this, this.globalData);\n      this.renderableEffectsManager = new SVGEffects(this);\n      this.searchEffectTransforms();\n    },\n    getMatte: function getMatte(matteType) {\n      // This should not be a common case. But for backward compatibility, we'll create the matte object.\n      // It solves animations that have two consecutive layers marked as matte masks.\n      // Which is an undefined behavior in AE.\n      if (!this.matteMasks) {\n        this.matteMasks = {};\n      }\n      if (!this.matteMasks[matteType]) {\n        var id = this.layerId + '_' + matteType;\n        var filId;\n        var fil;\n        var useElement;\n        var gg;\n        if (matteType === 1 || matteType === 3) {\n          var masker = createNS('mask');\n          masker.setAttribute('id', id);\n          masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n          useElement = createNS('use');\n          useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n          masker.appendChild(useElement);\n          this.globalData.defs.appendChild(masker);\n          if (!featureSupport.maskType && matteType === 1) {\n            masker.setAttribute('mask-type', 'luminance');\n            filId = createElementID();\n            fil = filtersFactory.createFilter(filId);\n            this.globalData.defs.appendChild(fil);\n            fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n            gg = createNS('g');\n            gg.appendChild(useElement);\n            masker.appendChild(gg);\n            gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n          }\n        } else if (matteType === 2) {\n          var maskGroup = createNS('mask');\n          maskGroup.setAttribute('id', id);\n          maskGroup.setAttribute('mask-type', 'alpha');\n          var maskGrouper = createNS('g');\n          maskGroup.appendChild(maskGrouper);\n          filId = createElementID();\n          fil = filtersFactory.createFilter(filId);\n          /// /\n          var feCTr = createNS('feComponentTransfer');\n          feCTr.setAttribute('in', 'SourceGraphic');\n          fil.appendChild(feCTr);\n          var feFunc = createNS('feFuncA');\n          feFunc.setAttribute('type', 'table');\n          feFunc.setAttribute('tableValues', '1.0 0.0');\n          feCTr.appendChild(feFunc);\n          /// /\n          this.globalData.defs.appendChild(fil);\n          var alphaRect = createNS('rect');\n          alphaRect.setAttribute('width', this.comp.data.w);\n          alphaRect.setAttribute('height', this.comp.data.h);\n          alphaRect.setAttribute('x', '0');\n          alphaRect.setAttribute('y', '0');\n          alphaRect.setAttribute('fill', '#ffffff');\n          alphaRect.setAttribute('opacity', '0');\n          maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n          maskGrouper.appendChild(alphaRect);\n          useElement = createNS('use');\n          useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n          maskGrouper.appendChild(useElement);\n          if (!featureSupport.maskType) {\n            maskGroup.setAttribute('mask-type', 'luminance');\n            fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n            gg = createNS('g');\n            maskGrouper.appendChild(alphaRect);\n            gg.appendChild(this.layerElement);\n            maskGrouper.appendChild(gg);\n          }\n          this.globalData.defs.appendChild(maskGroup);\n        }\n        this.matteMasks[matteType] = id;\n      }\n      return this.matteMasks[matteType];\n    },\n    setMatte: function setMatte(id) {\n      if (!this.matteElement) {\n        return;\n      }\n      this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n    }\n  };\n\n  /**\n   * @file\n   * Handles AE's layer parenting property.\n   *\n   */\n\n  function HierarchyElement() {}\n  HierarchyElement.prototype = {\n    /**\n       * @function\n       * Initializes hierarchy properties\n       *\n       */\n    initHierarchy: function initHierarchy() {\n      // element's parent list\n      this.hierarchy = [];\n      // if element is parent of another layer _isParent will be true\n      this._isParent = false;\n      this.checkParenting();\n    },\n    /**\n       * @function\n       * Sets layer's hierarchy.\n       * @param {array} hierarch\n       * layer's parent list\n       *\n       */\n    setHierarchy: function setHierarchy(hierarchy) {\n      this.hierarchy = hierarchy;\n    },\n    /**\n       * @function\n       * Sets layer as parent.\n       *\n       */\n    setAsParent: function setAsParent() {\n      this._isParent = true;\n    },\n    /**\n       * @function\n       * Searches layer's parenting chain\n       *\n       */\n    checkParenting: function checkParenting() {\n      if (this.data.parent !== undefined) {\n        this.comp.buildElementParenting(this, this.data.parent, []);\n      }\n    }\n  };\n\n  function RenderableDOMElement() {}\n  (function () {\n    var _prototype = {\n      initElement: function initElement(data, globalData, comp) {\n        this.initFrame();\n        this.initBaseData(data, globalData, comp);\n        this.initTransform(data, globalData, comp);\n        this.initHierarchy();\n        this.initRenderable();\n        this.initRendererElement();\n        this.createContainerElements();\n        this.createRenderableComponents();\n        this.createContent();\n        this.hide();\n      },\n      hide: function hide() {\n        // console.log('HIDE', this);\n        if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n          var elem = this.baseElement || this.layerElement;\n          elem.style.display = 'none';\n          this.hidden = true;\n        }\n      },\n      show: function show() {\n        // console.log('SHOW', this);\n        if (this.isInRange && !this.isTransparent) {\n          if (!this.data.hd) {\n            var elem = this.baseElement || this.layerElement;\n            elem.style.display = 'block';\n          }\n          this.hidden = false;\n          this._isFirstFrame = true;\n        }\n      },\n      renderFrame: function renderFrame() {\n        // If it is exported as hidden (data.hd === true) no need to render\n        // If it is not visible no need to render\n        if (this.data.hd || this.hidden) {\n          return;\n        }\n        this.renderTransform();\n        this.renderRenderable();\n        this.renderLocalTransform();\n        this.renderElement();\n        this.renderInnerContent();\n        if (this._isFirstFrame) {\n          this._isFirstFrame = false;\n        }\n      },\n      renderInnerContent: function renderInnerContent() {},\n      prepareFrame: function prepareFrame(num) {\n        this._mdf = false;\n        this.prepareRenderableFrame(num);\n        this.prepareProperties(num, this.isInRange);\n        this.checkTransparency();\n      },\n      destroy: function destroy() {\n        this.innerElem = null;\n        this.destroyBaseElement();\n      }\n    };\n    extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n  })();\n\n  function IImageElement(data, globalData, comp) {\n    this.assetData = globalData.getAssetData(data.refId);\n    if (this.assetData && this.assetData.sid) {\n      this.assetData = globalData.slotManager.getProp(this.assetData);\n    }\n    this.initElement(data, globalData, comp);\n    this.sourceRect = {\n      top: 0,\n      left: 0,\n      width: this.assetData.w,\n      height: this.assetData.h\n    };\n  }\n  extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n  IImageElement.prototype.createContent = function () {\n    var assetPath = this.globalData.getAssetsPath(this.assetData);\n    this.innerElem = createNS('image');\n    this.innerElem.setAttribute('width', this.assetData.w + 'px');\n    this.innerElem.setAttribute('height', this.assetData.h + 'px');\n    this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n    this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n    this.layerElement.appendChild(this.innerElem);\n  };\n  IImageElement.prototype.sourceRectAtTime = function () {\n    return this.sourceRect;\n  };\n\n  function ProcessedElement(element, position) {\n    this.elem = element;\n    this.pos = position;\n  }\n\n  function IShapeElement() {}\n  IShapeElement.prototype = {\n    addShapeToModifiers: function addShapeToModifiers(data) {\n      var i;\n      var len = this.shapeModifiers.length;\n      for (i = 0; i < len; i += 1) {\n        this.shapeModifiers[i].addShape(data);\n      }\n    },\n    isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n      var i = 0;\n      var len = this.shapeModifiers.length;\n      while (i < len) {\n        if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n          return true;\n        }\n      }\n      return false;\n    },\n    renderModifiers: function renderModifiers() {\n      if (!this.shapeModifiers.length) {\n        return;\n      }\n      var i;\n      var len = this.shapes.length;\n      for (i = 0; i < len; i += 1) {\n        this.shapes[i].sh.reset();\n      }\n      len = this.shapeModifiers.length;\n      var shouldBreakProcess;\n      for (i = len - 1; i >= 0; i -= 1) {\n        shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame);\n        // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n        // TODO: find a better solution for this\n        if (shouldBreakProcess) {\n          break;\n        }\n      }\n    },\n    searchProcessedElement: function searchProcessedElement(elem) {\n      var elements = this.processedElements;\n      var i = 0;\n      var len = elements.length;\n      while (i < len) {\n        if (elements[i].elem === elem) {\n          return elements[i].pos;\n        }\n        i += 1;\n      }\n      return 0;\n    },\n    addProcessedElement: function addProcessedElement(elem, pos) {\n      var elements = this.processedElements;\n      var i = elements.length;\n      while (i) {\n        i -= 1;\n        if (elements[i].elem === elem) {\n          elements[i].pos = pos;\n          return;\n        }\n      }\n      elements.push(new ProcessedElement(elem, pos));\n    },\n    prepareFrame: function prepareFrame(num) {\n      this.prepareRenderableFrame(num);\n      this.prepareProperties(num, this.isInRange);\n    }\n  };\n\n  var lineCapEnum = {\n    1: 'butt',\n    2: 'round',\n    3: 'square'\n  };\n  var lineJoinEnum = {\n    1: 'miter',\n    2: 'round',\n    3: 'bevel'\n  };\n\n  function SVGShapeData(transformers, level, shape) {\n    this.caches = [];\n    this.styles = [];\n    this.transformers = transformers;\n    this.lStr = '';\n    this.sh = shape;\n    this.lvl = level;\n    // TODO find if there are some cases where _isAnimated can be false.\n    // For now, since shapes add up with other shapes. They have to be calculated every time.\n    // One way of finding out is checking if all styles associated to this shape depend only of this shape\n    this._isAnimated = !!shape.k;\n    // TODO: commenting this for now since all shapes are animated\n    var i = 0;\n    var len = transformers.length;\n    while (i < len) {\n      if (transformers[i].mProps.dynamicProperties.length) {\n        this._isAnimated = true;\n        break;\n      }\n      i += 1;\n    }\n  }\n  SVGShapeData.prototype.setAsAnimated = function () {\n    this._isAnimated = true;\n  };\n\n  function SVGStyleData(data, level) {\n    this.data = data;\n    this.type = data.ty;\n    this.d = '';\n    this.lvl = level;\n    this._mdf = false;\n    this.closed = data.hd === true;\n    this.pElem = createNS('path');\n    this.msElem = null;\n  }\n  SVGStyleData.prototype.reset = function () {\n    this.d = '';\n    this._mdf = false;\n  };\n\n  function DashProperty(elem, data, renderer, container) {\n    this.elem = elem;\n    this.frameId = -1;\n    this.dataProps = createSizedArray(data.length);\n    this.renderer = renderer;\n    this.k = false;\n    this.dashStr = '';\n    this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n    this.dashoffset = createTypedArray('float32', 1);\n    this.initDynamicPropertyContainer(container);\n    var i;\n    var len = data.length || 0;\n    var prop;\n    for (i = 0; i < len; i += 1) {\n      prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n      this.k = prop.k || this.k;\n      this.dataProps[i] = {\n        n: data[i].n,\n        p: prop\n      };\n    }\n    if (!this.k) {\n      this.getValue(true);\n    }\n    this._isAnimated = this.k;\n  }\n  DashProperty.prototype.getValue = function (forceRender) {\n    if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n      return;\n    }\n    this.frameId = this.elem.globalData.frameId;\n    this.iterateDynamicProperties();\n    this._mdf = this._mdf || forceRender;\n    if (this._mdf) {\n      var i = 0;\n      var len = this.dataProps.length;\n      if (this.renderer === 'svg') {\n        this.dashStr = '';\n      }\n      for (i = 0; i < len; i += 1) {\n        if (this.dataProps[i].n !== 'o') {\n          if (this.renderer === 'svg') {\n            this.dashStr += ' ' + this.dataProps[i].p.v;\n          } else {\n            this.dashArray[i] = this.dataProps[i].p.v;\n          }\n        } else {\n          this.dashoffset[0] = this.dataProps[i].p.v;\n        }\n      }\n    }\n  };\n  extendPrototype([DynamicPropertyContainer], DashProperty);\n\n  function SVGStrokeStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n    this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n    this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n    this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n    this.style = styleOb;\n    this._isAnimated = !!this._isAnimated;\n  }\n  extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n  function SVGFillStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n    this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n    this.style = styleOb;\n  }\n  extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n  function SVGNoStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.style = styleOb;\n  }\n  extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n  function GradientProperty(elem, data, container) {\n    this.data = data;\n    this.c = createTypedArray('uint8c', data.p * 4);\n    var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n    this.o = createTypedArray('float32', cLength);\n    this._cmdf = false;\n    this._omdf = false;\n    this._collapsable = this.checkCollapsable();\n    this._hasOpacity = cLength;\n    this.initDynamicPropertyContainer(container);\n    this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n    this.k = this.prop.k;\n    this.getValue(true);\n  }\n  GradientProperty.prototype.comparePoints = function (values, points) {\n    var i = 0;\n    var len = this.o.length / 2;\n    var diff;\n    while (i < len) {\n      diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n      if (diff > 0.01) {\n        return false;\n      }\n      i += 1;\n    }\n    return true;\n  };\n  GradientProperty.prototype.checkCollapsable = function () {\n    if (this.o.length / 2 !== this.c.length / 4) {\n      return false;\n    }\n    if (this.data.k.k[0].s) {\n      var i = 0;\n      var len = this.data.k.k.length;\n      while (i < len) {\n        if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n          return false;\n        }\n        i += 1;\n      }\n    } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n      return false;\n    }\n    return true;\n  };\n  GradientProperty.prototype.getValue = function (forceRender) {\n    this.prop.getValue();\n    this._mdf = false;\n    this._cmdf = false;\n    this._omdf = false;\n    if (this.prop._mdf || forceRender) {\n      var i;\n      var len = this.data.p * 4;\n      var mult;\n      var val;\n      for (i = 0; i < len; i += 1) {\n        mult = i % 4 === 0 ? 100 : 255;\n        val = Math.round(this.prop.v[i] * mult);\n        if (this.c[i] !== val) {\n          this.c[i] = val;\n          this._cmdf = !forceRender;\n        }\n      }\n      if (this.o.length) {\n        len = this.prop.v.length;\n        for (i = this.data.p * 4; i < len; i += 1) {\n          mult = i % 2 === 0 ? 100 : 1;\n          val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n          if (this.o[i - this.data.p * 4] !== val) {\n            this.o[i - this.data.p * 4] = val;\n            this._omdf = !forceRender;\n          }\n        }\n      }\n      this._mdf = !forceRender;\n    }\n  };\n  extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n  function SVGGradientFillStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.initGradientData(elem, data, styleOb);\n  }\n  SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n    this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n    this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n    this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n    this.h = PropertyFactory.getProp(elem, data.h || {\n      k: 0\n    }, 0, 0.01, this);\n    this.a = PropertyFactory.getProp(elem, data.a || {\n      k: 0\n    }, 0, degToRads, this);\n    this.g = new GradientProperty(elem, data.g, this);\n    this.style = styleOb;\n    this.stops = [];\n    this.setGradientData(styleOb.pElem, data);\n    this.setGradientOpacity(data, styleOb);\n    this._isAnimated = !!this._isAnimated;\n  };\n  SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n    var gradientId = createElementID();\n    var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n    gfill.setAttribute('id', gradientId);\n    gfill.setAttribute('spreadMethod', 'pad');\n    gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n    var stops = [];\n    var stop;\n    var j;\n    var jLen;\n    jLen = data.g.p * 4;\n    for (j = 0; j < jLen; j += 4) {\n      stop = createNS('stop');\n      gfill.appendChild(stop);\n      stops.push(stop);\n    }\n    pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n    this.gf = gfill;\n    this.cst = stops;\n  };\n  SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n    if (this.g._hasOpacity && !this.g._collapsable) {\n      var stop;\n      var j;\n      var jLen;\n      var mask = createNS('mask');\n      var maskElement = createNS('path');\n      mask.appendChild(maskElement);\n      var opacityId = createElementID();\n      var maskId = createElementID();\n      mask.setAttribute('id', maskId);\n      var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n      opFill.setAttribute('id', opacityId);\n      opFill.setAttribute('spreadMethod', 'pad');\n      opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n      jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n      var stops = this.stops;\n      for (j = data.g.p * 4; j < jLen; j += 2) {\n        stop = createNS('stop');\n        stop.setAttribute('stop-color', 'rgb(255,255,255)');\n        opFill.appendChild(stop);\n        stops.push(stop);\n      }\n      maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n      if (data.ty === 'gs') {\n        maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n        maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n        if (data.lj === 1) {\n          maskElement.setAttribute('stroke-miterlimit', data.ml);\n        }\n      }\n      this.of = opFill;\n      this.ms = mask;\n      this.ost = stops;\n      this.maskId = maskId;\n      styleOb.msElem = maskElement;\n    }\n  };\n  extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n  function SVGGradientStrokeStyleData(elem, data, styleOb) {\n    this.initDynamicPropertyContainer(elem);\n    this.getValue = this.iterateDynamicProperties;\n    this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n    this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n    this.initGradientData(elem, data, styleOb);\n    this._isAnimated = !!this._isAnimated;\n  }\n  extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n  function ShapeGroupData() {\n    this.it = [];\n    this.prevViewData = [];\n    this.gr = createNS('g');\n  }\n\n  function SVGTransformData(mProps, op, container) {\n    this.transform = {\n      mProps: mProps,\n      op: op,\n      container: container\n    };\n    this.elements = [];\n    this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n  }\n\n  var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n    if (length === 0) {\n      return '';\n    }\n    var _o = pathNodes.o;\n    var _i = pathNodes.i;\n    var _v = pathNodes.v;\n    var i;\n    var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n    for (i = 1; i < length; i += 1) {\n      shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n    }\n    if (closed && length) {\n      shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n      shapeString += 'z';\n    }\n    return shapeString;\n  };\n\n  var SVGElementsRenderer = function () {\n    var _identityMatrix = new Matrix();\n    var _matrixHelper = new Matrix();\n    var ob = {\n      createRenderFunction: createRenderFunction\n    };\n    function createRenderFunction(data) {\n      switch (data.ty) {\n        case 'fl':\n          return renderFill;\n        case 'gf':\n          return renderGradient;\n        case 'gs':\n          return renderGradientStroke;\n        case 'st':\n          return renderStroke;\n        case 'sh':\n        case 'el':\n        case 'rc':\n        case 'sr':\n          return renderPath;\n        case 'tr':\n          return renderContentTransform;\n        case 'no':\n          return renderNoop;\n        default:\n          return null;\n      }\n    }\n    function renderContentTransform(styleData, itemData, isFirstFrame) {\n      if (isFirstFrame || itemData.transform.op._mdf) {\n        itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n      }\n      if (isFirstFrame || itemData.transform.mProps._mdf) {\n        itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n      }\n    }\n    function renderNoop() {}\n    function renderPath(styleData, itemData, isFirstFrame) {\n      var j;\n      var jLen;\n      var pathStringTransformed;\n      var redraw;\n      var pathNodes;\n      var l;\n      var lLen = itemData.styles.length;\n      var lvl = itemData.lvl;\n      var paths;\n      var mat;\n      var iterations;\n      var k;\n      for (l = 0; l < lLen; l += 1) {\n        redraw = itemData.sh._mdf || isFirstFrame;\n        if (itemData.styles[l].lvl < lvl) {\n          mat = _matrixHelper.reset();\n          iterations = lvl - itemData.styles[l].lvl;\n          k = itemData.transformers.length - 1;\n          while (!redraw && iterations > 0) {\n            redraw = itemData.transformers[k].mProps._mdf || redraw;\n            iterations -= 1;\n            k -= 1;\n          }\n          if (redraw) {\n            iterations = lvl - itemData.styles[l].lvl;\n            k = itemData.transformers.length - 1;\n            while (iterations > 0) {\n              mat.multiply(itemData.transformers[k].mProps.v);\n              iterations -= 1;\n              k -= 1;\n            }\n          }\n        } else {\n          mat = _identityMatrix;\n        }\n        paths = itemData.sh.paths;\n        jLen = paths._length;\n        if (redraw) {\n          pathStringTransformed = '';\n          for (j = 0; j < jLen; j += 1) {\n            pathNodes = paths.shapes[j];\n            if (pathNodes && pathNodes._length) {\n              pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n            }\n          }\n          itemData.caches[l] = pathStringTransformed;\n        } else {\n          pathStringTransformed = itemData.caches[l];\n        }\n        itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n        itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n      }\n    }\n    function renderFill(styleData, itemData, isFirstFrame) {\n      var styleElem = itemData.style;\n      if (itemData.c._mdf || isFirstFrame) {\n        styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n      }\n      if (itemData.o._mdf || isFirstFrame) {\n        styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n      }\n    }\n    function renderGradientStroke(styleData, itemData, isFirstFrame) {\n      renderGradient(styleData, itemData, isFirstFrame);\n      renderStroke(styleData, itemData, isFirstFrame);\n    }\n    function renderGradient(styleData, itemData, isFirstFrame) {\n      var gfill = itemData.gf;\n      var hasOpacity = itemData.g._hasOpacity;\n      var pt1 = itemData.s.v;\n      var pt2 = itemData.e.v;\n      if (itemData.o._mdf || isFirstFrame) {\n        var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n        itemData.style.pElem.setAttribute(attr, itemData.o.v);\n      }\n      if (itemData.s._mdf || isFirstFrame) {\n        var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n        var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n        gfill.setAttribute(attr1, pt1[0]);\n        gfill.setAttribute(attr2, pt1[1]);\n        if (hasOpacity && !itemData.g._collapsable) {\n          itemData.of.setAttribute(attr1, pt1[0]);\n          itemData.of.setAttribute(attr2, pt1[1]);\n        }\n      }\n      var stops;\n      var i;\n      var len;\n      var stop;\n      if (itemData.g._cmdf || isFirstFrame) {\n        stops = itemData.cst;\n        var cValues = itemData.g.c;\n        len = stops.length;\n        for (i = 0; i < len; i += 1) {\n          stop = stops[i];\n          stop.setAttribute('offset', cValues[i * 4] + '%');\n          stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n        }\n      }\n      if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n        var oValues = itemData.g.o;\n        if (itemData.g._collapsable) {\n          stops = itemData.cst;\n        } else {\n          stops = itemData.ost;\n        }\n        len = stops.length;\n        for (i = 0; i < len; i += 1) {\n          stop = stops[i];\n          if (!itemData.g._collapsable) {\n            stop.setAttribute('offset', oValues[i * 2] + '%');\n          }\n          stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n        }\n      }\n      if (styleData.t === 1) {\n        if (itemData.e._mdf || isFirstFrame) {\n          gfill.setAttribute('x2', pt2[0]);\n          gfill.setAttribute('y2', pt2[1]);\n          if (hasOpacity && !itemData.g._collapsable) {\n            itemData.of.setAttribute('x2', pt2[0]);\n            itemData.of.setAttribute('y2', pt2[1]);\n          }\n        }\n      } else {\n        var rad;\n        if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n          rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n          gfill.setAttribute('r', rad);\n          if (hasOpacity && !itemData.g._collapsable) {\n            itemData.of.setAttribute('r', rad);\n          }\n        }\n        if (itemData.s._mdf || itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n          if (!rad) {\n            rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n          }\n          var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n          var percent = itemData.h.v;\n          if (percent >= 1) {\n            percent = 0.99;\n          } else if (percent <= -1) {\n            percent = -0.99;\n          }\n          var dist = rad * percent;\n          var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n          var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n          gfill.setAttribute('fx', x);\n          gfill.setAttribute('fy', y);\n          if (hasOpacity && !itemData.g._collapsable) {\n            itemData.of.setAttribute('fx', x);\n            itemData.of.setAttribute('fy', y);\n          }\n        }\n        // gfill.setAttribute('fy','200');\n      }\n    }\n    function renderStroke(styleData, itemData, isFirstFrame) {\n      var styleElem = itemData.style;\n      var d = itemData.d;\n      if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n        styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n        styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n      }\n      if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n        styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n      }\n      if (itemData.o._mdf || isFirstFrame) {\n        styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n      }\n      if (itemData.w._mdf || isFirstFrame) {\n        styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n        if (styleElem.msElem) {\n          styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n        }\n      }\n    }\n    return ob;\n  }();\n\n  function SVGShapeElement(data, globalData, comp) {\n    // List of drawable elements\n    this.shapes = [];\n    // Full shape data\n    this.shapesData = data.shapes;\n    // List of styles that will be applied to shapes\n    this.stylesList = [];\n    // List of modifiers that will be applied to shapes\n    this.shapeModifiers = [];\n    // List of items in shape tree\n    this.itemsData = [];\n    // List of items in previous shape tree\n    this.processedElements = [];\n    // List of animated components\n    this.animatedContents = [];\n    this.initElement(data, globalData, comp);\n    // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n    // List of elements that have been created\n    this.prevViewData = [];\n    // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n  }\n  extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n  SVGShapeElement.prototype.initSecondaryElement = function () {};\n  SVGShapeElement.prototype.identityMatrix = new Matrix();\n  SVGShapeElement.prototype.buildExpressionInterface = function () {};\n  SVGShapeElement.prototype.createContent = function () {\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n    this.filterUniqueShapes();\n  };\n\n  /*\n  This method searches for multiple shapes that affect a single element and one of them is animated\n  */\n  SVGShapeElement.prototype.filterUniqueShapes = function () {\n    var i;\n    var len = this.shapes.length;\n    var shape;\n    var j;\n    var jLen = this.stylesList.length;\n    var style;\n    var tempShapes = [];\n    var areAnimated = false;\n    for (j = 0; j < jLen; j += 1) {\n      style = this.stylesList[j];\n      areAnimated = false;\n      tempShapes.length = 0;\n      for (i = 0; i < len; i += 1) {\n        shape = this.shapes[i];\n        if (shape.styles.indexOf(style) !== -1) {\n          tempShapes.push(shape);\n          areAnimated = shape._isAnimated || areAnimated;\n        }\n      }\n      if (tempShapes.length > 1 && areAnimated) {\n        this.setShapesAsAnimated(tempShapes);\n      }\n    }\n  };\n  SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n    var i;\n    var len = shapes.length;\n    for (i = 0; i < len; i += 1) {\n      shapes[i].setAsAnimated();\n    }\n  };\n  SVGShapeElement.prototype.createStyleElement = function (data, level) {\n    // TODO: prevent drawing of hidden styles\n    var elementData;\n    var styleOb = new SVGStyleData(data, level);\n    var pathElement = styleOb.pElem;\n    if (data.ty === 'st') {\n      elementData = new SVGStrokeStyleData(this, data, styleOb);\n    } else if (data.ty === 'fl') {\n      elementData = new SVGFillStyleData(this, data, styleOb);\n    } else if (data.ty === 'gf' || data.ty === 'gs') {\n      var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n      elementData = new GradientConstructor(this, data, styleOb);\n      this.globalData.defs.appendChild(elementData.gf);\n      if (elementData.maskId) {\n        this.globalData.defs.appendChild(elementData.ms);\n        this.globalData.defs.appendChild(elementData.of);\n        pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n      }\n    } else if (data.ty === 'no') {\n      elementData = new SVGNoStyleData(this, data, styleOb);\n    }\n    if (data.ty === 'st' || data.ty === 'gs') {\n      pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n      pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n      pathElement.setAttribute('fill-opacity', '0');\n      if (data.lj === 1) {\n        pathElement.setAttribute('stroke-miterlimit', data.ml);\n      }\n    }\n    if (data.r === 2) {\n      pathElement.setAttribute('fill-rule', 'evenodd');\n    }\n    if (data.ln) {\n      pathElement.setAttribute('id', data.ln);\n    }\n    if (data.cl) {\n      pathElement.setAttribute('class', data.cl);\n    }\n    if (data.bm) {\n      pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n    }\n    this.stylesList.push(styleOb);\n    this.addToAnimatedContents(data, elementData);\n    return elementData;\n  };\n  SVGShapeElement.prototype.createGroupElement = function (data) {\n    var elementData = new ShapeGroupData();\n    if (data.ln) {\n      elementData.gr.setAttribute('id', data.ln);\n    }\n    if (data.cl) {\n      elementData.gr.setAttribute('class', data.cl);\n    }\n    if (data.bm) {\n      elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n    }\n    return elementData;\n  };\n  SVGShapeElement.prototype.createTransformElement = function (data, container) {\n    var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n    var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n    this.addToAnimatedContents(data, elementData);\n    return elementData;\n  };\n  SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n    var ty = 4;\n    if (data.ty === 'rc') {\n      ty = 5;\n    } else if (data.ty === 'el') {\n      ty = 6;\n    } else if (data.ty === 'sr') {\n      ty = 7;\n    }\n    var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n    var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n    this.shapes.push(elementData);\n    this.addShapeToModifiers(elementData);\n    this.addToAnimatedContents(data, elementData);\n    return elementData;\n  };\n  SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n    var i = 0;\n    var len = this.animatedContents.length;\n    while (i < len) {\n      if (this.animatedContents[i].element === element) {\n        return;\n      }\n      i += 1;\n    }\n    this.animatedContents.push({\n      fn: SVGElementsRenderer.createRenderFunction(data),\n      element: element,\n      data: data\n    });\n  };\n  SVGShapeElement.prototype.setElementStyles = function (elementData) {\n    var arr = elementData.styles;\n    var j;\n    var jLen = this.stylesList.length;\n    for (j = 0; j < jLen; j += 1) {\n      if (arr.indexOf(this.stylesList[j]) === -1 && !this.stylesList[j].closed) {\n        arr.push(this.stylesList[j]);\n      }\n    }\n  };\n  SVGShapeElement.prototype.reloadShapes = function () {\n    this._isFirstFrame = true;\n    var i;\n    var len = this.itemsData.length;\n    for (i = 0; i < len; i += 1) {\n      this.prevViewData[i] = this.itemsData[i];\n    }\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n    this.filterUniqueShapes();\n    len = this.dynamicProperties.length;\n    for (i = 0; i < len; i += 1) {\n      this.dynamicProperties[i].getValue();\n    }\n    this.renderModifiers();\n  };\n  SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n    var ownTransformers = [].concat(transformers);\n    var i;\n    var len = arr.length - 1;\n    var j;\n    var jLen;\n    var ownStyles = [];\n    var ownModifiers = [];\n    var currentTransform;\n    var modifier;\n    var processedPos;\n    for (i = len; i >= 0; i -= 1) {\n      processedPos = this.searchProcessedElement(arr[i]);\n      if (!processedPos) {\n        arr[i]._render = render;\n      } else {\n        itemsData[i] = prevViewData[processedPos - 1];\n      }\n      if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n        if (!processedPos) {\n          itemsData[i] = this.createStyleElement(arr[i], level);\n        } else {\n          itemsData[i].style.closed = arr[i].hd;\n        }\n        if (arr[i]._render) {\n          if (itemsData[i].style.pElem.parentNode !== container) {\n            container.appendChild(itemsData[i].style.pElem);\n          }\n        }\n        ownStyles.push(itemsData[i].style);\n      } else if (arr[i].ty === 'gr') {\n        if (!processedPos) {\n          itemsData[i] = this.createGroupElement(arr[i]);\n        } else {\n          jLen = itemsData[i].it.length;\n          for (j = 0; j < jLen; j += 1) {\n            itemsData[i].prevViewData[j] = itemsData[i].it[j];\n          }\n        }\n        this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n        if (arr[i]._render) {\n          if (itemsData[i].gr.parentNode !== container) {\n            container.appendChild(itemsData[i].gr);\n          }\n        }\n      } else if (arr[i].ty === 'tr') {\n        if (!processedPos) {\n          itemsData[i] = this.createTransformElement(arr[i], container);\n        }\n        currentTransform = itemsData[i].transform;\n        ownTransformers.push(currentTransform);\n      } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n        if (!processedPos) {\n          itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n        }\n        this.setElementStyles(itemsData[i]);\n      } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n        if (!processedPos) {\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\n          modifier.init(this, arr[i]);\n          itemsData[i] = modifier;\n          this.shapeModifiers.push(modifier);\n        } else {\n          modifier = itemsData[i];\n          modifier.closed = false;\n        }\n        ownModifiers.push(modifier);\n      } else if (arr[i].ty === 'rp') {\n        if (!processedPos) {\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\n          itemsData[i] = modifier;\n          modifier.init(this, arr, i, itemsData);\n          this.shapeModifiers.push(modifier);\n          render = false;\n        } else {\n          modifier = itemsData[i];\n          modifier.closed = true;\n        }\n        ownModifiers.push(modifier);\n      }\n      this.addProcessedElement(arr[i], i + 1);\n    }\n    len = ownStyles.length;\n    for (i = 0; i < len; i += 1) {\n      ownStyles[i].closed = true;\n    }\n    len = ownModifiers.length;\n    for (i = 0; i < len; i += 1) {\n      ownModifiers[i].closed = true;\n    }\n  };\n  SVGShapeElement.prototype.renderInnerContent = function () {\n    this.renderModifiers();\n    var i;\n    var len = this.stylesList.length;\n    for (i = 0; i < len; i += 1) {\n      this.stylesList[i].reset();\n    }\n    this.renderShape();\n    for (i = 0; i < len; i += 1) {\n      if (this.stylesList[i]._mdf || this._isFirstFrame) {\n        if (this.stylesList[i].msElem) {\n          this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d);\n          // Adding M0 0 fixes same mask bug on all browsers\n          this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n        }\n        this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n      }\n    }\n  };\n  SVGShapeElement.prototype.renderShape = function () {\n    var i;\n    var len = this.animatedContents.length;\n    var animatedContent;\n    for (i = 0; i < len; i += 1) {\n      animatedContent = this.animatedContents[i];\n      if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n        animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n      }\n    }\n  };\n  SVGShapeElement.prototype.destroy = function () {\n    this.destroyBaseElement();\n    this.shapesData = null;\n    this.itemsData = null;\n  };\n\n  function LetterProps(o, sw, sc, fc, m, p) {\n    this.o = o;\n    this.sw = sw;\n    this.sc = sc;\n    this.fc = fc;\n    this.m = m;\n    this.p = p;\n    this._mdf = {\n      o: true,\n      sw: !!sw,\n      sc: !!sc,\n      fc: !!fc,\n      m: true,\n      p: true\n    };\n  }\n  LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n    this._mdf.o = false;\n    this._mdf.sw = false;\n    this._mdf.sc = false;\n    this._mdf.fc = false;\n    this._mdf.m = false;\n    this._mdf.p = false;\n    var updated = false;\n    if (this.o !== o) {\n      this.o = o;\n      this._mdf.o = true;\n      updated = true;\n    }\n    if (this.sw !== sw) {\n      this.sw = sw;\n      this._mdf.sw = true;\n      updated = true;\n    }\n    if (this.sc !== sc) {\n      this.sc = sc;\n      this._mdf.sc = true;\n      updated = true;\n    }\n    if (this.fc !== fc) {\n      this.fc = fc;\n      this._mdf.fc = true;\n      updated = true;\n    }\n    if (this.m !== m) {\n      this.m = m;\n      this._mdf.m = true;\n      updated = true;\n    }\n    if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n      this.p = p;\n      this._mdf.p = true;\n      updated = true;\n    }\n    return updated;\n  };\n\n  function TextProperty(elem, data) {\n    this._frameId = initialDefaultFrame;\n    this.pv = '';\n    this.v = '';\n    this.kf = false;\n    this._isFirstFrame = true;\n    this._mdf = false;\n    if (data.d && data.d.sid) {\n      data.d = elem.globalData.slotManager.getProp(data.d);\n    }\n    this.data = data;\n    this.elem = elem;\n    this.comp = this.elem.comp;\n    this.keysIndex = 0;\n    this.canResize = false;\n    this.minimumFontSize = 1;\n    this.effectsSequence = [];\n    this.currentData = {\n      ascent: 0,\n      boxWidth: this.defaultBoxWidth,\n      f: '',\n      fStyle: '',\n      fWeight: '',\n      fc: '',\n      j: '',\n      justifyOffset: '',\n      l: [],\n      lh: 0,\n      lineWidths: [],\n      ls: '',\n      of: '',\n      s: '',\n      sc: '',\n      sw: 0,\n      t: 0,\n      tr: 0,\n      sz: 0,\n      ps: null,\n      fillColorAnim: false,\n      strokeColorAnim: false,\n      strokeWidthAnim: false,\n      yOffset: 0,\n      finalSize: 0,\n      finalText: [],\n      finalLineHeight: 0,\n      __complete: false\n    };\n    this.copyData(this.currentData, this.data.d.k[0].s);\n    if (!this.searchProperty()) {\n      this.completeTextData(this.currentData);\n    }\n  }\n  TextProperty.prototype.defaultBoxWidth = [0, 0];\n  TextProperty.prototype.copyData = function (obj, data) {\n    for (var s in data) {\n      if (Object.prototype.hasOwnProperty.call(data, s)) {\n        obj[s] = data[s];\n      }\n    }\n    return obj;\n  };\n  TextProperty.prototype.setCurrentData = function (data) {\n    if (!data.__complete) {\n      this.completeTextData(data);\n    }\n    this.currentData = data;\n    this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n    this._mdf = true;\n  };\n  TextProperty.prototype.searchProperty = function () {\n    return this.searchKeyframes();\n  };\n  TextProperty.prototype.searchKeyframes = function () {\n    this.kf = this.data.d.k.length > 1;\n    if (this.kf) {\n      this.addEffect(this.getKeyframeValue.bind(this));\n    }\n    return this.kf;\n  };\n  TextProperty.prototype.addEffect = function (effectFunction) {\n    this.effectsSequence.push(effectFunction);\n    this.elem.addDynamicProperty(this);\n  };\n  TextProperty.prototype.getValue = function (_finalValue) {\n    if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n      return;\n    }\n    this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n    var currentValue = this.currentData;\n    var currentIndex = this.keysIndex;\n    if (this.lock) {\n      this.setCurrentData(this.currentData);\n      return;\n    }\n    this.lock = true;\n    this._mdf = false;\n    var i;\n    var len = this.effectsSequence.length;\n    var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n    for (i = 0; i < len; i += 1) {\n      // Checking if index changed to prevent creating a new object every time the expression updates.\n      if (currentIndex !== this.keysIndex) {\n        finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n      } else {\n        finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n      }\n    }\n    if (currentValue !== finalValue) {\n      this.setCurrentData(finalValue);\n    }\n    this.v = this.currentData;\n    this.pv = this.v;\n    this.lock = false;\n    this.frameId = this.elem.globalData.frameId;\n  };\n  TextProperty.prototype.getKeyframeValue = function () {\n    var textKeys = this.data.d.k;\n    var frameNum = this.elem.comp.renderedFrame;\n    var i = 0;\n    var len = textKeys.length;\n    while (i <= len - 1) {\n      if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n        break;\n      }\n      i += 1;\n    }\n    if (this.keysIndex !== i) {\n      this.keysIndex = i;\n    }\n    return this.data.d.k[this.keysIndex].s;\n  };\n  TextProperty.prototype.buildFinalText = function (text) {\n    var charactersArray = [];\n    var i = 0;\n    var len = text.length;\n    var charCode;\n    var secondCharCode;\n    var shouldCombine = false;\n    var shouldCombineNext = false;\n    var currentChars = '';\n    while (i < len) {\n      shouldCombine = shouldCombineNext;\n      shouldCombineNext = false;\n      charCode = text.charCodeAt(i);\n      currentChars = text.charAt(i);\n      if (FontManager.isCombinedCharacter(charCode)) {\n        shouldCombine = true;\n        // It's a potential surrogate pair (this is the High surrogate)\n      } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n        if (FontManager.isRegionalFlag(text, i)) {\n          currentChars = text.substr(i, 14);\n        } else {\n          secondCharCode = text.charCodeAt(i + 1);\n          // It's a surrogate pair (this is the Low surrogate)\n          if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n            if (FontManager.isModifier(charCode, secondCharCode)) {\n              currentChars = text.substr(i, 2);\n              shouldCombine = true;\n            } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n              currentChars = text.substr(i, 4);\n            } else {\n              currentChars = text.substr(i, 2);\n            }\n          }\n        }\n      } else if (charCode > 0xDBFF) {\n        secondCharCode = text.charCodeAt(i + 1);\n        if (FontManager.isVariationSelector(charCode)) {\n          shouldCombine = true;\n        }\n      } else if (FontManager.isZeroWidthJoiner(charCode)) {\n        shouldCombine = true;\n        shouldCombineNext = true;\n      }\n      if (shouldCombine) {\n        charactersArray[charactersArray.length - 1] += currentChars;\n        shouldCombine = false;\n      } else {\n        charactersArray.push(currentChars);\n      }\n      i += currentChars.length;\n    }\n    return charactersArray;\n  };\n  TextProperty.prototype.completeTextData = function (documentData) {\n    documentData.__complete = true;\n    var fontManager = this.elem.globalData.fontManager;\n    var data = this.data;\n    var letters = [];\n    var i;\n    var len;\n    var newLineFlag;\n    var index = 0;\n    var val;\n    var anchorGrouping = data.m.g;\n    var currentSize = 0;\n    var currentPos = 0;\n    var currentLine = 0;\n    var lineWidths = [];\n    var lineWidth = 0;\n    var maxLineWidth = 0;\n    var j;\n    var jLen;\n    var fontData = fontManager.getFontByName(documentData.f);\n    var charData;\n    var cLength = 0;\n    var fontProps = getFontProperties(fontData);\n    documentData.fWeight = fontProps.weight;\n    documentData.fStyle = fontProps.style;\n    documentData.finalSize = documentData.s;\n    documentData.finalText = this.buildFinalText(documentData.t);\n    len = documentData.finalText.length;\n    documentData.finalLineHeight = documentData.lh;\n    var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n    var charCode;\n    if (documentData.sz) {\n      var flag = true;\n      var boxWidth = documentData.sz[0];\n      var boxHeight = documentData.sz[1];\n      var currentHeight;\n      var finalText;\n      while (flag) {\n        finalText = this.buildFinalText(documentData.t);\n        currentHeight = 0;\n        lineWidth = 0;\n        len = finalText.length;\n        trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n        var lastSpaceIndex = -1;\n        for (i = 0; i < len; i += 1) {\n          charCode = finalText[i].charCodeAt(0);\n          newLineFlag = false;\n          if (finalText[i] === ' ') {\n            lastSpaceIndex = i;\n          } else if (charCode === 13 || charCode === 3) {\n            lineWidth = 0;\n            newLineFlag = true;\n            currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n          }\n          if (fontManager.chars) {\n            charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n            cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n          } else {\n            // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n            cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n          }\n          if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n            if (lastSpaceIndex === -1) {\n              len += 1;\n            } else {\n              i = lastSpaceIndex;\n            }\n            currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n            finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r');\n            // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n            lastSpaceIndex = -1;\n            lineWidth = 0;\n          } else {\n            lineWidth += cLength;\n            lineWidth += trackingOffset;\n          }\n        }\n        currentHeight += fontData.ascent * documentData.finalSize / 100;\n        if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n          documentData.finalSize -= 1;\n          documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n        } else {\n          documentData.finalText = finalText;\n          len = documentData.finalText.length;\n          flag = false;\n        }\n      }\n    }\n    lineWidth = -trackingOffset;\n    cLength = 0;\n    var uncollapsedSpaces = 0;\n    var currentChar;\n    for (i = 0; i < len; i += 1) {\n      newLineFlag = false;\n      currentChar = documentData.finalText[i];\n      charCode = currentChar.charCodeAt(0);\n      if (charCode === 13 || charCode === 3) {\n        uncollapsedSpaces = 0;\n        lineWidths.push(lineWidth);\n        maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n        lineWidth = -2 * trackingOffset;\n        val = '';\n        newLineFlag = true;\n        currentLine += 1;\n      } else {\n        val = currentChar;\n      }\n      if (fontManager.chars) {\n        charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n        cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n      } else {\n        // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n        // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n        cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n      }\n\n      //\n      if (currentChar === ' ') {\n        uncollapsedSpaces += cLength + trackingOffset;\n      } else {\n        lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n        uncollapsedSpaces = 0;\n      }\n      letters.push({\n        l: cLength,\n        an: cLength,\n        add: currentSize,\n        n: newLineFlag,\n        anIndexes: [],\n        val: val,\n        line: currentLine,\n        animatorJustifyOffset: 0\n      });\n      if (anchorGrouping == 2) {\n        // eslint-disable-line eqeqeq\n        currentSize += cLength;\n        if (val === '' || val === ' ' || i === len - 1) {\n          if (val === '' || val === ' ') {\n            currentSize -= cLength;\n          }\n          while (currentPos <= i) {\n            letters[currentPos].an = currentSize;\n            letters[currentPos].ind = index;\n            letters[currentPos].extra = cLength;\n            currentPos += 1;\n          }\n          index += 1;\n          currentSize = 0;\n        }\n      } else if (anchorGrouping == 3) {\n        // eslint-disable-line eqeqeq\n        currentSize += cLength;\n        if (val === '' || i === len - 1) {\n          if (val === '') {\n            currentSize -= cLength;\n          }\n          while (currentPos <= i) {\n            letters[currentPos].an = currentSize;\n            letters[currentPos].ind = index;\n            letters[currentPos].extra = cLength;\n            currentPos += 1;\n          }\n          currentSize = 0;\n          index += 1;\n        }\n      } else {\n        letters[index].ind = index;\n        letters[index].extra = 0;\n        index += 1;\n      }\n    }\n    documentData.l = letters;\n    maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n    lineWidths.push(lineWidth);\n    if (documentData.sz) {\n      documentData.boxWidth = documentData.sz[0];\n      documentData.justifyOffset = 0;\n    } else {\n      documentData.boxWidth = maxLineWidth;\n      switch (documentData.j) {\n        case 1:\n          documentData.justifyOffset = -documentData.boxWidth;\n          break;\n        case 2:\n          documentData.justifyOffset = -documentData.boxWidth / 2;\n          break;\n        default:\n          documentData.justifyOffset = 0;\n      }\n    }\n    documentData.lineWidths = lineWidths;\n    var animators = data.a;\n    var animatorData;\n    var letterData;\n    jLen = animators.length;\n    var based;\n    var ind;\n    var indexes = [];\n    for (j = 0; j < jLen; j += 1) {\n      animatorData = animators[j];\n      if (animatorData.a.sc) {\n        documentData.strokeColorAnim = true;\n      }\n      if (animatorData.a.sw) {\n        documentData.strokeWidthAnim = true;\n      }\n      if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n        documentData.fillColorAnim = true;\n      }\n      ind = 0;\n      based = animatorData.s.b;\n      for (i = 0; i < len; i += 1) {\n        letterData = letters[i];\n        letterData.anIndexes[j] = ind;\n        if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n          // eslint-disable-line eqeqeq\n          if (animatorData.s.rn === 1) {\n            indexes.push(ind);\n          }\n          ind += 1;\n        }\n      }\n      data.a[j].s.totalChars = ind;\n      var currentInd = -1;\n      var newInd;\n      if (animatorData.s.rn === 1) {\n        for (i = 0; i < len; i += 1) {\n          letterData = letters[i];\n          if (currentInd != letterData.anIndexes[j]) {\n            // eslint-disable-line eqeqeq\n            currentInd = letterData.anIndexes[j];\n            newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n          }\n          letterData.anIndexes[j] = newInd;\n        }\n      }\n    }\n    documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n    documentData.ls = documentData.ls || 0;\n    documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n  };\n  TextProperty.prototype.updateDocumentData = function (newData, index) {\n    index = index === undefined ? this.keysIndex : index;\n    var dData = this.copyData({}, this.data.d.k[index].s);\n    dData = this.copyData(dData, newData);\n    this.data.d.k[index].s = dData;\n    this.recalculate(index);\n    this.setCurrentData(dData);\n    this.elem.addDynamicProperty(this);\n  };\n  TextProperty.prototype.recalculate = function (index) {\n    var dData = this.data.d.k[index].s;\n    dData.__complete = false;\n    this.keysIndex = 0;\n    this._isFirstFrame = true;\n    this.getValue(dData);\n  };\n  TextProperty.prototype.canResizeFont = function (_canResize) {\n    this.canResize = _canResize;\n    this.recalculate(this.keysIndex);\n    this.elem.addDynamicProperty(this);\n  };\n  TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n    this.minimumFontSize = Math.floor(_fontValue) || 1;\n    this.recalculate(this.keysIndex);\n    this.elem.addDynamicProperty(this);\n  };\n\n  var TextSelectorProp = function () {\n    var max = Math.max;\n    var min = Math.min;\n    var floor = Math.floor;\n    function TextSelectorPropFactory(elem, data) {\n      this._currentTextLength = -1;\n      this.k = false;\n      this.data = data;\n      this.elem = elem;\n      this.comp = elem.comp;\n      this.finalS = 0;\n      this.finalE = 0;\n      this.initDynamicPropertyContainer(elem);\n      this.s = PropertyFactory.getProp(elem, data.s || {\n        k: 0\n      }, 0, 0, this);\n      if ('e' in data) {\n        this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n      } else {\n        this.e = {\n          v: 100\n        };\n      }\n      this.o = PropertyFactory.getProp(elem, data.o || {\n        k: 0\n      }, 0, 0, this);\n      this.xe = PropertyFactory.getProp(elem, data.xe || {\n        k: 0\n      }, 0, 0, this);\n      this.ne = PropertyFactory.getProp(elem, data.ne || {\n        k: 0\n      }, 0, 0, this);\n      this.sm = PropertyFactory.getProp(elem, data.sm || {\n        k: 100\n      }, 0, 0, this);\n      this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n      if (!this.dynamicProperties.length) {\n        this.getValue();\n      }\n    }\n    TextSelectorPropFactory.prototype = {\n      getMult: function getMult(ind) {\n        if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n          this.getValue();\n        }\n        var x1 = 0;\n        var y1 = 0;\n        var x2 = 1;\n        var y2 = 1;\n        if (this.ne.v > 0) {\n          x1 = this.ne.v / 100.0;\n        } else {\n          y1 = -this.ne.v / 100.0;\n        }\n        if (this.xe.v > 0) {\n          x2 = 1.0 - this.xe.v / 100.0;\n        } else {\n          y2 = 1.0 + this.xe.v / 100.0;\n        }\n        var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n        var mult = 0;\n        var s = this.finalS;\n        var e = this.finalE;\n        var type = this.data.sh;\n        if (type === 2) {\n          if (e === s) {\n            mult = ind >= e ? 1 : 0;\n          } else {\n            mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n          }\n          mult = easer(mult);\n        } else if (type === 3) {\n          if (e === s) {\n            mult = ind >= e ? 0 : 1;\n          } else {\n            mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n          }\n          mult = easer(mult);\n        } else if (type === 4) {\n          if (e === s) {\n            mult = 0;\n          } else {\n            mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n            if (mult < 0.5) {\n              mult *= 2;\n            } else {\n              mult = 1 - 2 * (mult - 0.5);\n            }\n          }\n          mult = easer(mult);\n        } else if (type === 5) {\n          if (e === s) {\n            mult = 0;\n          } else {\n            var tot = e - s;\n            /* ind += 0.5;\n                      mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n            ind = min(max(0, ind + 0.5 - s), e - s);\n            var x = -tot / 2 + ind;\n            var a = tot / 2;\n            mult = Math.sqrt(1 - x * x / (a * a));\n          }\n          mult = easer(mult);\n        } else if (type === 6) {\n          if (e === s) {\n            mult = 0;\n          } else {\n            ind = min(max(0, ind + 0.5 - s), e - s);\n            mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n          }\n          mult = easer(mult);\n        } else {\n          if (ind >= floor(s)) {\n            if (ind - s < 0) {\n              mult = max(0, min(min(e, 1) - (s - ind), 1));\n            } else {\n              mult = max(0, min(e - ind, 1));\n            }\n          }\n          mult = easer(mult);\n        }\n        // Smoothness implementation.\n        // The smoothness represents a reduced range of the original [0; 1] range.\n        // if smoothness is 25%, the new range will be [0.375; 0.625]\n        // Steps are:\n        // - find the lower value of the new range (threshold)\n        // - if multiplier is smaller than that value, floor it to 0\n        // - if it is larger,\n        //     - subtract the threshold\n        //     - divide it by the smoothness (this will return the range to [0; 1])\n        // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n        if (this.sm.v !== 100) {\n          var smoothness = this.sm.v * 0.01;\n          if (smoothness === 0) {\n            smoothness = 0.00000001;\n          }\n          var threshold = 0.5 - smoothness * 0.5;\n          if (mult < threshold) {\n            mult = 0;\n          } else {\n            mult = (mult - threshold) / smoothness;\n            if (mult > 1) {\n              mult = 1;\n            }\n          }\n        }\n        return mult * this.a.v;\n      },\n      getValue: function getValue(newCharsFlag) {\n        this.iterateDynamicProperties();\n        this._mdf = newCharsFlag || this._mdf;\n        this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n        if (newCharsFlag && this.data.r === 2) {\n          this.e.v = this._currentTextLength;\n        }\n        var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n        var o = this.o.v / divisor;\n        var s = this.s.v / divisor + o;\n        var e = this.e.v / divisor + o;\n        if (s > e) {\n          var _s = s;\n          s = e;\n          e = _s;\n        }\n        this.finalS = s;\n        this.finalE = e;\n      }\n    };\n    extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n    function getTextSelectorProp(elem, data, arr) {\n      return new TextSelectorPropFactory(elem, data, arr);\n    }\n    return {\n      getTextSelectorProp: getTextSelectorProp\n    };\n  }();\n\n  function TextAnimatorDataProperty(elem, animatorProps, container) {\n    var defaultData = {\n      propType: false\n    };\n    var getProp = PropertyFactory.getProp;\n    var textAnimatorAnimatables = animatorProps.a;\n    this.a = {\n      r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n      rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n      ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n      sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n      sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n      s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n      a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n      o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n      p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n      sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n      sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n      fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n      fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n      fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n      fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n      t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n    };\n    this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n    this.s.t = animatorProps.s.t;\n  }\n\n  function TextAnimatorProperty(textData, renderType, elem) {\n    this._isFirstFrame = true;\n    this._hasMaskedPath = false;\n    this._frameId = -1;\n    this._textData = textData;\n    this._renderType = renderType;\n    this._elem = elem;\n    this._animatorsData = createSizedArray(this._textData.a.length);\n    this._pathData = {};\n    this._moreOptions = {\n      alignment: {}\n    };\n    this.renderedLetters = [];\n    this.lettersChangedFlag = false;\n    this.initDynamicPropertyContainer(elem);\n  }\n  TextAnimatorProperty.prototype.searchProperties = function () {\n    var i;\n    var len = this._textData.a.length;\n    var animatorProps;\n    var getProp = PropertyFactory.getProp;\n    for (i = 0; i < len; i += 1) {\n      animatorProps = this._textData.a[i];\n      this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n    }\n    if (this._textData.p && 'm' in this._textData.p) {\n      this._pathData = {\n        a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n        f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n        l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n        r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n        p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n        m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n      };\n      this._hasMaskedPath = true;\n    } else {\n      this._hasMaskedPath = false;\n    }\n    this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n  };\n  TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n    this.lettersChangedFlag = lettersChangedFlag;\n    if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n      return;\n    }\n    this._isFirstFrame = false;\n    var alignment = this._moreOptions.alignment.v;\n    var animators = this._animatorsData;\n    var textData = this._textData;\n    var matrixHelper = this.mHelper;\n    var renderType = this._renderType;\n    var renderedLettersCount = this.renderedLetters.length;\n    var xPos;\n    var yPos;\n    var i;\n    var len;\n    var letters = documentData.l;\n    var pathInfo;\n    var currentLength;\n    var currentPoint;\n    var segmentLength;\n    var flag;\n    var pointInd;\n    var segmentInd;\n    var prevPoint;\n    var points;\n    var segments;\n    var partialLength;\n    var totalLength;\n    var perc;\n    var tanAngle;\n    var mask;\n    if (this._hasMaskedPath) {\n      mask = this._pathData.m;\n      if (!this._pathData.n || this._pathData._mdf) {\n        var paths = mask.v;\n        if (this._pathData.r.v) {\n          paths = paths.reverse();\n        }\n        // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n        pathInfo = {\n          tLength: 0,\n          segments: []\n        };\n        len = paths._length - 1;\n        var bezierData;\n        totalLength = 0;\n        for (i = 0; i < len; i += 1) {\n          bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n          pathInfo.tLength += bezierData.segmentLength;\n          pathInfo.segments.push(bezierData);\n          totalLength += bezierData.segmentLength;\n        }\n        i = len;\n        if (mask.v.c) {\n          bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n          pathInfo.tLength += bezierData.segmentLength;\n          pathInfo.segments.push(bezierData);\n          totalLength += bezierData.segmentLength;\n        }\n        this._pathData.pi = pathInfo;\n      }\n      pathInfo = this._pathData.pi;\n      currentLength = this._pathData.f.v;\n      segmentInd = 0;\n      pointInd = 1;\n      segmentLength = 0;\n      flag = true;\n      segments = pathInfo.segments;\n      if (currentLength < 0 && mask.v.c) {\n        if (pathInfo.tLength < Math.abs(currentLength)) {\n          currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n        }\n        segmentInd = segments.length - 1;\n        points = segments[segmentInd].points;\n        pointInd = points.length - 1;\n        while (currentLength < 0) {\n          currentLength += points[pointInd].partialLength;\n          pointInd -= 1;\n          if (pointInd < 0) {\n            segmentInd -= 1;\n            points = segments[segmentInd].points;\n            pointInd = points.length - 1;\n          }\n        }\n      }\n      points = segments[segmentInd].points;\n      prevPoint = points[pointInd - 1];\n      currentPoint = points[pointInd];\n      partialLength = currentPoint.partialLength;\n    }\n    len = letters.length;\n    xPos = 0;\n    yPos = 0;\n    var yOff = documentData.finalSize * 1.2 * 0.714;\n    var firstLine = true;\n    var animatorProps;\n    var animatorSelector;\n    var j;\n    var jLen;\n    var letterValue;\n    jLen = animators.length;\n    var mult;\n    var ind = -1;\n    var offf;\n    var xPathPos;\n    var yPathPos;\n    var initPathPos = currentLength;\n    var initSegmentInd = segmentInd;\n    var initPointInd = pointInd;\n    var currentLine = -1;\n    var elemOpacity;\n    var sc;\n    var sw;\n    var fc;\n    var k;\n    var letterSw;\n    var letterSc;\n    var letterFc;\n    var letterM = '';\n    var letterP = this.defaultPropsArray;\n    var letterO;\n\n    //\n    if (documentData.j === 2 || documentData.j === 1) {\n      var animatorJustifyOffset = 0;\n      var animatorFirstCharOffset = 0;\n      var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n      var lastIndex = 0;\n      var isNewLine = true;\n      for (i = 0; i < len; i += 1) {\n        if (letters[i].n) {\n          if (animatorJustifyOffset) {\n            animatorJustifyOffset += animatorFirstCharOffset;\n          }\n          while (lastIndex < i) {\n            letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n            lastIndex += 1;\n          }\n          animatorJustifyOffset = 0;\n          isNewLine = true;\n        } else {\n          for (j = 0; j < jLen; j += 1) {\n            animatorProps = animators[j].a;\n            if (animatorProps.t.propType) {\n              if (isNewLine && documentData.j === 2) {\n                animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n              }\n              animatorSelector = animators[j].s;\n              mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n              if (mult.length) {\n                animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n              } else {\n                animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n              }\n            }\n          }\n          isNewLine = false;\n        }\n      }\n      if (animatorJustifyOffset) {\n        animatorJustifyOffset += animatorFirstCharOffset;\n      }\n      while (lastIndex < i) {\n        letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n        lastIndex += 1;\n      }\n    }\n    //\n\n    for (i = 0; i < len; i += 1) {\n      matrixHelper.reset();\n      elemOpacity = 1;\n      if (letters[i].n) {\n        xPos = 0;\n        yPos += documentData.yOffset;\n        yPos += firstLine ? 1 : 0;\n        currentLength = initPathPos;\n        firstLine = false;\n        if (this._hasMaskedPath) {\n          segmentInd = initSegmentInd;\n          pointInd = initPointInd;\n          points = segments[segmentInd].points;\n          prevPoint = points[pointInd - 1];\n          currentPoint = points[pointInd];\n          partialLength = currentPoint.partialLength;\n          segmentLength = 0;\n        }\n        letterM = '';\n        letterFc = '';\n        letterSw = '';\n        letterO = '';\n        letterP = this.defaultPropsArray;\n      } else {\n        if (this._hasMaskedPath) {\n          if (currentLine !== letters[i].line) {\n            switch (documentData.j) {\n              case 1:\n                currentLength += totalLength - documentData.lineWidths[letters[i].line];\n                break;\n              case 2:\n                currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n                break;\n              default:\n                break;\n            }\n            currentLine = letters[i].line;\n          }\n          if (ind !== letters[i].ind) {\n            if (letters[ind]) {\n              currentLength += letters[ind].extra;\n            }\n            currentLength += letters[i].an / 2;\n            ind = letters[i].ind;\n          }\n          currentLength += alignment[0] * letters[i].an * 0.005;\n          var animatorOffset = 0;\n          for (j = 0; j < jLen; j += 1) {\n            animatorProps = animators[j].a;\n            if (animatorProps.p.propType) {\n              animatorSelector = animators[j].s;\n              mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n              if (mult.length) {\n                animatorOffset += animatorProps.p.v[0] * mult[0];\n              } else {\n                animatorOffset += animatorProps.p.v[0] * mult;\n              }\n            }\n            if (animatorProps.a.propType) {\n              animatorSelector = animators[j].s;\n              mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n              if (mult.length) {\n                animatorOffset += animatorProps.a.v[0] * mult[0];\n              } else {\n                animatorOffset += animatorProps.a.v[0] * mult;\n              }\n            }\n          }\n          flag = true;\n          // Force alignment only works with a single line for now\n          if (this._pathData.a.v) {\n            currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n            currentLength += this._pathData.f.v;\n          }\n          while (flag) {\n            if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n              perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n              xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n              yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n              matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n              flag = false;\n            } else if (points) {\n              segmentLength += currentPoint.partialLength;\n              pointInd += 1;\n              if (pointInd >= points.length) {\n                pointInd = 0;\n                segmentInd += 1;\n                if (!segments[segmentInd]) {\n                  if (mask.v.c) {\n                    pointInd = 0;\n                    segmentInd = 0;\n                    points = segments[segmentInd].points;\n                  } else {\n                    segmentLength -= currentPoint.partialLength;\n                    points = null;\n                  }\n                } else {\n                  points = segments[segmentInd].points;\n                }\n              }\n              if (points) {\n                prevPoint = currentPoint;\n                currentPoint = points[pointInd];\n                partialLength = currentPoint.partialLength;\n              }\n            }\n          }\n          offf = letters[i].an / 2 - letters[i].add;\n          matrixHelper.translate(-offf, 0, 0);\n        } else {\n          offf = letters[i].an / 2 - letters[i].add;\n          matrixHelper.translate(-offf, 0, 0);\n\n          // Grouping alignment\n          matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n        }\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n          if (animatorProps.t.propType) {\n            animatorSelector = animators[j].s;\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n            // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n            if (xPos !== 0 || documentData.j !== 0) {\n              if (this._hasMaskedPath) {\n                if (mult.length) {\n                  currentLength += animatorProps.t.v * mult[0];\n                } else {\n                  currentLength += animatorProps.t.v * mult;\n                }\n              } else if (mult.length) {\n                xPos += animatorProps.t.v * mult[0];\n              } else {\n                xPos += animatorProps.t.v * mult;\n              }\n            }\n          }\n        }\n        if (documentData.strokeWidthAnim) {\n          sw = documentData.sw || 0;\n        }\n        if (documentData.strokeColorAnim) {\n          if (documentData.sc) {\n            sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n          } else {\n            sc = [0, 0, 0];\n          }\n        }\n        if (documentData.fillColorAnim && documentData.fc) {\n          fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n        }\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n          if (animatorProps.a.propType) {\n            animatorSelector = animators[j].s;\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n            if (mult.length) {\n              matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n            } else {\n              matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n            }\n          }\n        }\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n          if (animatorProps.s.propType) {\n            animatorSelector = animators[j].s;\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n            if (mult.length) {\n              matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n            } else {\n              matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n            }\n          }\n        }\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n          animatorSelector = animators[j].s;\n          mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n          if (animatorProps.sk.propType) {\n            if (mult.length) {\n              matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n            } else {\n              matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n            }\n          }\n          if (animatorProps.r.propType) {\n            if (mult.length) {\n              matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n            } else {\n              matrixHelper.rotateZ(-animatorProps.r.v * mult);\n            }\n          }\n          if (animatorProps.ry.propType) {\n            if (mult.length) {\n              matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n            } else {\n              matrixHelper.rotateY(animatorProps.ry.v * mult);\n            }\n          }\n          if (animatorProps.rx.propType) {\n            if (mult.length) {\n              matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n            } else {\n              matrixHelper.rotateX(animatorProps.rx.v * mult);\n            }\n          }\n          if (animatorProps.o.propType) {\n            if (mult.length) {\n              elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n            } else {\n              elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n            }\n          }\n          if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n            if (mult.length) {\n              sw += animatorProps.sw.v * mult[0];\n            } else {\n              sw += animatorProps.sw.v * mult;\n            }\n          }\n          if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n            for (k = 0; k < 3; k += 1) {\n              if (mult.length) {\n                sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n              } else {\n                sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n              }\n            }\n          }\n          if (documentData.fillColorAnim && documentData.fc) {\n            if (animatorProps.fc.propType) {\n              for (k = 0; k < 3; k += 1) {\n                if (mult.length) {\n                  fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n                } else {\n                  fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n                }\n              }\n            }\n            if (animatorProps.fh.propType) {\n              if (mult.length) {\n                fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n              } else {\n                fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n              }\n            }\n            if (animatorProps.fs.propType) {\n              if (mult.length) {\n                fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n              } else {\n                fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n              }\n            }\n            if (animatorProps.fb.propType) {\n              if (mult.length) {\n                fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n              } else {\n                fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n              }\n            }\n          }\n        }\n        for (j = 0; j < jLen; j += 1) {\n          animatorProps = animators[j].a;\n          if (animatorProps.p.propType) {\n            animatorSelector = animators[j].s;\n            mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n            if (this._hasMaskedPath) {\n              if (mult.length) {\n                matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n              } else {\n                matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n              }\n            } else if (mult.length) {\n              matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n            } else {\n              matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n            }\n          }\n        }\n        if (documentData.strokeWidthAnim) {\n          letterSw = sw < 0 ? 0 : sw;\n        }\n        if (documentData.strokeColorAnim) {\n          letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n        }\n        if (documentData.fillColorAnim && documentData.fc) {\n          letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n        }\n        if (this._hasMaskedPath) {\n          matrixHelper.translate(0, -documentData.ls);\n          matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n          if (this._pathData.p.v) {\n            tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n            var rot = Math.atan(tanAngle) * 180 / Math.PI;\n            if (currentPoint.point[0] < prevPoint.point[0]) {\n              rot += 180;\n            }\n            matrixHelper.rotate(-rot * Math.PI / 180);\n          }\n          matrixHelper.translate(xPathPos, yPathPos, 0);\n          currentLength -= alignment[0] * letters[i].an * 0.005;\n          if (letters[i + 1] && ind !== letters[i + 1].ind) {\n            currentLength += letters[i].an / 2;\n            currentLength += documentData.tr * 0.001 * documentData.finalSize;\n          }\n        } else {\n          matrixHelper.translate(xPos, yPos, 0);\n          if (documentData.ps) {\n            // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n            matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n          }\n          switch (documentData.j) {\n            case 1:\n              matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n              break;\n            case 2:\n              matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n              break;\n            default:\n              break;\n          }\n          matrixHelper.translate(0, -documentData.ls);\n          matrixHelper.translate(offf, 0, 0);\n          matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n          xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n        }\n        if (renderType === 'html') {\n          letterM = matrixHelper.toCSS();\n        } else if (renderType === 'svg') {\n          letterM = matrixHelper.to2dCSS();\n        } else {\n          letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n        }\n        letterO = elemOpacity;\n      }\n      if (renderedLettersCount <= i) {\n        letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n        this.renderedLetters.push(letterValue);\n        renderedLettersCount += 1;\n        this.lettersChangedFlag = true;\n      } else {\n        letterValue = this.renderedLetters[i];\n        this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n      }\n    }\n  };\n  TextAnimatorProperty.prototype.getValue = function () {\n    if (this._elem.globalData.frameId === this._frameId) {\n      return;\n    }\n    this._frameId = this._elem.globalData.frameId;\n    this.iterateDynamicProperties();\n  };\n  TextAnimatorProperty.prototype.mHelper = new Matrix();\n  TextAnimatorProperty.prototype.defaultPropsArray = [];\n  extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n  function ITextElement() {}\n  ITextElement.prototype.initElement = function (data, globalData, comp) {\n    this.lettersChangedFlag = true;\n    this.initFrame();\n    this.initBaseData(data, globalData, comp);\n    this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n    this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n    this.initTransform(data, globalData, comp);\n    this.initHierarchy();\n    this.initRenderable();\n    this.initRendererElement();\n    this.createContainerElements();\n    this.createRenderableComponents();\n    this.createContent();\n    this.hide();\n    this.textAnimator.searchProperties(this.dynamicProperties);\n  };\n  ITextElement.prototype.prepareFrame = function (num) {\n    this._mdf = false;\n    this.prepareRenderableFrame(num);\n    this.prepareProperties(num, this.isInRange);\n  };\n  ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n    var j;\n    var jLen = shapes.length;\n    var pathNodes;\n    var shapeStr = '';\n    for (j = 0; j < jLen; j += 1) {\n      if (shapes[j].ty === 'sh') {\n        pathNodes = shapes[j].ks.k;\n        shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n      }\n    }\n    return shapeStr;\n  };\n  ITextElement.prototype.updateDocumentData = function (newData, index) {\n    this.textProperty.updateDocumentData(newData, index);\n  };\n  ITextElement.prototype.canResizeFont = function (_canResize) {\n    this.textProperty.canResizeFont(_canResize);\n  };\n  ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n    this.textProperty.setMinimumFontSize(_fontSize);\n  };\n  ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n    if (documentData.ps) {\n      matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n    }\n    matrixHelper.translate(0, -documentData.ls, 0);\n    switch (documentData.j) {\n      case 1:\n        matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n        break;\n      case 2:\n        matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n        break;\n      default:\n        break;\n    }\n    matrixHelper.translate(xPos, yPos, 0);\n  };\n  ITextElement.prototype.buildColor = function (colorData) {\n    return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n  };\n  ITextElement.prototype.emptyProp = new LetterProps();\n  ITextElement.prototype.destroy = function () {};\n  ITextElement.prototype.validateText = function () {\n    if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n      this.buildNewText();\n      this.textProperty._isFirstFrame = false;\n      this.textProperty._mdf = false;\n    }\n  };\n\n  var emptyShapeData = {\n    shapes: []\n  };\n  function SVGTextLottieElement(data, globalData, comp) {\n    this.textSpans = [];\n    this.renderType = 'svg';\n    this.initElement(data, globalData, comp);\n  }\n  extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n  SVGTextLottieElement.prototype.createContent = function () {\n    if (this.data.singleShape && !this.globalData.fontManager.chars) {\n      this.textContainer = createNS('text');\n    }\n  };\n  SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n    var i = 0;\n    var len = textArray.length;\n    var textContents = [];\n    var currentTextContent = '';\n    while (i < len) {\n      if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n        textContents.push(currentTextContent);\n        currentTextContent = '';\n      } else {\n        currentTextContent += textArray[i];\n      }\n      i += 1;\n    }\n    textContents.push(currentTextContent);\n    return textContents;\n  };\n  SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n    // data should probably be cloned to apply scale separately to each instance of a text on different layers\n    // but since text internal content gets only rendered once and then it's never rerendered,\n    // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n    // Avoiding cloning is preferred since cloning each character shape data is expensive\n    if (data.shapes && data.shapes.length) {\n      var shape = data.shapes[0];\n      if (shape.it) {\n        var shapeItem = shape.it[shape.it.length - 1];\n        if (shapeItem.s) {\n          shapeItem.s.k[0] = scale;\n          shapeItem.s.k[1] = scale;\n        }\n      }\n    }\n    return data;\n  };\n  SVGTextLottieElement.prototype.buildNewText = function () {\n    this.addDynamicProperty(this);\n    var i;\n    var len;\n    var documentData = this.textProperty.currentData;\n    this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n    if (documentData.fc) {\n      this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n    } else {\n      this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n    }\n    if (documentData.sc) {\n      this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n      this.layerElement.setAttribute('stroke-width', documentData.sw);\n    }\n    this.layerElement.setAttribute('font-size', documentData.finalSize);\n    var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n    if (fontData.fClass) {\n      this.layerElement.setAttribute('class', fontData.fClass);\n    } else {\n      this.layerElement.setAttribute('font-family', fontData.fFamily);\n      var fWeight = documentData.fWeight;\n      var fStyle = documentData.fStyle;\n      this.layerElement.setAttribute('font-style', fStyle);\n      this.layerElement.setAttribute('font-weight', fWeight);\n    }\n    this.layerElement.setAttribute('aria-label', documentData.t);\n    var letters = documentData.l || [];\n    var usesGlyphs = !!this.globalData.fontManager.chars;\n    len = letters.length;\n    var tSpan;\n    var matrixHelper = this.mHelper;\n    var shapeStr = '';\n    var singleShape = this.data.singleShape;\n    var xPos = 0;\n    var yPos = 0;\n    var firstLine = true;\n    var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n    if (singleShape && !usesGlyphs && !documentData.sz) {\n      var tElement = this.textContainer;\n      var justify = 'start';\n      switch (documentData.j) {\n        case 1:\n          justify = 'end';\n          break;\n        case 2:\n          justify = 'middle';\n          break;\n        default:\n          justify = 'start';\n          break;\n      }\n      tElement.setAttribute('text-anchor', justify);\n      tElement.setAttribute('letter-spacing', trackingOffset);\n      var textContent = this.buildTextContents(documentData.finalText);\n      len = textContent.length;\n      yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n      for (i = 0; i < len; i += 1) {\n        tSpan = this.textSpans[i].span || createNS('tspan');\n        tSpan.textContent = textContent[i];\n        tSpan.setAttribute('x', 0);\n        tSpan.setAttribute('y', yPos);\n        tSpan.style.display = 'inherit';\n        tElement.appendChild(tSpan);\n        if (!this.textSpans[i]) {\n          this.textSpans[i] = {\n            span: null,\n            glyph: null\n          };\n        }\n        this.textSpans[i].span = tSpan;\n        yPos += documentData.finalLineHeight;\n      }\n      this.layerElement.appendChild(tElement);\n    } else {\n      var cachedSpansLength = this.textSpans.length;\n      var charData;\n      for (i = 0; i < len; i += 1) {\n        if (!this.textSpans[i]) {\n          this.textSpans[i] = {\n            span: null,\n            childSpan: null,\n            glyph: null\n          };\n        }\n        if (!usesGlyphs || !singleShape || i === 0) {\n          tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n          if (cachedSpansLength <= i) {\n            tSpan.setAttribute('stroke-linecap', 'butt');\n            tSpan.setAttribute('stroke-linejoin', 'round');\n            tSpan.setAttribute('stroke-miterlimit', '4');\n            this.textSpans[i].span = tSpan;\n            if (usesGlyphs) {\n              var childSpan = createNS('g');\n              tSpan.appendChild(childSpan);\n              this.textSpans[i].childSpan = childSpan;\n            }\n            this.textSpans[i].span = tSpan;\n            this.layerElement.appendChild(tSpan);\n          }\n          tSpan.style.display = 'inherit';\n        }\n        matrixHelper.reset();\n        if (singleShape) {\n          if (letters[i].n) {\n            xPos = -trackingOffset;\n            yPos += documentData.yOffset;\n            yPos += firstLine ? 1 : 0;\n            firstLine = false;\n          }\n          this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n          xPos += letters[i].l || 0;\n          // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n          xPos += trackingOffset;\n        }\n        if (usesGlyphs) {\n          charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n          var glyphElement;\n          // t === 1 means the character has been replaced with an animated shaped\n          if (charData.t === 1) {\n            glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n          } else {\n            var data = emptyShapeData;\n            if (charData.data && charData.data.shapes) {\n              data = this.buildShapeData(charData.data, documentData.finalSize);\n            }\n            glyphElement = new SVGShapeElement(data, this.globalData, this);\n          }\n          if (this.textSpans[i].glyph) {\n            var glyph = this.textSpans[i].glyph;\n            this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n            glyph.destroy();\n          }\n          this.textSpans[i].glyph = glyphElement;\n          glyphElement._debug = true;\n          glyphElement.prepareFrame(0);\n          glyphElement.renderFrame();\n          this.textSpans[i].childSpan.appendChild(glyphElement.layerElement);\n          // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n          // this might have issues with strokes and might need a different solution\n          if (charData.t === 1) {\n            this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n          }\n        } else {\n          if (singleShape) {\n            tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n          }\n          tSpan.textContent = letters[i].val;\n          tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n        }\n        //\n      }\n      if (singleShape && tSpan) {\n        tSpan.setAttribute('d', shapeStr);\n      }\n    }\n    while (i < this.textSpans.length) {\n      this.textSpans[i].span.style.display = 'none';\n      i += 1;\n    }\n    this._sizeChanged = true;\n  };\n  SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n    this.prepareFrame(this.comp.renderedFrame - this.data.st);\n    this.renderInnerContent();\n    if (this._sizeChanged) {\n      this._sizeChanged = false;\n      var textBox = this.layerElement.getBBox();\n      this.bbox = {\n        top: textBox.y,\n        left: textBox.x,\n        width: textBox.width,\n        height: textBox.height\n      };\n    }\n    return this.bbox;\n  };\n  SVGTextLottieElement.prototype.getValue = function () {\n    var i;\n    var len = this.textSpans.length;\n    var glyphElement;\n    this.renderedFrame = this.comp.renderedFrame;\n    for (i = 0; i < len; i += 1) {\n      glyphElement = this.textSpans[i].glyph;\n      if (glyphElement) {\n        glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n        if (glyphElement._mdf) {\n          this._mdf = true;\n        }\n      }\n    }\n  };\n  SVGTextLottieElement.prototype.renderInnerContent = function () {\n    this.validateText();\n    if (!this.data.singleShape || this._mdf) {\n      this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n      if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n        this._sizeChanged = true;\n        var i;\n        var len;\n        var renderedLetters = this.textAnimator.renderedLetters;\n        var letters = this.textProperty.currentData.l;\n        len = letters.length;\n        var renderedLetter;\n        var textSpan;\n        var glyphElement;\n        for (i = 0; i < len; i += 1) {\n          if (!letters[i].n) {\n            renderedLetter = renderedLetters[i];\n            textSpan = this.textSpans[i].span;\n            glyphElement = this.textSpans[i].glyph;\n            if (glyphElement) {\n              glyphElement.renderFrame();\n            }\n            if (renderedLetter._mdf.m) {\n              textSpan.setAttribute('transform', renderedLetter.m);\n            }\n            if (renderedLetter._mdf.o) {\n              textSpan.setAttribute('opacity', renderedLetter.o);\n            }\n            if (renderedLetter._mdf.sw) {\n              textSpan.setAttribute('stroke-width', renderedLetter.sw);\n            }\n            if (renderedLetter._mdf.sc) {\n              textSpan.setAttribute('stroke', renderedLetter.sc);\n            }\n            if (renderedLetter._mdf.fc) {\n              textSpan.setAttribute('fill', renderedLetter.fc);\n            }\n          }\n        }\n      }\n    }\n  };\n\n  function ISolidElement(data, globalData, comp) {\n    this.initElement(data, globalData, comp);\n  }\n  extendPrototype([IImageElement], ISolidElement);\n  ISolidElement.prototype.createContent = function () {\n    var rect = createNS('rect');\n    /// /rect.style.width = this.data.sw;\n    /// /rect.style.height = this.data.sh;\n    /// /rect.style.fill = this.data.sc;\n    rect.setAttribute('width', this.data.sw);\n    rect.setAttribute('height', this.data.sh);\n    rect.setAttribute('fill', this.data.sc);\n    this.layerElement.appendChild(rect);\n  };\n\n  function NullElement(data, globalData, comp) {\n    this.initFrame();\n    this.initBaseData(data, globalData, comp);\n    this.initFrame();\n    this.initTransform(data, globalData, comp);\n    this.initHierarchy();\n  }\n  NullElement.prototype.prepareFrame = function (num) {\n    this.prepareProperties(num, true);\n  };\n  NullElement.prototype.renderFrame = function () {};\n  NullElement.prototype.getBaseElement = function () {\n    return null;\n  };\n  NullElement.prototype.destroy = function () {};\n  NullElement.prototype.sourceRectAtTime = function () {};\n  NullElement.prototype.hide = function () {};\n  extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n  function SVGRendererBase() {}\n  extendPrototype([BaseRenderer], SVGRendererBase);\n  SVGRendererBase.prototype.createNull = function (data) {\n    return new NullElement(data, this.globalData, this);\n  };\n  SVGRendererBase.prototype.createShape = function (data) {\n    return new SVGShapeElement(data, this.globalData, this);\n  };\n  SVGRendererBase.prototype.createText = function (data) {\n    return new SVGTextLottieElement(data, this.globalData, this);\n  };\n  SVGRendererBase.prototype.createImage = function (data) {\n    return new IImageElement(data, this.globalData, this);\n  };\n  SVGRendererBase.prototype.createSolid = function (data) {\n    return new ISolidElement(data, this.globalData, this);\n  };\n  SVGRendererBase.prototype.configAnimation = function (animData) {\n    this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n    this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n    if (this.renderConfig.viewBoxSize) {\n      this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n    } else {\n      this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n    }\n    if (!this.renderConfig.viewBoxOnly) {\n      this.svgElement.setAttribute('width', animData.w);\n      this.svgElement.setAttribute('height', animData.h);\n      this.svgElement.style.width = '100%';\n      this.svgElement.style.height = '100%';\n      this.svgElement.style.transform = 'translate3d(0,0,0)';\n      this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n    }\n    if (this.renderConfig.width) {\n      this.svgElement.setAttribute('width', this.renderConfig.width);\n    }\n    if (this.renderConfig.height) {\n      this.svgElement.setAttribute('height', this.renderConfig.height);\n    }\n    if (this.renderConfig.className) {\n      this.svgElement.setAttribute('class', this.renderConfig.className);\n    }\n    if (this.renderConfig.id) {\n      this.svgElement.setAttribute('id', this.renderConfig.id);\n    }\n    if (this.renderConfig.focusable !== undefined) {\n      this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n    }\n    this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio);\n    // this.layerElement.style.transform = 'translate3d(0,0,0)';\n    // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n    this.animationItem.wrapper.appendChild(this.svgElement);\n    // Mask animation\n    var defs = this.globalData.defs;\n    this.setupGlobalData(animData, defs);\n    this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n    this.data = animData;\n    var maskElement = createNS('clipPath');\n    var rect = createNS('rect');\n    rect.setAttribute('width', animData.w);\n    rect.setAttribute('height', animData.h);\n    rect.setAttribute('x', 0);\n    rect.setAttribute('y', 0);\n    var maskId = createElementID();\n    maskElement.setAttribute('id', maskId);\n    maskElement.appendChild(rect);\n    this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n    defs.appendChild(maskElement);\n    this.layers = animData.layers;\n    this.elements = createSizedArray(animData.layers.length);\n  };\n  SVGRendererBase.prototype.destroy = function () {\n    if (this.animationItem.wrapper) {\n      this.animationItem.wrapper.innerText = '';\n    }\n    this.layerElement = null;\n    this.globalData.defs = null;\n    var i;\n    var len = this.layers ? this.layers.length : 0;\n    for (i = 0; i < len; i += 1) {\n      if (this.elements[i] && this.elements[i].destroy) {\n        this.elements[i].destroy();\n      }\n    }\n    this.elements.length = 0;\n    this.destroyed = true;\n    this.animationItem = null;\n  };\n  SVGRendererBase.prototype.updateContainerSize = function () {};\n  SVGRendererBase.prototype.findIndexByInd = function (ind) {\n    var i = 0;\n    var len = this.layers.length;\n    for (i = 0; i < len; i += 1) {\n      if (this.layers[i].ind === ind) {\n        return i;\n      }\n    }\n    return -1;\n  };\n  SVGRendererBase.prototype.buildItem = function (pos) {\n    var elements = this.elements;\n    if (elements[pos] || this.layers[pos].ty === 99) {\n      return;\n    }\n    elements[pos] = true;\n    var element = this.createItem(this.layers[pos]);\n    elements[pos] = element;\n    if (getExpressionsPlugin()) {\n      if (this.layers[pos].ty === 0) {\n        this.globalData.projectInterface.registerComposition(element);\n      }\n      element.initExpressions();\n    }\n    this.appendElementInPos(element, pos);\n    if (this.layers[pos].tt) {\n      var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n      if (elementIndex === -1) {\n        return;\n      }\n      if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n        this.buildItem(elementIndex);\n        this.addPendingElement(element);\n      } else {\n        var matteElement = elements[elementIndex];\n        var matteMask = matteElement.getMatte(this.layers[pos].tt);\n        element.setMatte(matteMask);\n      }\n    }\n  };\n  SVGRendererBase.prototype.checkPendingElements = function () {\n    while (this.pendingElements.length) {\n      var element = this.pendingElements.pop();\n      element.checkParenting();\n      if (element.data.tt) {\n        var i = 0;\n        var len = this.elements.length;\n        while (i < len) {\n          if (this.elements[i] === element) {\n            var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n            var matteElement = this.elements[elementIndex];\n            var matteMask = matteElement.getMatte(this.layers[i].tt);\n            element.setMatte(matteMask);\n            break;\n          }\n          i += 1;\n        }\n      }\n    }\n  };\n  SVGRendererBase.prototype.renderFrame = function (num) {\n    if (this.renderedFrame === num || this.destroyed) {\n      return;\n    }\n    if (num === null) {\n      num = this.renderedFrame;\n    } else {\n      this.renderedFrame = num;\n    }\n    // console.log('-------');\n    // console.log('FRAME ',num);\n    this.globalData.frameNum = num;\n    this.globalData.frameId += 1;\n    this.globalData.projectInterface.currentFrame = num;\n    this.globalData._mdf = false;\n    var i;\n    var len = this.layers.length;\n    if (!this.completeLayers) {\n      this.checkLayers(num);\n    }\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].prepareFrame(num - this.layers[i].st);\n      }\n    }\n    if (this.globalData._mdf) {\n      for (i = 0; i < len; i += 1) {\n        if (this.completeLayers || this.elements[i]) {\n          this.elements[i].renderFrame();\n        }\n      }\n    }\n  };\n  SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n    var newElement = element.getBaseElement();\n    if (!newElement) {\n      return;\n    }\n    var i = 0;\n    var nextElement;\n    while (i < pos) {\n      if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n        nextElement = this.elements[i].getBaseElement();\n      }\n      i += 1;\n    }\n    if (nextElement) {\n      this.layerElement.insertBefore(newElement, nextElement);\n    } else {\n      this.layerElement.appendChild(newElement);\n    }\n  };\n  SVGRendererBase.prototype.hide = function () {\n    this.layerElement.style.display = 'none';\n  };\n  SVGRendererBase.prototype.show = function () {\n    this.layerElement.style.display = 'block';\n  };\n\n  function ICompElement() {}\n  extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n  ICompElement.prototype.initElement = function (data, globalData, comp) {\n    this.initFrame();\n    this.initBaseData(data, globalData, comp);\n    this.initTransform(data, globalData, comp);\n    this.initRenderable();\n    this.initHierarchy();\n    this.initRendererElement();\n    this.createContainerElements();\n    this.createRenderableComponents();\n    if (this.data.xt || !globalData.progressiveLoad) {\n      this.buildAllItems();\n    }\n    this.hide();\n  };\n\n  /* ICompElement.prototype.hide = function(){\n      if(!this.hidden){\n          this.hideElement();\n          var i,len = this.elements.length;\n          for( i = 0; i < len; i+=1 ){\n              if(this.elements[i]){\n                  this.elements[i].hide();\n              }\n          }\n      }\n  }; */\n\n  ICompElement.prototype.prepareFrame = function (num) {\n    this._mdf = false;\n    this.prepareRenderableFrame(num);\n    this.prepareProperties(num, this.isInRange);\n    if (!this.isInRange && !this.data.xt) {\n      return;\n    }\n    if (!this.tm._placeholder) {\n      var timeRemapped = this.tm.v;\n      if (timeRemapped === this.data.op) {\n        timeRemapped = this.data.op - 1;\n      }\n      this.renderedFrame = timeRemapped;\n    } else {\n      this.renderedFrame = num / this.data.sr;\n    }\n    var i;\n    var len = this.elements.length;\n    if (!this.completeLayers) {\n      this.checkLayers(this.renderedFrame);\n    }\n    // This iteration needs to be backwards because of how expressions connect between each other\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n        if (this.elements[i]._mdf) {\n          this._mdf = true;\n        }\n      }\n    }\n  };\n  ICompElement.prototype.renderInnerContent = function () {\n    var i;\n    var len = this.layers.length;\n    for (i = 0; i < len; i += 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].renderFrame();\n      }\n    }\n  };\n  ICompElement.prototype.setElements = function (elems) {\n    this.elements = elems;\n  };\n  ICompElement.prototype.getElements = function () {\n    return this.elements;\n  };\n  ICompElement.prototype.destroyElements = function () {\n    var i;\n    var len = this.layers.length;\n    for (i = 0; i < len; i += 1) {\n      if (this.elements[i]) {\n        this.elements[i].destroy();\n      }\n    }\n  };\n  ICompElement.prototype.destroy = function () {\n    this.destroyElements();\n    this.destroyBaseElement();\n  };\n\n  function SVGCompElement(data, globalData, comp) {\n    this.layers = data.layers;\n    this.supports3d = true;\n    this.completeLayers = false;\n    this.pendingElements = [];\n    this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n    this.initElement(data, globalData, comp);\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n      _placeholder: true\n    };\n  }\n  extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n  SVGCompElement.prototype.createComp = function (data) {\n    return new SVGCompElement(data, this.globalData, this);\n  };\n\n  function SVGRenderer(animationItem, config) {\n    this.animationItem = animationItem;\n    this.layers = null;\n    this.renderedFrame = -1;\n    this.svgElement = createNS('svg');\n    var ariaLabel = '';\n    if (config && config.title) {\n      var titleElement = createNS('title');\n      var titleId = createElementID();\n      titleElement.setAttribute('id', titleId);\n      titleElement.textContent = config.title;\n      this.svgElement.appendChild(titleElement);\n      ariaLabel += titleId;\n    }\n    if (config && config.description) {\n      var descElement = createNS('desc');\n      var descId = createElementID();\n      descElement.setAttribute('id', descId);\n      descElement.textContent = config.description;\n      this.svgElement.appendChild(descElement);\n      ariaLabel += ' ' + descId;\n    }\n    if (ariaLabel) {\n      this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n    }\n    var defs = createNS('defs');\n    this.svgElement.appendChild(defs);\n    var maskElement = createNS('g');\n    this.svgElement.appendChild(maskElement);\n    this.layerElement = maskElement;\n    this.renderConfig = {\n      preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n      contentVisibility: config && config.contentVisibility || 'visible',\n      progressiveLoad: config && config.progressiveLoad || false,\n      hideOnTransparent: !(config && config.hideOnTransparent === false),\n      viewBoxOnly: config && config.viewBoxOnly || false,\n      viewBoxSize: config && config.viewBoxSize || false,\n      className: config && config.className || '',\n      id: config && config.id || '',\n      focusable: config && config.focusable,\n      filterSize: {\n        width: config && config.filterSize && config.filterSize.width || '100%',\n        height: config && config.filterSize && config.filterSize.height || '100%',\n        x: config && config.filterSize && config.filterSize.x || '0%',\n        y: config && config.filterSize && config.filterSize.y || '0%'\n      },\n      width: config && config.width,\n      height: config && config.height,\n      runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n    };\n    this.globalData = {\n      _mdf: false,\n      frameNum: -1,\n      defs: defs,\n      renderConfig: this.renderConfig\n    };\n    this.elements = [];\n    this.pendingElements = [];\n    this.destroyed = false;\n    this.rendererType = 'svg';\n  }\n  extendPrototype([SVGRendererBase], SVGRenderer);\n  SVGRenderer.prototype.createComp = function (data) {\n    return new SVGCompElement(data, this.globalData, this);\n  };\n\n  function ShapeTransformManager() {\n    this.sequences = {};\n    this.sequenceList = [];\n    this.transform_key_count = 0;\n  }\n  ShapeTransformManager.prototype = {\n    addTransformSequence: function addTransformSequence(transforms) {\n      var i;\n      var len = transforms.length;\n      var key = '_';\n      for (i = 0; i < len; i += 1) {\n        key += transforms[i].transform.key + '_';\n      }\n      var sequence = this.sequences[key];\n      if (!sequence) {\n        sequence = {\n          transforms: [].concat(transforms),\n          finalTransform: new Matrix(),\n          _mdf: false\n        };\n        this.sequences[key] = sequence;\n        this.sequenceList.push(sequence);\n      }\n      return sequence;\n    },\n    processSequence: function processSequence(sequence, isFirstFrame) {\n      var i = 0;\n      var len = sequence.transforms.length;\n      var _mdf = isFirstFrame;\n      while (i < len && !isFirstFrame) {\n        if (sequence.transforms[i].transform.mProps._mdf) {\n          _mdf = true;\n          break;\n        }\n        i += 1;\n      }\n      if (_mdf) {\n        sequence.finalTransform.reset();\n        for (i = len - 1; i >= 0; i -= 1) {\n          sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n        }\n      }\n      sequence._mdf = _mdf;\n    },\n    processSequences: function processSequences(isFirstFrame) {\n      var i;\n      var len = this.sequenceList.length;\n      for (i = 0; i < len; i += 1) {\n        this.processSequence(this.sequenceList[i], isFirstFrame);\n      }\n    },\n    getNewKey: function getNewKey() {\n      this.transform_key_count += 1;\n      return '_' + this.transform_key_count;\n    }\n  };\n\n  var lumaLoader = function lumaLoader() {\n    var id = '__lottie_element_luma_buffer';\n    var lumaBuffer = null;\n    var lumaBufferCtx = null;\n    var svg = null;\n\n    // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n    // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n    // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n    // Naming it solution 2 to mark the extra comment lines.\n    /*\n    var svgString = [\n      '<svg xmlns=\"http://www.w3.org/2000/svg\">',\n      '<filter id=\"' + id + '\">',\n      '<feColorMatrix type=\"matrix\" color-interpolation-filters=\"sRGB\" values=\"',\n      '0.3, 0.3, 0.3, 0, 0, ',\n      '0.3, 0.3, 0.3, 0, 0, ',\n      '0.3, 0.3, 0.3, 0, 0, ',\n      '0.3, 0.3, 0.3, 0, 0',\n      '\"/>',\n      '</filter>',\n      '</svg>',\n    ].join('');\n    var blob = new Blob([svgString], { type: 'image/svg+xml' });\n    var url = URL.createObjectURL(blob);\n    */\n\n    function createLumaSvgFilter() {\n      var _svg = createNS('svg');\n      var fil = createNS('filter');\n      var matrix = createNS('feColorMatrix');\n      fil.setAttribute('id', id);\n      matrix.setAttribute('type', 'matrix');\n      matrix.setAttribute('color-interpolation-filters', 'sRGB');\n      matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n      fil.appendChild(matrix);\n      _svg.appendChild(fil);\n      _svg.setAttribute('id', id + '_svg');\n      if (featureSupport.svgLumaHidden) {\n        _svg.style.display = 'none';\n      }\n      return _svg;\n    }\n    function loadLuma() {\n      if (!lumaBuffer) {\n        svg = createLumaSvgFilter();\n        document.body.appendChild(svg);\n        lumaBuffer = createTag('canvas');\n        lumaBufferCtx = lumaBuffer.getContext('2d');\n        // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n        lumaBufferCtx.filter = 'url(#' + id + ')';\n        lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n        lumaBufferCtx.fillRect(0, 0, 1, 1);\n      }\n    }\n    function getLuma(canvas) {\n      if (!lumaBuffer) {\n        loadLuma();\n      }\n      lumaBuffer.width = canvas.width;\n      lumaBuffer.height = canvas.height;\n      // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n      lumaBufferCtx.filter = 'url(#' + id + ')';\n      return lumaBuffer;\n    }\n    return {\n      load: loadLuma,\n      get: getLuma\n    };\n  };\n  function createCanvas(width, height) {\n    if (featureSupport.offscreenCanvas) {\n      return new OffscreenCanvas(width, height);\n    }\n    var canvas = createTag('canvas');\n    canvas.width = width;\n    canvas.height = height;\n    return canvas;\n  }\n  var assetLoader = function () {\n    return {\n      loadLumaCanvas: lumaLoader.load,\n      getLumaCanvas: lumaLoader.get,\n      createCanvas: createCanvas\n    };\n  }();\n\n  var registeredEffects = {};\n  function CVEffects(elem) {\n    var i;\n    var len = elem.data.ef ? elem.data.ef.length : 0;\n    this.filters = [];\n    var filterManager;\n    for (i = 0; i < len; i += 1) {\n      filterManager = null;\n      var type = elem.data.ef[i].ty;\n      if (registeredEffects[type]) {\n        var Effect = registeredEffects[type].effect;\n        filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n      }\n      if (filterManager) {\n        this.filters.push(filterManager);\n      }\n    }\n    if (this.filters.length) {\n      elem.addRenderableComponent(this);\n    }\n  }\n  CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n    var i;\n    var len = this.filters.length;\n    for (i = 0; i < len; i += 1) {\n      this.filters[i].renderFrame(_isFirstFrame);\n    }\n  };\n  CVEffects.prototype.getEffects = function (type) {\n    var i;\n    var len = this.filters.length;\n    var effects = [];\n    for (i = 0; i < len; i += 1) {\n      if (this.filters[i].type === type) {\n        effects.push(this.filters[i]);\n      }\n    }\n    return effects;\n  };\n  function registerEffect(id, effect) {\n    registeredEffects[id] = {\n      effect: effect\n    };\n  }\n\n  function CVMaskElement(data, element) {\n    this.data = data;\n    this.element = element;\n    this.masksProperties = this.data.masksProperties || [];\n    this.viewData = createSizedArray(this.masksProperties.length);\n    var i;\n    var len = this.masksProperties.length;\n    var hasMasks = false;\n    for (i = 0; i < len; i += 1) {\n      if (this.masksProperties[i].mode !== 'n') {\n        hasMasks = true;\n      }\n      this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n    }\n    this.hasMasks = hasMasks;\n    if (hasMasks) {\n      this.element.addRenderableComponent(this);\n    }\n  }\n  CVMaskElement.prototype.renderFrame = function () {\n    if (!this.hasMasks) {\n      return;\n    }\n    var transform = this.element.finalTransform.mat;\n    var ctx = this.element.canvasContext;\n    var i;\n    var len = this.masksProperties.length;\n    var pt;\n    var pts;\n    var data;\n    ctx.beginPath();\n    for (i = 0; i < len; i += 1) {\n      if (this.masksProperties[i].mode !== 'n') {\n        if (this.masksProperties[i].inv) {\n          ctx.moveTo(0, 0);\n          ctx.lineTo(this.element.globalData.compSize.w, 0);\n          ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n          ctx.lineTo(0, this.element.globalData.compSize.h);\n          ctx.lineTo(0, 0);\n        }\n        data = this.viewData[i].v;\n        pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n        ctx.moveTo(pt[0], pt[1]);\n        var j;\n        var jLen = data._length;\n        for (j = 1; j < jLen; j += 1) {\n          pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n          ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n        }\n        pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n        ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n      }\n    }\n    this.element.globalData.renderer.save(true);\n    ctx.clip();\n  };\n  CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n  CVMaskElement.prototype.destroy = function () {\n    this.element = null;\n  };\n\n  function CVBaseElement() {}\n  var operationsMap = {\n    1: 'source-in',\n    2: 'source-out',\n    3: 'source-in',\n    4: 'source-out'\n  };\n  CVBaseElement.prototype = {\n    createElements: function createElements() {},\n    initRendererElement: function initRendererElement() {},\n    createContainerElements: function createContainerElements() {\n      // If the layer is masked we will use two buffers to store each different states of the drawing\n      // This solution is not ideal for several reason. But unfortunately, because of the recursive\n      // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n      // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n      // It might be challenging because the layer most likely is transformed in some way\n      if (this.data.tt >= 1) {\n        this.buffers = [];\n        var canvasContext = this.globalData.canvasContext;\n        var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n        this.buffers.push(bufferCanvas);\n        var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n        this.buffers.push(bufferCanvas2);\n        if (this.data.tt >= 3 && !document._isProxy) {\n          assetLoader.loadLumaCanvas();\n        }\n      }\n      this.canvasContext = this.globalData.canvasContext;\n      this.transformCanvas = this.globalData.transformCanvas;\n      this.renderableEffectsManager = new CVEffects(this);\n      this.searchEffectTransforms();\n    },\n    createContent: function createContent() {},\n    setBlendMode: function setBlendMode() {\n      var globalData = this.globalData;\n      if (globalData.blendMode !== this.data.bm) {\n        globalData.blendMode = this.data.bm;\n        var blendModeValue = getBlendMode(this.data.bm);\n        globalData.canvasContext.globalCompositeOperation = blendModeValue;\n      }\n    },\n    createRenderableComponents: function createRenderableComponents() {\n      this.maskManager = new CVMaskElement(this.data, this);\n      this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n    },\n    hideElement: function hideElement() {\n      if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n        this.hidden = true;\n      }\n    },\n    showElement: function showElement() {\n      if (this.isInRange && !this.isTransparent) {\n        this.hidden = false;\n        this._isFirstFrame = true;\n        this.maskManager._isFirstFrame = true;\n      }\n    },\n    clearCanvas: function clearCanvas(canvasContext) {\n      canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n    },\n    prepareLayer: function prepareLayer() {\n      if (this.data.tt >= 1) {\n        var buffer = this.buffers[0];\n        var bufferCtx = buffer.getContext('2d');\n        this.clearCanvas(bufferCtx);\n        // on the first buffer we store the current state of the global drawing\n        bufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n        // The next four lines are to clear the canvas\n        // TODO: Check if there is a way to clear the canvas without resetting the transform\n        this.currentTransform = this.canvasContext.getTransform();\n        this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n        this.clearCanvas(this.canvasContext);\n        this.canvasContext.setTransform(this.currentTransform);\n      }\n    },\n    exitLayer: function exitLayer() {\n      if (this.data.tt >= 1) {\n        var buffer = this.buffers[1];\n        // On the second buffer we store the current state of the global drawing\n        // that only contains the content of this layer\n        // (if it is a composition, it also includes the nested layers)\n        var bufferCtx = buffer.getContext('2d');\n        this.clearCanvas(bufferCtx);\n        bufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n        // We clear the canvas again\n        this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n        this.clearCanvas(this.canvasContext);\n        this.canvasContext.setTransform(this.currentTransform);\n        // We draw the mask\n        var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n        mask.renderFrame(true);\n        // We draw the second buffer (that contains the content of this layer)\n        this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n\n        // If the mask is a Luma matte, we need to do two extra painting operations\n        // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n        if (this.data.tt >= 3 && !document._isProxy) {\n          // We copy the painted mask to a buffer that has a color matrix filter applied to it\n          // that applies the rgb values to the alpha channel\n          var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n          var lumaBufferCtx = lumaBuffer.getContext('2d');\n          lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n          this.clearCanvas(this.canvasContext);\n          // we repaint the context with the mask applied to it\n          this.canvasContext.drawImage(lumaBuffer, 0, 0);\n        }\n        this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n        this.canvasContext.drawImage(buffer, 0, 0);\n        // We finally draw the first buffer (that contains the content of the global drawing)\n        // We use destination-over to draw the global drawing below the current layer\n        this.canvasContext.globalCompositeOperation = 'destination-over';\n        this.canvasContext.drawImage(this.buffers[0], 0, 0);\n        this.canvasContext.setTransform(this.currentTransform);\n        // We reset the globalCompositeOperation to source-over, the standard type of operation\n        this.canvasContext.globalCompositeOperation = 'source-over';\n      }\n    },\n    renderFrame: function renderFrame(forceRender) {\n      if (this.hidden || this.data.hd) {\n        return;\n      }\n      if (this.data.td === 1 && !forceRender) {\n        return;\n      }\n      this.renderTransform();\n      this.renderRenderable();\n      this.renderLocalTransform();\n      this.setBlendMode();\n      var forceRealStack = this.data.ty === 0;\n      this.prepareLayer();\n      this.globalData.renderer.save(forceRealStack);\n      this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n      this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n      this.renderInnerContent();\n      this.globalData.renderer.restore(forceRealStack);\n      this.exitLayer();\n      if (this.maskManager.hasMasks) {\n        this.globalData.renderer.restore(true);\n      }\n      if (this._isFirstFrame) {\n        this._isFirstFrame = false;\n      }\n    },\n    destroy: function destroy() {\n      this.canvasContext = null;\n      this.data = null;\n      this.globalData = null;\n      this.maskManager.destroy();\n    },\n    mHelper: new Matrix()\n  };\n  CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n  CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n  function CVShapeData(element, data, styles, transformsManager) {\n    this.styledShapes = [];\n    this.tr = [0, 0, 0, 0, 0, 0];\n    var ty = 4;\n    if (data.ty === 'rc') {\n      ty = 5;\n    } else if (data.ty === 'el') {\n      ty = 6;\n    } else if (data.ty === 'sr') {\n      ty = 7;\n    }\n    this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n    var i;\n    var len = styles.length;\n    var styledShape;\n    for (i = 0; i < len; i += 1) {\n      if (!styles[i].closed) {\n        styledShape = {\n          transforms: transformsManager.addTransformSequence(styles[i].transforms),\n          trNodes: []\n        };\n        this.styledShapes.push(styledShape);\n        styles[i].elements.push(styledShape);\n      }\n    }\n  }\n  CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n  function CVShapeElement(data, globalData, comp) {\n    this.shapes = [];\n    this.shapesData = data.shapes;\n    this.stylesList = [];\n    this.itemsData = [];\n    this.prevViewData = [];\n    this.shapeModifiers = [];\n    this.processedElements = [];\n    this.transformsManager = new ShapeTransformManager();\n    this.initElement(data, globalData, comp);\n  }\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n  CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n  CVShapeElement.prototype.transformHelper = {\n    opacity: 1,\n    _opMdf: false\n  };\n  CVShapeElement.prototype.dashResetter = [];\n  CVShapeElement.prototype.createContent = function () {\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n  };\n  CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n    var styleElem = {\n      data: data,\n      type: data.ty,\n      preTransforms: this.transformsManager.addTransformSequence(transforms),\n      transforms: [],\n      elements: [],\n      closed: data.hd === true\n    };\n    var elementData = {};\n    if (data.ty === 'fl' || data.ty === 'st') {\n      elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n      if (!elementData.c.k) {\n        styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n      }\n    } else if (data.ty === 'gf' || data.ty === 'gs') {\n      elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n      elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n      elementData.h = PropertyFactory.getProp(this, data.h || {\n        k: 0\n      }, 0, 0.01, this);\n      elementData.a = PropertyFactory.getProp(this, data.a || {\n        k: 0\n      }, 0, degToRads, this);\n      elementData.g = new GradientProperty(this, data.g, this);\n    }\n    elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n    if (data.ty === 'st' || data.ty === 'gs') {\n      styleElem.lc = lineCapEnum[data.lc || 2];\n      styleElem.lj = lineJoinEnum[data.lj || 2];\n      if (data.lj == 1) {\n        // eslint-disable-line eqeqeq\n        styleElem.ml = data.ml;\n      }\n      elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n      if (!elementData.w.k) {\n        styleElem.wi = elementData.w.v;\n      }\n      if (data.d) {\n        var d = new DashProperty(this, data.d, 'canvas', this);\n        elementData.d = d;\n        if (!elementData.d.k) {\n          styleElem.da = elementData.d.dashArray;\n          styleElem[\"do\"] = elementData.d.dashoffset[0];\n        }\n      }\n    } else {\n      styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n    }\n    this.stylesList.push(styleElem);\n    elementData.style = styleElem;\n    return elementData;\n  };\n  CVShapeElement.prototype.createGroupElement = function () {\n    var elementData = {\n      it: [],\n      prevViewData: []\n    };\n    return elementData;\n  };\n  CVShapeElement.prototype.createTransformElement = function (data) {\n    var elementData = {\n      transform: {\n        opacity: 1,\n        _opMdf: false,\n        key: this.transformsManager.getNewKey(),\n        op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n        mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n      }\n    };\n    return elementData;\n  };\n  CVShapeElement.prototype.createShapeElement = function (data) {\n    var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n    this.shapes.push(elementData);\n    this.addShapeToModifiers(elementData);\n    return elementData;\n  };\n  CVShapeElement.prototype.reloadShapes = function () {\n    this._isFirstFrame = true;\n    var i;\n    var len = this.itemsData.length;\n    for (i = 0; i < len; i += 1) {\n      this.prevViewData[i] = this.itemsData[i];\n    }\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n    len = this.dynamicProperties.length;\n    for (i = 0; i < len; i += 1) {\n      this.dynamicProperties[i].getValue();\n    }\n    this.renderModifiers();\n    this.transformsManager.processSequences(this._isFirstFrame);\n  };\n  CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n    var i;\n    var len = this.stylesList.length;\n    for (i = 0; i < len; i += 1) {\n      if (!this.stylesList[i].closed) {\n        this.stylesList[i].transforms.push(transform);\n      }\n    }\n  };\n  CVShapeElement.prototype.removeTransformFromStyleList = function () {\n    var i;\n    var len = this.stylesList.length;\n    for (i = 0; i < len; i += 1) {\n      if (!this.stylesList[i].closed) {\n        this.stylesList[i].transforms.pop();\n      }\n    }\n  };\n  CVShapeElement.prototype.closeStyles = function (styles) {\n    var i;\n    var len = styles.length;\n    for (i = 0; i < len; i += 1) {\n      styles[i].closed = true;\n    }\n  };\n  CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n    var i;\n    var len = arr.length - 1;\n    var j;\n    var jLen;\n    var ownStyles = [];\n    var ownModifiers = [];\n    var processedPos;\n    var modifier;\n    var currentTransform;\n    var ownTransforms = [].concat(transforms);\n    for (i = len; i >= 0; i -= 1) {\n      processedPos = this.searchProcessedElement(arr[i]);\n      if (!processedPos) {\n        arr[i]._shouldRender = shouldRender;\n      } else {\n        itemsData[i] = prevViewData[processedPos - 1];\n      }\n      if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n        if (!processedPos) {\n          itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n        } else {\n          itemsData[i].style.closed = false;\n        }\n        ownStyles.push(itemsData[i].style);\n      } else if (arr[i].ty === 'gr') {\n        if (!processedPos) {\n          itemsData[i] = this.createGroupElement(arr[i]);\n        } else {\n          jLen = itemsData[i].it.length;\n          for (j = 0; j < jLen; j += 1) {\n            itemsData[i].prevViewData[j] = itemsData[i].it[j];\n          }\n        }\n        this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n      } else if (arr[i].ty === 'tr') {\n        if (!processedPos) {\n          currentTransform = this.createTransformElement(arr[i]);\n          itemsData[i] = currentTransform;\n        }\n        ownTransforms.push(itemsData[i]);\n        this.addTransformToStyleList(itemsData[i]);\n      } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n        if (!processedPos) {\n          itemsData[i] = this.createShapeElement(arr[i]);\n        }\n      } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n        if (!processedPos) {\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\n          modifier.init(this, arr[i]);\n          itemsData[i] = modifier;\n          this.shapeModifiers.push(modifier);\n        } else {\n          modifier = itemsData[i];\n          modifier.closed = false;\n        }\n        ownModifiers.push(modifier);\n      } else if (arr[i].ty === 'rp') {\n        if (!processedPos) {\n          modifier = ShapeModifiers.getModifier(arr[i].ty);\n          itemsData[i] = modifier;\n          modifier.init(this, arr, i, itemsData);\n          this.shapeModifiers.push(modifier);\n          shouldRender = false;\n        } else {\n          modifier = itemsData[i];\n          modifier.closed = true;\n        }\n        ownModifiers.push(modifier);\n      }\n      this.addProcessedElement(arr[i], i + 1);\n    }\n    this.removeTransformFromStyleList();\n    this.closeStyles(ownStyles);\n    len = ownModifiers.length;\n    for (i = 0; i < len; i += 1) {\n      ownModifiers[i].closed = true;\n    }\n  };\n  CVShapeElement.prototype.renderInnerContent = function () {\n    this.transformHelper.opacity = 1;\n    this.transformHelper._opMdf = false;\n    this.renderModifiers();\n    this.transformsManager.processSequences(this._isFirstFrame);\n    this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n  };\n  CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n    if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n      groupTransform.opacity = parentTransform.opacity;\n      groupTransform.opacity *= groupTransform.op.v;\n      groupTransform._opMdf = true;\n    }\n  };\n  CVShapeElement.prototype.drawLayer = function () {\n    var i;\n    var len = this.stylesList.length;\n    var j;\n    var jLen;\n    var k;\n    var kLen;\n    var elems;\n    var nodes;\n    var renderer = this.globalData.renderer;\n    var ctx = this.globalData.canvasContext;\n    var type;\n    var currentStyle;\n    for (i = 0; i < len; i += 1) {\n      currentStyle = this.stylesList[i];\n      type = currentStyle.type;\n\n      // Skipping style when\n      // Stroke width equals 0\n      // style should not be rendered (extra unused repeaters)\n      // current opacity equals 0\n      // global opacity equals 0\n      if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n        renderer.save();\n        elems = currentStyle.elements;\n        if (type === 'st' || type === 'gs') {\n          renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd);\n          // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n          renderer.ctxLineWidth(currentStyle.wi);\n          // ctx.lineWidth = currentStyle.wi;\n          renderer.ctxLineCap(currentStyle.lc);\n          // ctx.lineCap = currentStyle.lc;\n          renderer.ctxLineJoin(currentStyle.lj);\n          // ctx.lineJoin = currentStyle.lj;\n          renderer.ctxMiterLimit(currentStyle.ml || 0);\n          // ctx.miterLimit = currentStyle.ml || 0;\n        } else {\n          renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd);\n          // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n        }\n        renderer.ctxOpacity(currentStyle.coOp);\n        if (type !== 'st' && type !== 'gs') {\n          ctx.beginPath();\n        }\n        renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n        jLen = elems.length;\n        for (j = 0; j < jLen; j += 1) {\n          if (type === 'st' || type === 'gs') {\n            ctx.beginPath();\n            if (currentStyle.da) {\n              ctx.setLineDash(currentStyle.da);\n              ctx.lineDashOffset = currentStyle[\"do\"];\n            }\n          }\n          nodes = elems[j].trNodes;\n          kLen = nodes.length;\n          for (k = 0; k < kLen; k += 1) {\n            if (nodes[k].t === 'm') {\n              ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n            } else if (nodes[k].t === 'c') {\n              ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n            } else {\n              ctx.closePath();\n            }\n          }\n          if (type === 'st' || type === 'gs') {\n            // ctx.stroke();\n            renderer.ctxStroke();\n            if (currentStyle.da) {\n              ctx.setLineDash(this.dashResetter);\n            }\n          }\n        }\n        if (type !== 'st' && type !== 'gs') {\n          // ctx.fill(currentStyle.r);\n          this.globalData.renderer.ctxFill(currentStyle.r);\n        }\n        renderer.restore();\n      }\n    }\n  };\n  CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n    var i;\n    var len = items.length - 1;\n    var groupTransform;\n    groupTransform = parentTransform;\n    for (i = len; i >= 0; i -= 1) {\n      if (items[i].ty === 'tr') {\n        groupTransform = data[i].transform;\n        this.renderShapeTransform(parentTransform, groupTransform);\n      } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n        this.renderPath(items[i], data[i]);\n      } else if (items[i].ty === 'fl') {\n        this.renderFill(items[i], data[i], groupTransform);\n      } else if (items[i].ty === 'st') {\n        this.renderStroke(items[i], data[i], groupTransform);\n      } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n        this.renderGradientFill(items[i], data[i], groupTransform);\n      } else if (items[i].ty === 'gr') {\n        this.renderShape(groupTransform, items[i].it, data[i].it);\n      } else if (items[i].ty === 'tm') {\n        //\n      }\n    }\n    if (isMain) {\n      this.drawLayer();\n    }\n  };\n  CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n    if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n      var shapeNodes = styledShape.trNodes;\n      var paths = shape.paths;\n      var i;\n      var len;\n      var j;\n      var jLen = paths._length;\n      shapeNodes.length = 0;\n      var groupTransformMat = styledShape.transforms.finalTransform;\n      for (j = 0; j < jLen; j += 1) {\n        var pathNodes = paths.shapes[j];\n        if (pathNodes && pathNodes.v) {\n          len = pathNodes._length;\n          for (i = 1; i < len; i += 1) {\n            if (i === 1) {\n              shapeNodes.push({\n                t: 'm',\n                p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n              });\n            }\n            shapeNodes.push({\n              t: 'c',\n              pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n            });\n          }\n          if (len === 1) {\n            shapeNodes.push({\n              t: 'm',\n              p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n            });\n          }\n          if (pathNodes.c && len) {\n            shapeNodes.push({\n              t: 'c',\n              pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n            });\n            shapeNodes.push({\n              t: 'z'\n            });\n          }\n        }\n      }\n      styledShape.trNodes = shapeNodes;\n    }\n  };\n  CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n    if (pathData.hd !== true && pathData._shouldRender) {\n      var i;\n      var len = itemData.styledShapes.length;\n      for (i = 0; i < len; i += 1) {\n        this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n      }\n    }\n  };\n  CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n    var styleElem = itemData.style;\n    if (itemData.c._mdf || this._isFirstFrame) {\n      styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n    }\n    if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n      styleElem.coOp = itemData.o.v * groupTransform.opacity;\n    }\n  };\n  CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n    var styleElem = itemData.style;\n    var grd;\n    if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n      var ctx = this.globalData.canvasContext;\n      var pt1 = itemData.s.v;\n      var pt2 = itemData.e.v;\n      if (styleData.t === 1) {\n        grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n      } else {\n        var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n        var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n        var percent = itemData.h.v;\n        if (percent >= 1) {\n          percent = 0.99;\n        } else if (percent <= -1) {\n          percent = -0.99;\n        }\n        var dist = rad * percent;\n        var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n        var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n        grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n      }\n      var i;\n      var len = styleData.g.p;\n      var cValues = itemData.g.c;\n      var opacity = 1;\n      for (i = 0; i < len; i += 1) {\n        if (itemData.g._hasOpacity && itemData.g._collapsable) {\n          opacity = itemData.g.o[i * 2 + 1];\n        }\n        grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n      }\n      styleElem.grd = grd;\n    }\n    styleElem.coOp = itemData.o.v * groupTransform.opacity;\n  };\n  CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n    var styleElem = itemData.style;\n    var d = itemData.d;\n    if (d && (d._mdf || this._isFirstFrame)) {\n      styleElem.da = d.dashArray;\n      styleElem[\"do\"] = d.dashoffset[0];\n    }\n    if (itemData.c._mdf || this._isFirstFrame) {\n      styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n    }\n    if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n      styleElem.coOp = itemData.o.v * groupTransform.opacity;\n    }\n    if (itemData.w._mdf || this._isFirstFrame) {\n      styleElem.wi = itemData.w.v;\n    }\n  };\n  CVShapeElement.prototype.destroy = function () {\n    this.shapesData = null;\n    this.globalData = null;\n    this.canvasContext = null;\n    this.stylesList.length = 0;\n    this.itemsData.length = 0;\n  };\n\n  function CVTextElement(data, globalData, comp) {\n    this.textSpans = [];\n    this.yOffset = 0;\n    this.fillColorAnim = false;\n    this.strokeColorAnim = false;\n    this.strokeWidthAnim = false;\n    this.stroke = false;\n    this.fill = false;\n    this.justifyOffset = 0;\n    this.currentRender = null;\n    this.renderType = 'canvas';\n    this.values = {\n      fill: 'rgba(0,0,0,0)',\n      stroke: 'rgba(0,0,0,0)',\n      sWidth: 0,\n      fValue: ''\n    };\n    this.initElement(data, globalData, comp);\n  }\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n  CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n  CVTextElement.prototype.buildNewText = function () {\n    var documentData = this.textProperty.currentData;\n    this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n    var hasFill = false;\n    if (documentData.fc) {\n      hasFill = true;\n      this.values.fill = this.buildColor(documentData.fc);\n    } else {\n      this.values.fill = 'rgba(0,0,0,0)';\n    }\n    this.fill = hasFill;\n    var hasStroke = false;\n    if (documentData.sc) {\n      hasStroke = true;\n      this.values.stroke = this.buildColor(documentData.sc);\n      this.values.sWidth = documentData.sw;\n    }\n    var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n    var i;\n    var len;\n    var letters = documentData.l;\n    var matrixHelper = this.mHelper;\n    this.stroke = hasStroke;\n    this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n    len = documentData.finalText.length;\n    // this.tHelper.font = this.values.fValue;\n    var charData;\n    var shapeData;\n    var k;\n    var kLen;\n    var shapes;\n    var j;\n    var jLen;\n    var pathNodes;\n    var commands;\n    var pathArr;\n    var singleShape = this.data.singleShape;\n    var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n    var xPos = 0;\n    var yPos = 0;\n    var firstLine = true;\n    var cnt = 0;\n    for (i = 0; i < len; i += 1) {\n      charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n      shapeData = charData && charData.data || {};\n      matrixHelper.reset();\n      if (singleShape && letters[i].n) {\n        xPos = -trackingOffset;\n        yPos += documentData.yOffset;\n        yPos += firstLine ? 1 : 0;\n        firstLine = false;\n      }\n      shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n      jLen = shapes.length;\n      matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n      if (singleShape) {\n        this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n      }\n      commands = createSizedArray(jLen - 1);\n      var commandsCounter = 0;\n      for (j = 0; j < jLen; j += 1) {\n        if (shapes[j].ty === 'sh') {\n          kLen = shapes[j].ks.k.i.length;\n          pathNodes = shapes[j].ks.k;\n          pathArr = [];\n          for (k = 1; k < kLen; k += 1) {\n            if (k === 1) {\n              pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n            }\n            pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n          }\n          pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n          commands[commandsCounter] = pathArr;\n          commandsCounter += 1;\n        }\n      }\n      if (singleShape) {\n        xPos += letters[i].l;\n        xPos += trackingOffset;\n      }\n      if (this.textSpans[cnt]) {\n        this.textSpans[cnt].elem = commands;\n      } else {\n        this.textSpans[cnt] = {\n          elem: commands\n        };\n      }\n      cnt += 1;\n    }\n  };\n  CVTextElement.prototype.renderInnerContent = function () {\n    this.validateText();\n    var ctx = this.canvasContext;\n    ctx.font = this.values.fValue;\n    this.globalData.renderer.ctxLineCap('butt');\n    // ctx.lineCap = 'butt';\n    this.globalData.renderer.ctxLineJoin('miter');\n    // ctx.lineJoin = 'miter';\n    this.globalData.renderer.ctxMiterLimit(4);\n    // ctx.miterLimit = 4;\n\n    if (!this.data.singleShape) {\n      this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n    }\n    var i;\n    var len;\n    var j;\n    var jLen;\n    var k;\n    var kLen;\n    var renderedLetters = this.textAnimator.renderedLetters;\n    var letters = this.textProperty.currentData.l;\n    len = letters.length;\n    var renderedLetter;\n    var lastFill = null;\n    var lastStroke = null;\n    var lastStrokeW = null;\n    var commands;\n    var pathArr;\n    var renderer = this.globalData.renderer;\n    for (i = 0; i < len; i += 1) {\n      if (!letters[i].n) {\n        renderedLetter = renderedLetters[i];\n        if (renderedLetter) {\n          renderer.save();\n          renderer.ctxTransform(renderedLetter.p);\n          renderer.ctxOpacity(renderedLetter.o);\n        }\n        if (this.fill) {\n          if (renderedLetter && renderedLetter.fc) {\n            if (lastFill !== renderedLetter.fc) {\n              renderer.ctxFillStyle(renderedLetter.fc);\n              lastFill = renderedLetter.fc;\n              // ctx.fillStyle = renderedLetter.fc;\n            }\n          } else if (lastFill !== this.values.fill) {\n            lastFill = this.values.fill;\n            renderer.ctxFillStyle(this.values.fill);\n            // ctx.fillStyle = this.values.fill;\n          }\n          commands = this.textSpans[i].elem;\n          jLen = commands.length;\n          this.globalData.canvasContext.beginPath();\n          for (j = 0; j < jLen; j += 1) {\n            pathArr = commands[j];\n            kLen = pathArr.length;\n            this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n            for (k = 2; k < kLen; k += 6) {\n              this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n            }\n          }\n          this.globalData.canvasContext.closePath();\n          renderer.ctxFill();\n          // this.globalData.canvasContext.fill();\n          /// ctx.fillText(this.textSpans[i].val,0,0);\n        }\n        if (this.stroke) {\n          if (renderedLetter && renderedLetter.sw) {\n            if (lastStrokeW !== renderedLetter.sw) {\n              lastStrokeW = renderedLetter.sw;\n              renderer.ctxLineWidth(renderedLetter.sw);\n              // ctx.lineWidth = renderedLetter.sw;\n            }\n          } else if (lastStrokeW !== this.values.sWidth) {\n            lastStrokeW = this.values.sWidth;\n            renderer.ctxLineWidth(this.values.sWidth);\n            // ctx.lineWidth = this.values.sWidth;\n          }\n          if (renderedLetter && renderedLetter.sc) {\n            if (lastStroke !== renderedLetter.sc) {\n              lastStroke = renderedLetter.sc;\n              renderer.ctxStrokeStyle(renderedLetter.sc);\n              // ctx.strokeStyle = renderedLetter.sc;\n            }\n          } else if (lastStroke !== this.values.stroke) {\n            lastStroke = this.values.stroke;\n            renderer.ctxStrokeStyle(this.values.stroke);\n            // ctx.strokeStyle = this.values.stroke;\n          }\n          commands = this.textSpans[i].elem;\n          jLen = commands.length;\n          this.globalData.canvasContext.beginPath();\n          for (j = 0; j < jLen; j += 1) {\n            pathArr = commands[j];\n            kLen = pathArr.length;\n            this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n            for (k = 2; k < kLen; k += 6) {\n              this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n            }\n          }\n          this.globalData.canvasContext.closePath();\n          renderer.ctxStroke();\n          // this.globalData.canvasContext.stroke();\n          /// ctx.strokeText(letters[i].val,0,0);\n        }\n        if (renderedLetter) {\n          this.globalData.renderer.restore();\n        }\n      }\n    }\n  };\n\n  function CVImageElement(data, globalData, comp) {\n    this.assetData = globalData.getAssetData(data.refId);\n    this.img = globalData.imageLoader.getAsset(this.assetData);\n    this.initElement(data, globalData, comp);\n  }\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n  CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n  CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n  CVImageElement.prototype.createContent = function () {\n    if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n      var canvas = createTag('canvas');\n      canvas.width = this.assetData.w;\n      canvas.height = this.assetData.h;\n      var ctx = canvas.getContext('2d');\n      var imgW = this.img.width;\n      var imgH = this.img.height;\n      var imgRel = imgW / imgH;\n      var canvasRel = this.assetData.w / this.assetData.h;\n      var widthCrop;\n      var heightCrop;\n      var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n      if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n        heightCrop = imgH;\n        widthCrop = heightCrop * canvasRel;\n      } else {\n        widthCrop = imgW;\n        heightCrop = widthCrop / canvasRel;\n      }\n      ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n      this.img = canvas;\n    }\n  };\n  CVImageElement.prototype.renderInnerContent = function () {\n    this.canvasContext.drawImage(this.img, 0, 0);\n  };\n  CVImageElement.prototype.destroy = function () {\n    this.img = null;\n  };\n\n  function CVSolidElement(data, globalData, comp) {\n    this.initElement(data, globalData, comp);\n  }\n  extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n  CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n  CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n  CVSolidElement.prototype.renderInnerContent = function () {\n    // var ctx = this.canvasContext;\n    this.globalData.renderer.ctxFillStyle(this.data.sc);\n    // ctx.fillStyle = this.data.sc;\n    this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh);\n    // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n    //\n  };\n\n  function CanvasRendererBase() {}\n  extendPrototype([BaseRenderer], CanvasRendererBase);\n  CanvasRendererBase.prototype.createShape = function (data) {\n    return new CVShapeElement(data, this.globalData, this);\n  };\n  CanvasRendererBase.prototype.createText = function (data) {\n    return new CVTextElement(data, this.globalData, this);\n  };\n  CanvasRendererBase.prototype.createImage = function (data) {\n    return new CVImageElement(data, this.globalData, this);\n  };\n  CanvasRendererBase.prototype.createSolid = function (data) {\n    return new CVSolidElement(data, this.globalData, this);\n  };\n  CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n  CanvasRendererBase.prototype.ctxTransform = function (props) {\n    if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n      return;\n    }\n    this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n  };\n  CanvasRendererBase.prototype.ctxOpacity = function (op) {\n    this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n  };\n  CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n    this.canvasContext.fillStyle = value;\n  };\n  CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n    this.canvasContext.strokeStyle = value;\n  };\n  CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n    this.canvasContext.lineWidth = value;\n  };\n  CanvasRendererBase.prototype.ctxLineCap = function (value) {\n    this.canvasContext.lineCap = value;\n  };\n  CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n    this.canvasContext.lineJoin = value;\n  };\n  CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n    this.canvasContext.miterLimit = value;\n  };\n  CanvasRendererBase.prototype.ctxFill = function (rule) {\n    this.canvasContext.fill(rule);\n  };\n  CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n    this.canvasContext.fillRect(x, y, w, h);\n  };\n  CanvasRendererBase.prototype.ctxStroke = function () {\n    this.canvasContext.stroke();\n  };\n  CanvasRendererBase.prototype.reset = function () {\n    if (!this.renderConfig.clearCanvas) {\n      this.canvasContext.restore();\n      return;\n    }\n    this.contextData.reset();\n  };\n  CanvasRendererBase.prototype.save = function () {\n    this.canvasContext.save();\n  };\n  CanvasRendererBase.prototype.restore = function (actionFlag) {\n    if (!this.renderConfig.clearCanvas) {\n      this.canvasContext.restore();\n      return;\n    }\n    if (actionFlag) {\n      this.globalData.blendMode = 'source-over';\n    }\n    this.contextData.restore(actionFlag);\n  };\n  CanvasRendererBase.prototype.configAnimation = function (animData) {\n    if (this.animationItem.wrapper) {\n      this.animationItem.container = createTag('canvas');\n      var containerStyle = this.animationItem.container.style;\n      containerStyle.width = '100%';\n      containerStyle.height = '100%';\n      var origin = '0px 0px 0px';\n      containerStyle.transformOrigin = origin;\n      containerStyle.mozTransformOrigin = origin;\n      containerStyle.webkitTransformOrigin = origin;\n      containerStyle['-webkit-transform'] = origin;\n      containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n      this.animationItem.wrapper.appendChild(this.animationItem.container);\n      this.canvasContext = this.animationItem.container.getContext('2d');\n      if (this.renderConfig.className) {\n        this.animationItem.container.setAttribute('class', this.renderConfig.className);\n      }\n      if (this.renderConfig.id) {\n        this.animationItem.container.setAttribute('id', this.renderConfig.id);\n      }\n    } else {\n      this.canvasContext = this.renderConfig.context;\n    }\n    this.contextData.setContext(this.canvasContext);\n    this.data = animData;\n    this.layers = animData.layers;\n    this.transformCanvas = {\n      w: animData.w,\n      h: animData.h,\n      sx: 0,\n      sy: 0,\n      tx: 0,\n      ty: 0\n    };\n    this.setupGlobalData(animData, document.body);\n    this.globalData.canvasContext = this.canvasContext;\n    this.globalData.renderer = this;\n    this.globalData.isDashed = false;\n    this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n    this.globalData.transformCanvas = this.transformCanvas;\n    this.elements = createSizedArray(animData.layers.length);\n    this.updateContainerSize();\n  };\n  CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n    this.reset();\n    var elementWidth;\n    var elementHeight;\n    if (width) {\n      elementWidth = width;\n      elementHeight = height;\n      this.canvasContext.canvas.width = elementWidth;\n      this.canvasContext.canvas.height = elementHeight;\n    } else {\n      if (this.animationItem.wrapper && this.animationItem.container) {\n        elementWidth = this.animationItem.wrapper.offsetWidth;\n        elementHeight = this.animationItem.wrapper.offsetHeight;\n      } else {\n        elementWidth = this.canvasContext.canvas.width;\n        elementHeight = this.canvasContext.canvas.height;\n      }\n      this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n      this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n    }\n    var elementRel;\n    var animationRel;\n    if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n      var par = this.renderConfig.preserveAspectRatio.split(' ');\n      var fillType = par[1] || 'meet';\n      var pos = par[0] || 'xMidYMid';\n      var xPos = pos.substr(0, 4);\n      var yPos = pos.substr(4);\n      elementRel = elementWidth / elementHeight;\n      animationRel = this.transformCanvas.w / this.transformCanvas.h;\n      if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n        this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n        this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n      } else {\n        this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n        this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n      }\n      if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n        this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n      } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n        this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n      } else {\n        this.transformCanvas.tx = 0;\n      }\n      if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n        this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n      } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n        this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n      } else {\n        this.transformCanvas.ty = 0;\n      }\n    } else if (this.renderConfig.preserveAspectRatio === 'none') {\n      this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n      this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n      this.transformCanvas.tx = 0;\n      this.transformCanvas.ty = 0;\n    } else {\n      this.transformCanvas.sx = this.renderConfig.dpr;\n      this.transformCanvas.sy = this.renderConfig.dpr;\n      this.transformCanvas.tx = 0;\n      this.transformCanvas.ty = 0;\n    }\n    this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n    /* var i, len = this.elements.length;\n      for(i=0;i<len;i+=1){\n          if(this.elements[i] && this.elements[i].data.ty === 0){\n              this.elements[i].resize(this.globalData.transformCanvas);\n          }\n      } */\n    this.ctxTransform(this.transformCanvas.props);\n    this.canvasContext.beginPath();\n    this.canvasContext.rect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n    this.canvasContext.closePath();\n    this.canvasContext.clip();\n    this.renderFrame(this.renderedFrame, true);\n  };\n  CanvasRendererBase.prototype.destroy = function () {\n    if (this.renderConfig.clearCanvas && this.animationItem.wrapper) {\n      this.animationItem.wrapper.innerText = '';\n    }\n    var i;\n    var len = this.layers ? this.layers.length : 0;\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.elements[i] && this.elements[i].destroy) {\n        this.elements[i].destroy();\n      }\n    }\n    this.elements.length = 0;\n    this.globalData.canvasContext = null;\n    this.animationItem.container = null;\n    this.destroyed = true;\n  };\n  CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n    if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n      return;\n    }\n    this.renderedFrame = num;\n    this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n    this.globalData.frameId += 1;\n    this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n    this.globalData.projectInterface.currentFrame = num;\n\n    // console.log('--------');\n    // console.log('NEW: ',num);\n    var i;\n    var len = this.layers.length;\n    if (!this.completeLayers) {\n      this.checkLayers(num);\n    }\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].prepareFrame(num - this.layers[i].st);\n      }\n    }\n    if (this.globalData._mdf) {\n      if (this.renderConfig.clearCanvas === true) {\n        this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n      } else {\n        this.save();\n      }\n      for (i = len - 1; i >= 0; i -= 1) {\n        if (this.completeLayers || this.elements[i]) {\n          this.elements[i].renderFrame();\n        }\n      }\n      if (this.renderConfig.clearCanvas !== true) {\n        this.restore();\n      }\n    }\n  };\n  CanvasRendererBase.prototype.buildItem = function (pos) {\n    var elements = this.elements;\n    if (elements[pos] || this.layers[pos].ty === 99) {\n      return;\n    }\n    var element = this.createItem(this.layers[pos], this, this.globalData);\n    elements[pos] = element;\n    element.initExpressions();\n    /* if(this.layers[pos].ty === 0){\n          element.resize(this.globalData.transformCanvas);\n      } */\n  };\n  CanvasRendererBase.prototype.checkPendingElements = function () {\n    while (this.pendingElements.length) {\n      var element = this.pendingElements.pop();\n      element.checkParenting();\n    }\n  };\n  CanvasRendererBase.prototype.hide = function () {\n    this.animationItem.container.style.display = 'none';\n  };\n  CanvasRendererBase.prototype.show = function () {\n    this.animationItem.container.style.display = 'block';\n  };\n\n  function CanvasContext() {\n    this.opacity = -1;\n    this.transform = createTypedArray('float32', 16);\n    this.fillStyle = '';\n    this.strokeStyle = '';\n    this.lineWidth = '';\n    this.lineCap = '';\n    this.lineJoin = '';\n    this.miterLimit = '';\n    this.id = Math.random();\n  }\n  function CVContextData() {\n    this.stack = [];\n    this.cArrPos = 0;\n    this.cTr = new Matrix();\n    var i;\n    var len = 15;\n    for (i = 0; i < len; i += 1) {\n      var canvasContext = new CanvasContext();\n      this.stack[i] = canvasContext;\n    }\n    this._length = len;\n    this.nativeContext = null;\n    this.transformMat = new Matrix();\n    this.currentOpacity = 1;\n    //\n    this.currentFillStyle = '';\n    this.appliedFillStyle = '';\n    //\n    this.currentStrokeStyle = '';\n    this.appliedStrokeStyle = '';\n    //\n    this.currentLineWidth = '';\n    this.appliedLineWidth = '';\n    //\n    this.currentLineCap = '';\n    this.appliedLineCap = '';\n    //\n    this.currentLineJoin = '';\n    this.appliedLineJoin = '';\n    //\n    this.appliedMiterLimit = '';\n    this.currentMiterLimit = '';\n  }\n  CVContextData.prototype.duplicate = function () {\n    var newLength = this._length * 2;\n    var i = 0;\n    for (i = this._length; i < newLength; i += 1) {\n      this.stack[i] = new CanvasContext();\n    }\n    this._length = newLength;\n  };\n  CVContextData.prototype.reset = function () {\n    this.cArrPos = 0;\n    this.cTr.reset();\n    this.stack[this.cArrPos].opacity = 1;\n  };\n  CVContextData.prototype.restore = function (forceRestore) {\n    this.cArrPos -= 1;\n    var currentContext = this.stack[this.cArrPos];\n    var transform = currentContext.transform;\n    var i;\n    var arr = this.cTr.props;\n    for (i = 0; i < 16; i += 1) {\n      arr[i] = transform[i];\n    }\n    if (forceRestore) {\n      this.nativeContext.restore();\n      var prevStack = this.stack[this.cArrPos + 1];\n      this.appliedFillStyle = prevStack.fillStyle;\n      this.appliedStrokeStyle = prevStack.strokeStyle;\n      this.appliedLineWidth = prevStack.lineWidth;\n      this.appliedLineCap = prevStack.lineCap;\n      this.appliedLineJoin = prevStack.lineJoin;\n      this.appliedMiterLimit = prevStack.miterLimit;\n    }\n    this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n    if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n      this.nativeContext.globalAlpha = currentContext.opacity;\n      this.currentOpacity = currentContext.opacity;\n    }\n    this.currentFillStyle = currentContext.fillStyle;\n    this.currentStrokeStyle = currentContext.strokeStyle;\n    this.currentLineWidth = currentContext.lineWidth;\n    this.currentLineCap = currentContext.lineCap;\n    this.currentLineJoin = currentContext.lineJoin;\n    this.currentMiterLimit = currentContext.miterLimit;\n  };\n  CVContextData.prototype.save = function (saveOnNativeFlag) {\n    if (saveOnNativeFlag) {\n      this.nativeContext.save();\n    }\n    var props = this.cTr.props;\n    if (this._length <= this.cArrPos) {\n      this.duplicate();\n    }\n    var currentStack = this.stack[this.cArrPos];\n    var i;\n    for (i = 0; i < 16; i += 1) {\n      currentStack.transform[i] = props[i];\n    }\n    this.cArrPos += 1;\n    var newStack = this.stack[this.cArrPos];\n    newStack.opacity = currentStack.opacity;\n    newStack.fillStyle = currentStack.fillStyle;\n    newStack.strokeStyle = currentStack.strokeStyle;\n    newStack.lineWidth = currentStack.lineWidth;\n    newStack.lineCap = currentStack.lineCap;\n    newStack.lineJoin = currentStack.lineJoin;\n    newStack.miterLimit = currentStack.miterLimit;\n  };\n  CVContextData.prototype.setOpacity = function (value) {\n    this.stack[this.cArrPos].opacity = value;\n  };\n  CVContextData.prototype.setContext = function (value) {\n    this.nativeContext = value;\n  };\n  CVContextData.prototype.fillStyle = function (value) {\n    if (this.stack[this.cArrPos].fillStyle !== value) {\n      this.currentFillStyle = value;\n      this.stack[this.cArrPos].fillStyle = value;\n    }\n  };\n  CVContextData.prototype.strokeStyle = function (value) {\n    if (this.stack[this.cArrPos].strokeStyle !== value) {\n      this.currentStrokeStyle = value;\n      this.stack[this.cArrPos].strokeStyle = value;\n    }\n  };\n  CVContextData.prototype.lineWidth = function (value) {\n    if (this.stack[this.cArrPos].lineWidth !== value) {\n      this.currentLineWidth = value;\n      this.stack[this.cArrPos].lineWidth = value;\n    }\n  };\n  CVContextData.prototype.lineCap = function (value) {\n    if (this.stack[this.cArrPos].lineCap !== value) {\n      this.currentLineCap = value;\n      this.stack[this.cArrPos].lineCap = value;\n    }\n  };\n  CVContextData.prototype.lineJoin = function (value) {\n    if (this.stack[this.cArrPos].lineJoin !== value) {\n      this.currentLineJoin = value;\n      this.stack[this.cArrPos].lineJoin = value;\n    }\n  };\n  CVContextData.prototype.miterLimit = function (value) {\n    if (this.stack[this.cArrPos].miterLimit !== value) {\n      this.currentMiterLimit = value;\n      this.stack[this.cArrPos].miterLimit = value;\n    }\n  };\n  CVContextData.prototype.transform = function (props) {\n    this.transformMat.cloneFromProps(props);\n    // Taking the last transform value from the stored stack of transforms\n    var currentTransform = this.cTr;\n    // Applying the last transform value after the new transform to respect the order of transformations\n    this.transformMat.multiply(currentTransform);\n    // Storing the new transformed value in the stored transform\n    currentTransform.cloneFromProps(this.transformMat.props);\n    var trProps = currentTransform.props;\n    // Applying the new transform to the canvas\n    this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n  };\n  CVContextData.prototype.opacity = function (op) {\n    var currentOpacity = this.stack[this.cArrPos].opacity;\n    currentOpacity *= op < 0 ? 0 : op;\n    if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n      if (this.currentOpacity !== op) {\n        this.nativeContext.globalAlpha = op;\n        this.currentOpacity = op;\n      }\n      this.stack[this.cArrPos].opacity = currentOpacity;\n    }\n  };\n  CVContextData.prototype.fill = function (rule) {\n    if (this.appliedFillStyle !== this.currentFillStyle) {\n      this.appliedFillStyle = this.currentFillStyle;\n      this.nativeContext.fillStyle = this.appliedFillStyle;\n    }\n    this.nativeContext.fill(rule);\n  };\n  CVContextData.prototype.fillRect = function (x, y, w, h) {\n    if (this.appliedFillStyle !== this.currentFillStyle) {\n      this.appliedFillStyle = this.currentFillStyle;\n      this.nativeContext.fillStyle = this.appliedFillStyle;\n    }\n    this.nativeContext.fillRect(x, y, w, h);\n  };\n  CVContextData.prototype.stroke = function () {\n    if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n      this.appliedStrokeStyle = this.currentStrokeStyle;\n      this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n    }\n    if (this.appliedLineWidth !== this.currentLineWidth) {\n      this.appliedLineWidth = this.currentLineWidth;\n      this.nativeContext.lineWidth = this.appliedLineWidth;\n    }\n    if (this.appliedLineCap !== this.currentLineCap) {\n      this.appliedLineCap = this.currentLineCap;\n      this.nativeContext.lineCap = this.appliedLineCap;\n    }\n    if (this.appliedLineJoin !== this.currentLineJoin) {\n      this.appliedLineJoin = this.currentLineJoin;\n      this.nativeContext.lineJoin = this.appliedLineJoin;\n    }\n    if (this.appliedMiterLimit !== this.currentMiterLimit) {\n      this.appliedMiterLimit = this.currentMiterLimit;\n      this.nativeContext.miterLimit = this.appliedMiterLimit;\n    }\n    this.nativeContext.stroke();\n  };\n\n  function CVCompElement(data, globalData, comp) {\n    this.completeLayers = false;\n    this.layers = data.layers;\n    this.pendingElements = [];\n    this.elements = createSizedArray(this.layers.length);\n    this.initElement(data, globalData, comp);\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n      _placeholder: true\n    };\n  }\n  extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n  CVCompElement.prototype.renderInnerContent = function () {\n    var ctx = this.canvasContext;\n    ctx.beginPath();\n    ctx.moveTo(0, 0);\n    ctx.lineTo(this.data.w, 0);\n    ctx.lineTo(this.data.w, this.data.h);\n    ctx.lineTo(0, this.data.h);\n    ctx.lineTo(0, 0);\n    ctx.clip();\n    var i;\n    var len = this.layers.length;\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.completeLayers || this.elements[i]) {\n        this.elements[i].renderFrame();\n      }\n    }\n  };\n  CVCompElement.prototype.destroy = function () {\n    var i;\n    var len = this.layers.length;\n    for (i = len - 1; i >= 0; i -= 1) {\n      if (this.elements[i]) {\n        this.elements[i].destroy();\n      }\n    }\n    this.layers = null;\n    this.elements = null;\n  };\n  CVCompElement.prototype.createComp = function (data) {\n    return new CVCompElement(data, this.globalData, this);\n  };\n\n  function CanvasRenderer(animationItem, config) {\n    this.animationItem = animationItem;\n    this.renderConfig = {\n      clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n      context: config && config.context || null,\n      progressiveLoad: config && config.progressiveLoad || false,\n      preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n      contentVisibility: config && config.contentVisibility || 'visible',\n      className: config && config.className || '',\n      id: config && config.id || '',\n      runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n    };\n    this.renderConfig.dpr = config && config.dpr || 1;\n    if (this.animationItem.wrapper) {\n      this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n    }\n    this.renderedFrame = -1;\n    this.globalData = {\n      frameNum: -1,\n      _mdf: false,\n      renderConfig: this.renderConfig,\n      currentGlobalAlpha: -1\n    };\n    this.contextData = new CVContextData();\n    this.elements = [];\n    this.pendingElements = [];\n    this.transformMat = new Matrix();\n    this.completeLayers = false;\n    this.rendererType = 'canvas';\n    if (this.renderConfig.clearCanvas) {\n      this.ctxTransform = this.contextData.transform.bind(this.contextData);\n      this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n      this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n      this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n      this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n      this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n      this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n      this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n      this.ctxFill = this.contextData.fill.bind(this.contextData);\n      this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n      this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n      this.save = this.contextData.save.bind(this.contextData);\n    }\n  }\n  extendPrototype([CanvasRendererBase], CanvasRenderer);\n  CanvasRenderer.prototype.createComp = function (data) {\n    return new CVCompElement(data, this.globalData, this);\n  };\n\n  function HBaseElement() {}\n  HBaseElement.prototype = {\n    checkBlendMode: function checkBlendMode() {},\n    initRendererElement: function initRendererElement() {\n      this.baseElement = createTag(this.data.tg || 'div');\n      if (this.data.hasMask) {\n        this.svgElement = createNS('svg');\n        this.layerElement = createNS('g');\n        this.maskedElement = this.layerElement;\n        this.svgElement.appendChild(this.layerElement);\n        this.baseElement.appendChild(this.svgElement);\n      } else {\n        this.layerElement = this.baseElement;\n      }\n      styleDiv(this.baseElement);\n    },\n    createContainerElements: function createContainerElements() {\n      this.renderableEffectsManager = new CVEffects(this);\n      this.transformedElement = this.baseElement;\n      this.maskedElement = this.layerElement;\n      if (this.data.ln) {\n        this.layerElement.setAttribute('id', this.data.ln);\n      }\n      if (this.data.cl) {\n        this.layerElement.setAttribute('class', this.data.cl);\n      }\n      if (this.data.bm !== 0) {\n        this.setBlendMode();\n      }\n    },\n    renderElement: function renderElement() {\n      var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n      if (this.finalTransform._matMdf) {\n        var matrixValue = this.finalTransform.mat.toCSS();\n        transformedElementStyle.transform = matrixValue;\n        transformedElementStyle.webkitTransform = matrixValue;\n      }\n      if (this.finalTransform._opMdf) {\n        transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n      }\n    },\n    renderFrame: function renderFrame() {\n      // If it is exported as hidden (data.hd === true) no need to render\n      // If it is not visible no need to render\n      if (this.data.hd || this.hidden) {\n        return;\n      }\n      this.renderTransform();\n      this.renderRenderable();\n      this.renderElement();\n      this.renderInnerContent();\n      if (this._isFirstFrame) {\n        this._isFirstFrame = false;\n      }\n    },\n    destroy: function destroy() {\n      this.layerElement = null;\n      this.transformedElement = null;\n      if (this.matteElement) {\n        this.matteElement = null;\n      }\n      if (this.maskManager) {\n        this.maskManager.destroy();\n        this.maskManager = null;\n      }\n    },\n    createRenderableComponents: function createRenderableComponents() {\n      this.maskManager = new MaskElement(this.data, this, this.globalData);\n    },\n    addEffects: function addEffects() {},\n    setMatte: function setMatte() {}\n  };\n  HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n  HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n  HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n  function HSolidElement(data, globalData, comp) {\n    this.initElement(data, globalData, comp);\n  }\n  extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n  HSolidElement.prototype.createContent = function () {\n    var rect;\n    if (this.data.hasMask) {\n      rect = createNS('rect');\n      rect.setAttribute('width', this.data.sw);\n      rect.setAttribute('height', this.data.sh);\n      rect.setAttribute('fill', this.data.sc);\n      this.svgElement.setAttribute('width', this.data.sw);\n      this.svgElement.setAttribute('height', this.data.sh);\n    } else {\n      rect = createTag('div');\n      rect.style.width = this.data.sw + 'px';\n      rect.style.height = this.data.sh + 'px';\n      rect.style.backgroundColor = this.data.sc;\n    }\n    this.layerElement.appendChild(rect);\n  };\n\n  function HShapeElement(data, globalData, comp) {\n    // List of drawable elements\n    this.shapes = [];\n    // Full shape data\n    this.shapesData = data.shapes;\n    // List of styles that will be applied to shapes\n    this.stylesList = [];\n    // List of modifiers that will be applied to shapes\n    this.shapeModifiers = [];\n    // List of items in shape tree\n    this.itemsData = [];\n    // List of items in previous shape tree\n    this.processedElements = [];\n    // List of animated components\n    this.animatedContents = [];\n    this.shapesContainer = createNS('g');\n    this.initElement(data, globalData, comp);\n    // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n    // List of elements that have been created\n    this.prevViewData = [];\n    this.currentBBox = {\n      x: 999999,\n      y: -999999,\n      h: 0,\n      w: 0\n    };\n  }\n  extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n  HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n  HShapeElement.prototype.createContent = function () {\n    var cont;\n    this.baseElement.style.fontSize = 0;\n    if (this.data.hasMask) {\n      this.layerElement.appendChild(this.shapesContainer);\n      cont = this.svgElement;\n    } else {\n      cont = createNS('svg');\n      var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n      cont.setAttribute('width', size.w);\n      cont.setAttribute('height', size.h);\n      cont.appendChild(this.shapesContainer);\n      this.layerElement.appendChild(cont);\n    }\n    this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n    this.filterUniqueShapes();\n    this.shapeCont = cont;\n  };\n  HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n    var i;\n    var len = transformers.length;\n    for (i = 0; i < len; i += 1) {\n      point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n    }\n    return point;\n  };\n  HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n    var shape = item.sh.v;\n    var transformers = item.transformers;\n    var i;\n    var len = shape._length;\n    var vPoint;\n    var oPoint;\n    var nextIPoint;\n    var nextVPoint;\n    if (len <= 1) {\n      return;\n    }\n    for (i = 0; i < len - 1; i += 1) {\n      vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n      oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n      nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n      nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n      this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n    }\n    if (shape.c) {\n      vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n      oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n      nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n      nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n      this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n    }\n  };\n  HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n    this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n    var bounds = this.shapeBoundingBox;\n    boundingBox.x = bmMin(bounds.left, boundingBox.x);\n    boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n    boundingBox.y = bmMin(bounds.top, boundingBox.y);\n    boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n  };\n  HShapeElement.prototype.shapeBoundingBox = {\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0\n  };\n  HShapeElement.prototype.tempBoundingBox = {\n    x: 0,\n    xMax: 0,\n    y: 0,\n    yMax: 0,\n    width: 0,\n    height: 0\n  };\n  HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n    var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n    for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n      // eslint-disable-line no-plusplus\n      b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n      a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n      c = 3 * p1[i] - 3 * p0[i];\n      b |= 0; // eslint-disable-line no-bitwise\n      a |= 0; // eslint-disable-line no-bitwise\n      c |= 0; // eslint-disable-line no-bitwise\n\n      if (a === 0 && b === 0) {\n        //\n      } else if (a === 0) {\n        t = -c / b;\n        if (t > 0 && t < 1) {\n          bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n        }\n      } else {\n        b2ac = b * b - 4 * c * a;\n        if (b2ac >= 0) {\n          t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n          if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n          t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n          if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n        }\n      }\n    }\n    this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n    this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n    this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n    this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n  };\n  HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n    return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n  };\n  HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n    var i;\n    var len = itemsData.length;\n    for (i = 0; i < len; i += 1) {\n      if (itemsData[i] && itemsData[i].sh) {\n        this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n      } else if (itemsData[i] && itemsData[i].it) {\n        this.calculateBoundingBox(itemsData[i].it, boundingBox);\n      } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n        this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n      }\n    }\n  };\n  HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n    var width = 0;\n    if (widthProperty.keyframes) {\n      for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n        var kfw = widthProperty.keyframes[i].s;\n        if (kfw > width) {\n          width = kfw;\n        }\n      }\n      width *= widthProperty.mult;\n    } else {\n      width = widthProperty.v * widthProperty.mult;\n    }\n    boundingBox.x -= width;\n    boundingBox.xMax += width;\n    boundingBox.y -= width;\n    boundingBox.yMax += width;\n  };\n  HShapeElement.prototype.currentBoxContains = function (box) {\n    return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n  };\n  HShapeElement.prototype.renderInnerContent = function () {\n    this._renderShapeFrame();\n    if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n      var tempBoundingBox = this.tempBoundingBox;\n      var max = 999999;\n      tempBoundingBox.x = max;\n      tempBoundingBox.xMax = -max;\n      tempBoundingBox.y = max;\n      tempBoundingBox.yMax = -max;\n      this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n      tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n      tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y;\n      // var tempBoundingBox = this.shapeCont.getBBox();\n      if (this.currentBoxContains(tempBoundingBox)) {\n        return;\n      }\n      var changed = false;\n      if (this.currentBBox.w !== tempBoundingBox.width) {\n        this.currentBBox.w = tempBoundingBox.width;\n        this.shapeCont.setAttribute('width', tempBoundingBox.width);\n        changed = true;\n      }\n      if (this.currentBBox.h !== tempBoundingBox.height) {\n        this.currentBBox.h = tempBoundingBox.height;\n        this.shapeCont.setAttribute('height', tempBoundingBox.height);\n        changed = true;\n      }\n      if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n        this.currentBBox.w = tempBoundingBox.width;\n        this.currentBBox.h = tempBoundingBox.height;\n        this.currentBBox.x = tempBoundingBox.x;\n        this.currentBBox.y = tempBoundingBox.y;\n        this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n        var shapeStyle = this.shapeCont.style;\n        var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n        shapeStyle.transform = shapeTransform;\n        shapeStyle.webkitTransform = shapeTransform;\n      }\n    }\n  };\n\n  function HTextElement(data, globalData, comp) {\n    this.textSpans = [];\n    this.textPaths = [];\n    this.currentBBox = {\n      x: 999999,\n      y: -999999,\n      h: 0,\n      w: 0\n    };\n    this.renderType = 'svg';\n    this.isMasked = false;\n    this.initElement(data, globalData, comp);\n  }\n  extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n  HTextElement.prototype.createContent = function () {\n    this.isMasked = this.checkMasks();\n    if (this.isMasked) {\n      this.renderType = 'svg';\n      this.compW = this.comp.data.w;\n      this.compH = this.comp.data.h;\n      this.svgElement.setAttribute('width', this.compW);\n      this.svgElement.setAttribute('height', this.compH);\n      var g = createNS('g');\n      this.maskedElement.appendChild(g);\n      this.innerElem = g;\n    } else {\n      this.renderType = 'html';\n      this.innerElem = this.layerElement;\n    }\n    this.checkParenting();\n  };\n  HTextElement.prototype.buildNewText = function () {\n    var documentData = this.textProperty.currentData;\n    this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n    var innerElemStyle = this.innerElem.style;\n    var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n    innerElemStyle.fill = textColor;\n    innerElemStyle.color = textColor;\n    if (documentData.sc) {\n      innerElemStyle.stroke = this.buildColor(documentData.sc);\n      innerElemStyle.strokeWidth = documentData.sw + 'px';\n    }\n    var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n    if (!this.globalData.fontManager.chars) {\n      innerElemStyle.fontSize = documentData.finalSize + 'px';\n      innerElemStyle.lineHeight = documentData.finalSize + 'px';\n      if (fontData.fClass) {\n        this.innerElem.className = fontData.fClass;\n      } else {\n        innerElemStyle.fontFamily = fontData.fFamily;\n        var fWeight = documentData.fWeight;\n        var fStyle = documentData.fStyle;\n        innerElemStyle.fontStyle = fStyle;\n        innerElemStyle.fontWeight = fWeight;\n      }\n    }\n    var i;\n    var len;\n    var letters = documentData.l;\n    len = letters.length;\n    var tSpan;\n    var tParent;\n    var tCont;\n    var matrixHelper = this.mHelper;\n    var shapes;\n    var shapeStr = '';\n    var cnt = 0;\n    for (i = 0; i < len; i += 1) {\n      if (this.globalData.fontManager.chars) {\n        if (!this.textPaths[cnt]) {\n          tSpan = createNS('path');\n          tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n          tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n          tSpan.setAttribute('stroke-miterlimit', '4');\n        } else {\n          tSpan = this.textPaths[cnt];\n        }\n        if (!this.isMasked) {\n          if (this.textSpans[cnt]) {\n            tParent = this.textSpans[cnt];\n            tCont = tParent.children[0];\n          } else {\n            tParent = createTag('div');\n            tParent.style.lineHeight = 0;\n            tCont = createNS('svg');\n            tCont.appendChild(tSpan);\n            styleDiv(tParent);\n          }\n        }\n      } else if (!this.isMasked) {\n        if (this.textSpans[cnt]) {\n          tParent = this.textSpans[cnt];\n          tSpan = this.textPaths[cnt];\n        } else {\n          tParent = createTag('span');\n          styleDiv(tParent);\n          tSpan = createTag('span');\n          styleDiv(tSpan);\n          tParent.appendChild(tSpan);\n        }\n      } else {\n        tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n      }\n      // tSpan.setAttribute('visibility', 'hidden');\n      if (this.globalData.fontManager.chars) {\n        var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n        var shapeData;\n        if (charData) {\n          shapeData = charData.data;\n        } else {\n          shapeData = null;\n        }\n        matrixHelper.reset();\n        if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n          shapes = shapeData.shapes[0].it;\n          matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n          shapeStr = this.createPathShape(matrixHelper, shapes);\n          tSpan.setAttribute('d', shapeStr);\n        }\n        if (!this.isMasked) {\n          this.innerElem.appendChild(tParent);\n          if (shapeData && shapeData.shapes) {\n            // document.body.appendChild is needed to get exact measure of shape\n            document.body.appendChild(tCont);\n            var boundingBox = tCont.getBBox();\n            tCont.setAttribute('width', boundingBox.width + 2);\n            tCont.setAttribute('height', boundingBox.height + 2);\n            tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n            var tContStyle = tCont.style;\n            var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n            tContStyle.transform = tContTranslation;\n            tContStyle.webkitTransform = tContTranslation;\n            letters[i].yOffset = boundingBox.y - 1;\n          } else {\n            tCont.setAttribute('width', 1);\n            tCont.setAttribute('height', 1);\n          }\n          tParent.appendChild(tCont);\n        } else {\n          this.innerElem.appendChild(tSpan);\n        }\n      } else {\n        tSpan.textContent = letters[i].val;\n        tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n        if (!this.isMasked) {\n          this.innerElem.appendChild(tParent);\n          //\n          var tStyle = tSpan.style;\n          var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n          tStyle.transform = tSpanTranslation;\n          tStyle.webkitTransform = tSpanTranslation;\n        } else {\n          this.innerElem.appendChild(tSpan);\n        }\n      }\n      //\n      if (!this.isMasked) {\n        this.textSpans[cnt] = tParent;\n      } else {\n        this.textSpans[cnt] = tSpan;\n      }\n      this.textSpans[cnt].style.display = 'block';\n      this.textPaths[cnt] = tSpan;\n      cnt += 1;\n    }\n    while (cnt < this.textSpans.length) {\n      this.textSpans[cnt].style.display = 'none';\n      cnt += 1;\n    }\n  };\n  HTextElement.prototype.renderInnerContent = function () {\n    this.validateText();\n    var svgStyle;\n    if (this.data.singleShape) {\n      if (!this._isFirstFrame && !this.lettersChangedFlag) {\n        return;\n      }\n      if (this.isMasked && this.finalTransform._matMdf) {\n        // Todo Benchmark if using this is better than getBBox\n        this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n        svgStyle = this.svgElement.style;\n        var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n        svgStyle.transform = translation;\n        svgStyle.webkitTransform = translation;\n      }\n    }\n    this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n    if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n      return;\n    }\n    var i;\n    var len;\n    var count = 0;\n    var renderedLetters = this.textAnimator.renderedLetters;\n    var letters = this.textProperty.currentData.l;\n    len = letters.length;\n    var renderedLetter;\n    var textSpan;\n    var textPath;\n    for (i = 0; i < len; i += 1) {\n      if (letters[i].n) {\n        count += 1;\n      } else {\n        textSpan = this.textSpans[i];\n        textPath = this.textPaths[i];\n        renderedLetter = renderedLetters[count];\n        count += 1;\n        if (renderedLetter._mdf.m) {\n          if (!this.isMasked) {\n            textSpan.style.webkitTransform = renderedLetter.m;\n            textSpan.style.transform = renderedLetter.m;\n          } else {\n            textSpan.setAttribute('transform', renderedLetter.m);\n          }\n        }\n        /// /textSpan.setAttribute('opacity',renderedLetter.o);\n        textSpan.style.opacity = renderedLetter.o;\n        if (renderedLetter.sw && renderedLetter._mdf.sw) {\n          textPath.setAttribute('stroke-width', renderedLetter.sw);\n        }\n        if (renderedLetter.sc && renderedLetter._mdf.sc) {\n          textPath.setAttribute('stroke', renderedLetter.sc);\n        }\n        if (renderedLetter.fc && renderedLetter._mdf.fc) {\n          textPath.setAttribute('fill', renderedLetter.fc);\n          textPath.style.color = renderedLetter.fc;\n        }\n      }\n    }\n    if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n      var boundingBox = this.innerElem.getBBox();\n      if (this.currentBBox.w !== boundingBox.width) {\n        this.currentBBox.w = boundingBox.width;\n        this.svgElement.setAttribute('width', boundingBox.width);\n      }\n      if (this.currentBBox.h !== boundingBox.height) {\n        this.currentBBox.h = boundingBox.height;\n        this.svgElement.setAttribute('height', boundingBox.height);\n      }\n      var margin = 1;\n      if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n        this.currentBBox.w = boundingBox.width + margin * 2;\n        this.currentBBox.h = boundingBox.height + margin * 2;\n        this.currentBBox.x = boundingBox.x - margin;\n        this.currentBBox.y = boundingBox.y - margin;\n        this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n        svgStyle = this.svgElement.style;\n        var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n        svgStyle.transform = svgTransform;\n        svgStyle.webkitTransform = svgTransform;\n      }\n    }\n  };\n\n  function HCameraElement(data, globalData, comp) {\n    this.initFrame();\n    this.initBaseData(data, globalData, comp);\n    this.initHierarchy();\n    var getProp = PropertyFactory.getProp;\n    this.pe = getProp(this, data.pe, 0, 0, this);\n    if (data.ks.p.s) {\n      this.px = getProp(this, data.ks.p.x, 1, 0, this);\n      this.py = getProp(this, data.ks.p.y, 1, 0, this);\n      this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n    } else {\n      this.p = getProp(this, data.ks.p, 1, 0, this);\n    }\n    if (data.ks.a) {\n      this.a = getProp(this, data.ks.a, 1, 0, this);\n    }\n    if (data.ks.or.k.length && data.ks.or.k[0].to) {\n      var i;\n      var len = data.ks.or.k.length;\n      for (i = 0; i < len; i += 1) {\n        data.ks.or.k[i].to = null;\n        data.ks.or.k[i].ti = null;\n      }\n    }\n    this.or = getProp(this, data.ks.or, 1, degToRads, this);\n    this.or.sh = true;\n    this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n    this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n    this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n    this.mat = new Matrix();\n    this._prevMat = new Matrix();\n    this._isFirstFrame = true;\n\n    // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n    this.finalTransform = {\n      mProp: this\n    };\n  }\n  extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n  HCameraElement.prototype.setup = function () {\n    var i;\n    var len = this.comp.threeDElements.length;\n    var comp;\n    var perspectiveStyle;\n    var containerStyle;\n    for (i = 0; i < len; i += 1) {\n      // [perspectiveElem,container]\n      comp = this.comp.threeDElements[i];\n      if (comp.type === '3d') {\n        perspectiveStyle = comp.perspectiveElem.style;\n        containerStyle = comp.container.style;\n        var perspective = this.pe.v + 'px';\n        var origin = '0px 0px 0px';\n        var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n        perspectiveStyle.perspective = perspective;\n        perspectiveStyle.webkitPerspective = perspective;\n        containerStyle.transformOrigin = origin;\n        containerStyle.mozTransformOrigin = origin;\n        containerStyle.webkitTransformOrigin = origin;\n        perspectiveStyle.transform = matrix;\n        perspectiveStyle.webkitTransform = matrix;\n      }\n    }\n  };\n  HCameraElement.prototype.createElements = function () {};\n  HCameraElement.prototype.hide = function () {};\n  HCameraElement.prototype.renderFrame = function () {\n    var _mdf = this._isFirstFrame;\n    var i;\n    var len;\n    if (this.hierarchy) {\n      len = this.hierarchy.length;\n      for (i = 0; i < len; i += 1) {\n        _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n      }\n    }\n    if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n      this.mat.reset();\n      if (this.hierarchy) {\n        len = this.hierarchy.length - 1;\n        for (i = len; i >= 0; i -= 1) {\n          var mTransf = this.hierarchy[i].finalTransform.mProp;\n          this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n          this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n          this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n          this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n          this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n        }\n      }\n      if (this.p) {\n        this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n      } else {\n        this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n      }\n      if (this.a) {\n        var diffVector;\n        if (this.p) {\n          diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n        } else {\n          diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n        }\n        var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2));\n        // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n        var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n        var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n        var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n        var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n        this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n      }\n      this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n      this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n      this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n      this.mat.translate(0, 0, this.pe.v);\n      var hasMatrixChanged = !this._prevMat.equals(this.mat);\n      if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n        len = this.comp.threeDElements.length;\n        var comp;\n        var perspectiveStyle;\n        var containerStyle;\n        for (i = 0; i < len; i += 1) {\n          comp = this.comp.threeDElements[i];\n          if (comp.type === '3d') {\n            if (hasMatrixChanged) {\n              var matValue = this.mat.toCSS();\n              containerStyle = comp.container.style;\n              containerStyle.transform = matValue;\n              containerStyle.webkitTransform = matValue;\n            }\n            if (this.pe._mdf) {\n              perspectiveStyle = comp.perspectiveElem.style;\n              perspectiveStyle.perspective = this.pe.v + 'px';\n              perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n            }\n          }\n        }\n        this.mat.clone(this._prevMat);\n      }\n    }\n    this._isFirstFrame = false;\n  };\n  HCameraElement.prototype.prepareFrame = function (num) {\n    this.prepareProperties(num, true);\n  };\n  HCameraElement.prototype.destroy = function () {};\n  HCameraElement.prototype.getBaseElement = function () {\n    return null;\n  };\n\n  function HImageElement(data, globalData, comp) {\n    this.assetData = globalData.getAssetData(data.refId);\n    this.initElement(data, globalData, comp);\n  }\n  extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n  HImageElement.prototype.createContent = function () {\n    var assetPath = this.globalData.getAssetsPath(this.assetData);\n    var img = new Image();\n    if (this.data.hasMask) {\n      this.imageElem = createNS('image');\n      this.imageElem.setAttribute('width', this.assetData.w + 'px');\n      this.imageElem.setAttribute('height', this.assetData.h + 'px');\n      this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n      this.layerElement.appendChild(this.imageElem);\n      this.baseElement.setAttribute('width', this.assetData.w);\n      this.baseElement.setAttribute('height', this.assetData.h);\n    } else {\n      this.layerElement.appendChild(img);\n    }\n    img.crossOrigin = 'anonymous';\n    img.src = assetPath;\n    if (this.data.ln) {\n      this.baseElement.setAttribute('id', this.data.ln);\n    }\n  };\n\n  function HybridRendererBase(animationItem, config) {\n    this.animationItem = animationItem;\n    this.layers = null;\n    this.renderedFrame = -1;\n    this.renderConfig = {\n      className: config && config.className || '',\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n      hideOnTransparent: !(config && config.hideOnTransparent === false),\n      filterSize: {\n        width: config && config.filterSize && config.filterSize.width || '400%',\n        height: config && config.filterSize && config.filterSize.height || '400%',\n        x: config && config.filterSize && config.filterSize.x || '-100%',\n        y: config && config.filterSize && config.filterSize.y || '-100%'\n      }\n    };\n    this.globalData = {\n      _mdf: false,\n      frameNum: -1,\n      renderConfig: this.renderConfig\n    };\n    this.pendingElements = [];\n    this.elements = [];\n    this.threeDElements = [];\n    this.destroyed = false;\n    this.camera = null;\n    this.supports3d = true;\n    this.rendererType = 'html';\n  }\n  extendPrototype([BaseRenderer], HybridRendererBase);\n  HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n  HybridRendererBase.prototype.checkPendingElements = function () {\n    while (this.pendingElements.length) {\n      var element = this.pendingElements.pop();\n      element.checkParenting();\n    }\n  };\n  HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n    var newDOMElement = element.getBaseElement();\n    if (!newDOMElement) {\n      return;\n    }\n    var layer = this.layers[pos];\n    if (!layer.ddd || !this.supports3d) {\n      if (this.threeDElements) {\n        this.addTo3dContainer(newDOMElement, pos);\n      } else {\n        var i = 0;\n        var nextDOMElement;\n        var nextLayer;\n        var tmpDOMElement;\n        while (i < pos) {\n          if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n            nextLayer = this.elements[i];\n            tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n            nextDOMElement = tmpDOMElement || nextDOMElement;\n          }\n          i += 1;\n        }\n        if (nextDOMElement) {\n          if (!layer.ddd || !this.supports3d) {\n            this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n          }\n        } else if (!layer.ddd || !this.supports3d) {\n          this.layerElement.appendChild(newDOMElement);\n        }\n      }\n    } else {\n      this.addTo3dContainer(newDOMElement, pos);\n    }\n  };\n  HybridRendererBase.prototype.createShape = function (data) {\n    if (!this.supports3d) {\n      return new SVGShapeElement(data, this.globalData, this);\n    }\n    return new HShapeElement(data, this.globalData, this);\n  };\n  HybridRendererBase.prototype.createText = function (data) {\n    if (!this.supports3d) {\n      return new SVGTextLottieElement(data, this.globalData, this);\n    }\n    return new HTextElement(data, this.globalData, this);\n  };\n  HybridRendererBase.prototype.createCamera = function (data) {\n    this.camera = new HCameraElement(data, this.globalData, this);\n    return this.camera;\n  };\n  HybridRendererBase.prototype.createImage = function (data) {\n    if (!this.supports3d) {\n      return new IImageElement(data, this.globalData, this);\n    }\n    return new HImageElement(data, this.globalData, this);\n  };\n  HybridRendererBase.prototype.createSolid = function (data) {\n    if (!this.supports3d) {\n      return new ISolidElement(data, this.globalData, this);\n    }\n    return new HSolidElement(data, this.globalData, this);\n  };\n  HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n  HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n    var i = 0;\n    var len = this.threeDElements.length;\n    while (i < len) {\n      if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n        return this.threeDElements[i].perspectiveElem;\n      }\n      i += 1;\n    }\n    return null;\n  };\n  HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n    var perspectiveElem = createTag('div');\n    var style;\n    var containerStyle;\n    styleDiv(perspectiveElem);\n    var container = createTag('div');\n    styleDiv(container);\n    if (type === '3d') {\n      style = perspectiveElem.style;\n      style.width = this.globalData.compSize.w + 'px';\n      style.height = this.globalData.compSize.h + 'px';\n      var center = '50% 50%';\n      style.webkitTransformOrigin = center;\n      style.mozTransformOrigin = center;\n      style.transformOrigin = center;\n      containerStyle = container.style;\n      var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n      containerStyle.transform = matrix;\n      containerStyle.webkitTransform = matrix;\n    }\n    perspectiveElem.appendChild(container);\n    // this.resizerElem.appendChild(perspectiveElem);\n    var threeDContainerData = {\n      container: container,\n      perspectiveElem: perspectiveElem,\n      startPos: pos,\n      endPos: pos,\n      type: type\n    };\n    this.threeDElements.push(threeDContainerData);\n    return threeDContainerData;\n  };\n  HybridRendererBase.prototype.build3dContainers = function () {\n    var i;\n    var len = this.layers.length;\n    var lastThreeDContainerData;\n    var currentContainer = '';\n    for (i = 0; i < len; i += 1) {\n      if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n        if (currentContainer !== '3d') {\n          currentContainer = '3d';\n          lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n        }\n        lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n      } else {\n        if (currentContainer !== '2d') {\n          currentContainer = '2d';\n          lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n        }\n        lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n      }\n    }\n    len = this.threeDElements.length;\n    for (i = len - 1; i >= 0; i -= 1) {\n      this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n    }\n  };\n  HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n    var i = 0;\n    var len = this.threeDElements.length;\n    while (i < len) {\n      if (pos <= this.threeDElements[i].endPos) {\n        var j = this.threeDElements[i].startPos;\n        var nextElement;\n        while (j < pos) {\n          if (this.elements[j] && this.elements[j].getBaseElement) {\n            nextElement = this.elements[j].getBaseElement();\n          }\n          j += 1;\n        }\n        if (nextElement) {\n          this.threeDElements[i].container.insertBefore(elem, nextElement);\n        } else {\n          this.threeDElements[i].container.appendChild(elem);\n        }\n        break;\n      }\n      i += 1;\n    }\n  };\n  HybridRendererBase.prototype.configAnimation = function (animData) {\n    var resizerElem = createTag('div');\n    var wrapper = this.animationItem.wrapper;\n    var style = resizerElem.style;\n    style.width = animData.w + 'px';\n    style.height = animData.h + 'px';\n    this.resizerElem = resizerElem;\n    styleDiv(resizerElem);\n    style.transformStyle = 'flat';\n    style.mozTransformStyle = 'flat';\n    style.webkitTransformStyle = 'flat';\n    if (this.renderConfig.className) {\n      resizerElem.setAttribute('class', this.renderConfig.className);\n    }\n    wrapper.appendChild(resizerElem);\n    style.overflow = 'hidden';\n    var svg = createNS('svg');\n    svg.setAttribute('width', '1');\n    svg.setAttribute('height', '1');\n    styleDiv(svg);\n    this.resizerElem.appendChild(svg);\n    var defs = createNS('defs');\n    svg.appendChild(defs);\n    this.data = animData;\n    // Mask animation\n    this.setupGlobalData(animData, svg);\n    this.globalData.defs = defs;\n    this.layers = animData.layers;\n    this.layerElement = this.resizerElem;\n    this.build3dContainers();\n    this.updateContainerSize();\n  };\n  HybridRendererBase.prototype.destroy = function () {\n    if (this.animationItem.wrapper) {\n      this.animationItem.wrapper.innerText = '';\n    }\n    this.animationItem.container = null;\n    this.globalData.defs = null;\n    var i;\n    var len = this.layers ? this.layers.length : 0;\n    for (i = 0; i < len; i += 1) {\n      if (this.elements[i] && this.elements[i].destroy) {\n        this.elements[i].destroy();\n      }\n    }\n    this.elements.length = 0;\n    this.destroyed = true;\n    this.animationItem = null;\n  };\n  HybridRendererBase.prototype.updateContainerSize = function () {\n    var elementWidth = this.animationItem.wrapper.offsetWidth;\n    var elementHeight = this.animationItem.wrapper.offsetHeight;\n    var elementRel = elementWidth / elementHeight;\n    var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n    var sx;\n    var sy;\n    var tx;\n    var ty;\n    if (animationRel > elementRel) {\n      sx = elementWidth / this.globalData.compSize.w;\n      sy = elementWidth / this.globalData.compSize.w;\n      tx = 0;\n      ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n    } else {\n      sx = elementHeight / this.globalData.compSize.h;\n      sy = elementHeight / this.globalData.compSize.h;\n      tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n      ty = 0;\n    }\n    var style = this.resizerElem.style;\n    style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n    style.transform = style.webkitTransform;\n  };\n  HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n  HybridRendererBase.prototype.hide = function () {\n    this.resizerElem.style.display = 'none';\n  };\n  HybridRendererBase.prototype.show = function () {\n    this.resizerElem.style.display = 'block';\n  };\n  HybridRendererBase.prototype.initItems = function () {\n    this.buildAllItems();\n    if (this.camera) {\n      this.camera.setup();\n    } else {\n      var cWidth = this.globalData.compSize.w;\n      var cHeight = this.globalData.compSize.h;\n      var i;\n      var len = this.threeDElements.length;\n      for (i = 0; i < len; i += 1) {\n        var style = this.threeDElements[i].perspectiveElem.style;\n        style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n        style.perspective = style.webkitPerspective;\n      }\n    }\n  };\n  HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n    var i;\n    var len = assets.length;\n    var floatingContainer = createTag('div');\n    for (i = 0; i < len; i += 1) {\n      if (assets[i].xt) {\n        var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n        comp.initExpressions();\n        this.globalData.projectInterface.registerComposition(comp);\n      }\n    }\n  };\n\n  function HCompElement(data, globalData, comp) {\n    this.layers = data.layers;\n    this.supports3d = !data.hasMask;\n    this.completeLayers = false;\n    this.pendingElements = [];\n    this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n    this.initElement(data, globalData, comp);\n    this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n      _placeholder: true\n    };\n  }\n  extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n  HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n  HCompElement.prototype.createContainerElements = function () {\n    this._createBaseContainerElements();\n    // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n    if (this.data.hasMask) {\n      this.svgElement.setAttribute('width', this.data.w);\n      this.svgElement.setAttribute('height', this.data.h);\n      this.transformedElement = this.baseElement;\n    } else {\n      this.transformedElement = this.layerElement;\n    }\n  };\n  HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n    var j = 0;\n    var nextElement;\n    while (j < pos) {\n      if (this.elements[j] && this.elements[j].getBaseElement) {\n        nextElement = this.elements[j].getBaseElement();\n      }\n      j += 1;\n    }\n    if (nextElement) {\n      this.layerElement.insertBefore(elem, nextElement);\n    } else {\n      this.layerElement.appendChild(elem);\n    }\n  };\n  HCompElement.prototype.createComp = function (data) {\n    if (!this.supports3d) {\n      return new SVGCompElement(data, this.globalData, this);\n    }\n    return new HCompElement(data, this.globalData, this);\n  };\n\n  function HybridRenderer(animationItem, config) {\n    this.animationItem = animationItem;\n    this.layers = null;\n    this.renderedFrame = -1;\n    this.renderConfig = {\n      className: config && config.className || '',\n      imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n      hideOnTransparent: !(config && config.hideOnTransparent === false),\n      filterSize: {\n        width: config && config.filterSize && config.filterSize.width || '400%',\n        height: config && config.filterSize && config.filterSize.height || '400%',\n        x: config && config.filterSize && config.filterSize.x || '-100%',\n        y: config && config.filterSize && config.filterSize.y || '-100%'\n      },\n      runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n    };\n    this.globalData = {\n      _mdf: false,\n      frameNum: -1,\n      renderConfig: this.renderConfig\n    };\n    this.pendingElements = [];\n    this.elements = [];\n    this.threeDElements = [];\n    this.destroyed = false;\n    this.camera = null;\n    this.supports3d = true;\n    this.rendererType = 'html';\n  }\n  extendPrototype([HybridRendererBase], HybridRenderer);\n  HybridRenderer.prototype.createComp = function (data) {\n    if (!this.supports3d) {\n      return new SVGCompElement(data, this.globalData, this);\n    }\n    return new HCompElement(data, this.globalData, this);\n  };\n\n  var CompExpressionInterface = function () {\n    return function (comp) {\n      function _thisLayerFunction(name) {\n        var i = 0;\n        var len = comp.layers.length;\n        while (i < len) {\n          if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n            return comp.elements[i].layerInterface;\n          }\n          i += 1;\n        }\n        return null;\n        // return {active:false};\n      }\n      Object.defineProperty(_thisLayerFunction, '_name', {\n        value: comp.data.nm\n      });\n      _thisLayerFunction.layer = _thisLayerFunction;\n      _thisLayerFunction.pixelAspect = 1;\n      _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n      _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n      _thisLayerFunction.pixelAspect = 1;\n      _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n      _thisLayerFunction.displayStartTime = 0;\n      _thisLayerFunction.numLayers = comp.layers.length;\n      return _thisLayerFunction;\n    };\n  }();\n\n  function _typeof$2(o) { \"@babel/helpers - typeof\"; return _typeof$2 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$2(o); }\n  /* eslint-disable */\n  /*\n   Copyright 2014 David Bau.\n\n   Permission is hereby granted, free of charge, to any person obtaining\n   a copy of this software and associated documentation files (the\n   \"Software\"), to deal in the Software without restriction, including\n   without limitation the rights to use, copy, modify, merge, publish,\n   distribute, sublicense, and/or sell copies of the Software, and to\n   permit persons to whom the Software is furnished to do so, subject to\n   the following conditions:\n\n   The above copyright notice and this permission notice shall be\n   included in all copies or substantial portions of the Software.\n\n   THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n   IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n   CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n   TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n   SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n   */\n\n  function seedRandom(pool, math) {\n    //\n    // The following constants are related to IEEE 754 limits.\n    //\n    var global = this,\n      width = 256,\n      // each RC4 output is 0 <= x < 256\n      chunks = 6,\n      // at least six RC4 outputs for each double\n      digits = 52,\n      // there are 52 significant digits in a double\n      rngname = 'random',\n      // rngname: name for Math.random and Math.seedrandom\n      startdenom = math.pow(width, chunks),\n      significance = math.pow(2, digits),\n      overflow = significance * 2,\n      mask = width - 1,\n      nodecrypto; // node.js crypto module, initialized at the bottom.\n\n    //\n    // seedrandom()\n    // This is the seedrandom function described above.\n    //\n    function seedrandom(seed, options, callback) {\n      var key = [];\n      options = options === true ? {\n        entropy: true\n      } : options || {};\n\n      // Flatten the seed string or build one from local entropy if needed.\n      var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key);\n\n      // Use the seed to initialize an ARC4 generator.\n      var arc4 = new ARC4(key);\n\n      // This function returns a random double in [0, 1) that contains\n      // randomness in every bit of the mantissa of the IEEE 754 value.\n      var prng = function prng() {\n        var n = arc4.g(chunks),\n          // Start with a numerator n < 2 ^ 48\n          d = startdenom,\n          //   and denominator d = 2 ^ 48.\n          x = 0; //   and no 'extra last byte'.\n        while (n < significance) {\n          // Fill up all significant digits by\n          n = (n + x) * width; //   shifting numerator and\n          d *= width; //   denominator and generating a\n          x = arc4.g(1); //   new least-significant-byte.\n        }\n        while (n >= overflow) {\n          // To avoid rounding up, before adding\n          n /= 2; //   last byte, shift everything\n          d /= 2; //   right using integer math until\n          x >>>= 1; //   we have exactly the desired bits.\n        }\n        return (n + x) / d; // Form the number within [0, 1).\n      };\n      prng.int32 = function () {\n        return arc4.g(4) | 0;\n      };\n      prng.quick = function () {\n        return arc4.g(4) / 0x100000000;\n      };\n      prng[\"double\"] = prng;\n\n      // Mix the randomness into accumulated entropy.\n      mixkey(tostring(arc4.S), pool);\n\n      // Calling convention: what to return as a function of prng, seed, is_math.\n      return (options.pass || callback || function (prng, seed, is_math_call, state) {\n        if (state) {\n          // Load the arc4 state from the given state if it has an S array.\n          if (state.S) {\n            copy(state, arc4);\n          }\n          // Only provide the .state method if requested via options.state.\n          prng.state = function () {\n            return copy(arc4, {});\n          };\n        }\n\n        // If called as a method of Math (Math.seedrandom()), mutate\n        // Math.random because that is how seedrandom.js has worked since v1.0.\n        if (is_math_call) {\n          math[rngname] = prng;\n          return seed;\n        }\n\n        // Otherwise, it is a newer calling convention, so return the\n        // prng directly.\n        else return prng;\n      })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n    }\n    math['seed' + rngname] = seedrandom;\n\n    //\n    // ARC4\n    //\n    // An ARC4 implementation.  The constructor takes a key in the form of\n    // an array of at most (width) integers that should be 0 <= x < (width).\n    //\n    // The g(count) method returns a pseudorandom integer that concatenates\n    // the next (count) outputs from ARC4.  Its return value is a number x\n    // that is in the range 0 <= x < (width ^ count).\n    //\n    function ARC4(key) {\n      var t,\n        keylen = key.length,\n        me = this,\n        i = 0,\n        j = me.i = me.j = 0,\n        s = me.S = [];\n\n      // The empty key [] is treated as [0].\n      if (!keylen) {\n        key = [keylen++];\n      }\n\n      // Set up S using the standard key scheduling algorithm.\n      while (i < width) {\n        s[i] = i++;\n      }\n      for (i = 0; i < width; i++) {\n        s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n        s[j] = t;\n      }\n\n      // The \"g\" method returns the next (count) outputs as one number.\n      me.g = function (count) {\n        // Using instance members instead of closure state nearly doubles speed.\n        var t,\n          r = 0,\n          i = me.i,\n          j = me.j,\n          s = me.S;\n        while (count--) {\n          t = s[i = mask & i + 1];\n          r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n        }\n        me.i = i;\n        me.j = j;\n        return r;\n        // For robust unpredictability, the function call below automatically\n        // discards an initial batch of values.  This is called RC4-drop[256].\n        // See http://google.com/search?q=rsa+fluhrer+response&btnI\n      };\n    }\n\n    //\n    // copy()\n    // Copies internal state of ARC4 to or from a plain object.\n    //\n    function copy(f, t) {\n      t.i = f.i;\n      t.j = f.j;\n      t.S = f.S.slice();\n      return t;\n    }\n\n    //\n    // flatten()\n    // Converts an object tree to nested arrays of strings.\n    //\n    function flatten(obj, depth) {\n      var result = [],\n        typ = _typeof$2(obj),\n        prop;\n      if (depth && typ == 'object') {\n        for (prop in obj) {\n          try {\n            result.push(flatten(obj[prop], depth - 1));\n          } catch (e) {}\n        }\n      }\n      return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n    }\n\n    //\n    // mixkey()\n    // Mixes a string seed into a key that is an array of integers, and\n    // returns a shortened string seed that is equivalent to the result key.\n    //\n    function mixkey(seed, key) {\n      var stringseed = seed + '',\n        smear,\n        j = 0;\n      while (j < stringseed.length) {\n        key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n      }\n      return tostring(key);\n    }\n\n    //\n    // autoseed()\n    // Returns an object for autoseeding, using window.crypto and Node crypto\n    // module if available.\n    //\n    function autoseed() {\n      try {\n        if (nodecrypto) {\n          return tostring(nodecrypto.randomBytes(width));\n        }\n        var out = new Uint8Array(width);\n        (global.crypto || global.msCrypto).getRandomValues(out);\n        return tostring(out);\n      } catch (e) {\n        var browser = global.navigator,\n          plugins = browser && browser.plugins;\n        return [+new Date(), global, plugins, global.screen, tostring(pool)];\n      }\n    }\n\n    //\n    // tostring()\n    // Converts an array of charcodes to a string\n    //\n    function tostring(a) {\n      return String.fromCharCode.apply(0, a);\n    }\n\n    //\n    // When seedrandom.js is loaded, we immediately mix a few bits\n    // from the built-in RNG into the entropy pool.  Because we do\n    // not want to interfere with deterministic PRNG state later,\n    // seedrandom will not call math.random on its own again after\n    // initialization.\n    //\n    mixkey(math.random(), pool);\n\n    //\n    // Nodejs and AMD support: export the implementation as a module using\n    // either convention.\n    //\n\n    // End anonymous scope, and pass initial values.\n  }\n  ;\n  function initialize$2(BMMath) {\n    seedRandom([], BMMath);\n  }\n\n  var propTypes = {\n    SHAPE: 'shape'\n  };\n\n  function _typeof$1(o) { \"@babel/helpers - typeof\"; return _typeof$1 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof$1(o); }\n  var ExpressionManager = function () {\n    'use strict';\n\n    var ob = {};\n    var Math = BMMath;\n    var window = null;\n    var document = null;\n    var XMLHttpRequest = null;\n    var fetch = null;\n    var frames = null;\n    var _lottieGlobal = {};\n    initialize$2(BMMath);\n    function resetFrame() {\n      _lottieGlobal = {};\n    }\n    function $bm_isInstanceOfArray(arr) {\n      return arr.constructor === Array || arr.constructor === Float32Array;\n    }\n    function isNumerable(tOfV, v) {\n      return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n    }\n    function $bm_neg(a) {\n      var tOfA = _typeof$1(a);\n      if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n        return -a;\n      }\n      if ($bm_isInstanceOfArray(a)) {\n        var i;\n        var lenA = a.length;\n        var retArr = [];\n        for (i = 0; i < lenA; i += 1) {\n          retArr[i] = -a[i];\n        }\n        return retArr;\n      }\n      if (a.propType) {\n        return a.v;\n      }\n      return -a;\n    }\n    var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n    var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n    var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n    function sum(a, b) {\n      var tOfA = _typeof$1(a);\n      var tOfB = _typeof$1(b);\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n        return a + b;\n      }\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n        a = a.slice(0);\n        a[0] += b;\n        return a;\n      }\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n        b = b.slice(0);\n        b[0] = a + b[0];\n        return b;\n      }\n      if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n        var i = 0;\n        var lenA = a.length;\n        var lenB = b.length;\n        var retArr = [];\n        while (i < lenA || i < lenB) {\n          if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n            retArr[i] = a[i] + b[i];\n          } else {\n            retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n          }\n          i += 1;\n        }\n        return retArr;\n      }\n      return 0;\n    }\n    var add = sum;\n    function sub(a, b) {\n      var tOfA = _typeof$1(a);\n      var tOfB = _typeof$1(b);\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n        if (tOfA === 'string') {\n          a = parseInt(a, 10);\n        }\n        if (tOfB === 'string') {\n          b = parseInt(b, 10);\n        }\n        return a - b;\n      }\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n        a = a.slice(0);\n        a[0] -= b;\n        return a;\n      }\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n        b = b.slice(0);\n        b[0] = a - b[0];\n        return b;\n      }\n      if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n        var i = 0;\n        var lenA = a.length;\n        var lenB = b.length;\n        var retArr = [];\n        while (i < lenA || i < lenB) {\n          if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n            retArr[i] = a[i] - b[i];\n          } else {\n            retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n          }\n          i += 1;\n        }\n        return retArr;\n      }\n      return 0;\n    }\n    function mul(a, b) {\n      var tOfA = _typeof$1(a);\n      var tOfB = _typeof$1(b);\n      var arr;\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n        return a * b;\n      }\n      var i;\n      var len;\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n        len = a.length;\n        arr = createTypedArray('float32', len);\n        for (i = 0; i < len; i += 1) {\n          arr[i] = a[i] * b;\n        }\n        return arr;\n      }\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n        len = b.length;\n        arr = createTypedArray('float32', len);\n        for (i = 0; i < len; i += 1) {\n          arr[i] = a * b[i];\n        }\n        return arr;\n      }\n      return 0;\n    }\n    function div(a, b) {\n      var tOfA = _typeof$1(a);\n      var tOfB = _typeof$1(b);\n      var arr;\n      if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n        return a / b;\n      }\n      var i;\n      var len;\n      if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n        len = a.length;\n        arr = createTypedArray('float32', len);\n        for (i = 0; i < len; i += 1) {\n          arr[i] = a[i] / b;\n        }\n        return arr;\n      }\n      if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n        len = b.length;\n        arr = createTypedArray('float32', len);\n        for (i = 0; i < len; i += 1) {\n          arr[i] = a / b[i];\n        }\n        return arr;\n      }\n      return 0;\n    }\n    function mod(a, b) {\n      if (typeof a === 'string') {\n        a = parseInt(a, 10);\n      }\n      if (typeof b === 'string') {\n        b = parseInt(b, 10);\n      }\n      return a % b;\n    }\n    var $bm_sum = sum;\n    var $bm_sub = sub;\n    var $bm_mul = mul;\n    var $bm_div = div;\n    var $bm_mod = mod;\n    function clamp(num, min, max) {\n      if (min > max) {\n        var mm = max;\n        max = min;\n        min = mm;\n      }\n      return Math.min(Math.max(num, min), max);\n    }\n    function radiansToDegrees(val) {\n      return val / degToRads;\n    }\n    var radians_to_degrees = radiansToDegrees;\n    function degreesToRadians(val) {\n      return val * degToRads;\n    }\n    var degrees_to_radians = radiansToDegrees;\n    var helperLengthArray = [0, 0, 0, 0, 0, 0];\n    function length(arr1, arr2) {\n      if (typeof arr1 === 'number' || arr1 instanceof Number) {\n        arr2 = arr2 || 0;\n        return Math.abs(arr1 - arr2);\n      }\n      if (!arr2) {\n        arr2 = helperLengthArray;\n      }\n      var i;\n      var len = Math.min(arr1.length, arr2.length);\n      var addedLength = 0;\n      for (i = 0; i < len; i += 1) {\n        addedLength += Math.pow(arr2[i] - arr1[i], 2);\n      }\n      return Math.sqrt(addedLength);\n    }\n    function normalize(vec) {\n      return div(vec, length(vec));\n    }\n    function rgbToHsl(val) {\n      var r = val[0];\n      var g = val[1];\n      var b = val[2];\n      var max = Math.max(r, g, b);\n      var min = Math.min(r, g, b);\n      var h;\n      var s;\n      var l = (max + min) / 2;\n      if (max === min) {\n        h = 0; // achromatic\n        s = 0; // achromatic\n      } else {\n        var d = max - min;\n        s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n        switch (max) {\n          case r:\n            h = (g - b) / d + (g < b ? 6 : 0);\n            break;\n          case g:\n            h = (b - r) / d + 2;\n            break;\n          case b:\n            h = (r - g) / d + 4;\n            break;\n          default:\n            break;\n        }\n        h /= 6;\n      }\n      return [h, s, l, val[3]];\n    }\n    function hue2rgb(p, q, t) {\n      if (t < 0) t += 1;\n      if (t > 1) t -= 1;\n      if (t < 1 / 6) return p + (q - p) * 6 * t;\n      if (t < 1 / 2) return q;\n      if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n      return p;\n    }\n    function hslToRgb(val) {\n      var h = val[0];\n      var s = val[1];\n      var l = val[2];\n      var r;\n      var g;\n      var b;\n      if (s === 0) {\n        r = l; // achromatic\n        b = l; // achromatic\n        g = l; // achromatic\n      } else {\n        var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n        var p = 2 * l - q;\n        r = hue2rgb(p, q, h + 1 / 3);\n        g = hue2rgb(p, q, h);\n        b = hue2rgb(p, q, h - 1 / 3);\n      }\n      return [r, g, b, val[3]];\n    }\n    function linear(t, tMin, tMax, value1, value2) {\n      if (value1 === undefined || value2 === undefined) {\n        value1 = tMin;\n        value2 = tMax;\n        tMin = 0;\n        tMax = 1;\n      }\n      if (tMax < tMin) {\n        var _tMin = tMax;\n        tMax = tMin;\n        tMin = _tMin;\n      }\n      if (t <= tMin) {\n        return value1;\n      }\n      if (t >= tMax) {\n        return value2;\n      }\n      var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n      if (!value1.length) {\n        return value1 + (value2 - value1) * perc;\n      }\n      var i;\n      var len = value1.length;\n      var arr = createTypedArray('float32', len);\n      for (i = 0; i < len; i += 1) {\n        arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n      }\n      return arr;\n    }\n    function random(min, max) {\n      if (max === undefined) {\n        if (min === undefined) {\n          min = 0;\n          max = 1;\n        } else {\n          max = min;\n          min = undefined;\n        }\n      }\n      if (max.length) {\n        var i;\n        var len = max.length;\n        if (!min) {\n          min = createTypedArray('float32', len);\n        }\n        var arr = createTypedArray('float32', len);\n        var rnd = BMMath.random();\n        for (i = 0; i < len; i += 1) {\n          arr[i] = min[i] + rnd * (max[i] - min[i]);\n        }\n        return arr;\n      }\n      if (min === undefined) {\n        min = 0;\n      }\n      var rndm = BMMath.random();\n      return min + rndm * (max - min);\n    }\n    function createPath(points, inTangents, outTangents, closed) {\n      var i;\n      var len = points.length;\n      var path = shapePool.newElement();\n      path.setPathData(!!closed, len);\n      var arrPlaceholder = [0, 0];\n      var inVertexPoint;\n      var outVertexPoint;\n      for (i = 0; i < len; i += 1) {\n        inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n        outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n        path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n      }\n      return path;\n    }\n    function initiateExpression(elem, data, property) {\n      // Bail out if we don't want expressions\n      function noOp(_value) {\n        return _value;\n      }\n      if (!elem.globalData.renderConfig.runExpressions) {\n        return noOp;\n      }\n      var val = data.x;\n      var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n      var _needsRandom = val.indexOf('random') !== -1;\n      var elemType = elem.data.ty;\n      var transform;\n      var $bm_transform;\n      var content;\n      var effect;\n      var thisProperty = property;\n      thisProperty._name = elem.data.nm;\n      thisProperty.valueAtTime = thisProperty.getValueAtTime;\n      Object.defineProperty(thisProperty, 'value', {\n        get: function get() {\n          return thisProperty.v;\n        }\n      });\n      elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n      elem.comp.displayStartTime = 0;\n      var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n      var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n      var width = elem.data.sw ? elem.data.sw : 0;\n      var height = elem.data.sh ? elem.data.sh : 0;\n      var name = elem.data.nm;\n      var loopIn;\n      var loop_in;\n      var loopOut;\n      var loop_out;\n      var smooth;\n      var toWorld;\n      var fromWorld;\n      var fromComp;\n      var toComp;\n      var fromCompToSurface;\n      var position;\n      var rotation;\n      var anchorPoint;\n      var scale;\n      var thisLayer;\n      var thisComp;\n      var mask;\n      var valueAtTime;\n      var velocityAtTime;\n      var scoped_bm_rt;\n      // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n      var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n      var numKeys = property.kf ? data.k.length : 0;\n      var active = !this.data || this.data.hd !== true;\n      var wiggle = function wiggle(freq, amp) {\n        var iWiggle;\n        var j;\n        var lenWiggle = this.pv.length ? this.pv.length : 1;\n        var addedAmps = createTypedArray('float32', lenWiggle);\n        freq = 5;\n        var iterations = Math.floor(time * freq);\n        iWiggle = 0;\n        j = 0;\n        while (iWiggle < iterations) {\n          // var rnd = BMMath.random();\n          for (j = 0; j < lenWiggle; j += 1) {\n            addedAmps[j] += -amp + amp * 2 * BMMath.random();\n            // addedAmps[j] += -amp + amp*2*rnd;\n          }\n          iWiggle += 1;\n        }\n        // var rnd2 = BMMath.random();\n        var periods = time * freq;\n        var perc = periods - Math.floor(periods);\n        var arr = createTypedArray('float32', lenWiggle);\n        if (lenWiggle > 1) {\n          for (j = 0; j < lenWiggle; j += 1) {\n            arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc;\n            // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n            // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n          }\n          return arr;\n        }\n        return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n      }.bind(this);\n      if (thisProperty.loopIn) {\n        loopIn = thisProperty.loopIn.bind(thisProperty);\n        loop_in = loopIn;\n      }\n      if (thisProperty.loopOut) {\n        loopOut = thisProperty.loopOut.bind(thisProperty);\n        loop_out = loopOut;\n      }\n      if (thisProperty.smooth) {\n        smooth = thisProperty.smooth.bind(thisProperty);\n      }\n      function loopInDuration(type, duration) {\n        return loopIn(type, duration, true);\n      }\n      function loopOutDuration(type, duration) {\n        return loopOut(type, duration, true);\n      }\n      if (this.getValueAtTime) {\n        valueAtTime = this.getValueAtTime.bind(this);\n      }\n      if (this.getVelocityAtTime) {\n        velocityAtTime = this.getVelocityAtTime.bind(this);\n      }\n      var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n      function lookAt(elem1, elem2) {\n        var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n        var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n        var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n        return [yaw, pitch, 0];\n      }\n      function easeOut(t, tMin, tMax, val1, val2) {\n        return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n      }\n      function easeIn(t, tMin, tMax, val1, val2) {\n        return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n      }\n      function ease(t, tMin, tMax, val1, val2) {\n        return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n      }\n      function applyEase(fn, t, tMin, tMax, val1, val2) {\n        if (val1 === undefined) {\n          val1 = tMin;\n          val2 = tMax;\n        } else {\n          t = (t - tMin) / (tMax - tMin);\n        }\n        if (t > 1) {\n          t = 1;\n        } else if (t < 0) {\n          t = 0;\n        }\n        var mult = fn(t);\n        if ($bm_isInstanceOfArray(val1)) {\n          var iKey;\n          var lenKey = val1.length;\n          var arr = createTypedArray('float32', lenKey);\n          for (iKey = 0; iKey < lenKey; iKey += 1) {\n            arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n          }\n          return arr;\n        }\n        return (val2 - val1) * mult + val1;\n      }\n      function nearestKey(time) {\n        var iKey;\n        var lenKey = data.k.length;\n        var index;\n        var keyTime;\n        if (!data.k.length || typeof data.k[0] === 'number') {\n          index = 0;\n          keyTime = 0;\n        } else {\n          index = -1;\n          time *= elem.comp.globalData.frameRate;\n          if (time < data.k[0].t) {\n            index = 1;\n            keyTime = data.k[0].t;\n          } else {\n            for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n              if (time === data.k[iKey].t) {\n                index = iKey + 1;\n                keyTime = data.k[iKey].t;\n                break;\n              } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n                if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n                  index = iKey + 2;\n                  keyTime = data.k[iKey + 1].t;\n                } else {\n                  index = iKey + 1;\n                  keyTime = data.k[iKey].t;\n                }\n                break;\n              }\n            }\n            if (index === -1) {\n              index = iKey + 1;\n              keyTime = data.k[iKey].t;\n            }\n          }\n        }\n        var obKey = {};\n        obKey.index = index;\n        obKey.time = keyTime / elem.comp.globalData.frameRate;\n        return obKey;\n      }\n      function key(ind) {\n        var obKey;\n        var iKey;\n        var lenKey;\n        if (!data.k.length || typeof data.k[0] === 'number') {\n          throw new Error('The property has no keyframe at index ' + ind);\n        }\n        ind -= 1;\n        obKey = {\n          time: data.k[ind].t / elem.comp.globalData.frameRate,\n          value: []\n        };\n        var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n        lenKey = arr.length;\n        for (iKey = 0; iKey < lenKey; iKey += 1) {\n          obKey[iKey] = arr[iKey];\n          obKey.value[iKey] = arr[iKey];\n        }\n        return obKey;\n      }\n      function framesToTime(fr, fps) {\n        if (!fps) {\n          fps = elem.comp.globalData.frameRate;\n        }\n        return fr / fps;\n      }\n      function timeToFrames(t, fps) {\n        if (!t && t !== 0) {\n          t = time;\n        }\n        if (!fps) {\n          fps = elem.comp.globalData.frameRate;\n        }\n        return t * fps;\n      }\n      function seedRandom(seed) {\n        BMMath.seedrandom(randSeed + seed);\n      }\n      function sourceRectAtTime() {\n        return elem.sourceRectAtTime();\n      }\n      function substring(init, end) {\n        if (typeof value === 'string') {\n          if (end === undefined) {\n            return value.substring(init);\n          }\n          return value.substring(init, end);\n        }\n        return '';\n      }\n      function substr(init, end) {\n        if (typeof value === 'string') {\n          if (end === undefined) {\n            return value.substr(init);\n          }\n          return value.substr(init, end);\n        }\n        return '';\n      }\n      function posterizeTime(framesPerSecond) {\n        time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n        value = valueAtTime(time);\n      }\n      var time;\n      var velocity;\n      var value;\n      var text;\n      var textIndex;\n      var textTotal;\n      var selectorValue;\n      var index = elem.data.ind;\n      var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n      var parent;\n      var randSeed = Math.floor(Math.random() * 1000000);\n      var globalData = elem.globalData;\n      function executeExpression(_value) {\n        // globalData.pushExpression();\n        value = _value;\n        if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n          return value;\n        }\n        if (this.propType === 'textSelector') {\n          textIndex = this.textIndex;\n          textTotal = this.textTotal;\n          selectorValue = this.selectorValue;\n        }\n        if (!thisLayer) {\n          text = elem.layerInterface.text;\n          thisLayer = elem.layerInterface;\n          thisComp = elem.comp.compInterface;\n          toWorld = thisLayer.toWorld.bind(thisLayer);\n          fromWorld = thisLayer.fromWorld.bind(thisLayer);\n          fromComp = thisLayer.fromComp.bind(thisLayer);\n          toComp = thisLayer.toComp.bind(thisLayer);\n          mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n          fromCompToSurface = fromComp;\n        }\n        if (!transform) {\n          transform = elem.layerInterface('ADBE Transform Group');\n          $bm_transform = transform;\n          if (transform) {\n            anchorPoint = transform.anchorPoint;\n            /* position = transform.position;\n                      rotation = transform.rotation;\n                      scale = transform.scale; */\n          }\n        }\n        if (elemType === 4 && !content) {\n          content = thisLayer('ADBE Root Vectors Group');\n        }\n        if (!effect) {\n          effect = thisLayer(4);\n        }\n        hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n        if (hasParent && !parent) {\n          parent = elem.hierarchy[0].layerInterface;\n        }\n        time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n        if (_needsRandom) {\n          seedRandom(randSeed + time);\n        }\n        if (needsVelocity) {\n          velocity = velocityAtTime(time);\n        }\n        expression_function();\n        this.frameExpressionId = elem.globalData.frameId;\n\n        // TODO: Check if it's possible to return on ShapeInterface the .v value\n        // Changed this to a ternary operation because Rollup failed compiling it correctly\n        scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n        return scoped_bm_rt;\n      }\n      // Bundlers will see these as dead code and unless we reference them\n      executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n      return executeExpression;\n    }\n    ob.initiateExpression = initiateExpression;\n    ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n    ob.resetFrame = resetFrame;\n    return ob;\n  }();\n\n  var Expressions = function () {\n    var ob = {};\n    ob.initExpressions = initExpressions;\n    ob.resetFrame = ExpressionManager.resetFrame;\n    function initExpressions(animation) {\n      var stackCount = 0;\n      var registers = [];\n      function pushExpression() {\n        stackCount += 1;\n      }\n      function popExpression() {\n        stackCount -= 1;\n        if (stackCount === 0) {\n          releaseInstances();\n        }\n      }\n      function registerExpressionProperty(expression) {\n        if (registers.indexOf(expression) === -1) {\n          registers.push(expression);\n        }\n      }\n      function releaseInstances() {\n        var i;\n        var len = registers.length;\n        for (i = 0; i < len; i += 1) {\n          registers[i].release();\n        }\n        registers.length = 0;\n      }\n      animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n      animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n      animation.renderer.globalData.pushExpression = pushExpression;\n      animation.renderer.globalData.popExpression = popExpression;\n      animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n    }\n    return ob;\n  }();\n\n  var MaskManagerInterface = function () {\n    function MaskInterface(mask, data) {\n      this._mask = mask;\n      this._data = data;\n    }\n    Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n      get: function get() {\n        if (this._mask.prop.k) {\n          this._mask.prop.getValue();\n        }\n        return this._mask.prop;\n      }\n    });\n    Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n      get: function get() {\n        if (this._mask.op.k) {\n          this._mask.op.getValue();\n        }\n        return this._mask.op.v * 100;\n      }\n    });\n    var MaskManager = function MaskManager(maskManager) {\n      var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n      var i;\n      var len = maskManager.viewData.length;\n      for (i = 0; i < len; i += 1) {\n        _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n      }\n      var maskFunction = function maskFunction(name) {\n        i = 0;\n        while (i < len) {\n          if (maskManager.masksProperties[i].nm === name) {\n            return _masksInterfaces[i];\n          }\n          i += 1;\n        }\n        return null;\n      };\n      return maskFunction;\n    };\n    return MaskManager;\n  }();\n\n  var ExpressionPropertyInterface = function () {\n    var defaultUnidimensionalValue = {\n      pv: 0,\n      v: 0,\n      mult: 1\n    };\n    var defaultMultidimensionalValue = {\n      pv: [0, 0, 0],\n      v: [0, 0, 0],\n      mult: 1\n    };\n    function completeProperty(expressionValue, property, type) {\n      Object.defineProperty(expressionValue, 'velocity', {\n        get: function get() {\n          return property.getVelocityAtTime(property.comp.currentFrame);\n        }\n      });\n      expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n      expressionValue.key = function (pos) {\n        if (!expressionValue.numKeys) {\n          return 0;\n        }\n        var value = '';\n        if ('s' in property.keyframes[pos - 1]) {\n          value = property.keyframes[pos - 1].s;\n        } else if ('e' in property.keyframes[pos - 2]) {\n          value = property.keyframes[pos - 2].e;\n        } else {\n          value = property.keyframes[pos - 2].s;\n        }\n        var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n        valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n        valueProp.value = type === 'unidimensional' ? value[0] : value;\n        return valueProp;\n      };\n      expressionValue.valueAtTime = property.getValueAtTime;\n      expressionValue.speedAtTime = property.getSpeedAtTime;\n      expressionValue.velocityAtTime = property.getVelocityAtTime;\n      expressionValue.propertyGroup = property.propertyGroup;\n    }\n    function UnidimensionalPropertyInterface(property) {\n      if (!property || !('pv' in property)) {\n        property = defaultUnidimensionalValue;\n      }\n      var mult = 1 / property.mult;\n      var val = property.pv * mult;\n      var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n      expressionValue.value = val;\n      completeProperty(expressionValue, property, 'unidimensional');\n      return function () {\n        if (property.k) {\n          property.getValue();\n        }\n        val = property.v * mult;\n        if (expressionValue.value !== val) {\n          expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n          expressionValue.value = val;\n          expressionValue[0] = val;\n          completeProperty(expressionValue, property, 'unidimensional');\n        }\n        return expressionValue;\n      };\n    }\n    function MultidimensionalPropertyInterface(property) {\n      if (!property || !('pv' in property)) {\n        property = defaultMultidimensionalValue;\n      }\n      var mult = 1 / property.mult;\n      var len = property.data && property.data.l || property.pv.length;\n      var expressionValue = createTypedArray('float32', len);\n      var arrValue = createTypedArray('float32', len);\n      expressionValue.value = arrValue;\n      completeProperty(expressionValue, property, 'multidimensional');\n      return function () {\n        if (property.k) {\n          property.getValue();\n        }\n        for (var i = 0; i < len; i += 1) {\n          arrValue[i] = property.v[i] * mult;\n          expressionValue[i] = arrValue[i];\n        }\n        return expressionValue;\n      };\n    }\n\n    // TODO: try to avoid using this getter\n    function defaultGetter() {\n      return defaultUnidimensionalValue;\n    }\n    return function (property) {\n      if (!property) {\n        return defaultGetter;\n      }\n      if (property.propType === 'unidimensional') {\n        return UnidimensionalPropertyInterface(property);\n      }\n      return MultidimensionalPropertyInterface(property);\n    };\n  }();\n\n  var TransformExpressionInterface = function () {\n    return function (transform) {\n      function _thisFunction(name) {\n        switch (name) {\n          case 'scale':\n          case 'Scale':\n          case 'ADBE Scale':\n          case 6:\n            return _thisFunction.scale;\n          case 'rotation':\n          case 'Rotation':\n          case 'ADBE Rotation':\n          case 'ADBE Rotate Z':\n          case 10:\n            return _thisFunction.rotation;\n          case 'ADBE Rotate X':\n            return _thisFunction.xRotation;\n          case 'ADBE Rotate Y':\n            return _thisFunction.yRotation;\n          case 'position':\n          case 'Position':\n          case 'ADBE Position':\n          case 2:\n            return _thisFunction.position;\n          case 'ADBE Position_0':\n            return _thisFunction.xPosition;\n          case 'ADBE Position_1':\n            return _thisFunction.yPosition;\n          case 'ADBE Position_2':\n            return _thisFunction.zPosition;\n          case 'anchorPoint':\n          case 'AnchorPoint':\n          case 'Anchor Point':\n          case 'ADBE AnchorPoint':\n          case 1:\n            return _thisFunction.anchorPoint;\n          case 'opacity':\n          case 'Opacity':\n          case 11:\n            return _thisFunction.opacity;\n          default:\n            return null;\n        }\n      }\n      Object.defineProperty(_thisFunction, 'rotation', {\n        get: ExpressionPropertyInterface(transform.r || transform.rz)\n      });\n      Object.defineProperty(_thisFunction, 'zRotation', {\n        get: ExpressionPropertyInterface(transform.rz || transform.r)\n      });\n      Object.defineProperty(_thisFunction, 'xRotation', {\n        get: ExpressionPropertyInterface(transform.rx)\n      });\n      Object.defineProperty(_thisFunction, 'yRotation', {\n        get: ExpressionPropertyInterface(transform.ry)\n      });\n      Object.defineProperty(_thisFunction, 'scale', {\n        get: ExpressionPropertyInterface(transform.s)\n      });\n      var _px;\n      var _py;\n      var _pz;\n      var _transformFactory;\n      if (transform.p) {\n        _transformFactory = ExpressionPropertyInterface(transform.p);\n      } else {\n        _px = ExpressionPropertyInterface(transform.px);\n        _py = ExpressionPropertyInterface(transform.py);\n        if (transform.pz) {\n          _pz = ExpressionPropertyInterface(transform.pz);\n        }\n      }\n      Object.defineProperty(_thisFunction, 'position', {\n        get: function get() {\n          if (transform.p) {\n            return _transformFactory();\n          }\n          return [_px(), _py(), _pz ? _pz() : 0];\n        }\n      });\n      Object.defineProperty(_thisFunction, 'xPosition', {\n        get: ExpressionPropertyInterface(transform.px)\n      });\n      Object.defineProperty(_thisFunction, 'yPosition', {\n        get: ExpressionPropertyInterface(transform.py)\n      });\n      Object.defineProperty(_thisFunction, 'zPosition', {\n        get: ExpressionPropertyInterface(transform.pz)\n      });\n      Object.defineProperty(_thisFunction, 'anchorPoint', {\n        get: ExpressionPropertyInterface(transform.a)\n      });\n      Object.defineProperty(_thisFunction, 'opacity', {\n        get: ExpressionPropertyInterface(transform.o)\n      });\n      Object.defineProperty(_thisFunction, 'skew', {\n        get: ExpressionPropertyInterface(transform.sk)\n      });\n      Object.defineProperty(_thisFunction, 'skewAxis', {\n        get: ExpressionPropertyInterface(transform.sa)\n      });\n      Object.defineProperty(_thisFunction, 'orientation', {\n        get: ExpressionPropertyInterface(transform.or)\n      });\n      return _thisFunction;\n    };\n  }();\n\n  var LayerExpressionInterface = function () {\n    function getMatrix(time) {\n      var toWorldMat = new Matrix();\n      if (time !== undefined) {\n        var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n        propMatrix.clone(toWorldMat);\n      } else {\n        var transformMat = this._elem.finalTransform.mProp;\n        transformMat.applyToMatrix(toWorldMat);\n      }\n      return toWorldMat;\n    }\n    function toWorldVec(arr, time) {\n      var toWorldMat = this.getMatrix(time);\n      toWorldMat.props[12] = 0;\n      toWorldMat.props[13] = 0;\n      toWorldMat.props[14] = 0;\n      return this.applyPoint(toWorldMat, arr);\n    }\n    function toWorld(arr, time) {\n      var toWorldMat = this.getMatrix(time);\n      return this.applyPoint(toWorldMat, arr);\n    }\n    function fromWorldVec(arr, time) {\n      var toWorldMat = this.getMatrix(time);\n      toWorldMat.props[12] = 0;\n      toWorldMat.props[13] = 0;\n      toWorldMat.props[14] = 0;\n      return this.invertPoint(toWorldMat, arr);\n    }\n    function fromWorld(arr, time) {\n      var toWorldMat = this.getMatrix(time);\n      return this.invertPoint(toWorldMat, arr);\n    }\n    function applyPoint(matrix, arr) {\n      if (this._elem.hierarchy && this._elem.hierarchy.length) {\n        var i;\n        var len = this._elem.hierarchy.length;\n        for (i = 0; i < len; i += 1) {\n          this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n        }\n      }\n      return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n    }\n    function invertPoint(matrix, arr) {\n      if (this._elem.hierarchy && this._elem.hierarchy.length) {\n        var i;\n        var len = this._elem.hierarchy.length;\n        for (i = 0; i < len; i += 1) {\n          this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n        }\n      }\n      return matrix.inversePoint(arr);\n    }\n    function fromComp(arr) {\n      var toWorldMat = new Matrix();\n      toWorldMat.reset();\n      this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n      if (this._elem.hierarchy && this._elem.hierarchy.length) {\n        var i;\n        var len = this._elem.hierarchy.length;\n        for (i = 0; i < len; i += 1) {\n          this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n        }\n        return toWorldMat.inversePoint(arr);\n      }\n      return toWorldMat.inversePoint(arr);\n    }\n    function sampleImage() {\n      return [1, 1, 1, 1];\n    }\n    return function (elem) {\n      var transformInterface;\n      function _registerMaskInterface(maskManager) {\n        _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n      }\n      function _registerEffectsInterface(effects) {\n        _thisLayerFunction.effect = effects;\n      }\n      function _thisLayerFunction(name) {\n        switch (name) {\n          case 'ADBE Root Vectors Group':\n          case 'Contents':\n          case 2:\n            return _thisLayerFunction.shapeInterface;\n          case 1:\n          case 6:\n          case 'Transform':\n          case 'transform':\n          case 'ADBE Transform Group':\n            return transformInterface;\n          case 4:\n          case 'ADBE Effect Parade':\n          case 'effects':\n          case 'Effects':\n            return _thisLayerFunction.effect;\n          case 'ADBE Text Properties':\n            return _thisLayerFunction.textInterface;\n          default:\n            return null;\n        }\n      }\n      _thisLayerFunction.getMatrix = getMatrix;\n      _thisLayerFunction.invertPoint = invertPoint;\n      _thisLayerFunction.applyPoint = applyPoint;\n      _thisLayerFunction.toWorld = toWorld;\n      _thisLayerFunction.toWorldVec = toWorldVec;\n      _thisLayerFunction.fromWorld = fromWorld;\n      _thisLayerFunction.fromWorldVec = fromWorldVec;\n      _thisLayerFunction.toComp = toWorld;\n      _thisLayerFunction.fromComp = fromComp;\n      _thisLayerFunction.sampleImage = sampleImage;\n      _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n      _thisLayerFunction._elem = elem;\n      transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n      var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n      Object.defineProperties(_thisLayerFunction, {\n        hasParent: {\n          get: function get() {\n            return elem.hierarchy.length;\n          }\n        },\n        parent: {\n          get: function get() {\n            return elem.hierarchy[0].layerInterface;\n          }\n        },\n        rotation: getDescriptor(transformInterface, 'rotation'),\n        scale: getDescriptor(transformInterface, 'scale'),\n        position: getDescriptor(transformInterface, 'position'),\n        opacity: getDescriptor(transformInterface, 'opacity'),\n        anchorPoint: anchorPointDescriptor,\n        anchor_point: anchorPointDescriptor,\n        transform: {\n          get: function get() {\n            return transformInterface;\n          }\n        },\n        active: {\n          get: function get() {\n            return elem.isInRange;\n          }\n        }\n      });\n      _thisLayerFunction.startTime = elem.data.st;\n      _thisLayerFunction.index = elem.data.ind;\n      _thisLayerFunction.source = elem.data.refId;\n      _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n      _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n      _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n      _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n      _thisLayerFunction._name = elem.data.nm;\n      _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n      _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n      return _thisLayerFunction;\n    };\n  }();\n\n  var propertyGroupFactory = function () {\n    return function (interfaceFunction, parentPropertyGroup) {\n      return function (val) {\n        val = val === undefined ? 1 : val;\n        if (val <= 0) {\n          return interfaceFunction;\n        }\n        return parentPropertyGroup(val - 1);\n      };\n    };\n  }();\n\n  var PropertyInterface = function () {\n    return function (propertyName, propertyGroup) {\n      var interfaceFunction = {\n        _name: propertyName\n      };\n      function _propertyGroup(val) {\n        val = val === undefined ? 1 : val;\n        if (val <= 0) {\n          return interfaceFunction;\n        }\n        return propertyGroup(val - 1);\n      }\n      return _propertyGroup;\n    };\n  }();\n\n  var EffectsExpressionInterface = function () {\n    var ob = {\n      createEffectsInterface: createEffectsInterface\n    };\n    function createEffectsInterface(elem, propertyGroup) {\n      if (elem.effectsManager) {\n        var effectElements = [];\n        var effectsData = elem.data.ef;\n        var i;\n        var len = elem.effectsManager.effectElements.length;\n        for (i = 0; i < len; i += 1) {\n          effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n        }\n        var effects = elem.data.ef || [];\n        var groupInterface = function groupInterface(name) {\n          i = 0;\n          len = effects.length;\n          while (i < len) {\n            if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n              return effectElements[i];\n            }\n            i += 1;\n          }\n          return null;\n        };\n        Object.defineProperty(groupInterface, 'numProperties', {\n          get: function get() {\n            return effects.length;\n          }\n        });\n        return groupInterface;\n      }\n      return null;\n    }\n    function createGroupInterface(data, elements, propertyGroup, elem) {\n      function groupInterface(name) {\n        var effects = data.ef;\n        var i = 0;\n        var len = effects.length;\n        while (i < len) {\n          if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n            if (effects[i].ty === 5) {\n              return effectElements[i];\n            }\n            return effectElements[i]();\n          }\n          i += 1;\n        }\n        throw new Error();\n      }\n      var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n      var effectElements = [];\n      var i;\n      var len = data.ef.length;\n      for (i = 0; i < len; i += 1) {\n        if (data.ef[i].ty === 5) {\n          effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n        } else {\n          effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n        }\n      }\n      if (data.mn === 'ADBE Color Control') {\n        Object.defineProperty(groupInterface, 'color', {\n          get: function get() {\n            return effectElements[0]();\n          }\n        });\n      }\n      Object.defineProperties(groupInterface, {\n        numProperties: {\n          get: function get() {\n            return data.np;\n          }\n        },\n        _name: {\n          value: data.nm\n        },\n        propertyGroup: {\n          value: _propertyGroup\n        }\n      });\n      groupInterface.enabled = data.en !== 0;\n      groupInterface.active = groupInterface.enabled;\n      return groupInterface;\n    }\n    function createValueInterface(element, type, elem, propertyGroup) {\n      var expressionProperty = ExpressionPropertyInterface(element.p);\n      function interfaceFunction() {\n        if (type === 10) {\n          return elem.comp.compInterface(element.p.v);\n        }\n        return expressionProperty();\n      }\n      if (element.p.setGroupProperty) {\n        element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n      }\n      return interfaceFunction;\n    }\n    return ob;\n  }();\n\n  var ShapePathInterface = function () {\n    return function pathInterfaceFactory(shape, view, propertyGroup) {\n      var prop = view.sh;\n      function interfaceFunction(val) {\n        if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n          return interfaceFunction.path;\n        }\n        return null;\n      }\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n      prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        path: {\n          get: function get() {\n            if (prop.k) {\n              prop.getValue();\n            }\n            return prop;\n          }\n        },\n        shape: {\n          get: function get() {\n            if (prop.k) {\n              prop.getValue();\n            }\n            return prop;\n          }\n        },\n        _name: {\n          value: shape.nm\n        },\n        ix: {\n          value: shape.ix\n        },\n        propertyIndex: {\n          value: shape.ix\n        },\n        mn: {\n          value: shape.mn\n        },\n        propertyGroup: {\n          value: propertyGroup\n        }\n      });\n      return interfaceFunction;\n    };\n  }();\n\n  var ShapeExpressionInterface = function () {\n    function iterateElements(shapes, view, propertyGroup) {\n      var arr = [];\n      var i;\n      var len = shapes ? shapes.length : 0;\n      for (i = 0; i < len; i += 1) {\n        if (shapes[i].ty === 'gr') {\n          arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'fl') {\n          arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'st') {\n          arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'tm') {\n          arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'tr') {\n          // arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n        } else if (shapes[i].ty === 'el') {\n          arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'sr') {\n          arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'sh') {\n          arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'rc') {\n          arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'rd') {\n          arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'rp') {\n          arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else if (shapes[i].ty === 'gf') {\n          arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n        } else {\n          arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n        }\n      }\n      return arr;\n    }\n    function contentsInterfaceFactory(shape, view, propertyGroup) {\n      var interfaces;\n      var interfaceFunction = function _interfaceFunction(value) {\n        var i = 0;\n        var len = interfaces.length;\n        while (i < len) {\n          if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n            return interfaces[i];\n          }\n          i += 1;\n        }\n        if (typeof value === 'number') {\n          return interfaces[value - 1];\n        }\n        return null;\n      };\n      interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n      interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n      interfaceFunction.numProperties = interfaces.length;\n      var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n      interfaceFunction.transform = transformInterface;\n      interfaceFunction.propertyIndex = shape.cix;\n      interfaceFunction._name = shape.nm;\n      return interfaceFunction;\n    }\n    function groupInterfaceFactory(shape, view, propertyGroup) {\n      var interfaceFunction = function _interfaceFunction(value) {\n        switch (value) {\n          case 'ADBE Vectors Group':\n          case 'Contents':\n          case 2:\n            return interfaceFunction.content;\n          // Not necessary for now. Keeping them here in case a new case appears\n          // case 'ADBE Vector Transform Group':\n          // case 3:\n          default:\n            return interfaceFunction.transform;\n        }\n      };\n      interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n      var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n      var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n      interfaceFunction.content = content;\n      interfaceFunction.transform = transformInterface;\n      Object.defineProperty(interfaceFunction, '_name', {\n        get: function get() {\n          return shape.nm;\n        }\n      });\n      // interfaceFunction.content = interfaceFunction;\n      interfaceFunction.numProperties = shape.np;\n      interfaceFunction.propertyIndex = shape.ix;\n      interfaceFunction.nm = shape.nm;\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n    function fillInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(val) {\n        if (val === 'Color' || val === 'color') {\n          return interfaceFunction.color;\n        }\n        if (val === 'Opacity' || val === 'opacity') {\n          return interfaceFunction.opacity;\n        }\n        return null;\n      }\n      Object.defineProperties(interfaceFunction, {\n        color: {\n          get: ExpressionPropertyInterface(view.c)\n        },\n        opacity: {\n          get: ExpressionPropertyInterface(view.o)\n        },\n        _name: {\n          value: shape.nm\n        },\n        mn: {\n          value: shape.mn\n        }\n      });\n      view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n      view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n      return interfaceFunction;\n    }\n    function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(val) {\n        if (val === 'Start Point' || val === 'start point') {\n          return interfaceFunction.startPoint;\n        }\n        if (val === 'End Point' || val === 'end point') {\n          return interfaceFunction.endPoint;\n        }\n        if (val === 'Opacity' || val === 'opacity') {\n          return interfaceFunction.opacity;\n        }\n        return null;\n      }\n      Object.defineProperties(interfaceFunction, {\n        startPoint: {\n          get: ExpressionPropertyInterface(view.s)\n        },\n        endPoint: {\n          get: ExpressionPropertyInterface(view.e)\n        },\n        opacity: {\n          get: ExpressionPropertyInterface(view.o)\n        },\n        type: {\n          get: function get() {\n            return 'a';\n          }\n        },\n        _name: {\n          value: shape.nm\n        },\n        mn: {\n          value: shape.mn\n        }\n      });\n      view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n      view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n      view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n      return interfaceFunction;\n    }\n    function defaultInterfaceFactory() {\n      function interfaceFunction() {\n        return null;\n      }\n      return interfaceFunction;\n    }\n    function strokeInterfaceFactory(shape, view, propertyGroup) {\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n      var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n      function addPropertyToDashOb(i) {\n        Object.defineProperty(dashOb, shape.d[i].nm, {\n          get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n        });\n      }\n      var i;\n      var len = shape.d ? shape.d.length : 0;\n      var dashOb = {};\n      for (i = 0; i < len; i += 1) {\n        addPropertyToDashOb(i);\n        view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n      }\n      function interfaceFunction(val) {\n        if (val === 'Color' || val === 'color') {\n          return interfaceFunction.color;\n        }\n        if (val === 'Opacity' || val === 'opacity') {\n          return interfaceFunction.opacity;\n        }\n        if (val === 'Stroke Width' || val === 'stroke width') {\n          return interfaceFunction.strokeWidth;\n        }\n        return null;\n      }\n      Object.defineProperties(interfaceFunction, {\n        color: {\n          get: ExpressionPropertyInterface(view.c)\n        },\n        opacity: {\n          get: ExpressionPropertyInterface(view.o)\n        },\n        strokeWidth: {\n          get: ExpressionPropertyInterface(view.w)\n        },\n        dash: {\n          get: function get() {\n            return dashOb;\n          }\n        },\n        _name: {\n          value: shape.nm\n        },\n        mn: {\n          value: shape.mn\n        }\n      });\n      view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n      view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n      view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n      return interfaceFunction;\n    }\n    function trimInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(val) {\n        if (val === shape.e.ix || val === 'End' || val === 'end') {\n          return interfaceFunction.end;\n        }\n        if (val === shape.s.ix) {\n          return interfaceFunction.start;\n        }\n        if (val === shape.o.ix) {\n          return interfaceFunction.offset;\n        }\n        return null;\n      }\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n      interfaceFunction.propertyIndex = shape.ix;\n      view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n      view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n      view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n      interfaceFunction.propertyIndex = shape.ix;\n      interfaceFunction.propertyGroup = propertyGroup;\n      Object.defineProperties(interfaceFunction, {\n        start: {\n          get: ExpressionPropertyInterface(view.s)\n        },\n        end: {\n          get: ExpressionPropertyInterface(view.e)\n        },\n        offset: {\n          get: ExpressionPropertyInterface(view.o)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n    function transformInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.a.ix === value || value === 'Anchor Point') {\n          return interfaceFunction.anchorPoint;\n        }\n        if (shape.o.ix === value || value === 'Opacity') {\n          return interfaceFunction.opacity;\n        }\n        if (shape.p.ix === value || value === 'Position') {\n          return interfaceFunction.position;\n        }\n        if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n          return interfaceFunction.rotation;\n        }\n        if (shape.s.ix === value || value === 'Scale') {\n          return interfaceFunction.scale;\n        }\n        if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n          return interfaceFunction.skew;\n        }\n        if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n          return interfaceFunction.skewAxis;\n        }\n        return null;\n      }\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n      view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n      view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n      view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n      view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n      view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n      if (view.transform.mProps.sk) {\n        view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n        view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n      }\n      view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        opacity: {\n          get: ExpressionPropertyInterface(view.transform.mProps.o)\n        },\n        position: {\n          get: ExpressionPropertyInterface(view.transform.mProps.p)\n        },\n        anchorPoint: {\n          get: ExpressionPropertyInterface(view.transform.mProps.a)\n        },\n        scale: {\n          get: ExpressionPropertyInterface(view.transform.mProps.s)\n        },\n        rotation: {\n          get: ExpressionPropertyInterface(view.transform.mProps.r)\n        },\n        skew: {\n          get: ExpressionPropertyInterface(view.transform.mProps.sk)\n        },\n        skewAxis: {\n          get: ExpressionPropertyInterface(view.transform.mProps.sa)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.ty = 'tr';\n      interfaceFunction.mn = shape.mn;\n      interfaceFunction.propertyGroup = propertyGroup;\n      return interfaceFunction;\n    }\n    function ellipseInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.p.ix === value) {\n          return interfaceFunction.position;\n        }\n        if (shape.s.ix === value) {\n          return interfaceFunction.size;\n        }\n        return null;\n      }\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n      interfaceFunction.propertyIndex = shape.ix;\n      var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n      prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n      prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        size: {\n          get: ExpressionPropertyInterface(prop.s)\n        },\n        position: {\n          get: ExpressionPropertyInterface(prop.p)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n    function starInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.p.ix === value) {\n          return interfaceFunction.position;\n        }\n        if (shape.r.ix === value) {\n          return interfaceFunction.rotation;\n        }\n        if (shape.pt.ix === value) {\n          return interfaceFunction.points;\n        }\n        if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n          return interfaceFunction.outerRadius;\n        }\n        if (shape.os.ix === value) {\n          return interfaceFunction.outerRoundness;\n        }\n        if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n          return interfaceFunction.innerRadius;\n        }\n        if (shape.is && shape.is.ix === value) {\n          return interfaceFunction.innerRoundness;\n        }\n        return null;\n      }\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n      var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n      interfaceFunction.propertyIndex = shape.ix;\n      prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n      prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n      prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n      prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n      prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n      if (shape.ir) {\n        prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n        prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n      }\n      Object.defineProperties(interfaceFunction, {\n        position: {\n          get: ExpressionPropertyInterface(prop.p)\n        },\n        rotation: {\n          get: ExpressionPropertyInterface(prop.r)\n        },\n        points: {\n          get: ExpressionPropertyInterface(prop.pt)\n        },\n        outerRadius: {\n          get: ExpressionPropertyInterface(prop.or)\n        },\n        outerRoundness: {\n          get: ExpressionPropertyInterface(prop.os)\n        },\n        innerRadius: {\n          get: ExpressionPropertyInterface(prop.ir)\n        },\n        innerRoundness: {\n          get: ExpressionPropertyInterface(prop.is)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n    function rectInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.p.ix === value) {\n          return interfaceFunction.position;\n        }\n        if (shape.r.ix === value) {\n          return interfaceFunction.roundness;\n        }\n        if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n          return interfaceFunction.size;\n        }\n        return null;\n      }\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n      var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n      interfaceFunction.propertyIndex = shape.ix;\n      prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n      prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n      prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        position: {\n          get: ExpressionPropertyInterface(prop.p)\n        },\n        roundness: {\n          get: ExpressionPropertyInterface(prop.r)\n        },\n        size: {\n          get: ExpressionPropertyInterface(prop.s)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n    function roundedInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.r.ix === value || value === 'Round Corners 1') {\n          return interfaceFunction.radius;\n        }\n        return null;\n      }\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n      var prop = view;\n      interfaceFunction.propertyIndex = shape.ix;\n      prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        radius: {\n          get: ExpressionPropertyInterface(prop.rd)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n    function repeaterInterfaceFactory(shape, view, propertyGroup) {\n      function interfaceFunction(value) {\n        if (shape.c.ix === value || value === 'Copies') {\n          return interfaceFunction.copies;\n        }\n        if (shape.o.ix === value || value === 'Offset') {\n          return interfaceFunction.offset;\n        }\n        return null;\n      }\n      var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n      var prop = view;\n      interfaceFunction.propertyIndex = shape.ix;\n      prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n      prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n      Object.defineProperties(interfaceFunction, {\n        copies: {\n          get: ExpressionPropertyInterface(prop.c)\n        },\n        offset: {\n          get: ExpressionPropertyInterface(prop.o)\n        },\n        _name: {\n          value: shape.nm\n        }\n      });\n      interfaceFunction.mn = shape.mn;\n      return interfaceFunction;\n    }\n    return function (shapes, view, propertyGroup) {\n      var interfaces;\n      function _interfaceFunction(value) {\n        if (typeof value === 'number') {\n          value = value === undefined ? 1 : value;\n          if (value === 0) {\n            return propertyGroup;\n          }\n          return interfaces[value - 1];\n        }\n        var i = 0;\n        var len = interfaces.length;\n        while (i < len) {\n          if (interfaces[i]._name === value) {\n            return interfaces[i];\n          }\n          i += 1;\n        }\n        return null;\n      }\n      function parentGroupWrapper() {\n        return propertyGroup;\n      }\n      _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n      interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n      _interfaceFunction.numProperties = interfaces.length;\n      _interfaceFunction._name = 'Contents';\n      return _interfaceFunction;\n    };\n  }();\n\n  var TextExpressionInterface = function () {\n    return function (elem) {\n      var _sourceText;\n      function _thisLayerFunction(name) {\n        switch (name) {\n          case 'ADBE Text Document':\n            return _thisLayerFunction.sourceText;\n          default:\n            return null;\n        }\n      }\n      Object.defineProperty(_thisLayerFunction, 'sourceText', {\n        get: function get() {\n          elem.textProperty.getValue();\n          var stringValue = elem.textProperty.currentData.t;\n          if (!_sourceText || stringValue !== _sourceText.value) {\n            _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n            // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n            _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n            Object.defineProperty(_sourceText, 'style', {\n              get: function get() {\n                return {\n                  fillColor: elem.textProperty.currentData.fc\n                };\n              }\n            });\n          }\n          return _sourceText;\n        }\n      });\n      return _thisLayerFunction;\n    };\n  }();\n\n  function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\n  var FootageInterface = function () {\n    var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n      var currentPropertyName = '';\n      var currentProperty = elem.getFootageData();\n      function init() {\n        currentPropertyName = '';\n        currentProperty = elem.getFootageData();\n        return searchProperty;\n      }\n      function searchProperty(value) {\n        if (currentProperty[value]) {\n          currentPropertyName = value;\n          currentProperty = currentProperty[value];\n          if (_typeof(currentProperty) === 'object') {\n            return searchProperty;\n          }\n          return currentProperty;\n        }\n        var propertyNameIndex = value.indexOf(currentPropertyName);\n        if (propertyNameIndex !== -1) {\n          var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n          currentProperty = currentProperty[index];\n          if (_typeof(currentProperty) === 'object') {\n            return searchProperty;\n          }\n          return currentProperty;\n        }\n        return '';\n      }\n      return init;\n    };\n    var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n      function interfaceFunction(value) {\n        if (value === 'Outline') {\n          return interfaceFunction.outlineInterface();\n        }\n        return null;\n      }\n      interfaceFunction._name = 'Outline';\n      interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n      return interfaceFunction;\n    };\n    return function (elem) {\n      function _interfaceFunction(value) {\n        if (value === 'Data') {\n          return _interfaceFunction.dataInterface;\n        }\n        return null;\n      }\n      _interfaceFunction._name = 'Data';\n      _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n      return _interfaceFunction;\n    };\n  }();\n\n  var interfaces = {\n    layer: LayerExpressionInterface,\n    effects: EffectsExpressionInterface,\n    comp: CompExpressionInterface,\n    shape: ShapeExpressionInterface,\n    text: TextExpressionInterface,\n    footage: FootageInterface\n  };\n  function getInterface(type) {\n    return interfaces[type] || null;\n  }\n\n  var expressionHelpers = function () {\n    function searchExpressions(elem, data, prop) {\n      if (data.x) {\n        prop.k = true;\n        prop.x = true;\n        prop.initiateExpression = ExpressionManager.initiateExpression;\n        prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n      }\n    }\n    function getValueAtTime(frameNum) {\n      frameNum *= this.elem.globalData.frameRate;\n      frameNum -= this.offsetTime;\n      if (frameNum !== this._cachingAtTime.lastFrame) {\n        this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n        this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n        this._cachingAtTime.lastFrame = frameNum;\n      }\n      return this._cachingAtTime.value;\n    }\n    function getSpeedAtTime(frameNum) {\n      var delta = -0.01;\n      var v1 = this.getValueAtTime(frameNum);\n      var v2 = this.getValueAtTime(frameNum + delta);\n      var speed = 0;\n      if (v1.length) {\n        var i;\n        for (i = 0; i < v1.length; i += 1) {\n          speed += Math.pow(v2[i] - v1[i], 2);\n        }\n        speed = Math.sqrt(speed) * 100;\n      } else {\n        speed = 0;\n      }\n      return speed;\n    }\n    function getVelocityAtTime(frameNum) {\n      if (this.vel !== undefined) {\n        return this.vel;\n      }\n      var delta = -0.001;\n      // frameNum += this.elem.data.st;\n      var v1 = this.getValueAtTime(frameNum);\n      var v2 = this.getValueAtTime(frameNum + delta);\n      var velocity;\n      if (v1.length) {\n        velocity = createTypedArray('float32', v1.length);\n        var i;\n        for (i = 0; i < v1.length; i += 1) {\n          // removing frameRate\n          // if needed, don't add it here\n          // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n          velocity[i] = (v2[i] - v1[i]) / delta;\n        }\n      } else {\n        velocity = (v2 - v1) / delta;\n      }\n      return velocity;\n    }\n    function getStaticValueAtTime() {\n      return this.pv;\n    }\n    function setGroupProperty(propertyGroup) {\n      this.propertyGroup = propertyGroup;\n    }\n    return {\n      searchExpressions: searchExpressions,\n      getSpeedAtTime: getSpeedAtTime,\n      getVelocityAtTime: getVelocityAtTime,\n      getValueAtTime: getValueAtTime,\n      getStaticValueAtTime: getStaticValueAtTime,\n      setGroupProperty: setGroupProperty\n    };\n  }();\n\n  function addPropertyDecorator() {\n    function loopOut(type, duration, durationFlag) {\n      if (!this.k || !this.keyframes) {\n        return this.pv;\n      }\n      type = type ? type.toLowerCase() : '';\n      var currentFrame = this.comp.renderedFrame;\n      var keyframes = this.keyframes;\n      var lastKeyFrame = keyframes[keyframes.length - 1].t;\n      if (currentFrame <= lastKeyFrame) {\n        return this.pv;\n      }\n      var cycleDuration;\n      var firstKeyFrame;\n      if (!durationFlag) {\n        if (!duration || duration > keyframes.length - 1) {\n          duration = keyframes.length - 1;\n        }\n        firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n        cycleDuration = lastKeyFrame - firstKeyFrame;\n      } else {\n        if (!duration) {\n          cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n        } else {\n          cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n        }\n        firstKeyFrame = lastKeyFrame - cycleDuration;\n      }\n      var i;\n      var len;\n      var ret;\n      if (type === 'pingpong') {\n        var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n        if (iterations % 2 !== 0) {\n          return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n        }\n      } else if (type === 'offset') {\n        var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n        var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n        var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n        var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n        if (this.pv.length) {\n          ret = new Array(initV.length);\n          len = ret.length;\n          for (i = 0; i < len; i += 1) {\n            ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n          }\n          return ret;\n        }\n        return (endV - initV) * repeats + current;\n      } else if (type === 'continue') {\n        var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n        var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n        if (this.pv.length) {\n          ret = new Array(lastValue.length);\n          len = ret.length;\n          for (i = 0; i < len; i += 1) {\n            ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n          }\n          return ret;\n        }\n        return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n      }\n      return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n    }\n    function loopIn(type, duration, durationFlag) {\n      if (!this.k) {\n        return this.pv;\n      }\n      type = type ? type.toLowerCase() : '';\n      var currentFrame = this.comp.renderedFrame;\n      var keyframes = this.keyframes;\n      var firstKeyFrame = keyframes[0].t;\n      if (currentFrame >= firstKeyFrame) {\n        return this.pv;\n      }\n      var cycleDuration;\n      var lastKeyFrame;\n      if (!durationFlag) {\n        if (!duration || duration > keyframes.length - 1) {\n          duration = keyframes.length - 1;\n        }\n        lastKeyFrame = keyframes[duration].t;\n        cycleDuration = lastKeyFrame - firstKeyFrame;\n      } else {\n        if (!duration) {\n          cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n        } else {\n          cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n        }\n        lastKeyFrame = firstKeyFrame + cycleDuration;\n      }\n      var i;\n      var len;\n      var ret;\n      if (type === 'pingpong') {\n        var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n        if (iterations % 2 === 0) {\n          return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n        }\n      } else if (type === 'offset') {\n        var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n        var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n        var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n        var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n        if (this.pv.length) {\n          ret = new Array(initV.length);\n          len = ret.length;\n          for (i = 0; i < len; i += 1) {\n            ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n          }\n          return ret;\n        }\n        return current - (endV - initV) * repeats;\n      } else if (type === 'continue') {\n        var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n        var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n        if (this.pv.length) {\n          ret = new Array(firstValue.length);\n          len = ret.length;\n          for (i = 0; i < len; i += 1) {\n            ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n          }\n          return ret;\n        }\n        return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n      }\n      return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n    }\n    function smooth(width, samples) {\n      if (!this.k) {\n        return this.pv;\n      }\n      width = (width || 0.4) * 0.5;\n      samples = Math.floor(samples || 5);\n      if (samples <= 1) {\n        return this.pv;\n      }\n      var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n      var initFrame = currentTime - width;\n      var endFrame = currentTime + width;\n      var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n      var i = 0;\n      var j = 0;\n      var value;\n      if (this.pv.length) {\n        value = createTypedArray('float32', this.pv.length);\n      } else {\n        value = 0;\n      }\n      var sampleValue;\n      while (i < samples) {\n        sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n        if (this.pv.length) {\n          for (j = 0; j < this.pv.length; j += 1) {\n            value[j] += sampleValue[j];\n          }\n        } else {\n          value += sampleValue;\n        }\n        i += 1;\n      }\n      if (this.pv.length) {\n        for (j = 0; j < this.pv.length; j += 1) {\n          value[j] /= samples;\n        }\n      } else {\n        value /= samples;\n      }\n      return value;\n    }\n    function getTransformValueAtTime(time) {\n      if (!this._transformCachingAtTime) {\n        this._transformCachingAtTime = {\n          v: new Matrix()\n        };\n      }\n      /// /\n      var matrix = this._transformCachingAtTime.v;\n      matrix.cloneFromProps(this.pre.props);\n      if (this.appliedTransformations < 1) {\n        var anchor = this.a.getValueAtTime(time);\n        matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n      }\n      if (this.appliedTransformations < 2) {\n        var scale = this.s.getValueAtTime(time);\n        matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n      }\n      if (this.sk && this.appliedTransformations < 3) {\n        var skew = this.sk.getValueAtTime(time);\n        var skewAxis = this.sa.getValueAtTime(time);\n        matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n      }\n      if (this.r && this.appliedTransformations < 4) {\n        var rotation = this.r.getValueAtTime(time);\n        matrix.rotate(-rotation * this.r.mult);\n      } else if (!this.r && this.appliedTransformations < 4) {\n        var rotationZ = this.rz.getValueAtTime(time);\n        var rotationY = this.ry.getValueAtTime(time);\n        var rotationX = this.rx.getValueAtTime(time);\n        var orientation = this.or.getValueAtTime(time);\n        matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n      }\n      if (this.data.p && this.data.p.s) {\n        var positionX = this.px.getValueAtTime(time);\n        var positionY = this.py.getValueAtTime(time);\n        if (this.data.p.z) {\n          var positionZ = this.pz.getValueAtTime(time);\n          matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n        } else {\n          matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n        }\n      } else {\n        var position = this.p.getValueAtTime(time);\n        matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n      }\n      return matrix;\n      /// /\n    }\n    function getTransformStaticValueAtTime() {\n      return this.v.clone(new Matrix());\n    }\n    var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n    TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n      var prop = getTransformProperty(elem, data, container);\n      if (prop.dynamicProperties.length) {\n        prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n      } else {\n        prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n      }\n      prop.setGroupProperty = expressionHelpers.setGroupProperty;\n      return prop;\n    };\n    var propertyGetProp = PropertyFactory.getProp;\n    PropertyFactory.getProp = function (elem, data, type, mult, container) {\n      var prop = propertyGetProp(elem, data, type, mult, container);\n      // prop.getVelocityAtTime = getVelocityAtTime;\n      // prop.loopOut = loopOut;\n      // prop.loopIn = loopIn;\n      if (prop.kf) {\n        prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n      } else {\n        prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n      }\n      prop.setGroupProperty = expressionHelpers.setGroupProperty;\n      prop.loopOut = loopOut;\n      prop.loopIn = loopIn;\n      prop.smooth = smooth;\n      prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n      prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n      prop.numKeys = data.a === 1 ? data.k.length : 0;\n      prop.propertyIndex = data.ix;\n      var value = 0;\n      if (type !== 0) {\n        value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n      }\n      prop._cachingAtTime = {\n        lastFrame: initialDefaultFrame,\n        lastIndex: 0,\n        value: value\n      };\n      expressionHelpers.searchExpressions(elem, data, prop);\n      if (prop.k) {\n        container.addDynamicProperty(prop);\n      }\n      return prop;\n    };\n    function getShapeValueAtTime(frameNum) {\n      // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n      if (!this._cachingAtTime) {\n        this._cachingAtTime = {\n          shapeValue: shapePool.clone(this.pv),\n          lastIndex: 0,\n          lastTime: initialDefaultFrame\n        };\n      }\n      frameNum *= this.elem.globalData.frameRate;\n      frameNum -= this.offsetTime;\n      if (frameNum !== this._cachingAtTime.lastTime) {\n        this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n        this._cachingAtTime.lastTime = frameNum;\n        this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n      }\n      return this._cachingAtTime.shapeValue;\n    }\n    var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n    var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n    function ShapeExpressions() {}\n    ShapeExpressions.prototype = {\n      vertices: function vertices(prop, time) {\n        if (this.k) {\n          this.getValue();\n        }\n        var shapePath = this.v;\n        if (time !== undefined) {\n          shapePath = this.getValueAtTime(time, 0);\n        }\n        var i;\n        var len = shapePath._length;\n        var vertices = shapePath[prop];\n        var points = shapePath.v;\n        var arr = createSizedArray(len);\n        for (i = 0; i < len; i += 1) {\n          if (prop === 'i' || prop === 'o') {\n            arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n          } else {\n            arr[i] = [vertices[i][0], vertices[i][1]];\n          }\n        }\n        return arr;\n      },\n      points: function points(time) {\n        return this.vertices('v', time);\n      },\n      inTangents: function inTangents(time) {\n        return this.vertices('i', time);\n      },\n      outTangents: function outTangents(time) {\n        return this.vertices('o', time);\n      },\n      isClosed: function isClosed() {\n        return this.v.c;\n      },\n      pointOnPath: function pointOnPath(perc, time) {\n        var shapePath = this.v;\n        if (time !== undefined) {\n          shapePath = this.getValueAtTime(time, 0);\n        }\n        if (!this._segmentsLength) {\n          this._segmentsLength = bez.getSegmentsLength(shapePath);\n        }\n        var segmentsLength = this._segmentsLength;\n        var lengths = segmentsLength.lengths;\n        var lengthPos = segmentsLength.totalLength * perc;\n        var i = 0;\n        var len = lengths.length;\n        var accumulatedLength = 0;\n        var pt;\n        while (i < len) {\n          if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n            var initIndex = i;\n            var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n            var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n            pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n            break;\n          } else {\n            accumulatedLength += lengths[i].addedLength;\n          }\n          i += 1;\n        }\n        if (!pt) {\n          pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n        }\n        return pt;\n      },\n      vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n        // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n        if (perc == 1) {\n          // eslint-disable-line eqeqeq\n          perc = this.v.c;\n        } else if (perc == 0) {\n          // eslint-disable-line eqeqeq\n          perc = 0.999;\n        }\n        var pt1 = this.pointOnPath(perc, time);\n        var pt2 = this.pointOnPath(perc + 0.001, time);\n        var xLength = pt2[0] - pt1[0];\n        var yLength = pt2[1] - pt1[1];\n        var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n        if (magnitude === 0) {\n          return [0, 0];\n        }\n        var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n        return unitVector;\n      },\n      tangentOnPath: function tangentOnPath(perc, time) {\n        return this.vectorOnPath(perc, time, 'tangent');\n      },\n      normalOnPath: function normalOnPath(perc, time) {\n        return this.vectorOnPath(perc, time, 'normal');\n      },\n      setGroupProperty: expressionHelpers.setGroupProperty,\n      getValueAtTime: expressionHelpers.getStaticValueAtTime\n    };\n    extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n    extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n    KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n    KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n    var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n    ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n      var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n      prop.propertyIndex = data.ix;\n      prop.lock = false;\n      if (type === 3) {\n        expressionHelpers.searchExpressions(elem, data.pt, prop);\n      } else if (type === 4) {\n        expressionHelpers.searchExpressions(elem, data.ks, prop);\n      }\n      if (prop.k) {\n        elem.addDynamicProperty(prop);\n      }\n      return prop;\n    };\n  }\n  function initialize$1() {\n    addPropertyDecorator();\n  }\n\n  function addDecorator() {\n    function searchExpressions() {\n      if (this.data.d.x) {\n        this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n        this.addEffect(this.getExpressionValue.bind(this));\n        return true;\n      }\n      return null;\n    }\n    TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n      var newValue = this.calculateExpression(text);\n      if (currentValue.t !== newValue) {\n        var newData = {};\n        this.copyData(newData, currentValue);\n        newData.t = newValue.toString();\n        newData.__complete = false;\n        return newData;\n      }\n      return currentValue;\n    };\n    TextProperty.prototype.searchProperty = function () {\n      var isKeyframed = this.searchKeyframes();\n      var hasExpressions = this.searchExpressions();\n      this.kf = isKeyframed || hasExpressions;\n      return this.kf;\n    };\n    TextProperty.prototype.searchExpressions = searchExpressions;\n  }\n  function initialize() {\n    addDecorator();\n  }\n\n  function SVGComposableEffect() {}\n  SVGComposableEffect.prototype = {\n    createMergeNode: function createMergeNode(resultId, ins) {\n      var feMerge = createNS('feMerge');\n      feMerge.setAttribute('result', resultId);\n      var feMergeNode;\n      var i;\n      for (i = 0; i < ins.length; i += 1) {\n        feMergeNode = createNS('feMergeNode');\n        feMergeNode.setAttribute('in', ins[i]);\n        feMerge.appendChild(feMergeNode);\n        feMerge.appendChild(feMergeNode);\n      }\n      return feMerge;\n    }\n  };\n\n  var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n  function SVGTintFilter(filter, filterManager, elem, id, source) {\n    this.filterManager = filterManager;\n    var feColorMatrix = createNS('feColorMatrix');\n    feColorMatrix.setAttribute('type', 'matrix');\n    feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n    feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n    this.linearFilter = feColorMatrix;\n    feColorMatrix.setAttribute('result', id + '_tint_1');\n    filter.appendChild(feColorMatrix);\n    feColorMatrix = createNS('feColorMatrix');\n    feColorMatrix.setAttribute('type', 'matrix');\n    feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n    feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n    feColorMatrix.setAttribute('result', id + '_tint_2');\n    filter.appendChild(feColorMatrix);\n    this.matrixFilter = feColorMatrix;\n    var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n    filter.appendChild(feMerge);\n  }\n  extendPrototype([SVGComposableEffect], SVGTintFilter);\n  SVGTintFilter.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      var colorBlack = this.filterManager.effectElements[0].p.v;\n      var colorWhite = this.filterManager.effectElements[1].p.v;\n      var opacity = this.filterManager.effectElements[2].p.v / 100;\n      this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n      this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n    }\n  };\n\n  function SVGFillFilter(filter, filterManager, elem, id) {\n    this.filterManager = filterManager;\n    var feColorMatrix = createNS('feColorMatrix');\n    feColorMatrix.setAttribute('type', 'matrix');\n    feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n    feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n    feColorMatrix.setAttribute('result', id);\n    filter.appendChild(feColorMatrix);\n    this.matrixFilter = feColorMatrix;\n  }\n  SVGFillFilter.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      var color = this.filterManager.effectElements[2].p.v;\n      var opacity = this.filterManager.effectElements[6].p.v;\n      this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n    }\n  };\n\n  function SVGStrokeEffect(fil, filterManager, elem) {\n    this.initialized = false;\n    this.filterManager = filterManager;\n    this.elem = elem;\n    this.paths = [];\n  }\n  SVGStrokeEffect.prototype.initialize = function () {\n    var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n    var path;\n    var groupPath;\n    var i;\n    var len;\n    if (this.filterManager.effectElements[1].p.v === 1) {\n      len = this.elem.maskManager.masksProperties.length;\n      i = 0;\n    } else {\n      i = this.filterManager.effectElements[0].p.v - 1;\n      len = i + 1;\n    }\n    groupPath = createNS('g');\n    groupPath.setAttribute('fill', 'none');\n    groupPath.setAttribute('stroke-linecap', 'round');\n    groupPath.setAttribute('stroke-dashoffset', 1);\n    for (i; i < len; i += 1) {\n      path = createNS('path');\n      groupPath.appendChild(path);\n      this.paths.push({\n        p: path,\n        m: i\n      });\n    }\n    if (this.filterManager.effectElements[10].p.v === 3) {\n      var mask = createNS('mask');\n      var id = createElementID();\n      mask.setAttribute('id', id);\n      mask.setAttribute('mask-type', 'alpha');\n      mask.appendChild(groupPath);\n      this.elem.globalData.defs.appendChild(mask);\n      var g = createNS('g');\n      g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n      while (elemChildren[0]) {\n        g.appendChild(elemChildren[0]);\n      }\n      this.elem.layerElement.appendChild(g);\n      this.masker = mask;\n      groupPath.setAttribute('stroke', '#fff');\n    } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n      if (this.filterManager.effectElements[10].p.v === 2) {\n        elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n        while (elemChildren.length) {\n          this.elem.layerElement.removeChild(elemChildren[0]);\n        }\n      }\n      this.elem.layerElement.appendChild(groupPath);\n      this.elem.layerElement.removeAttribute('mask');\n      groupPath.setAttribute('stroke', '#fff');\n    }\n    this.initialized = true;\n    this.pathMasker = groupPath;\n  };\n  SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n    if (!this.initialized) {\n      this.initialize();\n    }\n    var i;\n    var len = this.paths.length;\n    var mask;\n    var path;\n    for (i = 0; i < len; i += 1) {\n      if (this.paths[i].m !== -1) {\n        mask = this.elem.maskManager.viewData[this.paths[i].m];\n        path = this.paths[i].p;\n        if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n          path.setAttribute('d', mask.lastPath);\n        }\n        if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n          var dasharrayValue;\n          if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n            var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n            var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n            var l = path.getTotalLength();\n            dasharrayValue = '0 0 0 ' + l * s + ' ';\n            var lineLength = l * (e - s);\n            var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n            var units = Math.floor(lineLength / segment);\n            var j;\n            for (j = 0; j < units; j += 1) {\n              dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n            }\n            dasharrayValue += '0 ' + l * 10 + ' 0 0';\n          } else {\n            dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n          }\n          path.setAttribute('stroke-dasharray', dasharrayValue);\n        }\n      }\n    }\n    if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n      this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n    }\n    if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n      this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n    }\n    if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n      if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n        var color = this.filterManager.effectElements[3].p.v;\n        this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n      }\n    }\n  };\n\n  function SVGTritoneFilter(filter, filterManager, elem, id) {\n    this.filterManager = filterManager;\n    var feColorMatrix = createNS('feColorMatrix');\n    feColorMatrix.setAttribute('type', 'matrix');\n    feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n    feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n    filter.appendChild(feColorMatrix);\n    var feComponentTransfer = createNS('feComponentTransfer');\n    feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n    feComponentTransfer.setAttribute('result', id);\n    this.matrixFilter = feComponentTransfer;\n    var feFuncR = createNS('feFuncR');\n    feFuncR.setAttribute('type', 'table');\n    feComponentTransfer.appendChild(feFuncR);\n    this.feFuncR = feFuncR;\n    var feFuncG = createNS('feFuncG');\n    feFuncG.setAttribute('type', 'table');\n    feComponentTransfer.appendChild(feFuncG);\n    this.feFuncG = feFuncG;\n    var feFuncB = createNS('feFuncB');\n    feFuncB.setAttribute('type', 'table');\n    feComponentTransfer.appendChild(feFuncB);\n    this.feFuncB = feFuncB;\n    filter.appendChild(feComponentTransfer);\n  }\n  SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      var color1 = this.filterManager.effectElements[0].p.v;\n      var color2 = this.filterManager.effectElements[1].p.v;\n      var color3 = this.filterManager.effectElements[2].p.v;\n      var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n      var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n      var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n      this.feFuncR.setAttribute('tableValues', tableR);\n      this.feFuncG.setAttribute('tableValues', tableG);\n      this.feFuncB.setAttribute('tableValues', tableB);\n    }\n  };\n\n  function SVGProLevelsFilter(filter, filterManager, elem, id) {\n    this.filterManager = filterManager;\n    var effectElements = this.filterManager.effectElements;\n    var feComponentTransfer = createNS('feComponentTransfer');\n\n    // Red\n    if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n      this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n    }\n    // Green\n    if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n      this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n    }\n    // Blue\n    if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n      this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n    }\n    // Alpha\n    if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n      this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n    }\n    // RGB\n    if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n      feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n      filter.appendChild(feComponentTransfer);\n    }\n    if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n      feComponentTransfer = createNS('feComponentTransfer');\n      feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n      feComponentTransfer.setAttribute('result', id);\n      filter.appendChild(feComponentTransfer);\n      this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n      this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n      this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n    }\n  }\n  SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n    var feFunc = createNS(type);\n    feFunc.setAttribute('type', 'table');\n    feComponentTransfer.appendChild(feFunc);\n    return feFunc;\n  };\n  SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n    var cnt = 0;\n    var segments = 256;\n    var perc;\n    var min = Math.min(inputBlack, inputWhite);\n    var max = Math.max(inputBlack, inputWhite);\n    var table = Array.call(null, {\n      length: segments\n    });\n    var colorValue;\n    var pos = 0;\n    var outputDelta = outputWhite - outputBlack;\n    var inputDelta = inputWhite - inputBlack;\n    while (cnt <= 256) {\n      perc = cnt / 256;\n      if (perc <= min) {\n        colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n      } else if (perc >= max) {\n        colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n      } else {\n        colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n      }\n      table[pos] = colorValue;\n      pos += 1;\n      cnt += 256 / (segments - 1);\n    }\n    return table.join(' ');\n  };\n  SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      var val;\n      var effectElements = this.filterManager.effectElements;\n      if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n        val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n        this.feFuncRComposed.setAttribute('tableValues', val);\n        this.feFuncGComposed.setAttribute('tableValues', val);\n        this.feFuncBComposed.setAttribute('tableValues', val);\n      }\n      if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n        val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n        this.feFuncR.setAttribute('tableValues', val);\n      }\n      if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n        val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n        this.feFuncG.setAttribute('tableValues', val);\n      }\n      if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n        val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n        this.feFuncB.setAttribute('tableValues', val);\n      }\n      if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n        val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n        this.feFuncA.setAttribute('tableValues', val);\n      }\n    }\n  };\n\n  function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n    var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n    var filterSize = filterManager.data.fs || globalFilterSize;\n    filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n    filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n    filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n    filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n    this.filterManager = filterManager;\n    var feGaussianBlur = createNS('feGaussianBlur');\n    feGaussianBlur.setAttribute('in', 'SourceAlpha');\n    feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n    feGaussianBlur.setAttribute('stdDeviation', '0');\n    this.feGaussianBlur = feGaussianBlur;\n    filter.appendChild(feGaussianBlur);\n    var feOffset = createNS('feOffset');\n    feOffset.setAttribute('dx', '25');\n    feOffset.setAttribute('dy', '0');\n    feOffset.setAttribute('in', id + '_drop_shadow_1');\n    feOffset.setAttribute('result', id + '_drop_shadow_2');\n    this.feOffset = feOffset;\n    filter.appendChild(feOffset);\n    var feFlood = createNS('feFlood');\n    feFlood.setAttribute('flood-color', '#00ff00');\n    feFlood.setAttribute('flood-opacity', '1');\n    feFlood.setAttribute('result', id + '_drop_shadow_3');\n    this.feFlood = feFlood;\n    filter.appendChild(feFlood);\n    var feComposite = createNS('feComposite');\n    feComposite.setAttribute('in', id + '_drop_shadow_3');\n    feComposite.setAttribute('in2', id + '_drop_shadow_2');\n    feComposite.setAttribute('operator', 'in');\n    feComposite.setAttribute('result', id + '_drop_shadow_4');\n    filter.appendChild(feComposite);\n    var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n    filter.appendChild(feMerge);\n    //\n  }\n  extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n  SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n        this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n      }\n      if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n        var col = this.filterManager.effectElements[0].p.v;\n        this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n      }\n      if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n        this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n      }\n      if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n        var distance = this.filterManager.effectElements[3].p.v;\n        var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n        var x = distance * Math.cos(angle);\n        var y = distance * Math.sin(angle);\n        this.feOffset.setAttribute('dx', x);\n        this.feOffset.setAttribute('dy', y);\n      }\n    }\n  };\n\n  var _svgMatteSymbols = [];\n  function SVGMatte3Effect(filterElem, filterManager, elem) {\n    this.initialized = false;\n    this.filterManager = filterManager;\n    this.filterElem = filterElem;\n    this.elem = elem;\n    elem.matteElement = createNS('g');\n    elem.matteElement.appendChild(elem.layerElement);\n    elem.matteElement.appendChild(elem.transformedElement);\n    elem.baseElement = elem.matteElement;\n  }\n  SVGMatte3Effect.prototype.findSymbol = function (mask) {\n    var i = 0;\n    var len = _svgMatteSymbols.length;\n    while (i < len) {\n      if (_svgMatteSymbols[i] === mask) {\n        return _svgMatteSymbols[i];\n      }\n      i += 1;\n    }\n    return null;\n  };\n  SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n    var parentNode = mask.layerElement.parentNode;\n    if (!parentNode) {\n      return;\n    }\n    var children = parentNode.children;\n    var i = 0;\n    var len = children.length;\n    while (i < len) {\n      if (children[i] === mask.layerElement) {\n        break;\n      }\n      i += 1;\n    }\n    var nextChild;\n    if (i <= len - 2) {\n      nextChild = children[i + 1];\n    }\n    var useElem = createNS('use');\n    useElem.setAttribute('href', '#' + symbolId);\n    if (nextChild) {\n      parentNode.insertBefore(useElem, nextChild);\n    } else {\n      parentNode.appendChild(useElem);\n    }\n  };\n  SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n    if (!this.findSymbol(mask)) {\n      var symbolId = createElementID();\n      var masker = createNS('mask');\n      masker.setAttribute('id', mask.layerId);\n      masker.setAttribute('mask-type', 'alpha');\n      _svgMatteSymbols.push(mask);\n      var defs = elem.globalData.defs;\n      defs.appendChild(masker);\n      var symbol = createNS('symbol');\n      symbol.setAttribute('id', symbolId);\n      this.replaceInParent(mask, symbolId);\n      symbol.appendChild(mask.layerElement);\n      defs.appendChild(symbol);\n      var useElem = createNS('use');\n      useElem.setAttribute('href', '#' + symbolId);\n      masker.appendChild(useElem);\n      mask.data.hd = false;\n      mask.show();\n    }\n    elem.setMatte(mask.layerId);\n  };\n  SVGMatte3Effect.prototype.initialize = function () {\n    var ind = this.filterManager.effectElements[0].p.v;\n    var elements = this.elem.comp.elements;\n    var i = 0;\n    var len = elements.length;\n    while (i < len) {\n      if (elements[i] && elements[i].data.ind === ind) {\n        this.setElementAsMask(this.elem, elements[i]);\n      }\n      i += 1;\n    }\n    this.initialized = true;\n  };\n  SVGMatte3Effect.prototype.renderFrame = function () {\n    if (!this.initialized) {\n      this.initialize();\n    }\n  };\n\n  function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n    // Outset the filter region by 100% on all sides to accommodate blur expansion.\n    filter.setAttribute('x', '-100%');\n    filter.setAttribute('y', '-100%');\n    filter.setAttribute('width', '300%');\n    filter.setAttribute('height', '300%');\n    this.filterManager = filterManager;\n    var feGaussianBlur = createNS('feGaussianBlur');\n    feGaussianBlur.setAttribute('result', id);\n    filter.appendChild(feGaussianBlur);\n    this.feGaussianBlur = feGaussianBlur;\n  }\n  SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n    if (forceRender || this.filterManager._mdf) {\n      // Empirical value, matching AE's blur appearance.\n      var kBlurrinessToSigma = 0.3;\n      var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma;\n\n      // Dimensions mapping:\n      //\n      //   1 -> horizontal & vertical\n      //   2 -> horizontal only\n      //   3 -> vertical only\n      //\n      var dimensions = this.filterManager.effectElements[1].p.v;\n      var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n      var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n      this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY);\n\n      // Repeat edges mapping:\n      //\n      //   0 -> off -> duplicate\n      //   1 -> on  -> wrap\n      var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n      this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n    }\n  };\n\n  function TransformEffect() {}\n  TransformEffect.prototype.init = function (effectsManager) {\n    this.effectsManager = effectsManager;\n    this.type = effectTypes.TRANSFORM_EFFECT;\n    this.matrix = new Matrix();\n    this.opacity = -1;\n    this._mdf = false;\n    this._opMdf = false;\n  };\n  TransformEffect.prototype.renderFrame = function (forceFrame) {\n    this._opMdf = false;\n    this._mdf = false;\n    if (forceFrame || this.effectsManager._mdf) {\n      var effectElements = this.effectsManager.effectElements;\n      var anchor = effectElements[0].p.v;\n      var position = effectElements[1].p.v;\n      var isUniformScale = effectElements[2].p.v === 1;\n      var scaleHeight = effectElements[3].p.v;\n      var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n      var skew = effectElements[5].p.v;\n      var skewAxis = effectElements[6].p.v;\n      var rotation = effectElements[7].p.v;\n      this.matrix.reset();\n      this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n      this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n      this.matrix.rotate(-rotation * degToRads);\n      this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n      this.matrix.translate(position[0], position[1], 0);\n      this._mdf = true;\n      if (this.opacity !== effectElements[8].p.v) {\n        this.opacity = effectElements[8].p.v;\n        this._opMdf = true;\n      }\n    }\n  };\n\n  function SVGTransformEffect(_, filterManager) {\n    this.init(filterManager);\n  }\n  extendPrototype([TransformEffect], SVGTransformEffect);\n\n  function CVTransformEffect(effectsManager) {\n    this.init(effectsManager);\n  }\n  extendPrototype([TransformEffect], CVTransformEffect);\n\n  // Registering renderers\n  registerRenderer('canvas', CanvasRenderer);\n  registerRenderer('html', HybridRenderer);\n  registerRenderer('svg', SVGRenderer);\n\n  // Registering shape modifiers\n  ShapeModifiers.registerModifier('tm', TrimModifier);\n  ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n  ShapeModifiers.registerModifier('rp', RepeaterModifier);\n  ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n  ShapeModifiers.registerModifier('zz', ZigZagModifier);\n  ShapeModifiers.registerModifier('op', OffsetPathModifier);\n\n  // Registering expression plugin\n  setExpressionsPlugin(Expressions);\n  setExpressionInterfaces(getInterface);\n  initialize$1();\n  initialize();\n\n  // Registering svg effects\n  registerEffect$1(20, SVGTintFilter, true);\n  registerEffect$1(21, SVGFillFilter, true);\n  registerEffect$1(22, SVGStrokeEffect, false);\n  registerEffect$1(23, SVGTritoneFilter, true);\n  registerEffect$1(24, SVGProLevelsFilter, true);\n  registerEffect$1(25, SVGDropShadowEffect, true);\n  registerEffect$1(28, SVGMatte3Effect, false);\n  registerEffect$1(29, SVGGaussianBlurEffect, true);\n  registerEffect$1(35, SVGTransformEffect, false);\n  registerEffect(35, CVTransformEffect);\n\n  return lottie;\n\n}));\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n    ? Symbol.toStringTag\n    : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nfunction addNumericSeparator(num, str) {\n    if (\n        num === Infinity\n        || num === -Infinity\n        || num !== num\n        || (num && num > -1000 && num < 1000)\n        || $test.call(/e/, str)\n    ) {\n        return str;\n    }\n    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n    if (typeof num === 'number') {\n        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n        if (int !== num) {\n            var intStr = String(int);\n            var dec = $slice.call(str, intStr.length + 1);\n            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n        }\n    }\n    return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n    __proto__: null,\n    'double': '\"',\n    single: \"'\"\n};\nvar quoteREs = {\n    __proto__: null,\n    'double': /([\"\\\\])/g,\n    single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n        throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n    }\n    var numericSeparator = opts.numericSeparator;\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        var str = String(obj);\n        return numericSeparator ? addNumericSeparator(obj, str) : str;\n    }\n    if (typeof obj === 'bigint') {\n        var bigIntStr = String(obj) + 'n';\n        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = $arrSlice.call(seen);\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + $toLowerCase.call(String(obj.nodeName));\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + $join.call(xs, ', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n        }\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n            return utilInspect(obj, { depth: maxDepth - depth });\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        if (mapForEach) {\n            mapForEach.call(obj, function (value, key) {\n                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n            });\n        }\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        if (setForEach) {\n            setForEach.call(obj, function (value) {\n                setParts.push(inspect(value, obj));\n            });\n        }\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n    /* eslint-env browser */\n    if (typeof window !== 'undefined' && obj === window) {\n        return '{ [object Window] }';\n    }\n    if (\n        (typeof globalThis !== 'undefined' && obj === globalThis)\n        || (typeof global !== 'undefined' && obj === global)\n    ) {\n        return '{ [object globalThis] }';\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + $join.call(ys, ', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var style = opts.quoteStyle || defaultStyle;\n    var quoteChar = quotes[style];\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return $replace.call(String(s), /\"/g, '&quot;');\n}\n\nfunction canTrustToString(obj) {\n    return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n    }\n    var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n    quoteRE.lastIndex = 0;\n    // eslint-disable-next-line no-control-regex\n    var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = $join.call(Array(opts.indent + 1), ' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: $join.call(Array(depth + 1), baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ($test.call(/[^\\w$]/, key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n","/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.match = match\nmodule.exports.regexpToFunction = regexpToFunction\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * Default configs.\n */\nvar DEFAULT_DELIMITER = '/'\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n  // Match escaped characters that would otherwise appear in future matches.\n  // This allows the user to escape special characters that won't transform.\n  '(\\\\\\\\.)',\n  // Match Express-style parameters and un-named parameters with a prefix\n  // and optional suffixes. Matches appear as:\n  //\n  // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\n  // \"(\\\\d+)\"  => [undefined, undefined, \"\\d+\", undefined]\n  '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param  {string}  str\n * @param  {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n  var tokens = []\n  var key = 0\n  var index = 0\n  var path = ''\n  var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER\n  var whitelist = (options && options.whitelist) || undefined\n  var pathEscaped = false\n  var res\n\n  while ((res = PATH_REGEXP.exec(str)) !== null) {\n    var m = res[0]\n    var escaped = res[1]\n    var offset = res.index\n    path += str.slice(index, offset)\n    index = offset + m.length\n\n    // Ignore already escaped sequences.\n    if (escaped) {\n      path += escaped[1]\n      pathEscaped = true\n      continue\n    }\n\n    var prev = ''\n    var name = res[2]\n    var capture = res[3]\n    var group = res[4]\n    var modifier = res[5]\n\n    if (!pathEscaped && path.length) {\n      var k = path.length - 1\n      var c = path[k]\n      var matches = whitelist ? whitelist.indexOf(c) > -1 : true\n\n      if (matches) {\n        prev = c\n        path = path.slice(0, k)\n      }\n    }\n\n    // Push the current path onto the tokens.\n    if (path) {\n      tokens.push(path)\n      path = ''\n      pathEscaped = false\n    }\n\n    var repeat = modifier === '+' || modifier === '*'\n    var optional = modifier === '?' || modifier === '*'\n    var pattern = capture || group\n    var delimiter = prev || defaultDelimiter\n    var prevText = prev || (typeof tokens[tokens.length - 1] === 'string' ? tokens[tokens.length - 1] : '')\n\n    tokens.push({\n      name: name || key++,\n      prefix: prev,\n      delimiter: delimiter,\n      optional: optional,\n      repeat: repeat,\n      pattern: pattern\n        ? escapeGroup(pattern)\n        : restrictBacktrack(delimiter, defaultDelimiter, prevText)\n    })\n  }\n\n  // Push any remaining characters.\n  if (path || index < str.length) {\n    tokens.push(path + str.substr(index))\n  }\n\n  return tokens\n}\n\nfunction restrictBacktrack (delimiter, defaultDelimiter, prevText) {\n  var charGroup = '[^' + escapeString(delimiter === defaultDelimiter ? delimiter : (delimiter + defaultDelimiter)) + ']'\n\n  if (!prevText || prevText.indexOf(delimiter) > -1 || prevText.indexOf(defaultDelimiter) > -1) {\n    return charGroup + '+?'\n  }\n\n  return escapeString(prevText) + '|(?:(?!' + escapeString(prevText) + ')' + charGroup + ')+?'\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param  {string}             str\n * @param  {Object=}            options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n  return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nfunction match (str, options) {\n  var keys = []\n  var re = pathToRegexp(str, keys, options)\n  return regexpToFunction(re, keys)\n}\n\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nfunction regexpToFunction (re, keys) {\n  return function (pathname, options) {\n    var m = re.exec(pathname)\n    if (!m) return false\n\n    var path = m[0]\n    var index = m.index\n    var params = {}\n    var decode = (options && options.decode) || decodeURIComponent\n\n    for (var i = 1; i < m.length; i++) {\n      if (m[i] === undefined) continue\n\n      var key = keys[i - 1]\n\n      if (key.repeat) {\n        params[key.name] = m[i].split(key.delimiter).map(function (value) {\n          return decode(value, key)\n        })\n      } else {\n        params[key.name] = decode(m[i], key)\n      }\n    }\n\n    return { path: path, index: index, params: params }\n  }\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n  // Compile all the tokens into regexps.\n  var matches = new Array(tokens.length)\n\n  // Compile all the patterns before compilation.\n  for (var i = 0; i < tokens.length; i++) {\n    if (typeof tokens[i] === 'object') {\n      matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n    }\n  }\n\n  return function (data, options) {\n    var path = ''\n    var encode = (options && options.encode) || encodeURIComponent\n    var validate = options ? options.validate !== false : true\n\n    for (var i = 0; i < tokens.length; i++) {\n      var token = tokens[i]\n\n      if (typeof token === 'string') {\n        path += token\n        continue\n      }\n\n      var value = data ? data[token.name] : undefined\n      var segment\n\n      if (Array.isArray(value)) {\n        if (!token.repeat) {\n          throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\n        }\n\n        if (value.length === 0) {\n          if (token.optional) continue\n\n          throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n        }\n\n        for (var j = 0; j < value.length; j++) {\n          segment = encode(value[j], token)\n\n          if (validate && !matches[i].test(segment)) {\n            throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\n          }\n\n          path += (j === 0 ? token.prefix : token.delimiter) + segment\n        }\n\n        continue\n      }\n\n      if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n        segment = encode(String(value), token)\n\n        if (validate && !matches[i].test(segment)) {\n          throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\n        }\n\n        path += token.prefix + segment\n        continue\n      }\n\n      if (token.optional) continue\n\n      throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\n    }\n\n    return path\n  }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param  {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n  return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param  {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n  return group.replace(/([=!:$/()])/g, '\\\\$1')\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param  {Object} options\n * @return {string}\n */\nfunction flags (options) {\n  return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param  {!RegExp} path\n * @param  {Array=}  keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n  if (!keys) return path\n\n  // Use a negative lookahead to match only capturing groups.\n  var groups = path.source.match(/\\((?!\\?)/g)\n\n  if (groups) {\n    for (var i = 0; i < groups.length; i++) {\n      keys.push({\n        name: i,\n        prefix: null,\n        delimiter: null,\n        optional: false,\n        repeat: false,\n        pattern: null\n      })\n    }\n  }\n\n  return path\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param  {!Array}  path\n * @param  {Array=}  keys\n * @param  {Object=} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n  var parts = []\n\n  for (var i = 0; i < path.length; i++) {\n    parts.push(pathToRegexp(path[i], keys, options).source)\n  }\n\n  return new RegExp('(?:' + parts.join('|') + ')', flags(options))\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param  {string}  path\n * @param  {Array=}  keys\n * @param  {Object=} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n  return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param  {!Array}  tokens\n * @param  {Array=}  keys\n * @param  {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n  options = options || {}\n\n  var strict = options.strict\n  var start = options.start !== false\n  var end = options.end !== false\n  var delimiter = options.delimiter || DEFAULT_DELIMITER\n  var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|')\n  var route = start ? '^' : ''\n\n  // Iterate over the tokens and create our regexp string.\n  for (var i = 0; i < tokens.length; i++) {\n    var token = tokens[i]\n\n    if (typeof token === 'string') {\n      route += escapeString(token)\n    } else {\n      var capture = token.repeat\n        ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\n        : token.pattern\n\n      if (keys) keys.push(token)\n\n      if (token.optional) {\n        if (!token.prefix) {\n          route += '(' + capture + ')?'\n        } else {\n          route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?'\n        }\n      } else {\n        route += escapeString(token.prefix) + '(' + capture + ')'\n      }\n    }\n  }\n\n  if (end) {\n    if (!strict) route += '(?:' + escapeString(delimiter) + ')?'\n\n    route += endsWith === '$' ? '$' : '(?=' + endsWith + ')'\n  } else {\n    var endToken = tokens[tokens.length - 1]\n    var isEndDelimited = typeof endToken === 'string'\n      ? endToken[endToken.length - 1] === delimiter\n      : endToken === undefined\n\n    if (!strict) route += '(?:' + escapeString(delimiter) + '(?=' + endsWith + '))?'\n    if (!isEndDelimited) route += '(?=' + escapeString(delimiter) + '|' + endsWith + ')'\n  }\n\n  return new RegExp(route, flags(options))\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param  {(string|RegExp|Array)} path\n * @param  {Array=}                keys\n * @param  {Object=}               options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n  if (path instanceof RegExp) {\n    return regexpToRegexp(path, keys)\n  }\n\n  if (Array.isArray(path)) {\n    return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\n  }\n\n  return stringToRegexp(/** @type {string} */ (path), keys, options)\n}\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = {};\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n    var parts = cleanStr.split(options.delimiter, limit);\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key, val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n            val = utils.maybeMap(\n                parseArrayValue(part.slice(pos + 1), options),\n                function (encodedVal) {\n                    return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                }\n            );\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(val);\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (has.call(obj, key)) {\n            obj[key] = utils.combine(obj[key], val);\n        } else {\n            obj[key] = val;\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            obj = [].concat(leaf);\n        } else {\n            obj = options.plainObjects ? Object.create(null) : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var index = parseInt(cleanRoot, 10);\n            if (!options.parseArrays && cleanRoot === '') {\n                obj = { 0: leaf };\n            } else if (\n                !isNaN(index)\n                && root !== cleanRoot\n                && String(index) === cleanRoot\n                && index >= 0\n                && (options.parseArrays && index <= options.arrayLimit)\n            ) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (cleanRoot !== '__proto__') {\n                obj[cleanRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    // Transform dot notation to bracket notation\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    // The regex chunks\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    // Get the parent\n\n    var segment = options.depth > 0 && brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    // Stash the parent if it exists\n\n    var keys = [];\n    if (parent) {\n        // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys.push(parent);\n    }\n\n    // Loop through children appending to the array until we hit depth\n\n    var i = 0;\n    while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n        if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n        keys.push(segment[1]);\n    }\n\n    // If there's a remainder, just add whatever is left\n\n    if (segment) {\n        keys.push('[' + key.slice(segment.index) + ']');\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    return {\n        allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? Object.create(null) : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? Object.create(null) : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    delimiter: '&',\n    encode: true,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    commaRoundTrip,\n    strictNullHandling,\n    skipNulls,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    var tmpSc = sideChannel;\n    var step = 0;\n    var findFlag = false;\n    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n        // Where object last appeared in the ref tree\n        var pos = tmpSc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            } else {\n                findFlag = true; // Break while\n            }\n        }\n        if (typeof tmpSc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n                var valuesArray = split.call(String(obj), ',');\n                var valuesJoined = '';\n                for (var i = 0; i < valuesArray.length; ++i) {\n                    valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n                }\n                return [formatter(keyValue) + (commaRoundTrip && isArray(obj) && valuesArray.length === 1 ? '[]' : '') + '=' + valuesJoined];\n            }\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix;\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix\n            : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']');\n\n        sideChannel.set(object, step);\n        var valueSideChannel = getSideChannel();\n        valueSideChannel.set(sentinel, sideChannel);\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            commaRoundTrip,\n            strictNullHandling,\n            skipNulls,\n            encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var arrayFormat;\n    if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if (opts && 'indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = 'indices';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n    if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n    var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip;\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n\n        if (options.skipNulls && obj[key] === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            obj[key],\n            key,\n            generateArrayPrefix,\n            commaRoundTrip,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted.push(obj[j]);\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? Object.create(null) : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object') {\n        if (isArray(target)) {\n            target.push(source);\n        } else if (target && typeof target === 'object') {\n            if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        return [target].concat(source);\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target.push(item);\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var i = 0; i < string.length; ++i) {\n        var c = string.charCodeAt(i);\n\n        if (\n            c === 0x2D // -\n            || c === 0x2E // .\n            || c === 0x5F // _\n            || c === 0x7E // ~\n            || (c >= 0x30 && c <= 0x39) // 0-9\n            || (c >= 0x41 && c <= 0x5A) // a-z\n            || (c >= 0x61 && c <= 0x7A) // A-Z\n            || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n        ) {\n            out += string.charAt(i);\n            continue;\n        }\n\n        if (c < 0x80) {\n            out = out + hexTable[c];\n            continue;\n        }\n\n        if (c < 0x800) {\n            out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n            continue;\n        }\n\n        if (c < 0xD800 || c >= 0xE000) {\n            out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n            continue;\n        }\n\n        i += 1;\n        c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n        /* eslint operator-linebreak: [2, \"before\"] */\n        out += hexTable[0xF0 | (c >> 18)]\n            + hexTable[0x80 | ((c >> 12) & 0x3F)]\n            + hexTable[0x80 | ((c >> 6) & 0x3F)]\n            + hexTable[0x80 | (c & 0x3F)];\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue.push({ obj: obj, prop: key });\n                refs.push(val);\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n    return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped.push(fn(val[i]));\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isRegExp: isRegExp,\n    maybeMap: maybeMap,\n    merge: merge\n};\n","'use strict';\n\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable<typeof list.next>} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('./list.d.ts').ListNode<typeof value, typeof key>} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType<typeof getSideChannelList>} Channel */\n\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode<V, K> | undefined} */ var $o;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable<typeof $o>} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {<K, V>(thisArg: Map<K, V>) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude<import('.'), false>} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType<typeof getSideChannelMap>} Channel */\n\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t/** @type {Map<K, V> | undefined} */ var $m;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude<import('.'), false>} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType<typeof getSideChannelWeakMap>} Channel */\n\t\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t\t/** @type {WeakMap<K & object, V> | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable<typeof $m>} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType<typeof getSideChannel>} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","export const DEFAULT_BATCH_URL = '/api/now/v1/batch';\nexport const DEFAULT_BATCH_METHOD = 'post';\nexport const DEFAULT_BATCH_MAX = 10;\nexport const DEFAULT_BATCH_INTERVAL = 50;\nexport const DEFAULT_BATCH_ENCODE_REQUEST_BODIES = false;\nexport const DEFAULT_BATCH_ENCODE_RESPONSE_BODIES = false;\nexport const DEFAULT_BATCH_USE_STREAMING = true;\nexport const DEFAULT_BATCH_USE_DATA_BROKER_SINGLE_REQUEST_STRATEGY = true;\nexport const DEFAULT_BATCH_HTTP_REQUEST_DATA_BROKER_URLS = ['databroker/exec'];\nexport const DEFAULT_BATCH_SINGLE_REQUEST = false;\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n  randomUUID\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()).\nlet getRandomValues;\nconst 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.\n    getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\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}","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\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 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  return 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]];\n}\n\nfunction stringify(arr, offset = 0) {\n  const uuid = unsafeStringify(arr, offset); // 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 native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  if (native.randomUUID && !buf && !options) {\n    return native.randomUUID();\n  }\n\n  options = options || {};\n  const 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 (let i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return unsafeStringify(rnds);\n}\n\nexport default v4;","import {v4 as uuidv4} from 'uuid';\n\nexport default function createBatchId() {\n\treturn uuidv4();\n}\n","// https://code.devsnc.com/dev/glide/blob/master/glide-rest/src/main/java/com/glide/rest/batch/BatchRESTResponseItem.java#L43\nexport const BatchResponseBodyEncoding = 'body_encoding';\n// glide BatchResponseBodyEncoding enums\n// https://code.devsnc.com/dev/glide/blob/master/glide-rest/src/main/java/com/glide/rest/batch/BatchResponseBodyEncoding.java\nexport const BatchResponseBodyEncodingBase64 = 'base64';\nexport const BatchResponseBodyEncodingNone = 'none';\n// glide expects the options shape and naming:\n// https://code.devsnc.com/dev/glide/blob/master/glide-rest/src/main/java/com/glide/rest/batch/BatchRESTRequestItem.java#L48\nexport const BatchRestRequestOptions = 'options';\n// glide BatchRESTRequestOptions\n// https://code.devsnc.com/dev/glide/blob/master/glide-rest/src/main/java/com/glide/rest/batch/BatchRESTRequestOptions.java#L23\nexport const BatchRestRequestOptionIsEncoded = 'is_encoded';\nexport const BatchRestRequestOptionShouldEncodeResponse = 'should_encode_response';\n\n// \"client\" BatchingOptions\n// client property name for batching options\nexport const BatchRestRequestClientOptions = 'batchingOptions';\n// client property name to encode requests\n// https://code.devsnc.com/dev/uxf-monorepo/blob/project/uxperformance/library-uxf/src/snHttpInstance/index.js#L79\nexport const BatchRestRequestClientOptionEncodeRequestBodies = 'encodeRequestBodies';\n// client property name to encode responses\n// https://code.devsnc.com/dev/uxf-monorepo/blob/project/uxperformance/library-uxf/src/snHttpInstance/index.js#L84\nexport const BatchRestRequestClientOptionEncodeResponseBodies = 'encodeResponsesBodies';\n\n\n// \"request\" BatchingOptions\n// client property name for batching options\nexport const BatchRestRequestRequestOptions = 'batchingOptions';\n// client property name to encode requests\n// https://code.devsnc.com/dev/uxf-monorepo/blob/project/uxperformance/library-uxf/src/snHttpInstance/index.js#L79\nexport const BatchRestRequestRequestOptionEncodeRequestBodies = 'encodeRequestBodies';\n// client property name to encode responses\n// https://code.devsnc.com/dev/uxf-monorepo/blob/project/uxperformance/library-uxf/src/snHttpInstance/index.js#L84\nexport const BatchRestRequestRequestOptionEncodeResponseBodies = 'encodeResponsesBodies';\n\nexport const BATCH_RESPONSE_START_HEADER_NAME = 'x-batch-response-start';\nexport const BATCH_ITEM_RESPONSE_START_HEADER_NAME = 'x-batch-item-response-start';\nexport const BATCH_RESPONSE_END_HEADER_NAME = 'x-batch-response-end';\nexport const BATCH_ITEM_RESPONSE_END_HEADER_NAME = 'x-batch-item-response-end';\nexport const NOW_UX_INTERACTION_ID_NAME = 'NOW-UX-INTERACTION';","import {\n\tBatchRestRequestOptionIsEncoded,\n\tBatchRestRequestOptionShouldEncodeResponse,\n\tBatchRestRequestClientOptionEncodeRequestBodies,\n\tBatchRestRequestClientOptionEncodeResponseBodies\n} from '../../batch/constants';\nimport {\n\tDEFAULT_BATCH_ENCODE_REQUEST_BODIES,\n\tDEFAULT_BATCH_ENCODE_RESPONSE_BODIES,\n} from '../defaults';\n\n/**\n * Convert batchOptions to glide expected shape and structure\n * no matter input shape\n * include defaults if unset\n * @param {object} batchingOptions\n * @returns {object}\n */\nexport const toGlideBatchingOptionsWithDefaults = (batchingOptions = {}) => ({\n\t[BatchRestRequestOptionIsEncoded]: shouldEncodeRequestOrDefault(batchingOptions),\n\t[BatchRestRequestOptionShouldEncodeResponse]: shouldEncodeResponseOrDefault(batchingOptions)\n});\n\n/**\n * Convert batchOptions to glide expected shape and structure\n * no matter input shape\n * @param {object} batchingOptions\n * @returns {object}\n */\nexport const toGlideBatchingOptions = (batchingOptions = {}) => ({\n\t[BatchRestRequestOptionIsEncoded]: batchingOptions[BatchRestRequestClientOptionEncodeRequestBodies]\n\t|| batchingOptions[BatchRestRequestOptionIsEncoded],\n\t[BatchRestRequestOptionShouldEncodeResponse]: batchingOptions[BatchRestRequestClientOptionEncodeResponseBodies]\n\t|| batchingOptions[BatchRestRequestOptionShouldEncodeResponse]\n});\n\n\nexport const shouldEncodeRequestOrDefault = (batchingOptions = {}) => {\n\tconst result = shouldEncodeRequest(batchingOptions);\n\treturn result === undefined ? DEFAULT_BATCH_ENCODE_REQUEST_BODIES : result;\n};\n\n\nexport const shouldEncodeResponseOrDefault = (batchingOptions = {}) => {\n\tconst result = shouldEncodeResponse(batchingOptions);\n\treturn result === undefined ? DEFAULT_BATCH_ENCODE_RESPONSE_BODIES : result;\n};\n\n/**\n * Extracts request encoding boolean from object, no matter shape\n * @param {object} batchingOptions\n * @returns {boolean}\n */\nconst shouldEncodeRequest = (batchingOptions = {}) =>\n\tbatchingOptions[BatchRestRequestClientOptionEncodeRequestBodies] === undefined\n\t\t? batchingOptions[BatchRestRequestOptionIsEncoded] : batchingOptions[BatchRestRequestClientOptionEncodeRequestBodies];\n\n/**\n * Extracts response encoding boolean from object, no matter shape\n * @param {object} batchingOptions\n * @returns {boolean}\n */\nconst shouldEncodeResponse = (batchingOptions = {}) =>\n\tbatchingOptions[BatchRestRequestClientOptionEncodeResponseBodies] === undefined\n\t\t? batchingOptions[BatchRestRequestOptionShouldEncodeResponse] : batchingOptions[BatchRestRequestClientOptionEncodeResponseBodies];","/****************************************************************************\n * Copy of util functions from axios source code since it isn't exported\n *\n * Potentially replace later...\n ****************************************************************************/\n\nimport {isFunction, isObjectLike, overSome} from 'lodash';\n\nconst {toString} = Object.prototype;\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nexport function isFormData(val) {\n\treturn (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nexport function isArrayBufferView(val) {\n\tlet result;\n\tif ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView))\n\t\tresult = ArrayBuffer.isView(val);\n\telse\n\t\tresult = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n\n\treturn result;\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nexport function isFile(val) {\n\treturn toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nexport function isBlob(val) {\n\treturn toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nexport function isStream(val) {\n\treturn isObjectLike(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nexport function isURLSearchParams(val) {\n\treturn typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Determine if value is file data for uploading\n *\n * @param {Object} value\n * @returns {boolean}\n */\nexport function isFileUploadData(value) {\n\treturn (overSome([\n\t\tisFormData,\n\t\tisFile\n\t]))(value);\n}\n\n/**\n * Deter,ine if sn-http-request is in a web worker\n * @returns {boolean}\n */\nexport function isWebWorker() {\n\treturn typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;\n}","import {overSome, isArrayBuffer, isBuffer, isEmpty} from 'lodash';\nimport {\n\tisArrayBufferView,\n\tisBlob,\n\tisFile,\n\tisFormData,\n\tisStream,\n\tisURLSearchParams\n} from './utils';\n\nfunction isBatchable(data) {\n\treturn !(overSome([\n\t\tisArrayBuffer,\n\t\tisArrayBufferView,\n\t\tisBlob,\n\t\tisBuffer,\n\t\tisFile,\n\t\tisFormData,\n\t\tisStream,\n\t\tisURLSearchParams])(data));\n}\n\n/**\n * Currently, only standard request bodies are supported that can be JSON stringified\n *\n * @param options\n * @return {boolean}\n */\nexport default function shouldBatch(options = {}) {\n\tconst {\n\t\tbatching = true,\t// Client level config\n\t\tbatch,\t\t\t\t// Request level config\n\t\tdata = {},\n\t\tmultipartConfig,\n\t} = options;\n\n\tconst shouldDoBatch = ((batch === true || batch === false) ? batch : batching) && batching && isBatchable(data);\n\n\tif (shouldDoBatch && !isEmpty(multipartConfig))\n\t\treturn false;\n\n\treturn shouldDoBatch;\n};\n\nexport function isBatchConfig(config = {}) {\n\treturn (config || false) && config.batch === true;\n}\n","import {isEmpty, isDate, isObject, reduce} from 'lodash';\n\nconst encode = val => encodeURIComponent(val)\n\t.replace(/%3A/gi, ':')\n\t.replace(/%24/g, '$')\n\t.replace(/%2C/gi, ',')\n\t.replace(/%20/g, '+')\n\t.replace(/%5B/gi, '[')\n\t.replace(/%5D/gi, ']');\n\nconst removeFragmentIdentifier = url => {\n\tconst fragmentIndex = url.indexOf('#');\n\tif (fragmentIndex === -1)\n\t\treturn url;\n\n\n\treturn url.slice(0, fragmentIndex);\n};\n\nconst appendParams = (url, serializedParams) => {\n\tif (isEmpty(serializedParams))\n\t\treturn url;\n\n\tconst cleanedUrl = removeFragmentIdentifier(url);\n\treturn `${cleanedUrl}${cleanedUrl.indexOf('?') === -1 ? '?' : '&'}${serializedParams}`;\n};\n\nconst createEncodedPair = (key, value) => `${encode(key)}=${encode(value)}`;\nconst serializeValue = value => {\n\tif (isDate(value))\n\t\treturn value.toISOString();\n\n\n\tif (isObject(value))\n\t\treturn JSON.stringify(value);\n\n\n\treturn value;\n};\n\nconst parseValue = (key, value) => createEncodedPair(key, serializeValue(value));\n\nconst buildUrl = (url, params, paramsSerializer) => {\n\tif (params instanceof URLSearchParams)\n\t\treturn appendParams(url, params.toString());\n\n\n\tif (isEmpty(params))\n\t\treturn url;\n\n\n\tif (paramsSerializer)\n\t\treturn appendParams(url, paramsSerializer(params));\n\n\n\tconst parts = reduce(params, (acc, value, key) => {\n\t\tif (value === null || typeof value === 'undefined')\n\t\t\treturn acc;\n\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach((val, i) => {\n\t\t\t\tconst result = parseValue(`${key}[${i}]`, val);\n\t\t\t\tacc.push(result);\n\t\t\t});\n\n\t\t\treturn acc;\n\t\t}\n\t\tacc.push(parseValue(key, value));\n\t\treturn acc;\n\t}, []);\n\n\treturn appendParams(url, parts.join('&'));\n};\n\nexport default buildUrl;\n","import {isWebWorker} from '../../utils';\n\nexport const getEmbeddableBaseUrl = () =>\n\t(!isWebWorker() && window?.nowUiFramework?.getEmbeddableBaseUrl?.())||'';\nexport const attachEmbeddableBaseUrl = url => getEmbeddableBaseUrl().concat(url);\n","import {isEmpty} from 'lodash';\nimport {getEmbeddableBaseUrl} from '../batch/utils/embeddableBaseUrl';\n\n// A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n// RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n// by any combination of letters, digits, plus, period, or hyphen.\nconst ABSOLUTE_URL_PATTERN = /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i;\nconst isAbsoluteUrl = url => ABSOLUTE_URL_PATTERN.test(url);\n\nconst buildFullPath = (baseUrl = getEmbeddableBaseUrl(), url) => {\n\tif (isEmpty(baseUrl) || isAbsoluteUrl(url))\n\t\treturn url;\n\n\treturn url ? `${baseUrl.replace(/\\/+$/, '')  }/${  url.replace(/^\\/+/, '')}` : url;\n};\n\nexport default buildFullPath;\n","\n/**\n * convert Headers IterableIterator to something more vanilla/ES5ish\n * clients, like Seismic expect object\n * @param {Headers || object} obj\n * @returns {object}\n */\nexport const headersToJson = headers => {\n\tif (!headers)\n\t\treturn headers;\n\n\tif (!isHeaders(headers))\n\t\treturn headers;\n\n\tconst jsonHeaders = {};\n\tfor (const [key, value] of headers.entries())\n\t\tjsonHeaders[key] = value;\n\n\treturn jsonHeaders;\n};\n\nexport const getHeader = (key, headers) => {\n\tif (typeof key !== 'string' || key.length === 0)\n\t\treturn undefined;\n\n\tif (!headers)\n\t\treturn headers;\n\n\tconst lowerCaseKey = key.toLowerCase();\n\tif (!isHeaders(headers)) {\n\t\treturn headers[Object.keys(headers)\n\t\t\t.find(currKey => (typeof currKey === 'string') && currKey.toLowerCase() === lowerCaseKey)\n\t\t];\n\t}\n\n\tif (!headers.has(lowerCaseKey))\n\t\treturn undefined;\n\n\treturn headers.get(lowerCaseKey);\n};\n\nexport const containsHeader = (key, headers) => {\n\tif (typeof key !== 'string' || key.length === 0 || !headers)\n\t\treturn false;\n\n\tconst lowerCaseKey = key.toLowerCase();\n\tif (!isHeaders(headers)) {\n\t\treturn Object.keys(headers)\n\t\t\t.find(currKey => (typeof currKey === 'string') && currKey.toLowerCase() === lowerCaseKey) !== undefined;\n\t}\n\n\treturn headers.has(lowerCaseKey);\n};\n\n/**\n * Tests whether native Headers interface or object\n * https://developer.mozilla.org/en-US/docs/Web/API/Headers\n * @param {Headers || object} headers\n * @returns {boolean}\n */\nexport const isHeaders = obj => {\n\tif (!obj)\n\t\treturn obj;\n\t// not the most elegant test ever but it works\n\t// keep in mind this code will run in a range of browsers\n\t// best to keep it simple Javascript\n\tif (!obj.get || !obj.entries)\n\t\treturn false;\n\n\treturn true;\n};\n\n/**\n * parses XHR getAllResponseHeaders() output\n * https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getAllResponseHeaders\n * @param {string} xhrHeadersStr\n * @returns {Headers}\n */\nexport const xhrHeadersToHeaders = xhrHeadersStr => {\n\tif (!xhrHeadersStr || typeof xhrHeadersStr !== 'string' || !xhrHeadersStr.length)\n\t\treturn xhrHeadersStr;\n\tconst lines = xhrHeadersStr.trim().split('\\r\\n');\n\n\treturn lines.reduce((acc, l) => {\n\t\tconst parts = l.split(':');\n\t\tconst key = parts.shift().trim();\n\t\tconst value = parts.join().trim();\n\t\tacc.append(key, value);\n\t\treturn acc;\n\t}, new Headers());\n};","import {isUndefined} from 'lodash';\nimport {parseBody} from './utils';\nexport const ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nexport const ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nexport const ECONNABORTED = 'ECONNABORTED';\nexport const ETIMEDOUT = 'ETIMEDOUT';\nexport const ERR_NETWORK = 'ERR_NETWORK';\nexport const ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nexport const ERR_DEPRECATED = 'ERR_DEPRECATED';\nexport const ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nexport const ERR_BAD_MULTIPART_RESPONSE = 'ERR_BAD_MULTIPART_RESPONSE';\nexport const ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nexport const ERR_CANCELED = 'ERR_CANCELED';\nexport const ERR_UNKNOWN = 'ERR_UNKNOWN';\n\nclass SnHttpError extends Error {\n\tconstructor(message, code, config, request, response) {\n\t\tsuper(message);\n\t\tthis.name = 'SnHttpError';\n\n\t\tif (!isUndefined(code))\n\t\t\tthis.code = code;\n\n\t\tif (!isUndefined(config))\n\t\t\tthis.config = config;\n\n\t\tif (!isUndefined(request))\n\t\t\tthis.request = request;\n\n\t\tif (!isUndefined(response))\n\t\t\tthis.response = response;\n\t}\n\n\tget isSnHttpError() {\n\t\treturn true;\n\t}\n\n\ttoJSON() {\n\t\treturn {\n\t\t\t// Standard\n\t\t\tmessage: this.message,\n\t\t\tname: this.name,\n\t\t\t// Microsoft\n\t\t\tdescription: this.description,\n\t\t\tnumber: this.number,\n\t\t\t// Mozilla\n\t\t\tfileName: this.fileName,\n\t\t\tlineNumber: this.lineNumber,\n\t\t\tcolumnNumber: this.columnNumber,\n\t\t\tstack: this.stack,\n\t\t\t// Axios\n\t\t\tconfig: this.config,\n\t\t\tcode: this.code,\n\t\t\tstatus: this.response && this.response.status ? this.response.status : null\n\t\t};\n\t}\n}\n\nfunction instantiateBadRequestError(request, response, config){\n\treturn new SnHttpError(\n\t\t`Request failed with status code ${response.status}`,\n\t\t[ERR_BAD_REQUEST, ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n\t\tconfig,\n\t\trequest,\n\t\tresponse\n\t);\n}\n\nexport const createRequestFailedError = async (request, response, config) => {\n\tif (response instanceof Error)\n\t\treturn response;\n\n\t/**\n\t * Bad Requests have response bodies that need parsed, e.g.,\n\t * https://code.devsnc.com/dev/sn-scripting-environment/blob/bc18bdb24cde2e3c0fd1c32d1665e1d59b549c68/src/main/behaviors/glideEnvironment/GlideEnvironmentScope.js#L364\n\t */\n\ttry {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tresponse.data = await parseBody(config, response);\n\t} catch (err) {\n\t\t//ignore failures and continue\n\t}\n\n\treturn instantiateBadRequestError(request, response, config);\n};\n\nexport const createXhrRequestFailedError = (request, response, config) => {\n\tif (response instanceof Error)\n\t\treturn response;\n\n\treturn instantiateBadRequestError(request, response, config);\n};\n\nexport const createMultipartError = (response, config, message = 'Malformed Multipart Response') => new SnHttpError(\n\tmessage,\n\tERR_BAD_RESPONSE,\n\tconfig,\n\tundefined,\n\tresponse\n);\n\nexport const createStreamingBatchError = (response, config, message = 'Streaming Batch Response was invalid') => new SnHttpError(\n\tmessage,\n\tERR_BAD_RESPONSE,\n\tconfig,\n\tundefined,\n\tresponse\n);\n\nexport default SnHttpError;\n","export const TRANSACTION_SOURCE = 'X-Transaction-Source';\nexport const USER_TOKEN = 'X-UserToken';\nexport const IS_LOGGED_IN = 'x-is-logged-in';\nexport const USER_TOKEN_RESPONSE = 'x-usertoken-response';\nexport const CONTENT_ENCODING = 'Content-Encoding';\nexport const AUTHORIZATION = 'Authorization';\nexport const CONTENT_TYPE = 'Content-Type';\nexport const ACCEPT = 'Accept';\nexport const HTTP_CLIENT = 'X-Http-Client';\n\nexport const HTTP_HEADERS = {\n\tTRANSACTION_SOURCE,\n\tUSER_TOKEN,\n\tIS_LOGGED_IN,\n\tUSER_TOKEN_RESPONSE,\n\tCONTENT_ENCODING,\n\tAUTHORIZATION,\n\tCONTENT_TYPE,\n\tACCEPT,\n\tHTTP_CLIENT\n};\n","import {isEmpty} from 'lodash';\nimport {getHeader, headersToJson} from './headers';\nimport {CONTENT_TYPE, HTTP_HEADERS} from './httpHeaders';\nimport {createMultipartError} from '../SnHttpError';\n\nexport const MULTIPART_MIXED_CONTENT_TYPE = 'multipart/mixed';\nexport const MULTIPART_PAYLOAD_NOT_COMPLETE_ERROR = 'Multipart message payload was not complete';\nconst BOUNDARY_PATTERN = /(boundary=)(.*)/;\nexport const CRLF = '\\r\\n';\nexport const SEPARATOR = CRLF + CRLF;\nconst DECODER = new TextDecoder();\n\nexport const updateAcceptHeaderForMultipart =  (headers, config) => {\n\tif (!config?.multipartConfig?.multipartConsumer)\n\t\treturn;\n\n\tlet acceptHeaderValue = headers[HTTP_HEADERS.ACCEPT];\n\t// eslint-disable-next-line eqeqeq\n\tif (acceptHeaderValue == undefined)\n\t\tacceptHeaderValue = MULTIPART_MIXED_CONTENT_TYPE;\n\telse if (!acceptHeaderValue.includes(MULTIPART_MIXED_CONTENT_TYPE))\n\t\tacceptHeaderValue += `, ${MULTIPART_MIXED_CONTENT_TYPE}`;\n\n\t// eslint-disable-next-line no-param-reassign\n\theaders[HTTP_HEADERS.ACCEPT] = acceptHeaderValue;\n};\n\nexport function isMultipartMixedResponse(response) {\n\tconst contentType = getHeader(CONTENT_TYPE, response.headers);\n\tif (!contentType || typeof contentType !== 'string')\n\t\treturn false;\n\n\treturn contentType.includes('multipart/mixed');\n}\n\nconst parseBoundary = (response, config) => {\n\tconst contentType = response.headers.get ? response.headers.get('content-type') : response.headers['content-type'];\n\tconst boundaryMatch = BOUNDARY_PATTERN.exec(contentType);\n\tif (isEmpty(boundaryMatch) || boundaryMatch.length < 3)\n\t\tthrow createMultipartError(response, config, 'Invalid boundary declaration');\n\n\tconst boundaryToken = boundaryMatch[2].replace(/['\"]/gm, '');\n\n\tif (isEmpty(boundaryToken))\n\t\tthrow createMultipartError(response, config, 'Invalid boundary declaration');\n\n\treturn `--${boundaryToken}`;\n};\n\nconst parseHeaders = (rawHeaders, config) => {\n\tif (isEmpty(rawHeaders))\n\t\treturn new Headers({'Content-Type': 'text/plain'});\n\n\tconst headers = new Headers();\n\trawHeaders.forEach(rawHeader => {\n\t\tconst headerParts = rawHeader.split(':');\n\t\tif (headerParts.length !== 2)\n\t\t\tthrow createMultipartError(undefined, config, `Invalid message header: ${rawHeader}`);\n\n\t\theaders.append(headerParts[0].trim(), headerParts[1].trim());\n\t});\n\n\treturn headers;\n};\n\nconst isCloseDelimiter = contents => contents.startsWith('--');\n\nconst parse = (chunk, state) => {\n\tconst {isComplete, boundary, responseHeaders, config} = state;\n\n\tlet buffer = state.buffer + chunk;\n\tlet {isPreamble} = state;\n\tlet idxBoundary = buffer.indexOf(boundary);\n\n\tconst parts = [];\n\twhile (idxBoundary !== -1) {\n\t\tconst current = buffer.substring(0, idxBoundary);\n\t\tconst next = buffer.substring(idxBoundary + boundary.length);\n\n\t\tif (!isPreamble) {\n\t\t\tconst idxHeaders = current.indexOf(SEPARATOR);\n\t\t\tif (idxHeaders === -1)\n\t\t\t\tthrow createMultipartError(undefined, config, 'Message part has malformed encapsulation boundary');\n\n\t\t\tconst rawHeaders = buffer.substring(0, idxHeaders).trim().split(CRLF);\n\t\t\tconst headers = parseHeaders(rawHeaders, config);\n\n\t\t\tconst body = current.substring(idxHeaders + SEPARATOR.length, current.lastIndexOf(CRLF));\n\n\t\t\tconst part = {body, headers, responseHeaders};\n\t\t\tparts.push(part);\n\n\t\t\tif (isCloseDelimiter(next))\n\t\t\t\treturn {state: {isPreamble, buffer: '', boundary, isComplete: true, responseHeaders, config}, parts};\n\t\t}\n\n\t\t// Toggle parseState to false after first call to parse\n\t\tisPreamble = isPreamble && false;\n\n\t\tbuffer = next;\n\t\tidxBoundary = buffer.indexOf(boundary);\n\t}\n\n\treturn {state: {isPreamble, buffer, boundary, responseHeaders, config,\n\t\tisComplete: isComplete || isCloseDelimiter(buffer)}, parts\n\t};\n};\n\nconst createParseState = ({boundary = '---', isPreamble = true, buffer = '', responseHeaders = {}, config} = {}) => ({\n\tboundary,\n\tisPreamble,\n\tbuffer,\n\tisComplete: false,\n\tresponseHeaders: headersToJson(responseHeaders),\n\tconfig\n});\n\nasync function* createPartStream(boundary, response, config) {\n\tconst {body, headers: responseHeaders} = response;\n\tconst reader = body.getReader();\n\n\tlet state = createParseState({boundary, responseHeaders, config});\n\twhile (true) {\n\t\tconst {value, done} = await reader.read();\n\t\tif (done) {\n\t\t\tif(state.isComplete)\n\t\t\t\treturn;\n\n\t\t\tthrow createMultipartError(response, config, MULTIPART_PAYLOAD_NOT_COMPLETE_ERROR);\n\t\t}\n\n\t\tconst chunk = DECODER.decode(value);\n\t\tconst {state: nextState, parts} = parse(chunk, state);\n\n\t\tif (!isEmpty(parts))\n\t\t\tyield* parts;\n\n\t\tstate = nextState;\n\t}\n}\n\n/**\n * @param response\n * @returns {Promise<AsyncGenerator<*, void, any>>}\n * @example\n * import {multipartParser} from './MultipartParser';\n *\n * const parts = await fetch('http://<servicenow instance>/api/now/graphql', {\n *   method: 'POST',\n *   headers: {\n *     Accept: 'multipart/mixed',\n *     'Content-Type': 'application/json',\n *     Authorization: 'Basic ************'\n *   },\n *   body: JSON.stringify(body),\n * }).then(multipartParser);\n *\n * for await (const part of parts) {\n *  // Do something with message part\n * }\n */\nexport const multipartParser = async (response, config = {}) => {\n\tconst boundary = parseBoundary(response, config);\n\treturn createPartStream(boundary, response, config);\n};\n\n/**\n * Utility function for decorating stream with a callback.\n *\n * @param callback {function(*): *} - callback to parse streamed elements\n * @returns {(function(AsyncGenerator<*, void, *>): AsyncGenerator<*, void, *>)}\n */\nexport const streamDecorator = callback => async function* (stream) {\n\tfor await (const el of stream)\n\t\tyield callback(el);\n\n};\n\nexport const mapStream = streamDecorator;\n\nexport const forEvery = callback => async stream => {\n\tfor await (const el of stream)\n\t\tcallback(el);\n};\n\nexport const reduceStream = (callback, initial) => async stream => {\n\tlet result = initial;\n\tfor await (const el of stream)\n\t\tresult = callback(result, el);\n\n\treturn result;\n};\n\n/**\n * Utility can be used to parse incoming message parts to irrespective of the headers.\n * NOTE: Only use when the producer is known to only produce json messages.\n *\n * @param useJsonHeaders {boolean} - if true then headers will be parsed to json\n * @returns {(function(*): AsyncGenerator<*, void, *>)}\n */\nexport const multipartToJSONStream = ({useJsonHeaders = false} = {}) => streamDecorator(part => (multipartToJSON(part, useJsonHeaders)));\n\nexport const multipartToJSON = ({headers, responseHeaders, body}, useJsonHeaders = false) => ({\n\theaders: useJsonHeaders ? headersToJson(headers) : headers,\n\tbody: JSON.parse(body),\n\tresponseHeaders\n});\n\n/**\n * Blocks and collects all elements.\n *\n * @param stream {AsyncGenerator}\n * @returns {Promise<*[]>}\n */\nexport const collectMessageParts = reduceStream((parts, part) => [...parts, part], []);\n\n/**\n * Creates a ReadableStream object from a given iterator. Can be helpful for testing.\n *\n * @param iterator\n * @returns {ReadableStream<any>}\n */\nexport const iteratorToReadableStream = iterator => new ReadableStream({\n\tasync pull(controller) {\n\t\tconst {value, done} = await iterator.next();\n\n\t\tif (done)\n\t\t\tcontroller.close();\n\t\telse\n\t\t\tcontroller.enqueue(value);\n\n\t},\n});\n","import SnHttpError, {ERR_BAD_MULTIPART_RESPONSE, ERR_UNKNOWN} from '../SnHttpError';\nimport {getHeader} from './headers';\nimport {CONTENT_TYPE, HTTP_HEADERS} from './httpHeaders';\nimport {MULTIPART_PAYLOAD_NOT_COMPLETE_ERROR, multipartParser, multipartToJSON} from './multipartParser';\n\n/**\n * Helper method for parsing fetch API\n * response bodies according to spec\n * @param {object} options\n * @param {ReadableStream} response\n * @param {object} request\n * @returns\n */\nexport const parseBody = async (options, response, request) => {\n\tconst {responseType} = options;\n\tlet resolvedResponseType = responseType;\n\tlet contentType;\n\n\tif (!resolvedResponseType) {\n\t\tcontentType = getHeader(CONTENT_TYPE, response.headers);\n\t\tif (contentType)\n\t\t\tresolvedResponseType = getResponseType(contentType);\n\t}\n\n\tswitch (resolvedResponseType) {\n\t\tcase 'multipart/mixed':\n\t\t\treturn await handleMultipartResponse(request, response, options);\n\t\tcase 'arraybuffer':\n\t\t\treturn response.arrayBuffer();\n\t\tcase 'blob':\n\t\t\treturn response.blob();\n\t\tcase 'json':\n\t\t\treturn response.json();\n\t\tcase 'formData':\n\t\t\treturn response.formData();\n\t\tcase 'stream':\n\t\t\treturn Promise.resolve(response.body);\n\t\tcase 'text':\n\t\t\treturn response.text();\n\t\tdefault: {\n\t\t\tlet text;\n\t\t\ttry {\n\t\t\t\t// attempt to extra safely parse JSON and return text otherwise\n\t\t\t\ttext = await response.text();\n\t\t\t\treturn JSON.parse(text);\n\t\t\t} catch (err) {\n\t\t\t\t// here, we have either no resp content-type or an unrecognized resp content-type\n\t\t\t\t// don't throw, in case client expects text resp body\n\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\tconsole.warn(`sn-http-request: ${err.message} response body parsing for ${HTTP_HEADERS.CONTENT_TYPE}: ${contentType}`);\n\t\t\t\t// last ditch effort to complete req/resp successfully\n\t\t\t\treturn text;\n\t\t\t}\n\t\t}\n\t}\n\n};\nfunction isBlobContentType(contentType) {\n\treturn contentType.includes('blob') ||\n\t\tcontentType.includes('image/') ||\n\t\tcontentType.includes('/pdf') ||\n\t\tcontentType.includes('audio/');\n}\n/**\n * compute a simplified response type\n * based on resp header content-type\n * @param {string} contentType\n * @returns {string}\n */\nfunction getResponseType(contentType) {\n\tif (contentType.includes('multipart/mixed'))\n\t\treturn 'multipart/mixed';\n\tif (contentType.includes('json'))\n\t\treturn 'json';\n\tif (contentType.includes('text'))\n\t\treturn 'text';\n\tif (isBlobContentType(contentType))\n\t\treturn 'blob';\n\tif (contentType.includes('x-www-form-urlencoded') || contentType.includes('multipart/form-data'))\n\t\treturn 'formData';\n}\n\nconst handleMultipartResponse = async (request, response, options = {}) => {\n\tconst multipartConfig = options.multipartConfig || {};\n\tconst {multipartConsumer, parsePartsAsJson = true, emitCompletedResponse = true} = multipartConfig;\n\tlet responseForEmitting;\n\n\t//If they want a final response, and we have a multipartConsumer then clone it otherwise just use the response directly\n\tif (emitCompletedResponse)\n\t\tresponseForEmitting = multipartConsumer ? response.clone() : response;\n\n\tif (multipartConsumer) {\n\t\ttry {\n\t\t\tfor await (const currPart of await multipartParser(response, options)) {\n\t\t\t\tconst part = parsePartsAsJson ? multipartToJSON(currPart) : currPart;\n\t\t\t\tmultipartConsumer(part);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (error instanceof SnHttpError)\n\t\t\t\tthrow error;\n\t\t\telse if (error.message === MULTIPART_PAYLOAD_NOT_COMPLETE_ERROR)\n\t\t\t\tthrow new SnHttpError(error.message, ERR_BAD_MULTIPART_RESPONSE, multipartConfig, request);\n\t\t\telse\n\t\t\t\tthrow new SnHttpError(error.message, ERR_UNKNOWN, multipartConfig, request);\n\t\t}\n\t}\n\n\t//Return the copy of the response as text\n\treturn emitCompletedResponse ? await parseBody({responseType: 'text'}, responseForEmitting) : '';\n};\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n// https://tools.ietf.org/html/rfc1951\n// You may also wish to take a look at the guide I made about this program:\n// https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad\n// Some of the following code is similar to that of UZIP.js:\n// https://github.com/photopea/UZIP.js\n// However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.\n// Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint\n// is better for memory in most engines (I *think*).\nvar ch2 = {};\nvar wk = (function (c, id, msg, transfer, cb) {\n    var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([\n        c + ';addEventListener(\"error\",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'\n    ], { type: 'text/javascript' }))));\n    w.onmessage = function (e) {\n        var d = e.data, ed = d.$e$;\n        if (ed) {\n            var err = new Error(ed[0]);\n            err['code'] = ed[1];\n            err.stack = ed[2];\n            cb(err, null);\n        }\n        else\n            cb(null, d);\n    };\n    w.postMessage(msg, transfer);\n    return w;\n});\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;\n// fixed length extra bits\nvar fleb = new u8([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, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\n// see fleb note\nvar fdeb = new u8([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, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n    var b = new u16(31);\n    for (var i = 0; i < 31; ++i) {\n        b[i] = start += 1 << eb[i - 1];\n    }\n    // numbers here are at max 18 bits\n    var r = new u32(b[30]);\n    for (var i = 1; i < 30; ++i) {\n        for (var j = b[i]; j < b[i + 1]; ++j) {\n            r[j] = ((j - b[i]) << 5) | i;\n        }\n    }\n    return [b, r];\n};\nvar _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1];\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n    // reverse table algorithm from SO\n    var x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1);\n    x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2);\n    x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4);\n    rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n    var s = cd.length;\n    // index\n    var i = 0;\n    // u16 \"map\": index -> # of codes with bit length = index\n    var l = new u16(mb);\n    // length of cd must be 288 (total # of codes)\n    for (; i < s; ++i)\n        ++l[cd[i] - 1];\n    // u16 \"map\": index -> minimum code for bit length = index\n    var le = new u16(mb);\n    for (i = 0; i < mb; ++i) {\n        le[i] = (le[i - 1] + l[i - 1]) << 1;\n    }\n    var co;\n    if (r) {\n        // u16 \"map\": index -> number of actual bits, symbol for code\n        co = new u16(1 << mb);\n        // bits to remove for reverser\n        var rvb = 15 - mb;\n        for (i = 0; i < s; ++i) {\n            // ignore 0 lengths\n            if (cd[i]) {\n                // num encoding both symbol and bits read\n                var sv = (i << 4) | cd[i];\n                // free bits\n                var r_1 = mb - cd[i];\n                // start value\n                var v = le[cd[i] - 1]++ << r_1;\n                // m is end value\n                for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n                    // every 16 bit value starting with the code yields the same result\n                    co[rev[v] >>> rvb] = sv;\n                }\n            }\n        }\n    }\n    else {\n        co = new u16(s);\n        for (i = 0; i < s; ++i) {\n            if (cd[i]) {\n                co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]);\n            }\n        }\n    }\n    return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n    flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n    flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n    flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n    flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n    fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n    var m = a[0];\n    for (var i = 1; i < a.length; ++i) {\n        if (a[i] > m)\n            m = a[i];\n    }\n    return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n    var o = (p / 8) | 0;\n    return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n    var o = (p / 8) | 0;\n    return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p + 7) / 8) | 0; };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n    if (s == null || s < 0)\n        s = 0;\n    if (e == null || e > v.length)\n        e = v.length;\n    // can't use .constructor in case user-supplied\n    var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);\n    n.set(v.subarray(s, e));\n    return n;\n};\n/**\n * Codes for errors generated within this library\n */\nexport var FlateErrorCode = {\n    UnexpectedEOF: 0,\n    InvalidBlockType: 1,\n    InvalidLengthLiteral: 2,\n    InvalidDistance: 3,\n    StreamFinished: 4,\n    NoStreamHandler: 5,\n    InvalidHeader: 6,\n    NoCallback: 7,\n    InvalidUTF8: 8,\n    ExtraFieldTooLong: 9,\n    InvalidDate: 10,\n    FilenameTooLong: 11,\n    StreamFinishing: 12,\n    InvalidZipData: 13,\n    UnknownCompressionMethod: 14\n};\n// error codes\nvar ec = [\n    'unexpected EOF',\n    'invalid block type',\n    'invalid length/literal',\n    'invalid distance',\n    'stream finished',\n    'no stream handler',\n    ,\n    'no callback',\n    'invalid UTF-8 data',\n    'extra field too long',\n    'date not in range 1980-2099',\n    'filename too long',\n    'stream finishing',\n    'invalid zip data'\n    // determined by unknown compression method\n];\n;\nvar err = function (ind, msg, nt) {\n    var e = new Error(msg || ec[ind]);\n    e.code = ind;\n    if (Error.captureStackTrace)\n        Error.captureStackTrace(e, err);\n    if (!nt)\n        throw e;\n    return e;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, buf, st) {\n    // source length\n    var sl = dat.length;\n    if (!sl || (st && st.f && !st.l))\n        return buf || new u8(0);\n    // have to estimate size\n    var noBuf = !buf || st;\n    // no state\n    var noSt = !st || st.i;\n    if (!st)\n        st = {};\n    // Assumes roughly 33% compression ratio average\n    if (!buf)\n        buf = new u8(sl * 3);\n    // ensure buffer can fit at least l elements\n    var cbuf = function (l) {\n        var bl = buf.length;\n        // need to increase size to fit\n        if (l > bl) {\n            // Double or set to necessary, whichever is greater\n            var nbuf = new u8(Math.max(bl * 2, l));\n            nbuf.set(buf);\n            buf = nbuf;\n        }\n    };\n    //  last chunk         bitpos           bytes\n    var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n    // total bits\n    var tbts = sl * 8;\n    do {\n        if (!lm) {\n            // BFINAL - this is only 1 when last chunk is next\n            final = bits(dat, pos, 1);\n            // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n            var type = bits(dat, pos + 1, 3);\n            pos += 3;\n            if (!type) {\n                // go to end of byte boundary\n                var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n                if (t > sl) {\n                    if (noSt)\n                        err(0);\n                    break;\n                }\n                // ensure size\n                if (noBuf)\n                    cbuf(bt + l);\n                // Copy over uncompressed data\n                buf.set(dat.subarray(s, t), bt);\n                // Get new bitpos, update byte count\n                st.b = bt += l, st.p = pos = t * 8, st.f = final;\n                continue;\n            }\n            else if (type == 1)\n                lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n            else if (type == 2) {\n                //  literal                            lengths\n                var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n                var tl = hLit + bits(dat, pos + 5, 31) + 1;\n                pos += 14;\n                // length+distance tree\n                var ldt = new u8(tl);\n                // code length tree\n                var clt = new u8(19);\n                for (var i = 0; i < hcLen; ++i) {\n                    // use index map to get real code\n                    clt[clim[i]] = bits(dat, pos + i * 3, 7);\n                }\n                pos += hcLen * 3;\n                // code lengths bits\n                var clb = max(clt), clbmsk = (1 << clb) - 1;\n                // code lengths map\n                var clm = hMap(clt, clb, 1);\n                for (var i = 0; i < tl;) {\n                    var r = clm[bits(dat, pos, clbmsk)];\n                    // bits read\n                    pos += r & 15;\n                    // symbol\n                    var s = r >>> 4;\n                    // code length to copy\n                    if (s < 16) {\n                        ldt[i++] = s;\n                    }\n                    else {\n                        //  copy   count\n                        var c = 0, n = 0;\n                        if (s == 16)\n                            n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n                        else if (s == 17)\n                            n = 3 + bits(dat, pos, 7), pos += 3;\n                        else if (s == 18)\n                            n = 11 + bits(dat, pos, 127), pos += 7;\n                        while (n--)\n                            ldt[i++] = c;\n                    }\n                }\n                //    length tree                 distance tree\n                var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n                // max length bits\n                lbt = max(lt);\n                // max dist bits\n                dbt = max(dt);\n                lm = hMap(lt, lbt, 1);\n                dm = hMap(dt, dbt, 1);\n            }\n            else\n                err(1);\n            if (pos > tbts) {\n                if (noSt)\n                    err(0);\n                break;\n            }\n        }\n        // Make sure the buffer can hold this + the largest possible addition\n        // Maximum chunk size (practically, theoretically infinite) is 2^17;\n        if (noBuf)\n            cbuf(bt + 131072);\n        var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n        var lpos = pos;\n        for (;; lpos = pos) {\n            // bits read, code\n            var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;\n            pos += c & 15;\n            if (pos > tbts) {\n                if (noSt)\n                    err(0);\n                break;\n            }\n            if (!c)\n                err(2);\n            if (sym < 256)\n                buf[bt++] = sym;\n            else if (sym == 256) {\n                lpos = pos, lm = null;\n                break;\n            }\n            else {\n                var add = sym - 254;\n                // no extra bits needed if less\n                if (sym > 264) {\n                    // index\n                    var i = sym - 257, b = fleb[i];\n                    add = bits(dat, pos, (1 << b) - 1) + fl[i];\n                    pos += b;\n                }\n                // dist\n                var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;\n                if (!d)\n                    err(3);\n                pos += d & 15;\n                var dt = fd[dsym];\n                if (dsym > 3) {\n                    var b = fdeb[dsym];\n                    dt += bits16(dat, pos) & ((1 << b) - 1), pos += b;\n                }\n                if (pos > tbts) {\n                    if (noSt)\n                        err(0);\n                    break;\n                }\n                if (noBuf)\n                    cbuf(bt + 131072);\n                var end = bt + add;\n                for (; bt < end; bt += 4) {\n                    buf[bt] = buf[bt - dt];\n                    buf[bt + 1] = buf[bt + 1 - dt];\n                    buf[bt + 2] = buf[bt + 2 - dt];\n                    buf[bt + 3] = buf[bt + 3 - dt];\n                }\n                bt = end;\n            }\n        }\n        st.l = lm, st.p = lpos, st.b = bt, st.f = final;\n        if (lm)\n            final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n    } while (!final);\n    return bt == buf.length ? buf : slc(buf, 0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n    v <<= p & 7;\n    var o = (p / 8) | 0;\n    d[o] |= v;\n    d[o + 1] |= v >>> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n    v <<= p & 7;\n    var o = (p / 8) | 0;\n    d[o] |= v;\n    d[o + 1] |= v >>> 8;\n    d[o + 2] |= v >>> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n    // Need extra info to make a tree\n    var t = [];\n    for (var i = 0; i < d.length; ++i) {\n        if (d[i])\n            t.push({ s: i, f: d[i] });\n    }\n    var s = t.length;\n    var t2 = t.slice();\n    if (!s)\n        return [et, 0];\n    if (s == 1) {\n        var v = new u8(t[0].s + 1);\n        v[t[0].s] = 1;\n        return [v, 1];\n    }\n    t.sort(function (a, b) { return a.f - b.f; });\n    // after i2 reaches last ind, will be stopped\n    // freq must be greater than largest possible number of symbols\n    t.push({ s: -1, f: 25001 });\n    var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n    t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n    // efficient algorithm from UZIP.js\n    // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n    // symbols that combined have high freq, will start processing i2 (high-freq,\n    // non-composite) symbols instead\n    // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n    while (i1 != s - 1) {\n        l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n        r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n        t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n    }\n    var maxSym = t2[0].s;\n    for (var i = 1; i < s; ++i) {\n        if (t2[i].s > maxSym)\n            maxSym = t2[i].s;\n    }\n    // code lengths\n    var tr = new u16(maxSym + 1);\n    // max bits in tree\n    var mbt = ln(t[i1 - 1], tr, 0);\n    if (mbt > mb) {\n        // more algorithms from UZIP.js\n        // TODO: find out how this code works (debt)\n        //  ind    debt\n        var i = 0, dt = 0;\n        //    left            cost\n        var lft = mbt - mb, cst = 1 << lft;\n        t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n        for (; i < s; ++i) {\n            var i2_1 = t2[i].s;\n            if (tr[i2_1] > mb) {\n                dt += cst - (1 << (mbt - tr[i2_1]));\n                tr[i2_1] = mb;\n            }\n            else\n                break;\n        }\n        dt >>>= lft;\n        while (dt > 0) {\n            var i2_2 = t2[i].s;\n            if (tr[i2_2] < mb)\n                dt -= 1 << (mb - tr[i2_2]++ - 1);\n            else\n                ++i;\n        }\n        for (; i >= 0 && dt; --i) {\n            var i2_3 = t2[i].s;\n            if (tr[i2_3] == mb) {\n                --tr[i2_3];\n                ++dt;\n            }\n        }\n        mbt = mb;\n    }\n    return [new u8(tr), mbt];\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n    return n.s == -1\n        ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n        : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n    var s = c.length;\n    // Note that the semicolon was intentional\n    while (s && !c[--s])\n        ;\n    var cl = new u16(++s);\n    //  ind      num         streak\n    var cli = 0, cln = c[0], cls = 1;\n    var w = function (v) { cl[cli++] = v; };\n    for (var i = 1; i <= s; ++i) {\n        if (c[i] == cln && i != s)\n            ++cls;\n        else {\n            if (!cln && cls > 2) {\n                for (; cls > 138; cls -= 138)\n                    w(32754);\n                if (cls > 2) {\n                    w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n                    cls = 0;\n                }\n            }\n            else if (cls > 3) {\n                w(cln), --cls;\n                for (; cls > 6; cls -= 6)\n                    w(8304);\n                if (cls > 2)\n                    w(((cls - 3) << 5) | 8208), cls = 0;\n            }\n            while (cls--)\n                w(cln);\n            cls = 1;\n            cln = c[i];\n        }\n    }\n    return [cl.subarray(0, cli), s];\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n    var l = 0;\n    for (var i = 0; i < cl.length; ++i)\n        l += cf[i] * cl[i];\n    return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n    // no need to write 00 as type: TypedArray defaults to 0\n    var s = dat.length;\n    var o = shft(pos + 2);\n    out[o] = s & 255;\n    out[o + 1] = s >>> 8;\n    out[o + 2] = out[o] ^ 255;\n    out[o + 3] = out[o + 1] ^ 255;\n    for (var i = 0; i < s; ++i)\n        out[o + i + 4] = dat[i];\n    return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n    wbits(out, p++, final);\n    ++lf[256];\n    var _a = hTree(lf, 15), dlt = _a[0], mlb = _a[1];\n    var _b = hTree(df, 15), ddt = _b[0], mdb = _b[1];\n    var _c = lc(dlt), lclt = _c[0], nlc = _c[1];\n    var _d = lc(ddt), lcdt = _d[0], ndc = _d[1];\n    var lcfreq = new u16(19);\n    for (var i = 0; i < lclt.length; ++i)\n        lcfreq[lclt[i] & 31]++;\n    for (var i = 0; i < lcdt.length; ++i)\n        lcfreq[lcdt[i] & 31]++;\n    var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1];\n    var nlcc = 19;\n    for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n        ;\n    var flen = (bl + 5) << 3;\n    var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n    var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);\n    if (flen <= ftlen && flen <= dtlen)\n        return wfblk(out, p, dat.subarray(bs, bs + bl));\n    var lm, ll, dm, dl;\n    wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n    if (dtlen < ftlen) {\n        lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n        var llm = hMap(lct, mlcb, 0);\n        wbits(out, p, nlc - 257);\n        wbits(out, p + 5, ndc - 1);\n        wbits(out, p + 10, nlcc - 4);\n        p += 14;\n        for (var i = 0; i < nlcc; ++i)\n            wbits(out, p + 3 * i, lct[clim[i]]);\n        p += 3 * nlcc;\n        var lcts = [lclt, lcdt];\n        for (var it = 0; it < 2; ++it) {\n            var clct = lcts[it];\n            for (var i = 0; i < clct.length; ++i) {\n                var len = clct[i] & 31;\n                wbits(out, p, llm[len]), p += lct[len];\n                if (len > 15)\n                    wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12;\n            }\n        }\n    }\n    else {\n        lm = flm, ll = flt, dm = fdm, dl = fdt;\n    }\n    for (var i = 0; i < li; ++i) {\n        if (syms[i] > 255) {\n            var len = (syms[i] >>> 18) & 31;\n            wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n            if (len > 7)\n                wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len];\n            var dst = syms[i] & 31;\n            wbits16(out, p, dm[dst]), p += dl[dst];\n            if (dst > 3)\n                wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst];\n        }\n        else {\n            wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];\n        }\n    }\n    wbits16(out, p, lm[256]);\n    return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, lst) {\n    var s = dat.length;\n    var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n    // writing to this writes to the output buffer\n    var w = o.subarray(pre, o.length - post);\n    var pos = 0;\n    if (!lvl || s < 8) {\n        for (var i = 0; i <= s; i += 65535) {\n            // end\n            var e = i + 65535;\n            if (e < s) {\n                // write full block\n                pos = wfblk(w, pos, dat.subarray(i, e));\n            }\n            else {\n                // write final block\n                w[i] = lst;\n                pos = wfblk(w, pos, dat.subarray(i, s));\n            }\n        }\n    }\n    else {\n        var opt = deo[lvl - 1];\n        var n = opt >>> 13, c = opt & 8191;\n        var msk_1 = (1 << plvl) - 1;\n        //    prev 2-byte val map    curr 2-byte val map\n        var prev = new u16(32768), head = new u16(msk_1 + 1);\n        var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n        var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n        // 24576 is an arbitrary number of maximum symbols per block\n        // 424 buffer for last block\n        var syms = new u32(25000);\n        // length/literal freq   distance freq\n        var lf = new u16(288), df = new u16(32);\n        //  l/lcnt  exbits  index  l/lind  waitdx  bitpos\n        var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0;\n        for (; i < s; ++i) {\n            // hash value\n            // deopt when i > s - 3 - at end, deopt acceptable\n            var hv = hsh(i);\n            // index mod 32768    previous index mod\n            var imod = i & 32767, pimod = head[hv];\n            prev[imod] = pimod;\n            head[hv] = imod;\n            // We always should modify head and prev, but only add symbols if\n            // this data is not yet processed (\"wait\" for wait index)\n            if (wi <= i) {\n                // bytes remaining\n                var rem = s - i;\n                if ((lc_1 > 7000 || li > 24576) && rem > 423) {\n                    pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n                    li = lc_1 = eb = 0, bs = i;\n                    for (var j = 0; j < 286; ++j)\n                        lf[j] = 0;\n                    for (var j = 0; j < 30; ++j)\n                        df[j] = 0;\n                }\n                //  len    dist   chain\n                var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767;\n                if (rem > 2 && hv == hsh(i - dif)) {\n                    var maxn = Math.min(n, rem) - 1;\n                    var maxd = Math.min(32767, i);\n                    // max possible length\n                    // not capped at dif because decompressors implement \"rolling\" index population\n                    var ml = Math.min(258, rem);\n                    while (dif <= maxd && --ch_1 && imod != pimod) {\n                        if (dat[i + l] == dat[i + l - dif]) {\n                            var nl = 0;\n                            for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n                                ;\n                            if (nl > l) {\n                                l = nl, d = dif;\n                                // break out early when we reach \"nice\" (we are satisfied enough)\n                                if (nl > maxn)\n                                    break;\n                                // now, find the rarest 2-byte sequence within this\n                                // length of literals and search for that instead.\n                                // Much faster than just using the start\n                                var mmd = Math.min(dif, nl - 2);\n                                var md = 0;\n                                for (var j = 0; j < mmd; ++j) {\n                                    var ti = (i - dif + j + 32768) & 32767;\n                                    var pti = prev[ti];\n                                    var cd = (ti - pti + 32768) & 32767;\n                                    if (cd > md)\n                                        md = cd, pimod = ti;\n                                }\n                            }\n                        }\n                        // check the previous match\n                        imod = pimod, pimod = prev[imod];\n                        dif += (imod - pimod + 32768) & 32767;\n                    }\n                }\n                // d will be nonzero only when a match was found\n                if (d) {\n                    // store both dist and len data in one Uint32\n                    // Make sure this is recognized as a len/dist with 28th bit (2^28)\n                    syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n                    var lin = revfl[l] & 31, din = revfd[d] & 31;\n                    eb += fleb[lin] + fdeb[din];\n                    ++lf[257 + lin];\n                    ++df[din];\n                    wi = i + l;\n                    ++lc_1;\n                }\n                else {\n                    syms[li++] = dat[i];\n                    ++lf[dat[i]];\n                }\n            }\n        }\n        pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n        // this is the easiest way to avoid needing to maintain state\n        if (!lst && pos & 7)\n            pos = wfblk(w, pos + 1, et);\n    }\n    return slc(o, 0, pre + shft(pos) + post);\n};\n// CRC32 table\nvar crct = /*#__PURE__*/ (function () {\n    var t = new Int32Array(256);\n    for (var i = 0; i < 256; ++i) {\n        var c = i, k = 9;\n        while (--k)\n            c = ((c & 1) && -306674912) ^ (c >>> 1);\n        t[i] = c;\n    }\n    return t;\n})();\n// CRC32\nvar crc = function () {\n    var c = -1;\n    return {\n        p: function (d) {\n            // closures have awful performance\n            var cr = c;\n            for (var i = 0; i < d.length; ++i)\n                cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);\n            c = cr;\n        },\n        d: function () { return ~c; }\n    };\n};\n// Alder32\nvar adler = function () {\n    var a = 1, b = 0;\n    return {\n        p: function (d) {\n            // closures have awful performance\n            var n = a, m = b;\n            var l = d.length | 0;\n            for (var i = 0; i != l;) {\n                var e = Math.min(i + 2655, l);\n                for (; i < e; ++i)\n                    m += n += d[i];\n                n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);\n            }\n            a = n, b = m;\n        },\n        d: function () {\n            a %= 65521, b %= 65521;\n            return (a & 255) << 24 | (a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8);\n        }\n    };\n};\n;\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n    return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, !st);\n};\n// Walmart object spread\nvar mrg = function (a, b) {\n    var o = {};\n    for (var k in a)\n        o[k] = a[k];\n    for (var k in b)\n        o[k] = b[k];\n    return o;\n};\n// worker clone\n// This is possibly the craziest part of the entire codebase, despite how simple it may seem.\n// The only parameter to this function is a closure that returns an array of variables outside of the function scope.\n// We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.\n// We will return an object mapping of true variable name to value (basically, the current scope as a JS object).\n// The reason we can't just use the original variable names is minifiers mangling the toplevel scope.\n// This took me three weeks to figure out how to do.\nvar wcln = function (fn, fnStr, td) {\n    var dt = fn();\n    var st = fn.toString();\n    var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/ /g, '').split(',');\n    for (var i = 0; i < dt.length; ++i) {\n        var v = dt[i], k = ks[i];\n        if (typeof v == 'function') {\n            fnStr += ';' + k + '=';\n            var st_1 = v.toString();\n            if (v.prototype) {\n                // for global objects\n                if (st_1.indexOf('[native code]') != -1) {\n                    var spInd = st_1.indexOf(' ', 8) + 1;\n                    fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));\n                }\n                else {\n                    fnStr += st_1;\n                    for (var t in v.prototype)\n                        fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();\n                }\n            }\n            else\n                fnStr += st_1;\n        }\n        else\n            td[k] = v;\n    }\n    return [fnStr, td];\n};\nvar ch = [];\n// clone bufs\nvar cbfs = function (v) {\n    var tl = [];\n    for (var k in v) {\n        if (v[k] instanceof u8 || v[k] instanceof u16 || v[k] instanceof u32)\n            tl.push((v[k] = new v[k].constructor(v[k])).buffer);\n    }\n    return tl;\n};\n// use a worker to execute code\nvar wrkr = function (fns, init, id, cb) {\n    var _a;\n    if (!ch[id]) {\n        var fnStr = '', td_1 = {}, m = fns.length - 1;\n        for (var i = 0; i < m; ++i)\n            _a = wcln(fns[i], fnStr, td_1), fnStr = _a[0], td_1 = _a[1];\n        ch[id] = wcln(fns[m], fnStr, td_1);\n    }\n    var td = mrg({}, ch[id][1]);\n    return wk(ch[id][0] + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);\n};\n// base async inflate fn\nvar bInflt = function () { return [u8, u16, u32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gu8]; };\nvar bDflt = function () { return [u8, u16, u32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };\n// gzip extra\nvar gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };\n// gunzip extra\nvar guze = function () { return [gzs, gzl]; };\n// zlib extra\nvar zle = function () { return [zlh, wbytes, adler]; };\n// unzlib extra\nvar zule = function () { return [zlv]; };\n// post buf\nvar pbf = function (msg) { return postMessage(msg, [msg.buffer]); };\n// get u8\nvar gu8 = function (o) { return o && o.size && new u8(o.size); };\n// async helper\nvar cbify = function (dat, opts, fns, init, id, cb) {\n    var w = wrkr(fns, init, id, function (err, dat) {\n        w.terminate();\n        cb(err, dat);\n    });\n    w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);\n    return function () { w.terminate(); };\n};\n// auto stream\nvar astrm = function (strm) {\n    strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };\n    return function (ev) { return strm.push(ev.data[0], ev.data[1]); };\n};\n// async stream attach\nvar astrmify = function (fns, strm, opts, init, id) {\n    var t;\n    var w = wrkr(fns, init, id, function (err, dat) {\n        if (err)\n            w.terminate(), strm.ondata.call(strm, err);\n        else {\n            if (dat[1])\n                w.terminate();\n            strm.ondata.call(strm, err, dat[0], dat[1]);\n        }\n    });\n    w.postMessage(opts);\n    strm.push = function (d, f) {\n        if (!strm.ondata)\n            err(5);\n        if (t)\n            strm.ondata(err(4, 0, 1), null, !!f);\n        w.postMessage([d, t = f], [d.buffer]);\n    };\n    strm.terminate = function () { w.terminate(); };\n};\n// read 2 bytes\nvar b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };\n// read 4 bytes\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\nvar b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };\n// write bytes\nvar wbytes = function (d, b, v) {\n    for (; v; ++b)\n        d[b] = v, v >>>= 8;\n};\n// gzip header\nvar gzh = function (c, o) {\n    var fn = o.filename;\n    c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix\n    if (o.mtime != 0)\n        wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));\n    if (fn) {\n        c[3] = 8;\n        for (var i = 0; i <= fn.length; ++i)\n            c[i + 10] = fn.charCodeAt(i);\n    }\n};\n// gzip footer: -8 to -4 = CRC, -4 to -0 is length\n// gzip start\nvar gzs = function (d) {\n    if (d[0] != 31 || d[1] != 139 || d[2] != 8)\n        err(6, 'invalid gzip data');\n    var flg = d[3];\n    var st = 10;\n    if (flg & 4)\n        st += d[10] | (d[11] << 8) + 2;\n    for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])\n        ;\n    return st + (flg & 2);\n};\n// gzip length\nvar gzl = function (d) {\n    var l = d.length;\n    return ((d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16) | (d[l - 1] << 24)) >>> 0;\n};\n// gzip header length\nvar gzhl = function (o) { return 10 + ((o.filename && (o.filename.length + 1)) || 0); };\n// zlib header\nvar zlh = function (c, o) {\n    var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n    c[0] = 120, c[1] = (fl << 6) | (fl ? (32 - 2 * fl) : 1);\n};\n// zlib valid\nvar zlv = function (d) {\n    if ((d[0] & 15) != 8 || (d[0] >>> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n        err(6, 'invalid zlib data');\n    if (d[1] & 32)\n        err(6, 'invalid zlib data: preset dictionaries not supported');\n};\nfunction AsyncCmpStrm(opts, cb) {\n    if (!cb && typeof opts == 'function')\n        cb = opts, opts = {};\n    this.ondata = cb;\n    return opts;\n}\n// zlib footer: -4 to -0 is Adler32\n/**\n * Streaming DEFLATE compression\n */\nvar Deflate = /*#__PURE__*/ (function () {\n    function Deflate(opts, cb) {\n        if (!cb && typeof opts == 'function')\n            cb = opts, opts = {};\n        this.ondata = cb;\n        this.o = opts || {};\n    }\n    Deflate.prototype.p = function (c, f) {\n        this.ondata(dopt(c, this.o, 0, 0, !f), f);\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Deflate.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (this.d)\n            err(4);\n        this.d = final;\n        this.p(chunk, final || false);\n    };\n    return Deflate;\n}());\nexport { Deflate };\n/**\n * Asynchronous streaming DEFLATE compression\n */\nvar AsyncDeflate = /*#__PURE__*/ (function () {\n    function AsyncDeflate(opts, cb) {\n        astrmify([\n            bDflt,\n            function () { return [astrm, Deflate]; }\n        ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n            var strm = new Deflate(ev.data);\n            onmessage = astrm(strm);\n        }, 6);\n    }\n    return AsyncDeflate;\n}());\nexport { AsyncDeflate };\nexport function deflate(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n    ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);\n}\n/**\n * Compresses data with DEFLATE without any wrapper\n * @param data The data to compress\n * @param opts The compression options\n * @returns The deflated version of the data\n */\nexport function deflateSync(data, opts) {\n    return dopt(data, opts || {}, 0, 0);\n}\n/**\n * Streaming DEFLATE decompression\n */\nvar Inflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates an inflation stream\n     * @param cb The callback to call whenever data is inflated\n     */\n    function Inflate(cb) {\n        this.s = {};\n        this.p = new u8(0);\n        this.ondata = cb;\n    }\n    Inflate.prototype.e = function (c) {\n        if (!this.ondata)\n            err(5);\n        if (this.d)\n            err(4);\n        var l = this.p.length;\n        var n = new u8(l + c.length);\n        n.set(this.p), n.set(c, l), this.p = n;\n    };\n    Inflate.prototype.c = function (final) {\n        this.d = this.s.i = final || false;\n        var bts = this.s.b;\n        var dt = inflt(this.p, this.o, this.s);\n        this.ondata(slc(dt, bts, this.s.b), this.d);\n        this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;\n        this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;\n    };\n    /**\n     * Pushes a chunk to be inflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the final chunk\n     */\n    Inflate.prototype.push = function (chunk, final) {\n        this.e(chunk), this.c(final);\n    };\n    return Inflate;\n}());\nexport { Inflate };\n/**\n * Asynchronous streaming DEFLATE decompression\n */\nvar AsyncInflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates an asynchronous inflation stream\n     * @param cb The callback to call whenever data is deflated\n     */\n    function AsyncInflate(cb) {\n        this.ondata = cb;\n        astrmify([\n            bInflt,\n            function () { return [astrm, Inflate]; }\n        ], this, 0, function () {\n            var strm = new Inflate();\n            onmessage = astrm(strm);\n        }, 7);\n    }\n    return AsyncInflate;\n}());\nexport { AsyncInflate };\nexport function inflate(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt\n    ], function (ev) { return pbf(inflateSync(ev.data[0], gu8(ev.data[1]))); }, 1, cb);\n}\n/**\n * Expands DEFLATE data with no wrapper\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function inflateSync(data, out) {\n    return inflt(data, out);\n}\n// before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.\n/**\n * Streaming GZIP compression\n */\nvar Gzip = /*#__PURE__*/ (function () {\n    function Gzip(opts, cb) {\n        this.c = crc();\n        this.l = 0;\n        this.v = 1;\n        Deflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be GZIPped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Gzip.prototype.push = function (chunk, final) {\n        Deflate.prototype.push.call(this, chunk, final);\n    };\n    Gzip.prototype.p = function (c, f) {\n        this.c.p(c);\n        this.l += c.length;\n        var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, !f);\n        if (this.v)\n            gzh(raw, this.o), this.v = 0;\n        if (f)\n            wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);\n        this.ondata(raw, f);\n    };\n    return Gzip;\n}());\nexport { Gzip };\n/**\n * Asynchronous streaming GZIP compression\n */\nvar AsyncGzip = /*#__PURE__*/ (function () {\n    function AsyncGzip(opts, cb) {\n        astrmify([\n            bDflt,\n            gze,\n            function () { return [astrm, Deflate, Gzip]; }\n        ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n            var strm = new Gzip(ev.data);\n            onmessage = astrm(strm);\n        }, 8);\n    }\n    return AsyncGzip;\n}());\nexport { AsyncGzip };\nexport function gzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n        gze,\n        function () { return [gzipSync]; }\n    ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);\n}\n/**\n * Compresses data with GZIP\n * @param data The data to compress\n * @param opts The compression options\n * @returns The gzipped version of the data\n */\nexport function gzipSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var c = crc(), l = data.length;\n    c.p(data);\n    var d = dopt(data, opts, gzhl(opts), 8), s = d.length;\n    return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;\n}\n/**\n * Streaming GZIP decompression\n */\nvar Gunzip = /*#__PURE__*/ (function () {\n    /**\n     * Creates a GUNZIP stream\n     * @param cb The callback to call whenever data is inflated\n     */\n    function Gunzip(cb) {\n        this.v = 1;\n        Inflate.call(this, cb);\n    }\n    /**\n     * Pushes a chunk to be GUNZIPped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Gunzip.prototype.push = function (chunk, final) {\n        Inflate.prototype.e.call(this, chunk);\n        if (this.v) {\n            var s = this.p.length > 3 ? gzs(this.p) : 4;\n            if (s >= this.p.length && !final)\n                return;\n            this.p = this.p.subarray(s), this.v = 0;\n        }\n        if (final) {\n            if (this.p.length < 8)\n                err(6, 'invalid gzip data');\n            this.p = this.p.subarray(0, -8);\n        }\n        // necessary to prevent TS from using the closure value\n        // This allows for workerization to function correctly\n        Inflate.prototype.c.call(this, final);\n    };\n    return Gunzip;\n}());\nexport { Gunzip };\n/**\n * Asynchronous streaming GZIP decompression\n */\nvar AsyncGunzip = /*#__PURE__*/ (function () {\n    /**\n     * Creates an asynchronous GUNZIP stream\n     * @param cb The callback to call whenever data is deflated\n     */\n    function AsyncGunzip(cb) {\n        this.ondata = cb;\n        astrmify([\n            bInflt,\n            guze,\n            function () { return [astrm, Inflate, Gunzip]; }\n        ], this, 0, function () {\n            var strm = new Gunzip();\n            onmessage = astrm(strm);\n        }, 9);\n    }\n    return AsyncGunzip;\n}());\nexport { AsyncGunzip };\nexport function gunzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt,\n        guze,\n        function () { return [gunzipSync]; }\n    ], function (ev) { return pbf(gunzipSync(ev.data[0])); }, 3, cb);\n}\n/**\n * Expands GZIP data\n * @param data The data to decompress\n * @param out Where to write the data. GZIP already encodes the output size, so providing this doesn't save memory.\n * @returns The decompressed version of the data\n */\nexport function gunzipSync(data, out) {\n    return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data)));\n}\n/**\n * Streaming Zlib compression\n */\nvar Zlib = /*#__PURE__*/ (function () {\n    function Zlib(opts, cb) {\n        this.c = adler();\n        this.v = 1;\n        Deflate.call(this, opts, cb);\n    }\n    /**\n     * Pushes a chunk to be zlibbed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Zlib.prototype.push = function (chunk, final) {\n        Deflate.prototype.push.call(this, chunk, final);\n    };\n    Zlib.prototype.p = function (c, f) {\n        this.c.p(c);\n        var raw = dopt(c, this.o, this.v && 2, f && 4, !f);\n        if (this.v)\n            zlh(raw, this.o), this.v = 0;\n        if (f)\n            wbytes(raw, raw.length - 4, this.c.d());\n        this.ondata(raw, f);\n    };\n    return Zlib;\n}());\nexport { Zlib };\n/**\n * Asynchronous streaming Zlib compression\n */\nvar AsyncZlib = /*#__PURE__*/ (function () {\n    function AsyncZlib(opts, cb) {\n        astrmify([\n            bDflt,\n            zle,\n            function () { return [astrm, Deflate, Zlib]; }\n        ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {\n            var strm = new Zlib(ev.data);\n            onmessage = astrm(strm);\n        }, 10);\n    }\n    return AsyncZlib;\n}());\nexport { AsyncZlib };\nexport function zlib(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bDflt,\n        zle,\n        function () { return [zlibSync]; }\n    ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);\n}\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nexport function zlibSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var a = adler();\n    a.p(data);\n    var d = dopt(data, opts, 2, 4);\n    return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Streaming Zlib decompression\n */\nvar Unzlib = /*#__PURE__*/ (function () {\n    /**\n     * Creates a Zlib decompression stream\n     * @param cb The callback to call whenever data is inflated\n     */\n    function Unzlib(cb) {\n        this.v = 1;\n        Inflate.call(this, cb);\n    }\n    /**\n     * Pushes a chunk to be unzlibbed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Unzlib.prototype.push = function (chunk, final) {\n        Inflate.prototype.e.call(this, chunk);\n        if (this.v) {\n            if (this.p.length < 2 && !final)\n                return;\n            this.p = this.p.subarray(2), this.v = 0;\n        }\n        if (final) {\n            if (this.p.length < 4)\n                err(6, 'invalid zlib data');\n            this.p = this.p.subarray(0, -4);\n        }\n        // necessary to prevent TS from using the closure value\n        // This allows for workerization to function correctly\n        Inflate.prototype.c.call(this, final);\n    };\n    return Unzlib;\n}());\nexport { Unzlib };\n/**\n * Asynchronous streaming Zlib decompression\n */\nvar AsyncUnzlib = /*#__PURE__*/ (function () {\n    /**\n     * Creates an asynchronous Zlib decompression stream\n     * @param cb The callback to call whenever data is deflated\n     */\n    function AsyncUnzlib(cb) {\n        this.ondata = cb;\n        astrmify([\n            bInflt,\n            zule,\n            function () { return [astrm, Inflate, Unzlib]; }\n        ], this, 0, function () {\n            var strm = new Unzlib();\n            onmessage = astrm(strm);\n        }, 11);\n    }\n    return AsyncUnzlib;\n}());\nexport { AsyncUnzlib };\nexport function unzlib(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return cbify(data, opts, [\n        bInflt,\n        zule,\n        function () { return [unzlibSync]; }\n    ], function (ev) { return pbf(unzlibSync(ev.data[0], gu8(ev.data[1]))); }, 5, cb);\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function unzlibSync(data, out) {\n    return inflt((zlv(data), data.subarray(2, -4)), out);\n}\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzip as compress, AsyncGzip as AsyncCompress };\n// Default algorithm for compression (used because having a known output size allows faster decompression)\nexport { gzipSync as compressSync, Gzip as Compress };\n/**\n * Streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar Decompress = /*#__PURE__*/ (function () {\n    /**\n     * Creates a decompression stream\n     * @param cb The callback to call whenever data is decompressed\n     */\n    function Decompress(cb) {\n        this.G = Gunzip;\n        this.I = Inflate;\n        this.Z = Unzlib;\n        this.ondata = cb;\n    }\n    /**\n     * Pushes a chunk to be decompressed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Decompress.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (!this.s) {\n            if (this.p && this.p.length) {\n                var n = new u8(this.p.length + chunk.length);\n                n.set(this.p), n.set(chunk, this.p.length);\n            }\n            else\n                this.p = chunk;\n            if (this.p.length > 2) {\n                var _this_1 = this;\n                var cb = function () { _this_1.ondata.apply(_this_1, arguments); };\n                this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)\n                    ? new this.G(cb)\n                    : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))\n                        ? new this.I(cb)\n                        : new this.Z(cb);\n                this.s.push(this.p, final);\n                this.p = null;\n            }\n        }\n        else\n            this.s.push(chunk, final);\n    };\n    return Decompress;\n}());\nexport { Decompress };\n/**\n * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression\n */\nvar AsyncDecompress = /*#__PURE__*/ (function () {\n    /**\n   * Creates an asynchronous decompression stream\n   * @param cb The callback to call whenever data is decompressed\n   */\n    function AsyncDecompress(cb) {\n        this.G = AsyncGunzip;\n        this.I = AsyncInflate;\n        this.Z = AsyncUnzlib;\n        this.ondata = cb;\n    }\n    /**\n     * Pushes a chunk to be decompressed\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    AsyncDecompress.prototype.push = function (chunk, final) {\n        Decompress.prototype.push.call(this, chunk, final);\n    };\n    return AsyncDecompress;\n}());\nexport { AsyncDecompress };\nexport function decompress(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n        ? gunzip(data, opts, cb)\n        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n            ? inflate(data, opts, cb)\n            : unzlib(data, opts, cb);\n}\n/**\n * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nexport function decompressSync(data, out) {\n    return (data[0] == 31 && data[1] == 139 && data[2] == 8)\n        ? gunzipSync(data, out)\n        : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))\n            ? inflateSync(data, out)\n            : unzlibSync(data, out);\n}\n// flatten a directory structure\nvar fltn = function (d, p, t, o) {\n    for (var k in d) {\n        var val = d[k], n = p + k;\n        if (val instanceof u8)\n            t[n] = [val, o];\n        else if (Array.isArray(val))\n            t[n] = [val[0], mrg(o, val[1])];\n        else\n            fltn(val, n + '/', t, o);\n    }\n};\n// text encoder\nvar te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();\n// text decoder\nvar td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();\n// text decoder stream\nvar tds = 0;\ntry {\n    td.decode(et, { stream: true });\n    tds = 1;\n}\ncatch (e) { }\n// decode UTF8\nvar dutf8 = function (d) {\n    for (var r = '', i = 0;;) {\n        var c = d[i++];\n        var eb = (c > 127) + (c > 223) + (c > 239);\n        if (i + eb > d.length)\n            return [r, slc(d, i - 1)];\n        if (!eb)\n            r += String.fromCharCode(c);\n        else if (eb == 3) {\n            c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,\n                r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n        }\n        else if (eb & 1)\n            r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));\n        else\n            r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));\n    }\n};\n/**\n * Streaming UTF-8 decoding\n */\nvar DecodeUTF8 = /*#__PURE__*/ (function () {\n    /**\n     * Creates a UTF-8 decoding stream\n     * @param cb The callback to call whenever data is decoded\n     */\n    function DecodeUTF8(cb) {\n        this.ondata = cb;\n        if (tds)\n            this.t = new TextDecoder();\n        else\n            this.p = et;\n    }\n    /**\n     * Pushes a chunk to be decoded from UTF-8 binary\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    DecodeUTF8.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        final = !!final;\n        if (this.t) {\n            this.ondata(this.t.decode(chunk, { stream: true }), final);\n            if (final) {\n                if (this.t.decode().length)\n                    err(8);\n                this.t = null;\n            }\n            return;\n        }\n        if (!this.p)\n            err(4);\n        var dat = new u8(this.p.length + chunk.length);\n        dat.set(this.p);\n        dat.set(chunk, this.p.length);\n        var _a = dutf8(dat), ch = _a[0], np = _a[1];\n        if (final) {\n            if (np.length)\n                err(8);\n            this.p = null;\n        }\n        else\n            this.p = np;\n        this.ondata(ch, final);\n    };\n    return DecodeUTF8;\n}());\nexport { DecodeUTF8 };\n/**\n * Streaming UTF-8 encoding\n */\nvar EncodeUTF8 = /*#__PURE__*/ (function () {\n    /**\n     * Creates a UTF-8 decoding stream\n     * @param cb The callback to call whenever data is encoded\n     */\n    function EncodeUTF8(cb) {\n        this.ondata = cb;\n    }\n    /**\n     * Pushes a chunk to be encoded to UTF-8\n     * @param chunk The string data to push\n     * @param final Whether this is the last chunk\n     */\n    EncodeUTF8.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        if (this.d)\n            err(4);\n        this.ondata(strToU8(chunk), this.d = final || false);\n    };\n    return EncodeUTF8;\n}());\nexport { EncodeUTF8 };\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n *               not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nexport function strToU8(str, latin1) {\n    if (latin1) {\n        var ar_1 = new u8(str.length);\n        for (var i = 0; i < str.length; ++i)\n            ar_1[i] = str.charCodeAt(i);\n        return ar_1;\n    }\n    if (te)\n        return te.encode(str);\n    var l = str.length;\n    var ar = new u8(str.length + (str.length >> 1));\n    var ai = 0;\n    var w = function (v) { ar[ai++] = v; };\n    for (var i = 0; i < l; ++i) {\n        if (ai + 5 > ar.length) {\n            var n = new u8(ai + 8 + ((l - i) << 1));\n            n.set(ar);\n            ar = n;\n        }\n        var c = str.charCodeAt(i);\n        if (c < 128 || latin1)\n            w(c);\n        else if (c < 2048)\n            w(192 | (c >> 6)), w(128 | (c & 63));\n        else if (c > 55295 && c < 57344)\n            c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n                w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n        else\n            w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));\n    }\n    return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n *               not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nexport function strFromU8(dat, latin1) {\n    if (latin1) {\n        var r = '';\n        for (var i = 0; i < dat.length; i += 16384)\n            r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));\n        return r;\n    }\n    else if (td)\n        return td.decode(dat);\n    else {\n        var _a = dutf8(dat), out = _a[0], ext = _a[1];\n        if (ext.length)\n            err(8);\n        return out;\n    }\n}\n;\n// deflate bit flag\nvar dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };\n// skip local zip header\nvar slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };\n// read zip header\nvar zh = function (d, b, z) {\n    var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);\n    var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];\n    return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];\n};\n// read zip64 extra field\nvar z64e = function (d, b) {\n    for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))\n        ;\n    return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];\n};\n// extra field length\nvar exfl = function (ex) {\n    var le = 0;\n    if (ex) {\n        for (var k in ex) {\n            var l = ex[k].length;\n            if (l > 65535)\n                err(9);\n            le += l + 4;\n        }\n    }\n    return le;\n};\n// write zip header\nvar wzh = function (d, b, f, fn, u, c, ce, co) {\n    var fl = fn.length, ex = f.extra, col = co && co.length;\n    var exl = exfl(ex);\n    wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n    if (ce != null)\n        d[b++] = 20, d[b++] = f.os;\n    d[b] = 20, b += 2; // spec compliance? what's that?\n    d[b++] = (f.flag << 1) | (c == null && 8), d[b++] = u && 8;\n    d[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n    var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n    if (y < 0 || y > 119)\n        err(10);\n    wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >>> 1)), b += 4;\n    if (c != null) {\n        wbytes(d, b, f.crc);\n        wbytes(d, b + 4, c);\n        wbytes(d, b + 8, f.size);\n    }\n    wbytes(d, b + 12, fl);\n    wbytes(d, b + 14, exl), b += 16;\n    if (ce != null) {\n        wbytes(d, b, col);\n        wbytes(d, b + 6, f.attrs);\n        wbytes(d, b + 10, ce), b += 14;\n    }\n    d.set(fn, b);\n    b += fl;\n    if (exl) {\n        for (var k in ex) {\n            var exf = ex[k], l = exf.length;\n            wbytes(d, b, +k);\n            wbytes(d, b + 2, l);\n            d.set(exf, b + 4), b += 4 + l;\n        }\n    }\n    if (col)\n        d.set(co, b), b += col;\n    return b;\n};\n// write zip footer (end of central directory)\nvar wzf = function (o, b, c, d, e) {\n    wbytes(o, b, 0x6054B50); // skip disk\n    wbytes(o, b + 8, c);\n    wbytes(o, b + 10, c);\n    wbytes(o, b + 12, d);\n    wbytes(o, b + 16, e);\n};\n/**\n * A pass-through stream to keep data uncompressed in a ZIP archive.\n */\nvar ZipPassThrough = /*#__PURE__*/ (function () {\n    /**\n     * Creates a pass-through stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     */\n    function ZipPassThrough(filename) {\n        this.filename = filename;\n        this.c = crc();\n        this.size = 0;\n        this.compression = 0;\n    }\n    /**\n     * Processes a chunk and pushes to the output stream. You can override this\n     * method in a subclass for custom behavior, but by default this passes\n     * the data through. You must call this.ondata(err, chunk, final) at some\n     * point in this method.\n     * @param chunk The chunk to process\n     * @param final Whether this is the last chunk\n     */\n    ZipPassThrough.prototype.process = function (chunk, final) {\n        this.ondata(null, chunk, final);\n    };\n    /**\n     * Pushes a chunk to be added. If you are subclassing this with a custom\n     * compression algorithm, note that you must push data from the source\n     * file only, pre-compression.\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    ZipPassThrough.prototype.push = function (chunk, final) {\n        if (!this.ondata)\n            err(5);\n        this.c.p(chunk);\n        this.size += chunk.length;\n        if (final)\n            this.crc = this.c.d();\n        this.process(chunk, final || false);\n    };\n    return ZipPassThrough;\n}());\nexport { ZipPassThrough };\n// I don't extend because TypeScript extension adds 1kB of runtime bloat\n/**\n * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate\n * for better performance\n */\nvar ZipDeflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     * @param opts The compression options\n     */\n    function ZipDeflate(filename, opts) {\n        var _this_1 = this;\n        if (!opts)\n            opts = {};\n        ZipPassThrough.call(this, filename);\n        this.d = new Deflate(opts, function (dat, final) {\n            _this_1.ondata(null, dat, final);\n        });\n        this.compression = 8;\n        this.flag = dbf(opts.level);\n    }\n    ZipDeflate.prototype.process = function (chunk, final) {\n        try {\n            this.d.push(chunk, final);\n        }\n        catch (e) {\n            this.ondata(e, null, final);\n        }\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    ZipDeflate.prototype.push = function (chunk, final) {\n        ZipPassThrough.prototype.push.call(this, chunk, final);\n    };\n    return ZipDeflate;\n}());\nexport { ZipDeflate };\n/**\n * Asynchronous streaming DEFLATE compression for ZIP archives\n */\nvar AsyncZipDeflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE stream that can be added to ZIP archives\n     * @param filename The filename to associate with this data stream\n     * @param opts The compression options\n     */\n    function AsyncZipDeflate(filename, opts) {\n        var _this_1 = this;\n        if (!opts)\n            opts = {};\n        ZipPassThrough.call(this, filename);\n        this.d = new AsyncDeflate(opts, function (err, dat, final) {\n            _this_1.ondata(err, dat, final);\n        });\n        this.compression = 8;\n        this.flag = dbf(opts.level);\n        this.terminate = this.d.terminate;\n    }\n    AsyncZipDeflate.prototype.process = function (chunk, final) {\n        this.d.push(chunk, final);\n    };\n    /**\n     * Pushes a chunk to be deflated\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    AsyncZipDeflate.prototype.push = function (chunk, final) {\n        ZipPassThrough.prototype.push.call(this, chunk, final);\n    };\n    return AsyncZipDeflate;\n}());\nexport { AsyncZipDeflate };\n// TODO: Better tree shaking\n/**\n * A zippable archive to which files can incrementally be added\n */\nvar Zip = /*#__PURE__*/ (function () {\n    /**\n     * Creates an empty ZIP archive to which files can be added\n     * @param cb The callback to call whenever data for the generated ZIP archive\n     *           is available\n     */\n    function Zip(cb) {\n        this.ondata = cb;\n        this.u = [];\n        this.d = 1;\n    }\n    /**\n     * Adds a file to the ZIP archive\n     * @param file The file stream to add\n     */\n    Zip.prototype.add = function (file) {\n        var _this_1 = this;\n        if (!this.ondata)\n            err(5);\n        // finishing or finished\n        if (this.d & 2)\n            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);\n        else {\n            var f = strToU8(file.filename), fl_1 = f.length;\n            var com = file.comment, o = com && strToU8(com);\n            var u = fl_1 != file.filename.length || (o && (com.length != o.length));\n            var hl_1 = fl_1 + exfl(file.extra) + 30;\n            if (fl_1 > 65535)\n                this.ondata(err(11, 0, 1), null, false);\n            var header = new u8(hl_1);\n            wzh(header, 0, file, f, u);\n            var chks_1 = [header];\n            var pAll_1 = function () {\n                for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {\n                    var chk = chks_2[_i];\n                    _this_1.ondata(null, chk, false);\n                }\n                chks_1 = [];\n            };\n            var tr_1 = this.d;\n            this.d = 0;\n            var ind_1 = this.u.length;\n            var uf_1 = mrg(file, {\n                f: f,\n                u: u,\n                o: o,\n                t: function () {\n                    if (file.terminate)\n                        file.terminate();\n                },\n                r: function () {\n                    pAll_1();\n                    if (tr_1) {\n                        var nxt = _this_1.u[ind_1 + 1];\n                        if (nxt)\n                            nxt.r();\n                        else\n                            _this_1.d = 1;\n                    }\n                    tr_1 = 1;\n                }\n            });\n            var cl_1 = 0;\n            file.ondata = function (err, dat, final) {\n                if (err) {\n                    _this_1.ondata(err, dat, final);\n                    _this_1.terminate();\n                }\n                else {\n                    cl_1 += dat.length;\n                    chks_1.push(dat);\n                    if (final) {\n                        var dd = new u8(16);\n                        wbytes(dd, 0, 0x8074B50);\n                        wbytes(dd, 4, file.crc);\n                        wbytes(dd, 8, cl_1);\n                        wbytes(dd, 12, file.size);\n                        chks_1.push(dd);\n                        uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;\n                        if (tr_1)\n                            uf_1.r();\n                        tr_1 = 1;\n                    }\n                    else if (tr_1)\n                        pAll_1();\n                }\n            };\n            this.u.push(uf_1);\n        }\n    };\n    /**\n     * Ends the process of adding files and prepares to emit the final chunks.\n     * This *must* be called after adding all desired files for the resulting\n     * ZIP file to work properly.\n     */\n    Zip.prototype.end = function () {\n        var _this_1 = this;\n        if (this.d & 2) {\n            this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);\n            return;\n        }\n        if (this.d)\n            this.e();\n        else\n            this.u.push({\n                r: function () {\n                    if (!(_this_1.d & 1))\n                        return;\n                    _this_1.u.splice(-1, 1);\n                    _this_1.e();\n                },\n                t: function () { }\n            });\n        this.d = 3;\n    };\n    Zip.prototype.e = function () {\n        var bt = 0, l = 0, tl = 0;\n        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n            var f = _a[_i];\n            tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);\n        }\n        var out = new u8(tl + 22);\n        for (var _b = 0, _c = this.u; _b < _c.length; _b++) {\n            var f = _c[_b];\n            wzh(out, bt, f, f.f, f.u, f.c, l, f.o);\n            bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;\n        }\n        wzf(out, bt, this.u.length, tl, l);\n        this.ondata(null, out, true);\n        this.d = 2;\n    };\n    /**\n     * A method to terminate any internal workers used by the stream. Subsequent\n     * calls to add() will fail.\n     */\n    Zip.prototype.terminate = function () {\n        for (var _i = 0, _a = this.u; _i < _a.length; _i++) {\n            var f = _a[_i];\n            f.t();\n        }\n        this.d = 2;\n    };\n    return Zip;\n}());\nexport { Zip };\nexport function zip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    var r = {};\n    fltn(data, '', r, opts);\n    var k = Object.keys(r);\n    var lft = k.length, o = 0, tot = 0;\n    var slft = lft, files = new Array(lft);\n    var term = [];\n    var tAll = function () {\n        for (var i = 0; i < term.length; ++i)\n            term[i]();\n    };\n    var cbd = function (a, b) {\n        mt(function () { cb(a, b); });\n    };\n    mt(function () { cbd = cb; });\n    var cbf = function () {\n        var out = new u8(tot + 22), oe = o, cdl = tot - o;\n        tot = 0;\n        for (var i = 0; i < slft; ++i) {\n            var f = files[i];\n            try {\n                var l = f.c.length;\n                wzh(out, tot, f, f.f, f.u, l);\n                var badd = 30 + f.f.length + exfl(f.extra);\n                var loc = tot + badd;\n                out.set(f.c, loc);\n                wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;\n            }\n            catch (e) {\n                return cbd(e, null);\n            }\n        }\n        wzf(out, o, files.length, cdl, oe);\n        cbd(null, out);\n    };\n    if (!lft)\n        cbf();\n    var _loop_1 = function (i) {\n        var fn = k[i];\n        var _a = r[fn], file = _a[0], p = _a[1];\n        var c = crc(), size = file.length;\n        c.p(file);\n        var f = strToU8(fn), s = f.length;\n        var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n        var exl = exfl(p.extra);\n        var compression = p.level == 0 ? 0 : 8;\n        var cbl = function (e, d) {\n            if (e) {\n                tAll();\n                cbd(e, null);\n            }\n            else {\n                var l = d.length;\n                files[i] = mrg(p, {\n                    size: size,\n                    crc: c.d(),\n                    c: d,\n                    f: f,\n                    m: m,\n                    u: s != fn.length || (m && (com.length != ms)),\n                    compression: compression\n                });\n                o += 30 + s + exl + l;\n                tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n                if (!--lft)\n                    cbf();\n            }\n        };\n        if (s > 65535)\n            cbl(err(11, 0, 1), null);\n        if (!compression)\n            cbl(null, file);\n        else if (size < 160000) {\n            try {\n                cbl(null, deflateSync(file, p));\n            }\n            catch (e) {\n                cbl(e, null);\n            }\n        }\n        else\n            term.push(deflate(file, p, cbl));\n    };\n    // Cannot use lft because it can decrease\n    for (var i = 0; i < slft; ++i) {\n        _loop_1(i);\n    }\n    return tAll;\n}\n/**\n * Synchronously creates a ZIP file. Prefer using `zip` for better performance\n * with more than one file.\n * @param data The directory structure for the ZIP archive\n * @param opts The main options, merged with per-file options\n * @returns The generated ZIP archive\n */\nexport function zipSync(data, opts) {\n    if (!opts)\n        opts = {};\n    var r = {};\n    var files = [];\n    fltn(data, '', r, opts);\n    var o = 0;\n    var tot = 0;\n    for (var fn in r) {\n        var _a = r[fn], file = _a[0], p = _a[1];\n        var compression = p.level == 0 ? 0 : 8;\n        var f = strToU8(fn), s = f.length;\n        var com = p.comment, m = com && strToU8(com), ms = m && m.length;\n        var exl = exfl(p.extra);\n        if (s > 65535)\n            err(11);\n        var d = compression ? deflateSync(file, p) : file, l = d.length;\n        var c = crc();\n        c.p(file);\n        files.push(mrg(p, {\n            size: file.length,\n            crc: c.d(),\n            c: d,\n            f: f,\n            m: m,\n            u: s != fn.length || (m && (com.length != ms)),\n            o: o,\n            compression: compression\n        }));\n        o += 30 + s + exl + l;\n        tot += 76 + 2 * (s + exl) + (ms || 0) + l;\n    }\n    var out = new u8(tot + 22), oe = o, cdl = tot - o;\n    for (var i = 0; i < files.length; ++i) {\n        var f = files[i];\n        wzh(out, f.o, f, f.f, f.u, f.c.length);\n        var badd = 30 + f.f.length + exfl(f.extra);\n        out.set(f.c, f.o + badd);\n        wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n    }\n    wzf(out, o, files.length, cdl, oe);\n    return out;\n}\n/**\n * Streaming pass-through decompression for ZIP archives\n */\nvar UnzipPassThrough = /*#__PURE__*/ (function () {\n    function UnzipPassThrough() {\n    }\n    UnzipPassThrough.prototype.push = function (data, final) {\n        this.ondata(null, data, final);\n    };\n    UnzipPassThrough.compression = 0;\n    return UnzipPassThrough;\n}());\nexport { UnzipPassThrough };\n/**\n * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for\n * better performance.\n */\nvar UnzipInflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE decompression that can be used in ZIP archives\n     */\n    function UnzipInflate() {\n        var _this_1 = this;\n        this.i = new Inflate(function (dat, final) {\n            _this_1.ondata(null, dat, final);\n        });\n    }\n    UnzipInflate.prototype.push = function (data, final) {\n        try {\n            this.i.push(data, final);\n        }\n        catch (e) {\n            this.ondata(e, null, final);\n        }\n    };\n    UnzipInflate.compression = 8;\n    return UnzipInflate;\n}());\nexport { UnzipInflate };\n/**\n * Asynchronous streaming DEFLATE decompression for ZIP archives\n */\nvar AsyncUnzipInflate = /*#__PURE__*/ (function () {\n    /**\n     * Creates a DEFLATE decompression that can be used in ZIP archives\n     */\n    function AsyncUnzipInflate(_, sz) {\n        var _this_1 = this;\n        if (sz < 320000) {\n            this.i = new Inflate(function (dat, final) {\n                _this_1.ondata(null, dat, final);\n            });\n        }\n        else {\n            this.i = new AsyncInflate(function (err, dat, final) {\n                _this_1.ondata(err, dat, final);\n            });\n            this.terminate = this.i.terminate;\n        }\n    }\n    AsyncUnzipInflate.prototype.push = function (data, final) {\n        if (this.i.terminate)\n            data = slc(data, 0);\n        this.i.push(data, final);\n    };\n    AsyncUnzipInflate.compression = 8;\n    return AsyncUnzipInflate;\n}());\nexport { AsyncUnzipInflate };\n/**\n * A ZIP archive decompression stream that emits files as they are discovered\n */\nvar Unzip = /*#__PURE__*/ (function () {\n    /**\n     * Creates a ZIP decompression stream\n     * @param cb The callback to call whenever a file in the ZIP archive is found\n     */\n    function Unzip(cb) {\n        this.onfile = cb;\n        this.k = [];\n        this.o = {\n            0: UnzipPassThrough\n        };\n        this.p = et;\n    }\n    /**\n     * Pushes a chunk to be unzipped\n     * @param chunk The chunk to push\n     * @param final Whether this is the last chunk\n     */\n    Unzip.prototype.push = function (chunk, final) {\n        var _this_1 = this;\n        if (!this.onfile)\n            err(5);\n        if (!this.p)\n            err(4);\n        if (this.c > 0) {\n            var len = Math.min(this.c, chunk.length);\n            var toAdd = chunk.subarray(0, len);\n            this.c -= len;\n            if (this.d)\n                this.d.push(toAdd, !this.c);\n            else\n                this.k[0].push(toAdd);\n            chunk = chunk.subarray(len);\n            if (chunk.length)\n                return this.push(chunk, final);\n        }\n        else {\n            var f = 0, i = 0, is = void 0, buf = void 0;\n            if (!this.p.length)\n                buf = chunk;\n            else if (!chunk.length)\n                buf = this.p;\n            else {\n                buf = new u8(this.p.length + chunk.length);\n                buf.set(this.p), buf.set(chunk, this.p.length);\n            }\n            var l = buf.length, oc = this.c, add = oc && this.d;\n            var _loop_2 = function () {\n                var _a;\n                var sig = b4(buf, i);\n                if (sig == 0x4034B50) {\n                    f = 1, is = i;\n                    this_1.d = null;\n                    this_1.c = 0;\n                    var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);\n                    if (l > i + 30 + fnl + es) {\n                        var chks_3 = [];\n                        this_1.k.unshift(chks_3);\n                        f = 2;\n                        var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);\n                        var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);\n                        if (sc_1 == 4294967295) {\n                            _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];\n                        }\n                        else if (dd)\n                            sc_1 = -1;\n                        i += es;\n                        this_1.c = sc_1;\n                        var d_1;\n                        var file_1 = {\n                            name: fn_1,\n                            compression: cmp_1,\n                            start: function () {\n                                if (!file_1.ondata)\n                                    err(5);\n                                if (!sc_1)\n                                    file_1.ondata(null, et, true);\n                                else {\n                                    var ctr = _this_1.o[cmp_1];\n                                    if (!ctr)\n                                        file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);\n                                    d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);\n                                    d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };\n                                    for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {\n                                        var dat = chks_4[_i];\n                                        d_1.push(dat, false);\n                                    }\n                                    if (_this_1.k[0] == chks_3 && _this_1.c)\n                                        _this_1.d = d_1;\n                                    else\n                                        d_1.push(et, true);\n                                }\n                            },\n                            terminate: function () {\n                                if (d_1 && d_1.terminate)\n                                    d_1.terminate();\n                            }\n                        };\n                        if (sc_1 >= 0)\n                            file_1.size = sc_1, file_1.originalSize = su_1;\n                        this_1.onfile(file_1);\n                    }\n                    return \"break\";\n                }\n                else if (oc) {\n                    if (sig == 0x8074B50) {\n                        is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;\n                        return \"break\";\n                    }\n                    else if (sig == 0x2014B50) {\n                        is = i -= 4, f = 3, this_1.c = 0;\n                        return \"break\";\n                    }\n                }\n            };\n            var this_1 = this;\n            for (; i < l - 4; ++i) {\n                var state_1 = _loop_2();\n                if (state_1 === \"break\")\n                    break;\n            }\n            this.p = et;\n            if (oc < 0) {\n                var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);\n                if (add)\n                    add.push(dat, !!f);\n                else\n                    this.k[+(f == 2)].push(dat);\n            }\n            if (f & 2)\n                return this.push(buf.subarray(i), final);\n            this.p = buf.subarray(i);\n        }\n        if (final) {\n            if (this.c)\n                err(13);\n            this.p = null;\n        }\n    };\n    /**\n     * Registers a decoder with the stream, allowing for files compressed with\n     * the compression type provided to be expanded correctly\n     * @param decoder The decoder constructor\n     */\n    Unzip.prototype.register = function (decoder) {\n        this.o[decoder.compression] = decoder;\n    };\n    return Unzip;\n}());\nexport { Unzip };\nvar mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };\nexport function unzip(data, opts, cb) {\n    if (!cb)\n        cb = opts, opts = {};\n    if (typeof cb != 'function')\n        err(7);\n    var term = [];\n    var tAll = function () {\n        for (var i = 0; i < term.length; ++i)\n            term[i]();\n    };\n    var files = {};\n    var cbd = function (a, b) {\n        mt(function () { cb(a, b); });\n    };\n    mt(function () { cbd = cb; });\n    var e = data.length - 22;\n    for (; b4(data, e) != 0x6054B50; --e) {\n        if (!e || data.length - e > 65558) {\n            cbd(err(13, 0, 1), null);\n            return tAll;\n        }\n    }\n    ;\n    var lft = b2(data, e + 8);\n    if (lft) {\n        var c = lft;\n        var o = b4(data, e + 16);\n        var z = o == 4294967295;\n        if (z) {\n            e = b4(data, e - 12);\n            if (b4(data, e) != 0x6064B50) {\n                cbd(err(13, 0, 1), null);\n                return tAll;\n            }\n            c = lft = b4(data, e + 32);\n            o = b4(data, e + 48);\n        }\n        var fltr = opts && opts.filter;\n        var _loop_3 = function (i) {\n            var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n            o = no;\n            var cbl = function (e, d) {\n                if (e) {\n                    tAll();\n                    cbd(e, null);\n                }\n                else {\n                    if (d)\n                        files[fn] = d;\n                    if (!--lft)\n                        cbd(null, files);\n                }\n            };\n            if (!fltr || fltr({\n                name: fn,\n                size: sc,\n                originalSize: su,\n                compression: c_1\n            })) {\n                if (!c_1)\n                    cbl(null, slc(data, b, b + sc));\n                else if (c_1 == 8) {\n                    var infl = data.subarray(b, b + sc);\n                    if (sc < 320000) {\n                        try {\n                            cbl(null, inflateSync(infl, new u8(su)));\n                        }\n                        catch (e) {\n                            cbl(e, null);\n                        }\n                    }\n                    else\n                        term.push(inflate(infl, { size: su }, cbl));\n                }\n                else\n                    cbl(err(14, 'unknown compression type ' + c_1, 1), null);\n            }\n            else\n                cbl(null, null);\n        };\n        for (var i = 0; i < c; ++i) {\n            _loop_3(i);\n        }\n    }\n    else\n        cbd(null, {});\n    return tAll;\n}\n/**\n * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better\n * performance with more than one file.\n * @param data The raw compressed ZIP file\n * @param opts The ZIP extraction options\n * @returns The decompressed files\n */\nexport function unzipSync(data, opts) {\n    var files = {};\n    var e = data.length - 22;\n    for (; b4(data, e) != 0x6054B50; --e) {\n        if (!e || data.length - e > 65558)\n            err(13);\n    }\n    ;\n    var c = b2(data, e + 8);\n    if (!c)\n        return {};\n    var o = b4(data, e + 16);\n    var z = o == 4294967295;\n    if (z) {\n        e = b4(data, e - 12);\n        if (b4(data, e) != 0x6064B50)\n            err(13);\n        c = b4(data, e + 32);\n        o = b4(data, e + 48);\n    }\n    var fltr = opts && opts.filter;\n    for (var i = 0; i < c; ++i) {\n        var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);\n        o = no;\n        if (!fltr || fltr({\n            name: fn,\n            size: sc,\n            originalSize: su,\n            compression: c_2\n        })) {\n            if (!c_2)\n                files[fn] = slc(data, b, b + sc);\n            else if (c_2 == 8)\n                files[fn] = inflateSync(data.subarray(b, b + sc), new u8(su));\n            else\n                err(14, 'unknown compression type ' + c_2);\n        }\n    }\n    return files;\n}\n","import {gzipSync} from 'fflate';\nimport {isString, isEmpty, isArray} from 'lodash';\nimport {HTTP_HEADERS} from './httpHeaders';\n\nconst encoder = new TextEncoder();\n\nfunction isDoNotCompressRequest(config, context) {\n\tconst {httpRequestCompressionExcludeUrls} = context; // httpRequestCompressionExcludeUrls has been lowerCased in the snHttpFactory setter\n\tconst requestUrl = config.url.toLowerCase();\n\tif (!httpRequestCompressionExcludeUrls || !isArray(httpRequestCompressionExcludeUrls) || isEmpty(httpRequestCompressionExcludeUrls))\n\t\treturn false;\n\n\treturn httpRequestCompressionExcludeUrls.filter(url => requestUrl.includes(url)).length > 0;\n\n}\n\nexport default function compressDataIfNeeded(config, context) {\n\tconst {headers, data} = config;\n\t// checking if data NOT isString defends against accidentally compressing already compressed data, such as in 401 retries with large request payloads\n\tif (!isString(data) || !context.compressionThreshold || data.length < context.compressionThreshold || isDoNotCompressRequest(config, context))\n\t\treturn config;\n\n\theaders[HTTP_HEADERS.CONTENT_ENCODING] = 'gzip';\n\tconst gzipOptions = {};\n\n\tif (context.compressionLevel)\n\t\tgzipOptions.level = context.compressionLevel;\n\tif (context.compressionMemoryLevel)\n\t\tgzipOptions.mem = context.compressionMemoryLevel;\n\n\treturn {...config, data: gzipSync(encoder.encode(data), gzipOptions), headers};\n}\n","\nimport {headersToJson} from './headers';\n\n/**\n * create expected public shape for response object\n * @param {object} response\n * @param {object} config\n * @param {pbject} request\n * @returns\n */\nexport default function (response, config, request) {\n\n\t/**\n\t * text() is a shim as sn-http-request has a history of\n\t * being a leaky abstraction & there is\n\t * unwindable coupling in glideAjax\n\t * https://code.devsnc.com/dev/glide/blob/master/glide-ng/src/main/plugins/com.glide.ui.ng/ui.html/scripts/sn/common/clientScript/glideAjax.js#L115\n\t */\n\treturn {\n\t\tok: response.ok,\n\t\tstatus: response.status,\n\t\tstatusText: response.statusText,\n\t\theaders: headersToJson(response.headers),\n\t\tconfig,\n\t\trequest,\n\t\tdata: response.data,\n\t\tbody: response.data, // Fetch API option name is: body\n\t\ttext: () => Promise.resolve(response.data)\n\t};\n}","import {isFileUploadData} from './utils';\n\n/**\n * To track upload progress at all, must use Xhr\n * method test that data is binary and that caller is interested progress\n * this limits Xhr usage to very finite situations\n * @param {object} config\n * @returns {boolean}\n */\nexport default function shouldUseXhr(config) {\n\treturn (config.onUploadProgress || config.onDownloadProgress) && config.data && isFileUploadData(config.data);\n}","import {isEmpty, reduce} from 'lodash';\n\nexport function transformData(data, enforceJson = false, enforceJsonNotEmpty = false) {\n\tif (typeof data === 'string') {\n\t\ttry {\n\t\t\tconst jsonData = JSON.parse(data);\n\t\t\tif (enforceJsonNotEmpty && isEmpty(jsonData))\n\t\t\t\tthrow new Error(`Invalid JSON received: ${data}`);\n\n\t\t\treturn jsonData;\n\t\t} catch (e) {\n\t\t\tif (enforceJson)\n\t\t\t\tthrow new Error(`Invalid JSON received: ${data}`);\n\t\t}\n\t}\n\treturn data;\n}\n\nexport function transformHeadersToJson(headers) {\n\tif (headers instanceof Headers)\n\t\treturn Object.fromEntries(headers.entries());\n\n\treturn reduce(\n\t\theaders,\n\t\t(acc, {name, value}) => ({\n\t\t\t...acc,\n\t\t\t[name]: value\n\t\t}),\n\t\t{}\n\t);\n}","import {CONTENT_ENCODING} from './httpHeaders';\nimport {isFormData, isFile} from './utils';\nimport {isString} from 'lodash';\n\n/**\n * Tests if request post data should be treated raw or stringified\n *\n * @param {object} headers\n * @param {object} data\n * @returns {boolean}\n */\nexport default function shouldStringifyRequestBody(headers, data) {\n\tif (isString(data) || isFormData(data) || isFile(data))\n\t\treturn false;\n\n\tif(headers && headers[CONTENT_ENCODING] === 'gzip')\n\t\treturn false;\n\n\treturn true;\n}","import {HTTP_HEADERS, transformData, transformHeadersToJson} from '../../utils';\nimport {BatchResponseBodyEncoding, BatchResponseBodyEncodingBase64} from '../constants';\nimport b64DecodeUnicode from './b64DecodeUnicode';\n\nexport function transformServicedRequest(servicedRequest) {\n\treturn {\n\t\tid: servicedRequest.id, // batch item id\n\t\tdata: transformBody(servicedRequest),\n\t\theaders: transformHeadersToJson(servicedRequest.headers),\n\t\tstatus: servicedRequest.status_code,\n\t\tstatusText: servicedRequest.status_text,\n\t\t...(servicedRequest.error_message && {\n\t\t\terror: true,\n\t\t\terrorMessage: servicedRequest.error_message\n\t\t})\n\t};\n}\n\nfunction transformBody({body, [BatchResponseBodyEncoding]: bodyEncoding} = {}) {\n\tconst data = bodyEncoding === BatchResponseBodyEncodingBase64 ? b64DecodeUnicode(body) : body;\n\treturn transformData(data);\n}\n\nexport function mergeHeadersToServicedRequest(servicedRequest, globalHeaders = {}) {\n\tif (!globalHeaders.hasOwnProperty(HTTP_HEADERS.IS_LOGGED_IN))\n\t\treturn servicedRequest;\n\n\tconst {headers = {}} = servicedRequest;\n\theaders[HTTP_HEADERS.IS_LOGGED_IN] = globalHeaders[HTTP_HEADERS.IS_LOGGED_IN];\n\treturn servicedRequest;\n}","/**\n * See:\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding\n * The Unicode Problem: Solution #1\n *\n * @param str\n * @return {string}\n */\nexport default function b64DecodeUnicode(str) {\n\treturn decodeURIComponent(atob(str).split('').map(c => `%${  (`00${  c.charCodeAt(0).toString(16)}`).slice(-2)}`).join(''));\n}\n","import {isArray, isEmpty} from 'lodash';\n\nfunction isDataBrokerRequest(config, httpRequestDataBrokerUrls) {\n\tif (!httpRequestDataBrokerUrls || !isArray(httpRequestDataBrokerUrls) || isEmpty(httpRequestDataBrokerUrls))\n\t\treturn false;\n\tconst httpRequestDataBrokerUrlsLowerCased = httpRequestDataBrokerUrls.map(url => url.toLowerCase());\n\tconst requestUrl = config.url.toLowerCase();\n\treturn httpRequestDataBrokerUrlsLowerCased.filter(url => requestUrl.includes(url)).length > 0;\n}\n\nexport default function (config, options) {\n\tconst {useStreaming, useDataBrokerSingleRequestStrategy, httpRequestDataBrokerUrls} = options;\n\n\tif (!useStreaming)\n\t\treturn false;\n\n\tif (!useDataBrokerSingleRequestStrategy)\n\t\treturn useStreaming;\n\n\t// data broker single request max strategy:\n\tconst {data} = config;\n\tlet dataBrokerRequestCnt = 0;\n\t// iterate of the data and count the number of broker exec requests, if exceeds cnt return false otherwise true\n\tif (!data || !data.rest_requests || !data.rest_requests.length)\n\t\treturn true;\n\n\tfor (let i = 0; i < data.rest_requests.length; i++) {\n\t\tif (isDataBrokerRequest(data.rest_requests[i], httpRequestDataBrokerUrls))\n\t\t\tdataBrokerRequestCnt = dataBrokerRequestCnt + 1;\n\n\t\tif (dataBrokerRequestCnt > 1)\n\t\t\treturn false;\n\t}\n\n\treturn true;\n}","import invariant from 'invariant';\nimport {findIndex} from 'lodash';\n\nexport default function enqueue(queue, request, priority, operation) {\n\tinvariant(\n\t\t['push', 'unshift'].includes(operation),\n\t\t'snHttpFactory: options must contain \\'enqueueRequest\\' must return an operation of push or unshit.'\n\t);\n\n\tinvariant(\n\t\t['high', 'low'].includes(priority),\n\t\t'snHttpFactory: options must contain \\'enqueueRequest\\' must return an priority of low or high.'\n\t);\n\n\tif (priority === 'high' && operation === 'push' || priority === 'low' && operation === 'unshift') {\n\t\tconst idx = findIndex(queue, item => item.config.priority === 'low');\n\n\t\tif (idx === -1)\n\t\t\tqueue.push(request);\n\t\telse\n\t\t\tqueue.splice(idx, 0, request);\n\t}\n\n\tif (priority === 'high' && operation === 'unshift')\n\t\tqueue.unshift(request);\n\n\tif (priority === 'low' && operation === 'push')\n\t\tqueue.push(request);\n}","import {isArray, isEmpty} from 'lodash';\nimport {BATCH_ITEM_RESPONSE_END_HEADER_NAME, BATCH_ITEM_RESPONSE_START_HEADER_NAME, BATCH_RESPONSE_END_HEADER_NAME, BATCH_RESPONSE_START_HEADER_NAME} from './constants';\nimport {mergeHeadersToServicedRequest, transformServicedRequest} from './utils';\nimport {containsHeader, getHeader, transformData} from '../utils';\nimport SnHttpError, {createStreamingBatchError} from '../SnHttpError';\n\nfunction createBatchStreamingResponseHandler(batch_request_id, batchServicedRequestHandler, batchUnservicedRequestsHandler, config) {\n\tlet batchRequestId;\n\tlet currServicedRequest;\n\tlet unserviced_requests = [];\n\n\tfunction streamingBatchHandler(multipartReceived) {\n\t\tconst {headers} = multipartReceived;\n\t\ttry {\n\t\t\tif (isEmpty(batchRequestId))\n\t\t\t\tverifyBatchRequestOpen(multipartReceived);\n\t\t\t else if (containsHeader(BATCH_ITEM_RESPONSE_START_HEADER_NAME, headers))\n\t\t\t\tprocessBatchItemStart(multipartReceived);\n\t\t\t else if (containsHeader(BATCH_ITEM_RESPONSE_END_HEADER_NAME, headers))\n\t\t\t\tprocessBatchItemEnd(multipartReceived);\n\t\t\t else if (containsHeader(BATCH_RESPONSE_END_HEADER_NAME, headers))\n\t\t\t\tprocessBatchEnd(multipartReceived);\n\t\t\t else\n\t\t\t\tinvalidResponseRecvd(multipartReceived);\n\n\t\t} catch(error) {\n\t\t\tif (error instanceof SnHttpError)\n\t\t\t\tthrow error;\n\n\t\t\tinvalidResponseRecvd(multipartReceived, error.message);\n\t\t}\n\t}\n\n\tfunction verifyBatchRequestOpen(multipartReceived) {\n\t\tconst {headers} = multipartReceived;\n\t\tconst idFromHeader = getHeader(BATCH_RESPONSE_START_HEADER_NAME, headers);\n\t\tif (!isEmpty(batchRequestId) || isEmpty(idFromHeader) || (idFromHeader !== batch_request_id))\n\t\t\tinvalidResponseRecvd(multipartReceived);\n\t\t else\n\t\t\tbatchRequestId = idFromHeader;\n\t}\n\n\tfunction processBatchItemStart(multipartReceived) {\n\t\tconst {body, headers} = multipartReceived;\n\t\tconst batchItemRequestId = getHeader(BATCH_ITEM_RESPONSE_START_HEADER_NAME, headers);\n\t\tif (isEmpty(batchItemRequestId) || !isEmpty(currServicedRequest))\n\t\t\tinvalidResponseRecvd(multipartReceived);\n\n\t\tcurrServicedRequest = {body, id: batchItemRequestId};\n\t}\n\n\tfunction processBatchItemEnd(multipartReceived) {\n\t\tconst {body, headers, responseHeaders} = multipartReceived;\n\t\tconst batchItemRequestId = getHeader(BATCH_ITEM_RESPONSE_END_HEADER_NAME, headers);\n\t\tif (isEmpty(batchItemRequestId) || isEmpty(currServicedRequest) || batchItemRequestId !== currServicedRequest.id)\n\t\t\tinvalidResponseRecvd(multipartReceived);\n\n\t\tconst servicedRequestJsonAttrs = transformData(body, true, true);\n\t\tcurrServicedRequest = transformServicedRequest({...currServicedRequest, ...servicedRequestJsonAttrs});\n\t\tmergeHeadersToServicedRequest(currServicedRequest, responseHeaders);\n\n\t\t//dispatch then clear out batch item locally\n\t\tbatchServicedRequestHandler(currServicedRequest);\n\t\tcurrServicedRequest = undefined;\n\t}\n\n\tfunction processBatchEnd(multipartReceived) {\n\t\tconst {body} = multipartReceived;\n\t\tconst {unserviced_requests: unservicedRequests} = transformData(body, true, true);\n\t\tif(!isArray(unservicedRequests))\n\t\t\tinvalidResponseRecvd(multipartReceived, `Streaming Batch Response invalid unserviced_requests received: ${body}`);\n\n\t\tunserviced_requests = unservicedRequests;\n\t\tbatchUnservicedRequestsHandler(unserviced_requests);\n\t}\n\n\tfunction invalidResponseRecvd(multipartReceived, message) {\n\t\tconst {body, headers} = multipartReceived;\n\t\tthrow createStreamingBatchError({body, headers}, config, message);\n\t}\n\n\treturn {\n\t\tget multipartConfig() {\n\t\t\treturn {\n\t\t\t\tmultipartConsumer: streamingBatchHandler,\n\t\t\t\tparsePartsAsJson: false,\n\t\t\t\temitCompletedResponse: false\n\t\t\t};\n\t\t},\n\t\tget unserviced_requests() {\n\t\t\treturn unserviced_requests;\n\t\t}\n\t};\n}\n\nexport default createBatchStreamingResponseHandler;\n","export const HEADER_SPAN_TRACE_PARENT = 'traceparent';\nexport const HEADER_SPAN_DOCUMENT_TRACE_PARENT= 'X-DocumentTraceParent';\nexport const SPAN_FOR_SHR_BATCH = 'shr.batch';\nexport const TAG_FOR_SHR = 'SHR';\nexport const SPAN_KIND_CLIENT = 3;\n\nexport const SPAN_ATTR_SHR_BATCHED = 'shr.batched';\nexport const SPAN_ATTR_SHR_FACTORY_DELAY = 'shr.factory.delayed';\nexport const SPAN_ATTR_REQUESTS = 'requests';\nexport const SPAN_ATTR_STREAMING = 'streaming';\nexport const SEISMIC_LEVEL = 'seismic.level';\nexport const SPAN_LEVEL_FINE = 100;\n\nexport const SPAN_EVENT_SHR_FACTORY_SEND = 'shr.factory.send';\nexport const SPAN_EVENT_SHR_FACTORY_ENQUEUE = 'shr.factory.enqueue';\nexport const SPAN_EVENT_SHR_ENQUEUE = 'shr.batch.enqueue';\n\nexport const X_E_SIGNATURE_REQUIRED_HEADER = 'x-e-signature-required';\nexport const X_TRANSACTION_ID_HEADER = 'x-transaction-id';\nexport const SN_HTTP_REQUEST_E_SIGNATURE_REQUIRED_EVENT = 'SN_HTTP_REQUEST_E_SIGNATURE_REQUIRED_EVENT';\nexport const ERR_E_SIGNATURE_REQUIRED = 'ERR_E_SIGNATURE_REQUIRED';\nexport const ERR_E_SIGNATURE_VALIDATION_FAILED = 'ERR_E_SIGNATURE_VALIDATION_FAILED';\n\n// E-signature error messages\nexport const ERR_E_SIGNATURE_VALIDATION_FAILED_MESSAGE = 'E-Signature validation failed: Missing transaction ID';\nexport const ERR_E_SIGNATURE_REQUIRED_MESSAGE = 'E-Signature required';\n","import {\n\tDEFAULT_BATCH_ENCODE_REQUEST_BODIES,\n\tDEFAULT_BATCH_ENCODE_RESPONSE_BODIES,\n\tDEFAULT_BATCH_HTTP_REQUEST_DATA_BROKER_URLS,\n\tDEFAULT_BATCH_INTERVAL,\n\tDEFAULT_BATCH_MAX,\n\tDEFAULT_BATCH_METHOD,\n\tDEFAULT_BATCH_SINGLE_REQUEST,\n\tDEFAULT_BATCH_URL,\n\tDEFAULT_BATCH_USE_DATA_BROKER_SINGLE_REQUEST_STRATEGY,\n\tDEFAULT_BATCH_USE_STREAMING\n} from './defaults';\nimport {createBatchId, shouldStreamBatch, toGlideBatchingOptionsWithDefaults} from './utils';\nimport {attachEmbeddableBaseUrl} from './utils/embeddableBaseUrl';\nimport {isMultipartMixedResponse, transformData} from '../utils';\nimport {default as enqueueItem} from '../utils/enqueue';\nimport invariant from 'invariant';\nimport {forEach, isEmpty, reduce, toUpper} from 'lodash';\nimport {\n\tBatchRestRequestClientOptionEncodeRequestBodies,\n\tBatchRestRequestClientOptionEncodeResponseBodies,\n\tBatchRestRequestOptions,\n\tNOW_UX_INTERACTION_ID_NAME,\n} from './constants';\nimport {createStreamingBatchError} from '../SnHttpError';\nimport createBatchStreamingResponseHandler from './batchStreamingResponseHandler';\nimport {\n\tHEADER_SPAN_DOCUMENT_TRACE_PARENT,\n\tHEADER_SPAN_TRACE_PARENT, SEISMIC_LEVEL, SPAN_ATTR_REQUESTS, SPAN_ATTR_SHR_BATCHED, SPAN_ATTR_STREAMING,\n\tSPAN_EVENT_SHR_ENQUEUE,\n\tSPAN_FOR_SHR_BATCH,\n\tSPAN_KIND_CLIENT,\n\tSPAN_LEVEL_FINE,\n\tTAG_FOR_SHR\n} from '../constants';\n\nimport * as uiAnalyticsConsumer from '@servicenow/ui-analytics-consumer';\nconst {\n\ttracer,\n\tcreateTraceParentHeader\n} = uiAnalyticsConsumer;\n\nfunction createHttpRequestBatcher({\n\tbatchUrl = DEFAULT_BATCH_URL,\n\tbatchMethod = DEFAULT_BATCH_METHOD,\n\tbatchMax = DEFAULT_BATCH_MAX,\n\tbatchInterval = DEFAULT_BATCH_INTERVAL,\n\tuseStreaming = DEFAULT_BATCH_USE_STREAMING,\n\thttpRequestDataBrokerUrls = DEFAULT_BATCH_HTTP_REQUEST_DATA_BROKER_URLS,\n\tuseDataBrokerSingleRequestStrategy = DEFAULT_BATCH_USE_DATA_BROKER_SINGLE_REQUEST_STRATEGY,\n\tbatchSingleRequest = DEFAULT_BATCH_SINGLE_REQUEST,\n\t[BatchRestRequestClientOptionEncodeRequestBodies]: encodeRequestBodies = DEFAULT_BATCH_ENCODE_REQUEST_BODIES,\n\t[BatchRestRequestClientOptionEncodeResponseBodies]: encodeResponsesBodies = DEFAULT_BATCH_ENCODE_RESPONSE_BODIES,\n\tsendRequest\n} = {}) {\n\n\tinvariant(sendRequest, 'createHttpRequestBatcher: options must contain \\'sendRequest\\' function.');\n\n\tconst batchingQueue = [];\n\tconst batchItemConfigMap = new Map();\n\n\tfunction enqueue(batchItem) {\n\t\tconst {config: {priority, operation}} = batchItem;\n\t\tenqueueItem(batchingQueue, batchItem, priority, operation);\n\n\t\tif (batchingQueue.length === 1)\n\t\t\tscheduleProcessQueue();\n\n\t\tif (batchingQueue.length === batchMax)\n\t\t\tprocessQueue();\n\n\t}\n\n\tfunction enqueueRequest(url, method, options) {\n\t\tconst requestId = createBatchId();\n\t\tlet deferredResolve, deferredReject;\n\t\tconst promise = new Promise((resolve, reject) => {\n\t\t\tdeferredResolve = resolve;\n\t\t\tdeferredReject = reject;\n\t\t});\n\n\t\tconst {\n\t\t\tdata,\n\t\t\tparams,\n\t\t\theaders = {},\n\t\t\tpriority = 'high',\n\t\t\toperation = 'push',\n\t\t\tencodeRequestBody = encodeRequestBodies,\n\t\t\tencodeResponseBody = encodeResponsesBodies,\n\t\t\tspan = null\n\t\t} = options;\n\n\t\tif (span && span.isRecording()) {\n\t\t\theaders[HEADER_SPAN_TRACE_PARENT] = createTraceParentHeader(span.id, span.traceId);\n\t\t\theaders[HEADER_SPAN_DOCUMENT_TRACE_PARENT] = span.documentTraceParent;\n\t\t\tspan.addEvent(SPAN_EVENT_SHR_ENQUEUE);\n\t\t}\n\n\t\tconst batchItem = {\n\t\t\trequestId,\n\t\t\tconfig: {\n\t\t\t\tpriority,\n\t\t\t\toperation\n\t\t\t},\n\t\t\trequest: {\n\t\t\t\tid: requestId,\n\t\t\t\theaders: createHeaders(headers),\n\t\t\t\turl,\n\t\t\t\tmethod: toUpper(options.method || method),\n\t\t\t\t[BatchRestRequestOptions]: toGlideBatchingOptionsWithDefaults({\n\t\t\t\t\tencodeRequestBody,\n\t\t\t\t\tencodeResponseBody\n\t\t\t\t}),\n\t\t\t\t...data && {body: data},\n\t\t\t\t...params && {params}\n\t\t\t},\n\t\t\tdeferredReject,\n\t\t\tdeferredResolve,\n\t\t\tspan\n\t\t};\n\t\tbatchItem.config.uxrInteractionId = headers?.[NOW_UX_INTERACTION_ID_NAME] ?? '';\n\t\tenqueue(batchItem);\n\n\t\treturn promise;\n\t}\n\n\tfunction batchErrorHandler(error) {\n\t\tconst response = error.response || {};\n\t\tconst config = error.config || {};\n\t\tconst data = transformData(config.data || {});\n\n\t\tforEach(data.rest_requests, req => {\n\t\t\tconst {id} = req;\n\t\t\tif (id === undefined || !batchItemConfigMap.has(id))\n\t\t\t\treturn;\n\n\t\t\tconst {deferredReject} = batchItemConfigMap.get(id);\n\t\t\tdeferredReject({\n\t\t\t\t...error,\n\t\t\t\tresponse: {\n\t\t\t\t\theaders: response.headers,\n\t\t\t\t\tdata: response.data,\n\t\t\t\t\tstatus: response.status,\n\t\t\t\t\tstatusText: response.statusText\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tbatchItemConfigMap.delete(id);\n\t\t});\n\t}\n\n\tfunction batchSuccessHandler(response) {\n\t\tconst {\n\t\t\tdata = {},\n\t\t\tconfig = {}\n\t\t} = response;\n\n\t\t//When multipart batch streaming is enabled we should not have a response!\n\t\tif (isMultipartMixedResponse(response) && !isEmpty(data))\n\t\t\tthrow createStreamingBatchError(response, config);\n\n\t\tconst {\n\t\t\tserviced_requests = [],\n\t\t\tunserviced_requests = [],\n\t\t} = data;\n\n\t\t// Handle Serviced Requests\n\t\tforEach(serviced_requests, resp => handleBatchItem(config, resp));\n\n\t\thandleUnservicedRequests(unserviced_requests);\n\t}\n\n\tfunction handleUnservicedRequests(unservicedRequests) {\n\t\tforEach(unservicedRequests, id => {\n\t\t\tenqueue(batchItemConfigMap.get(id));\n\t\t});\n\t}\n\n\tfunction handleBatchItem(config, {id, ...batchItemResponse}) {\n\t\tif (id === undefined || !batchItemConfigMap.has(id))\n\t\t\treturn;\n\n\t\tconst {deferredResolve, deferredReject} = batchItemConfigMap.get(id);\n\n\t\tif (isSuccessStatus(batchItemResponse.status)) {\n\t\t\tdeferredResolve(batchItemResponse);\n\t\t} else {\n\t\t\tdeferredReject({\n\t\t\t\tconfig,\n\t\t\t\tresponse: batchItemResponse\n\t\t\t});\n\t\t}\n\n\t\tbatchItemConfigMap.delete(id);\n\t}\n\n\tfunction processQueue() {\n\t\tconst batchId = createBatchId();\n\t\tconst rest_requests = [];\n\t\tlet lastPriority;\n\t\t// Finding the majority uxrInteractionId using moore's voting algorithm\n\t\tlet candidateUxrInteractionId = '';\n\t\tlet count = 0;\n\n\t\tif (batchingQueue.length === 1 && !batchSingleRequest) {\n\t\t\tconst item = batchingQueue.shift();\n\t\t\tconst {url, method} = item.request;\n\t\t\titem.span?.setAttribute(SPAN_ATTR_SHR_BATCHED, false);\n\t\t\tconst {deferredResolve, deferredReject, ...rest} = batchItemToRawRequest(item);\n\t\t\tsendRequest(url, method, {...rest, batch: false, priority: 'high', span: item.span}).then(deferredResolve).catch(deferredReject);\n\t\t\treturn;\n\t\t}\n\n\t\tlet batchSpan = tracer.startSpan(SPAN_FOR_SHR_BATCH, {\n\t\t\tattributes:{\n\t\t\t\ttagName: TAG_FOR_SHR,\n\t\t\t\tcomponentId: `batch-${batchId}`,\n\t\t\t\tkind: SPAN_KIND_CLIENT,\n\t\t\t\t[SEISMIC_LEVEL]: SPAN_LEVEL_FINE,\n\t\t\t\trequests: [],\n\t\t\t},\n\t\t\tkind: SPAN_KIND_CLIENT,\n\t\t\troot: true // we want to track batch span separately\n\t\t});\n\n\t\tif (!batchSpan.isRecording())\n\t\t\tbatchSpan = null;\n\n\t\tconst batchLink = !batchSpan ? null : {\n\t\t\tcontext: {\n\t\t\t\tspanId: batchSpan.id,\n\t\t\t\ttraceId: batchSpan.traceId\n\t\t\t},\n\t\t\tattributes: {\n\t\t\t\t'link.type': batchSpan.name\n\t\t\t}\n\t\t};\n\t\tconst batchSpanRequests = [];\n\t\twhile (batchingQueue.length && (!lastPriority || lastPriority === batchingQueue[0].config.priority)) {\n\t\t\tconst item = batchingQueue.shift();\n\t\t\titem.span?.setAttribute(SPAN_ATTR_SHR_BATCHED, true);\n\t\t\tif (batchSpan) {\n\t\t\t\tif (item.span) {\n\t\t\t\t\tconst link = {\n\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\ttraceId: item.span.traceId,\n\t\t\t\t\t\t\tspanId: item.span.id\n\t\t\t\t\t\t},\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t'link.type': item.span.name\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tbatchSpan.addLink(link);\n\t\t\t\t\titem.span.addLink(batchLink);\n\t\t\t\t}\n\t\t\t\tbatchSpanRequests.push(item.requestId);\n\t\t\t}\n\n\t\t\trest_requests.push(item.request);\n\t\t\tbatchItemConfigMap.set(item.requestId, item);\n\t\t\tlastPriority = item.config.priority;\n\t\t\tconst {uxrInteractionId} = item.config;\n\n\t\t\tif (candidateUxrInteractionId === uxrInteractionId) {\n\t\t\t\tcount += 1;\n\t\t\t} else if (count === 0) {\n\t\t\t\tcandidateUxrInteractionId = uxrInteractionId;\n\t\t\t\tcount = 1;\n\t\t\t} else {\n\t\t\t\tcount -= 1;\n\t\t\t}\n\t\t}\n\n\t\tbatchSpan?.setAttribute(SPAN_ATTR_REQUESTS, batchSpanRequests.join(','));\n\t\tconst batchRequest = {\n\t\t\tbatch_request_id: batchId,\n\t\t\tenforce_order: false,\n\t\t\trest_requests\n\t\t};\n\t\tconst config = {url: attachEmbeddableBaseUrl(batchUrl), method: batchMethod, data: batchRequest, batch: true, span: batchSpan};\n\t\tconst batchStreamingResponseHandler = getBatchStreamingResponseHandler(config, batchId);\n\t\tconst isStreaming = !!batchStreamingResponseHandler;\n\t\tbatchSpan?.setAttribute(SPAN_ATTR_STREAMING, isStreaming);\n\n\t\t//Update config with multipartConfig\n\t\tconfig.multipartConfig = batchStreamingResponseHandler?.multipartConfig;\n\n\t\tconst batchHeaders = {\n\t\t\t[NOW_UX_INTERACTION_ID_NAME]: candidateUxrInteractionId\n\t\t};\n\n\t\tsendRequest(config.url, config.method, {\n\t\t\tbatch: config.batch,\n\t\t\tdata: config.data,\n\t\t\tmultipartConfig: config.multipartConfig,\n\t\t\theaders: batchHeaders,\n\t\t\tspan:batchSpan\n\t\t})\n\t\t\t.then(batchStreamingResponseHandler ? () => { } : batchSuccessHandler)\n\t\t\t.catch(e => {\n\t\t\t\tbatchSpan?.recordException(e);\n\t\t\t\tbatchErrorHandler(e);\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tbatchSpan?.endSpan();\n\t\t\t});\n\n\t\tif (batchingQueue.length)\n\t\t\tprocessQueue();\n\t}\n\n\tfunction getBatchStreamingResponseHandler(config, batchId) {\n\t\tif (shouldStreamBatch(config, {useStreaming, useDataBrokerSingleRequestStrategy, httpRequestDataBrokerUrls})) {\n\t\t\treturn createBatchStreamingResponseHandler(batchId,\n\t\t\t\tbatchItem => handleBatchItem(config, batchItem),\n\t\t\t\tunservicedRequests => handleUnservicedRequests(unservicedRequests),\n\t\t\t\tconfig);\n\t\t}\n\t}\n\n\tfunction scheduleProcessQueue() {\n\t\tsetTimeout(() => {\n\t\t\tif (batchingQueue.length)\n\t\t\t\tprocessQueue();\n\t\t}, batchInterval);\n\t}\n\n\tfunction createHeaders(headers = {}) {\n\t\treturn reduce(headers, (result, value, name) => {\n\t\t\tresult.push({\n\t\t\t\tname,\n\t\t\t\tvalue\n\t\t\t});\n\t\t\treturn result;\n\t\t}, []);\n\t}\n\n\tfunction batchItemToRawRequest(batchItem) {\n\t\tconst {request, config, deferredResolve, deferredReject} = batchItem;\n\t\t// eslint-disable-next-line no-unused-vars\n\t\tconst {id: _id, headers, body, ...rest} = request;\n\t\treturn {\n\t\t\theaders: headers.reduce((result, {name, value}) =>\n\t\t\t\t({...result, [name]: value}), {}),\n\t\t\tdata: body,\n\t\t\tdeferredResolve,\n\t\t\tdeferredReject,\n\t\t\t...config,\n\t\t\t...rest,\n\t\t};\n\t}\n\n\tfunction isSuccessStatus(statusCode) {\n\t\treturn (statusCode >= 200 && statusCode < 300);\n\t}\n\n\treturn {\n\t\tget currentQueueSize() {\n\t\t\treturn batchingQueue.length;\n\t\t},\n\t\tget batchInterval() {\n\t\t\treturn batchInterval;\n\t\t},\n\t\tenqueueRequest\n\t};\n}\n\nexport default createHttpRequestBatcher;\n","// djb2 hash function\nexport default function hash(str) {\n\tlet hash = 5381; // prime number helps spread hash values, non prime numbers can cause collisions\n\tfor (let i = 0; i < str.length; i++)\n\t\thash = (hash * 33) ^ str.charCodeAt(i);\n\n\treturn hash >>> 0;\n}\n","export const REQUEST_HEADER_NAME = 'X-SN-Batch-Item-UID';\nexport const BATCH_HEADER_NAME = 'X-SN-Batch-Item-UIDs';\nexport const HEADER_VALUE_UNKNOWN = 'UNK';\nexport const UNKNOWN_VALUE = 'UNK';\n","import hash from '../hash';\nimport {UNKNOWN_VALUE} from '../constants';\n\nexport default {\n\turlMatch: '/api/now/uxf/databroker/exec',\n\tcanHandle(request) {\n\t\treturn request.url.startsWith(this.urlMatch) && Array.isArray(request.body) && request.body.length > 0;\n\t},\n\tgenerateId(request) {\n\t\tconst parts = request.body.map(d => `${d.type ?? UNKNOWN_VALUE}:${d.definitionSysId ?? UNKNOWN_VALUE}`).join(',');\n\t\treturn `DB${hash(parts)}`;\n\t}\n};\n","import hash from '../hash';\n\nexport default {\n\tcanHandle() {\n\t\treturn true;\n\t},\n\tgenerateId(request) {\n\t\tconst path = request.url.split('?')[0];\n\t\treturn `X${request.method.toUpperCase()}${hash(path)}`;\n\t}\n};\n","import dbHandler from './handlers/data-broker';\nimport defaultHandler from './handlers/default';\nimport gqlHandler from './handlers/gql';\nimport presenceHandler from './handlers/presence';\nimport tableApiHandler from './handlers/table-api';\nimport {REQUEST_HEADER_NAME, BATCH_HEADER_NAME, HEADER_VALUE_UNKNOWN} from './constants';\n\nconst handlers = [\n\tdbHandler,\n\tgqlHandler,\n\tpresenceHandler,\n\ttableApiHandler,\n\tdefaultHandler\n];\n\nexport function getTransactionProcessorIdHeader(request) {\n\tfor (const handler of handlers) {\n\t\tif (handler.canHandle(request))\n\t\t\treturn {name: REQUEST_HEADER_NAME, value: handler.generateId(request)};\n\n\t}\n\treturn {name: REQUEST_HEADER_NAME, value: HEADER_VALUE_UNKNOWN};\n}\n\n\nexport function getBatchTransactionProcessorIdHeader(requests) {\n\tconst headers = requests.map(r => {\n\t\tif(!Array.isArray(r.headers))\n\t\t\treturn null;\n\n\t\tconst idHeader = r.headers.filter(h => h.name === REQUEST_HEADER_NAME);\n\t\treturn idHeader.length ? idHeader[0].value : null;\n\t}).filter(h => h);\n\n\treturn {\n\t\tname: BATCH_HEADER_NAME,\n\t\tvalue: headers.join(',')\n\t};\n}\n\n","import hash from '../hash';\nimport {UNKNOWN_VALUE} from '../constants';\n\nexport default {\n\turlMatch: '/api/now/graphql',\n\tcanHandle(request) {\n\t\treturn request.url.startsWith(this.urlMatch) && Array.isArray(request.body) && request.body.length > 0;\n\t},\n\tgenerateId(request) {\n\t\tconst parts = request.body.map(d => `${d.operationName ?? UNKNOWN_VALUE}`).join(',');\n\t\treturn `GQL${hash(parts)}`;\n\t}\n};\n","export default {\n\turlMatch: '/api/now/presence',\n\tcanHandle(request) {\n\t\treturn request.url.startsWith(this.urlMatch);\n\t},\n\tgenerateId(request) {\n\t\treturn `PRES${request.method}`;\n\t}\n};\n","import hash from '../hash';\n\nexport default {\n\turlMatch: '/api/now/table',\n\tcanHandle(request) {\n\t\treturn request.url.startsWith(this.urlMatch);\n\t},\n\tgenerateId(request) {\n\t\tconst path = request.url.split('?')[0];\n\t\treturn `TB${request.method.toUpperCase()}${hash(path)}`;\n\t}\n};\n","import {map} from 'lodash';\nimport {HTTP_HEADERS, buildUrl} from '../utils';\nimport {\n\tb64EncodeUnicode,\n\ttoGlideBatchingOptionsWithDefaults,\n\tshouldEncodeRequestOrDefault,\n} from './utils';\nimport {\n\tBatchRestRequestOptions,\n\tBatchRestRequestClientOptions,\n\tBatchRestRequestRequestOptions\n} from './constants';\n\nimport {\n\tgetBatchTransactionProcessorIdHeader,\n\tgetTransactionProcessorIdHeader\n} from './modifiers/transaction-processor-uid-header';\n\n/**\n * @method createBatchRequestInterceptor\n * @param {String} userToken\n * @return {function(*)} Interceptor\n */\nfunction createBatchRequestInterceptor(userToken) {\n\treturn config => {\n\t\tif (!config.data || !config.data.batch_request_id)\n\t\t\treturn config;\n\n\t\tconst transformRequest = config.transformRequest[0];\n\t\tconst restRequests = config.data.rest_requests || [];\n\t\tconst {[BatchRestRequestClientOptions]: batchingOptionsClient} = config;\n\n\t\tconst updatedRestRequests = map(restRequests, request => {\n\t\t\tconst {\n\t\t\t\theaders,\n\t\t\t\tbody,\n\t\t\t\turl,\n\t\t\t\tparams,\n\t\t\t\t[BatchRestRequestRequestOptions]: batchingOptionsRequest,\n\t\t\t\t...rest\n\t\t\t} = request;\n\t\t\tconst batchingOptionsToUse = batchingOptionsRequest ? batchingOptionsRequest : batchingOptionsClient;\n\n\t\t\tconst updatedUrl = buildUrl(url, params, config.paramsSerializer);\n\t\t\tconst updatedBody = body && shouldEncodeRequestOrDefault(batchingOptionsToUse) ? b64EncodeUnicode(transformRequest(body)) : body;\n\t\t\tconst idHeader = getTransactionProcessorIdHeader(request);\n\t\t\tconst updatedHeaders = userToken ? [...headers, {\n\t\t\t\tname: HTTP_HEADERS.USER_TOKEN,\n\t\t\t\tvalue: userToken\n\t\t\t}, idHeader] : [...headers, idHeader];\n\n\t\t\treturn {\n\t\t\t\t...rest,\n\t\t\t\turl: updatedUrl,\n\t\t\t\theaders: updatedHeaders,\n\t\t\t\tbody: updatedBody,\n\t\t\t\t[BatchRestRequestOptions]: toGlideBatchingOptionsWithDefaults(batchingOptionsToUse),\n\t\t\t};\n\t\t});\n\t\tconst {name: batchTPHName, value: batchTPHValue} = getBatchTransactionProcessorIdHeader(updatedRestRequests);\n\t\tconst batchIdHeader = {[batchTPHName]: batchTPHValue};\n\t\treturn {\n\t\t\t...config,\n\t\t\theaders: config.headers ? {...config.headers, ...batchIdHeader} : batchIdHeader,\n\t\t\tdata: {\n\t\t\t\t...config.data,\n\t\t\t\trest_requests: updatedRestRequests\n\t\t\t}\n\t\t};\n\t};\n}\n\nexport default createBatchRequestInterceptor;\n","/**\n * See:\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding\n * The Unicode Problem: Solution #1\n *\n * @param str\n * @return {string}\n */\nexport default function b64EncodeUnicode(str) {\n\treturn btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,\n\t\tfunction toSolidBytes(match, p1) {\n\t\t\treturn String.fromCharCode(`0x${  p1}`);\n\t\t}));\n}\n","import {createBatchResponseFailureHandler, createBatchResponseSuccessHandler} from './batch';\nimport {isBatchConfig} from './utils';\n\nconst batchResponseFailureHandler = createBatchResponseFailureHandler();\nconst batchResponseSuccessHandler = createBatchResponseSuccessHandler();\n\nexport function successHandler(response) {\n\tconst {config} = response || {};\n\tif (isBatchConfig(config))\n\t\treturn batchResponseSuccessHandler(response);\n\n\treturn response;\n}\n\nexport function failureHandler(error) {\n\tconst {config} = error || {};\n\tif (isBatchConfig(config))\n\t\treturn batchResponseFailureHandler(error);\n\n\treturn Promise.reject(error);\n}","import {map} from 'lodash';\nimport {mergeHeadersToServicedRequest, transformServicedRequest} from './utils';\nimport {transformData} from '../utils';\n\n/**\n * @method createBatchResponseSuccessHandler\n * @return {function(*)} Interceptor\n */\nexport function createBatchResponseSuccessHandler() {\n\treturn (response = {}) => {\n\t\tconst {config = {}, data = {}, headers} = response;\n\n\t\tif (config.batch !== true)\n\t\t\treturn response;\n\n\t\tconst {serviced_requests = []} = data;\n\t\tconst updatedServicedRequests = map(\n\t\t\tserviced_requests,\n\t\t\ttransformServicedRequest\n\t\t);\n\n\t\tconst mergedGlobalHeadersResponse = mergeGlobalHeadersToServicedRequests(\n\t\t\tupdatedServicedRequests,\n\t\t\theaders\n\t\t);\n\t\treturn {\n\t\t\t...response,\n\t\t\tdata: {\n\t\t\t\t...data,\n\t\t\t\tserviced_requests: mergedGlobalHeadersResponse\n\t\t\t}\n\t\t};\n\t};\n}\n\nfunction mergeGlobalHeadersToServicedRequests(servicedRequests = [], globalHeaders) {\n\treturn map(servicedRequests, servicedRequest => mergeHeadersToServicedRequest(servicedRequest, globalHeaders));\n}\n\n/**\n * @method createBatchResponseFailureHandler\n * @return {function(*)} Interceptor\n */\nexport function createBatchResponseFailureHandler() {\n\treturn (error = {}) => {\n\t\tconst {config, response, message} = error;\n\n\t\tif (config && config.batch === true) {\n\t\t\treturn Promise.reject({\n\t\t\t\t...error,\n\t\t\t\tconfig: {\n\t\t\t\t\t...config,\n\t\t\t\t\tdata: transformData(config.data)\n\t\t\t\t},\n\t\t\t\t...response && {\n\t\t\t\t\t...response,\n\t\t\t\t\tdata: transformData(response.data)\n\t\t\t\t},\n\t\t\t\tmessage\n\t\t\t});\n\t\t}\n\n\t\treturn Promise.reject(error);\n\t};\n}\n","import {\n\tX_E_SIGNATURE_REQUIRED_HEADER,\n\tX_TRANSACTION_ID_HEADER,\n\tERR_E_SIGNATURE_REQUIRED,\n\tERR_E_SIGNATURE_VALIDATION_FAILED,\n\tSN_HTTP_REQUEST_E_SIGNATURE_REQUIRED_EVENT,\n\tERR_E_SIGNATURE_VALIDATION_FAILED_MESSAGE,\n\tERR_E_SIGNATURE_REQUIRED_MESSAGE\n} from './constants';\n\n/**\n * Checks if e-signature is required based on the response headers.\n * If e-signature is required, it creates an error with the appropriate code and response.\n *\n * @param {Object} params - The HTTP response object\n * @param {Object} params.response - The HTTP response object\n * @param {Object} params.request - The original HTTP request object\n * @returns {Promise} - Returns a rejected Promise with the error if e-signature is required, otherwise a resolved Promise with null\n */\nexport const checkESignatureRequired = async ({response, request}) => {\n\tconst eSignatureRequired = response?.headers?.get?.(X_E_SIGNATURE_REQUIRED_HEADER);\n\tif (eSignatureRequired) {\n\t\tconst transactionId = response.headers.get(X_TRANSACTION_ID_HEADER);\n\n\t\t// Validate transactionId is present\n\t\tif (!transactionId) {\n\t\t\tconst validationError = new Error(ERR_E_SIGNATURE_VALIDATION_FAILED_MESSAGE);\n\t\t\tvalidationError.code = ERR_E_SIGNATURE_VALIDATION_FAILED;\n\t\t\tvalidationError.response = response;\n\t\t\tvalidationError.request = request ? {\n\t\t\t\turl: request.url,\n\t\t\t\tmethod: request.method,\n\t\t\t\theaders: request.headers\n\t\t\t} : null;\n\t\t\treturn Promise.reject(validationError);\n\t\t}\n\n\t\tconst error = new Error(ERR_E_SIGNATURE_REQUIRED_MESSAGE);\n\t\terror.code = ERR_E_SIGNATURE_REQUIRED;\n\t\terror.response = {\n\t\t\t...response,\n\t\t\ttransactionId\n\t\t};\n\t\terror.request = request ? {\n\t\t\turl: request.url,\n\t\t\tmethod: request.method,\n\t\t\theaders: request.headers,\n\t\t\tbody: request.body\n\t\t} : null;\n\t\treturn Promise.reject(error);\n\t}\n\treturn Promise.resolve(null);\n};\n\n/**\n * Dispatches an e-signature required custom event for UXF to handle\n * UXF will listen to this event and invokes the resolve/reject based on the replay transaction response\n * @param {Object} params - The e-signature error object\n * @param {Object} params.error - The e-signature error object\n * @param {Function} params.resolve - The resolve function to pass to event handlers\n * @param {Function} params.reject - The reject function to pass to event handlers\n * @returns {boolean} - Returns true if the event was dispatched, false otherwise\n */\nexport const dispatchESignatureEvent = ({error, resolve, reject}) => {\n\tif (error && error.code === ERR_E_SIGNATURE_REQUIRED) {\n\t\tdocument.dispatchEvent(new CustomEvent(SN_HTTP_REQUEST_E_SIGNATURE_REQUIRED_EVENT, {\n\t\t\tdetail: {\n\t\t\t\ttransactionId: error.response.transactionId,\n\t\t\t\tresolve,\n\t\t\t\treject,\n\t\t\t\t// Add request and response objects for better debugging\n\t\t\t\trequest: error.request,\n\t\t\t\tresponse: error.response\n\t\t\t}\n\t\t}));\n\t\treturn true;\n\t}\n\treturn false;\n};\n","import {cloneDeep, get, isEmpty, isArray} from 'lodash';\nimport {createBatchRequestInterceptor} from './batch';\nimport {createRequestFailedError} from './SnHttpError';\nimport {\n\tisFormData,\n\tparseBody,\n\tcompressDataIfNeeded,\n\tmergeRequestHeaders,\n\tcreateRequest,\n\tHTTP_HEADERS,\n\tresolveUserToken,\n\tshouldRetryUnauthorizedRequest,\n\tcreateExternalResponse,\n\tcreateRequestXhr,\n\tshouldUseXhr,\n\tupdateAcceptHeaderForMultipart,\n\tshouldStringifyRequestBody,\n\tisWebWorker\n} from './utils';\nimport {xhrWithCancelTimeout} from './request/xhr';\nimport {fetchWithCancelTimeout} from './request/fetch';\nimport {failureHandler, successHandler} from './snHttpClientHandlers';\nimport {HEADER_SPAN_DOCUMENT_TRACE_PARENT, HEADER_SPAN_TRACE_PARENT} from './constants';\nimport {checkESignatureRequired} from './eSignatureHandlers';\nimport pkg from '../package.json';\n\nimport * as uiAnalyticsConsumer from '@servicenow/ui-analytics-consumer';\nconst {createTraceParentHeader} = uiAnalyticsConsumer;\n\nexport const createHttpClient = (httpClientOptions = {}) => {\n\tconst context = {\n\t\tdefaultHeaders: {\n\t\t\t[HTTP_HEADERS.CONTENT_TYPE]: 'application/json',\n\t\t\t[HTTP_HEADERS.HTTP_CLIENT]: `sn-http-request/${pkg.version}`\n\t\t},\n\t\ttransformRequest: [JSON.stringify],\n\t\t...httpClientOptions\n\t};\n\n\t/**\n\t *\n\t * @param {*} config\n\t * @param {String} config.url - URL to fetch from\n\t * @param {String} config.method - HTTP method to use (default: GET)\n\t * @param {String} config.credentials - same-origin\n\t * @param {Object} config.headers - headers to set on request\n\t * @param {Object} config.data - request body to send\n\t * @returns\n\t */\n\tconst request = async config => {\n\t\tconst resolvedConfig = onRequest({...context, ...config});\n\n\t\t// xhr\n\t\tif (shouldUseXhr(resolvedConfig)) {\n\t\t\tconst xhrRequest = createRequestXhr(resolvedConfig);\n\t\t\t// only response.ok === true will be returned from xhrWithCancelTimeout\n\t\t\t// otherwise the execution path changes because\n\t\t\t// xhr uses event listeners & errors handled differently\n\t\t\tconst response = await xhrWithCancelTimeout(xhrRequest, resolvedConfig);\n\t\t\treturn onResponse(xhrRequest, response, resolvedConfig);\n\t\t}\n\n\t\t// fetch\n\t\tconst request = createRequest(resolvedConfig);\n\t\tconst response = await fetchWithCancelTimeout(request, resolvedConfig);\n\n\t\treturn onResponse(request, response, resolvedConfig)\n\t\t\t.then(successHandler);\n\t};\n\n\tconst onResponse = async (request, response, config) => {\n\t\tconst eSignatureResult = await checkESignatureRequired({response, request});\n\t\tif (eSignatureResult)\n\t\t\treturn eSignatureResult;\n\n\t\t// response.ok = 200-299\n\t\tif (!response.ok) {\n\t\t\treturn onResponseError(request, response, config)\n\t\t\t\t.catch(failureHandler);\n\t\t}\n\n\t\tif (response.status === 204)\n\t\t\treturn createExternalResponse(response, config, request);\n\t\t// glideAjax historicallly sets dataType to xml edge situation\n\t\t// https://code.devsnc.com/dev/glide/blob/master/glide-ng/src/main/plugins/com.glide.ui.ng/ui.html/scripts/sn/common/clientScript/glideAjax.js#L101\n\t\tif (config.dataType === 'xml')\n\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\tresponse.data = await parseBody({responseType: 'text'}, response);\n\t\telse\n\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\tresponse.data = await parseBody(config, response, request);\n\n\t\treturn createExternalResponse(response, config, request);\n\t};\n\n\tconst onRequest = config => {\n\t\tconst userToken = resolveUserToken(config, context);\n\t\tconst headers = mergeRequestHeaders(config, context);\n\n\t\t/**\n\t\t * For fetch to compute boundary parameter for FormData\n\t\t * Content-Type cannot exist on the headers object\n\t\t * https://github.com/github/fetch/issues/505#issuecomment-293064470\n\t\t */\n\t\tif (isFormData(config.data))\n\t\t\tdelete headers[HTTP_HEADERS.CONTENT_TYPE];\n\n\t\tif (!isEmpty(userToken))\n\t\t\theaders[HTTP_HEADERS.USER_TOKEN] = userToken;\n\n\t\tif (!isEmpty(config.auth)) {\n\t\t\tconst username = config.auth.username || '';\n\t\t\tconst password = config.auth.password ? decodeURI(encodeURIComponent(config.auth.password)) : '';\n\t\t\theaders.set(HTTP_HEADERS.AUTHORIZATION, `Basic ${btoa(`${username}:${password}`)}`);\n\t\t}\n\n\t\tif (config.span && config.span.isRecording()) {\n\t\t\theaders[HEADER_SPAN_TRACE_PARENT] = createTraceParentHeader(config.span.id, config.span.traceId);\n\t\t\theaders[HEADER_SPAN_DOCUMENT_TRACE_PARENT] = config.span.documentTraceParent;\n\t\t}\n\n\t\tconst transactionSource = isWebWorker() ? '' : get(window, 'transaction_source');\n\t\tconst maxNowUxInteractionLength = 1000;\n\t\tif (!isEmpty(transactionSource))\n\t\t\theaders[HTTP_HEADERS.TRANSACTION_SOURCE] = transactionSource.substring(0, maxNowUxInteractionLength);\n\n\t\t//Update accept header if multipartConsumer is defined\n\t\tupdateAcceptHeaderForMultipart(headers, config);\n\n\t\tlet resolvedConfig = createBatchRequestInterceptor(userToken)({\n\t\t\t...config,\n\t\t\theaders,\n\t\t});\n\t\tresolvedConfig = compressDataIfNeeded({\n\t\t\t...resolvedConfig,\n\t\t\tdata: shouldStringifyRequestBody(headers, resolvedConfig.data) ? JSON.stringify(resolvedConfig.data): resolvedConfig.data\n\t\t}, context);\n\n\t\treturn resolvedConfig;\n\t};\n\n\tconst retryRequestWithTokenResponse = (response, config) => {\n\t\tconst newToken = response.headers.get(HTTP_HEADERS.USER_TOKEN_RESPONSE);\n\t\tcontext.currentUserToken = newToken;\n\t\tglobalThis.g_ck = newToken;\n\t\tconst newConfig = cloneDeep(config);\n\t\tnewConfig.headers[HTTP_HEADERS.USER_TOKEN] = newToken;\n\n\t\treturn request(newConfig);\n\t};\n\n\tconst onResponseError = async (request, response, config) => {\n\t\tif (shouldRetryUnauthorizedRequest(response, config, context))\n\t\t\treturn retryRequestWithTokenResponse(response, config);\n\n\t\treturn Promise.reject(await createRequestFailedError(request, response, config));\n\t};\n\n\treturn {\n\t\tsetXsrfToken(token) {\n\t\t\tcontext.currentUserToken = token;\n\t\t},\n\t\tsetTransactionSource(source) {\n\t\t\tcontext.transactionSource = source;\n\t\t},\n\t\tsetDefaultHeaders(headers) {\n\t\t\tcontext.defaultHeaders = headers;\n\t\t},\n\t\tsetHttpRequestCompressionThreshold(threshold) {\n\t\t\tif (!Number.isInteger(threshold) || threshold <= 0)\n\t\t\t\treturn;\n\n\t\t\tcontext.compressionThreshold = threshold;\n\t\t},\n\t\tgetHttpRequestCompressionThreshold: () => context.compressionThreshold,\n\t\tsetHttpRequestCompressionLevel(level) {\n\t\t\tif (!Number.isInteger(level) || level < 0 || level > 9)\n\t\t\t\treturn;\n\n\t\t\tcontext.compressionLevel = level;\n\t\t},\n\t\tgetHttpRequestCompressionLevel: () => context.compressionLevel,\n\t\tsetHttpRequestCompressionMemoryLevel(level) {\n\t\t\tif (!Number.isInteger(level) || level < 0 || level > 12)\n\t\t\t\treturn;\n\n\t\t\tcontext.compressionMemoryLevel = level;\n\t\t},\n\t\tgetHttpRequestCompressionMemoryLevel: () => context.compressionMemoryLevel,\n\t\tsetHttpRequestCompressionExcludeUrls(urls) {\n\t\t\tif (!isArray(urls) || isEmpty(urls))\n\t\t\t\treturn;\n\n\t\t\tcontext.httpRequestCompressionExcludeUrls = urls.map(url => url.toLowerCase());\n\t\t},\n\t\trequest,\n\t};\n};\n\nexport default createHttpClient();\n","import {isUndefined, isEmpty} from 'lodash';\nimport buildFullPath from './buildFullPath';\nimport buildUrl from './buildUrl';\nimport {getEmbeddableBaseUrl} from '../batch/utils/embeddableBaseUrl';\n\nexport default function createRequestXhr(config) {\n\tconst fullPath = buildFullPath(config.baseURL, config.url);\n\tconst url = buildUrl(fullPath, config.params, config.paramsSerializer);\n\tconst xhrRequest = new XMLHttpRequest();\n\tconst method = !isUndefined(config.method) ? config.method : 'POST';\n\n\txhrRequest.open(method, url);\n\n\tif (!isEmpty(config.headers)) {\n\t\tObject.keys(config.headers).forEach(k =>\n\t\t\txhrRequest.setRequestHeader(k, Array.isArray(config.headers[k]) ? config.headers[k].join(',') : config.headers[k]));\n\t}\n\n\tconst embeddableBaseUrl\t= getEmbeddableBaseUrl();\n\tif (!isUndefined(config.withCredentials) || embeddableBaseUrl)\n\t\txhrRequest.withCredentials = config.withCredentials || !!embeddableBaseUrl;\n\treturn xhrRequest;\n}","import {isUndefined} from 'lodash';\nimport SnHttpError, {\n\tECONNABORTED,\n\tETIMEDOUT,\n\tcreateXhrRequestFailedError\n} from '../SnHttpError';\nimport {\n\txhrHeadersToHeaders,\n} from '../utils';\n\nexport async function xhrWithCancelTimeout(xhrRequest, config) {\n\treturn new Promise((resolve, reject) => {\n\t\tlet cancelListener;\n\t\tlet done = false;\n\t\tlet isTimeout = false;\n\t\tconst {signal} = config;\n\n\t\tif (signal) {\n\t\t\tconst onCanceled = () => {\n\t\t\t\tif (!isUndefined(cancelListener))\n\t\t\t\t\tsignal.removeEventListener('abort', cancelListener);\n\n\t\t\t\tif (!done)\n\t\t\t\t\txhrRequest.abort();\n\t\t\t};\n\n\t\t\tif (signal.aborted)\n\t\t\t\tonCanceled();\n\t\t\telse\n\t\t\t\tcancelListener = signal.addEventListener('abort', onCanceled);\n\t\t}\n\n\t\tlet timer;\n\t\tif (config.timeout > 0) {\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tisTimeout = true;\n\t\t\t\txhrRequest.abort();\n\t\t\t}, config.timeout);\n\t\t}\n\n\t\txhrRequest.upload.addEventListener('progress', e => {\n\t\t\tif (config.onUploadProgress)\n\t\t\t\tconfig.onUploadProgress(e);\n\t\t});\n\n\t\txhrRequest.addEventListener('progress', e => {\n\t\t\tif (config.onDownloadProgress)\n\t\t\t\tconfig.onDownloadProgress(e);\n\t\t});\n\n\t\t// request finished event\n\t\txhrRequest.addEventListener('load', () => {\n\t\t\tdispose();\n\t\t\tif (xhrRequest.readyState === 4 && xhrRequest.status >= 200 && xhrRequest.status < 300) {\n\t\t\t\tdone = true;\n\t\t\t\tresolve(createResponse(xhrRequest, true));\n\t\t\t} else {\n\t\t\t\treject(createXhrRequestFailedError(xhrRequest, createResponse(xhrRequest, false), config));\n\t\t\t}\n\t\t});\n\n\t\txhrRequest.addEventListener('abort', () => {\n\t\t\tdone = true;\n\t\t\tdispose();\n\t\t\tif (isTimeout) {\n\t\t\t\tconst message = config.timeoutErrorMessage\n\t\t\t\t\t? config.timeoutErrorMessage\n\t\t\t\t\t: `timeout of ${config.timeout}ms exceeded`;\n\t\t\t\treject(new SnHttpError(message, ETIMEDOUT, config));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treject(new SnHttpError('Request aborted', ECONNABORTED, config));\n\t\t});\n\n\t\txhrRequest.addEventListener('error', () => {\n\t\t\tdone = true;\n\t\t\tdispose();\n\t\t\treject(createXhrRequestFailedError(xhrRequest, createResponse(xhrRequest, false), config));\n\t\t});\n\n\t\txhrRequest.send(config.data);\n\n\t\tfunction createResponse(_request, ok) {\n\t\t\tfunction transformData(data) {\n\t\t\t\tif (typeof data === 'string') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn JSON.parse(data);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t/* Ignore */\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tok,\n\t\t\t\tstatus: xhrRequest.status,\n\t\t\t\theaders: xhrHeadersToHeaders(xhrRequest.getAllResponseHeaders()),\n\t\t\t\tdata: transformData(xhrRequest.responseText),\n\t\t\t\t/**\n\t\t\t\t * text() is a shim as sn-http-request has a history of\n\t\t\t\t * being a leaky abstraction & there is\n\t\t\t\t * unwindable coupling in glideAjax\n\t\t\t\t * https://code.devsnc.com/dev/glide/blob/master/glide-ng/src/main/plugins/com.glide.ui.ng/ui.html/scripts/sn/common/clientScript/glideAjax.js#L115\n\t\t\t\t */\n\t\t\t\ttext: () => Promise.resolve(xhrRequest.responseText),\n\t\t\t\tjson() {\n\t\t\t\t\tif (xhrRequest.responseType === 'json')\n\t\t\t\t\t\treturn Promise.resolve(xhrRequest.response);\n\n\t\t\t\t\treturn Promise.resolve(transformData(xhrRequest.responseText));\n\t\t\t\t},\n\t\t\t\tblob() {\n\t\t\t\t\tif (xhrRequest.responseType === 'blob')\n\t\t\t\t\t\treturn Promise.resolve(xhrRequest.response);\n\n\t\t\t\t\tconst contentType = this.headers.get('Content-Type') || 'text/plain';\n\t\t\t\t\treturn Promise.resolve(new Blob([xhrRequest.responseText], {type: contentType}));\n\t\t\t\t},\n\t\t\t\tarraybuffer() {\n\t\t\t\t\tif (xhrRequest.responseType === 'arraybuffer')\n\t\t\t\t\t\treturn Promise.resolve(xhrRequest.response);\n\n\t\t\t\t\treturn Promise.reject('Unable to read arraybuffer from xhrRequest');\n\t\t\t\t},\n\t\t\t\tformData() {\n\t\t\t\t\treturn Promise.reject('Unable to read formData from xhrRequest');\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tfunction dispose() {\n\t\t\tif (!isUndefined(timer))\n\t\t\t\tclearTimeout(timer);\n\t\t\tif (signal)\n\t\t\t\tsignal.removeEventListener('abort', cancelListener);\n\t\t}\n\t});\n}","import buildFullPath from './buildFullPath';\nimport buildUrl from './buildUrl';\nimport {isUndefined} from 'lodash';\nimport {getEmbeddableBaseUrl} from '../batch/utils/embeddableBaseUrl';\n\nexport default function createRequest(config) {\n\tconst headers = new Headers(config.headers);\n\n\tconst method = config.method.toUpperCase();\n\tconst {data: body, mode, cache, integrity, redirect, referrer, signal} = config;\n\tconst options = {\n\t\theaders,\n\t\tmethod,\n\t\tmode,\n\t\tcache,\n\t\tintegrity,\n\t\tredirect,\n\t\treferrer,\n\t\tsignal,\n\t\tbody: method !== 'GET' && method !== 'HEAD' ? body : undefined,\n\t};\n\n\tconst embeddableBaseUrl = getEmbeddableBaseUrl();\n\tif (!isUndefined(config.withCredentials) || embeddableBaseUrl)\n\t\toptions.credentials = config.withCredentials || embeddableBaseUrl ? 'include' : 'omit';\n\n\n\tconst fullPath = buildFullPath(config.baseURL, config.url);\n\tconst url = buildUrl(fullPath, config.params, config.paramsSerializer);\n\n\treturn new Request(url, options);\n}","import {isUndefined} from 'lodash';\nimport SnHttpError, {\n\tECONNABORTED,\n\tERR_NETWORK,\n\tETIMEDOUT\n} from '../SnHttpError';\nimport {failureHandler} from '../snHttpClientHandlers';\n\nexport async function fetchWithCancelTimeout(request, config) {\n\tlet cancelListener;\n\tlet done = false;\n\n\tconst abortController = new AbortController();\n\tconst signaledRequest = new Request(request, {signal: abortController.signal});\n\tconst {signal} = config;\n\n\tif (signal) {\n\t\tconst onCanceled = () => {\n\t\t\tif (!isUndefined(cancelListener))\n\t\t\t\tsignal.removeEventListener('abort', cancelListener);\n\n\t\t\tif (!done)\n\t\t\t\tabortController.abort('canceled');\n\t\t};\n\n\t\tif (signal.aborted)\n\t\t\tonCanceled();\n\t\telse\n\t\t\tcancelListener = signal.addEventListener('abort', onCanceled);\n\t}\n\n\tlet timer;\n\tif (config.timeout > 0) {\n\t\ttimer = setTimeout(() => {\n\t\t\tabortController.abort('timeout');\n\t\t}, config.timeout);\n\t}\n\n\tlet response;\n\ttry {\n\t\tresponse = await fetch(signaledRequest);\n\t} catch (error) {\n\t\tconst isAbortError = error.name === 'AbortError';\n\t\tconst isTimeout = isAbortError && abortController.signal.reason === 'timeout';\n\t\tlet snHttpError;\n\t\tif (isTimeout) {\n\t\t\tconst message = config.timeoutErrorMessage\n\t\t\t\t? config.timeoutErrorMessage\n\t\t\t\t: `timeout of ${config.timeout}ms exceeded`;\n\t\t\tsnHttpError = new SnHttpError(message, ETIMEDOUT, config, request);\n\t\t} else if (isAbortError) {\n\t\t\tsnHttpError = new SnHttpError('Request aborted', ECONNABORTED, config, request);\n\t\t} else {\n\t\t\tsnHttpError = new SnHttpError('Network Error', ERR_NETWORK, config, request);\n\t\t}\n\n\t\treturn failureHandler(snHttpError);\n\t} finally {\n\t\tdone = true;\n\n\t\tif (!isUndefined(timer))\n\t\t\tclearTimeout(timer);\n\n\t\tif (signal)\n\t\t\tsignal.removeEventListener('abort', cancelListener);\n\t}\n\n\treturn response;\n}","import {HTTP_HEADERS} from './httpHeaders';\nimport {get} from 'lodash';\n\nexport default function resolveUserToken(config, context) {\n\treturn get(config.headers, HTTP_HEADERS.USER_TOKEN, context.currentUserToken);\n}\n","import {HTTP_HEADERS} from './httpHeaders';\n\nexport default function mergeRequestHeaders(config, context) {\n\treturn {\n\t\t...context.defaultHeaders,\n\t\t...context.transactionSource && {[HTTP_HEADERS.TRANSACTION_SOURCE]: context.transactionSource},\n\t\t...config.headers,\n\t};\n}","import {HTTP_HEADERS} from './httpHeaders';\nimport {isUndefined} from 'lodash';\n\nexport default function shouldRetryUnauthorizedRequest(response, config, context) {\n\tif (response.status !== 401)\n\t\treturn false;\n\n\tconst newToken = response.headers.get(HTTP_HEADERS.USER_TOKEN_RESPONSE);\n\treturn !isUndefined(newToken) && newToken !== context.currentUserToken;\n}","export default function defaultEnqueueRequestPrioritizer() {\n\treturn {priority: 'high', operation: 'push'};\n}\n","import {isWebWorker} from './utils';\n\nconst requestIdleCallbackPollyfill = function (cb) {\n\tvar start = Date.now();\n\treturn setTimeout(() => {\n\t\tcb({\n\t\t\tdidTimeout: false,\n\t\t\ttimeRemaining () {\n\t\t\t\treturn Math.max(0, 50 - (Date.now() - start));\n\t\t\t},\n\t\t});\n\t}, 1);\n};\n\n/**\n* This method queues a function to be called during a browser's idle periods\n* @example\n* requestIdleCallback(() => {})\n*\n* @function requestIdleCallback\n* @param {Function} callback The callback function to execute\n* @return {Object} undefined\n*/\nconst requestIdleCallback = (!isWebWorker() && window.requestIdleCallback) || requestIdleCallbackPollyfill;\n\n/*\nChromium based browsers have a bug in which Iframes and rIC do not work well together.\n\nSee -\n\nhttps://bugs.chromium.org/p/chromium/issues/detail?id=1240307\nhttps://bugs.chromium.org/p/chromium/issues/detail?id=1240317\n\nso when we see an Iframe on Chromium, we force rIC to be called every X milliseconds to\nensure the tasks are run.\n\nDO NOT MOVE THIS TO A UTILS FILE, we want to get rid of this logic ASAP rather than reuse it\nelsewhere\n*/\nconst isChromium = !isWebWorker() && window &&\n    window.navigator &&\n    window.navigator.userAgentData &&\n    window.navigator.userAgentData.brands &&\n    window.navigator.userAgentData.brands.some(b => b.brand === 'Chromium');\n\nconst rIC = isChromium ? requestIdleCallbackPollyfill : requestIdleCallback;\n\nexport default rIC;\n","import snHttpClient from './snHttpClient';\nimport {isObject} from 'lodash';\nimport {createHttpRequestBatcher} from './batch';\nimport {shouldBatch} from './utils';\nimport defaultEnqueueRequestPrioritizer from './utils/defaultEnqueueRequestPrioritizer';\nimport {default as enqueueItem} from './utils/enqueue';\nimport requestIdleCallback from './requestIdleCallback';\nimport {\n\tBatchRestRequestClientOptions,\n} from './batch/constants';\nimport {\n\tSPAN_ATTR_SHR_FACTORY_DELAY,\n\tSPAN_EVENT_SHR_FACTORY_ENQUEUE,\n\tSPAN_EVENT_SHR_FACTORY_SEND\n} from './constants';\nimport {dispatchESignatureEvent} from './eSignatureHandlers';\n\nconst DEFAULT_METHODS = [\n\t'get',\n\t'post',\n\t'put',\n\t'patch',\n\t'delete',\n\t'head',\n];\n\n/**\n * Factory for creating new HTTP request clients.  HTTP request clients will typically\n * be long-lived objects as they manage queuing, interceptors, etc.  The factory allows\n * for callers to control the lifecycle of those request clients.\n */\nconst snHttpFactory = (httpClient => (setup = {}) => {\n\tconst resolvedClient = setup.httpClient || httpClient;\n\n\tconst SUPPORTED_METHODS = setup.methods || DEFAULT_METHODS;\n\tconst MAX_IN_FLIGHT = setup.maxConcurrent || 2;\n\tconst queue = setup.queue || [];\n\tconst enqueueRequestPrioritizer = setup.enqueueRequestPrioritizer || defaultEnqueueRequestPrioritizer;\n\tconst batching = setup.batching !== false;\n\tconst batchingOptions = setup[BatchRestRequestClientOptions] || {};\n\n\tif (setup.xsrfToken) {\n\t\tresolvedClient.setXsrfToken(setup.xsrfToken);\n\t} else {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.warn(\n\t\t\t'No XSRF token supplied in snHttp construction.  Setting an initial XSRF token ' +\n\t\t\t'(typically found on window.g_ck) is highly advised to avoid a 401 on initial request.'\n\t\t);\n\t}\n\n\tif (setup.xTransactionSource)\n\t\tresolvedClient.setTransactionSource(setup.xTransactionSource);\n\n\tif (setup.headers)\n\t\tresolvedClient.setDefaultHeaders(setup.headers);\n\n\tif (setup.httpRequestCompressionThreshold) {\n\t\tresolvedClient.setHttpRequestCompressionThreshold(\n\t\t\tsetup.httpRequestCompressionThreshold\n\t\t);\n\t}\n\n\tif (setup.httpRequestCompressionLevel) {\n\t\tresolvedClient.setHttpRequestCompressionLevel(\n\t\t\tsetup.httpRequestCompressionLevel\n\t\t);\n\t}\n\n\tif (setup.httpRequestCompressionMemoryLevel) {\n\t\tresolvedClient.setHttpRequestCompressionMemoryLevel(\n\t\t\tsetup.httpRequestCompressionMemoryLevel\n\t\t);\n\t}\n\n\tif (setup.httpRequestCompressionExcludeUrls) {\n\t\thttpClient.setHttpRequestCompressionExcludeUrls(\n\t\t\tsetup.httpRequestCompressionExcludeUrls\n\t\t);\n\t}\n\n\tconst requestBatcher = createHttpRequestBatcher({\n\t\t...batchingOptions,\n\t\tsendRequest: enqueueRequest,\n\t});\n\n\tconst inFlightRequests = [];\n\n\tfunction decrementInFlightRequests() {\n\t\treturn inFlightRequests.length > 0 && inFlightRequests.shift();\n\t}\n\n\tfunction incrementInFlightRequests(request) {\n\t\tinFlightRequests.push(request);\n\t}\n\n\tfunction getInFlightRequestCount() {\n\t\treturn inFlightRequests.length;\n\t}\n\n\tfunction startIfAvailable() {\n\t\tif (numAvailableSlots() !== 0)\n\t\t\tnext();\n\t}\n\n\tfunction enqueue(requestDescriptor) {\n\t\tconst {priority = 'high', operation = 'push'} =\n\t\t\trequestDescriptor.config;\n\t\tenqueueItem(queue, requestDescriptor, priority, operation);\n\t}\n\n\tfunction numAvailableSlots() {\n\t\treturn MAX_IN_FLIGHT - getInFlightRequestCount();\n\t}\n\n\tfunction advance() {\n\t\tdecrementInFlightRequests();\n\t\tnext();\n\t}\n\n\tfunction dequeue() {\n\t\treturn queue.splice(0, numAvailableSlots());\n\t}\n\n\tfunction next() {\n\t\tconst requestDescriptors = dequeue();\n\t\trequestDescriptors.forEach(sendRequest);\n\t}\n\n\tfunction sendRequest(options) {\n\t\tconst {config, deferredResolve, deferredReject, cancel} = options;\n\t\tconfig?.span?.addEvent(SPAN_EVENT_SHR_FACTORY_SEND);\n\t\tresolvedClient\n\t\t\t.request(config)\n\t\t\t.then(response => {\n\t\t\t\tdeferredResolve(response);\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tconfig?.span?.setAttribute('error', error.message);\n\t\t\t\t//Prevent this to be called for e_signature. Pass deferred resolve and deferred reject to UXF\n\t\t\t\tif (dispatchESignatureEvent({error, resolve: deferredResolve, reject: deferredReject}))\n\t\t\t\t\treturn;\n\n\t\t\t\tdeferredReject(error);\n\t\t\t})\n\t\t\t.then(advance);\n\t\tincrementInFlightRequests({config, cancel});\n\t}\n\n\tfunction cancelInFlightRequests() {\n\t\tinFlightRequests.slice().forEach(({cancel}) => {\n\t\t\tcancel();\n\t\t\tinFlightRequests.shift();\n\t\t});\n\t}\n\n\tfunction cancelQueuedRequests() {\n\t\tqueue.slice().forEach(request => {\n\t\t\trequest.deferredReject('Request cancelled by user');\n\t\t\tqueue.shift();\n\t\t});\n\t}\n\n\tfunction cancelRequests() {\n\t\tcancelInFlightRequests();\n\t\tcancelQueuedRequests();\n\t}\n\n\tfunction enqueueRequest(url, method, options) {\n\t\tlet deferredResolve, deferredReject;\n\t\tconst promise = new Promise((resolve, reject) => {\n\t\t\tdeferredResolve = resolve;\n\t\t\tdeferredReject = reject;\n\t\t});\n\t\tconst abortCtrl = new AbortController();\n\t\tconst {signal} = abortCtrl;\n\t\tconst enqueueAndStart = () => {\n\t\t\toptions.span?.addEvent(SPAN_EVENT_SHR_FACTORY_ENQUEUE);\n\t\t\tenqueue({\n\t\t\t\tconfig: Object.assign({}, {url, method, signal}, options),\n\t\t\t\tdeferredResolve,\n\t\t\t\tdeferredReject,\n\t\t\t\tcancel: () => abortCtrl.abort('Request cancelled by user'),\n\t\t\t});\n\t\t\tstartIfAvailable();\n\t\t};\n\n\t\tif (batching && options.batch === false && options.priority === 'low') {\n\t\t\toptions.span?.setAttribute(SPAN_ATTR_SHR_FACTORY_DELAY);\n\t\t\tconst intervalId = setInterval(() => {\n\t\t\t\tif (requestBatcher.currentQueueSize)\n\t\t\t\t\treturn;\n\n\t\t\t\trequestIdleCallback(() => enqueueAndStart());\n\t\t\t\tclearInterval(intervalId);\n\t\t\t}, requestBatcher.batchInterval);\n\t\t} else {\n\t\t\tenqueueAndStart();\n\t\t}\n\n\t\treturn promise;\n\t}\n\n\tfunction enqueueBatchRequest(url, method, options) {\n\t\treturn requestBatcher.enqueueRequest(\n\t\t\turl,\n\t\t\tmethod,\n\t\t\tObject.assign({}, options, {batch: true})\n\t\t);\n\t}\n\n\n\tfunction request(urlOrConfig, method, options) {\n\t\tlet resolvedMethod = method;\n\t\tlet resolvedOptions = options;\n\t\tlet url = urlOrConfig;\n\t\tif (isObject(urlOrConfig)) {\n\t\t\tconst {method: configMethod, url: configUrl} = urlOrConfig;\n\t\t\tresolvedMethod = configMethod ? configMethod : 'get';\n\t\t\turl = configUrl;\n\t\t\tresolvedOptions = {...urlOrConfig};\n\t\t}\n\n\t\tif (!resolvedMethod)\n\t\t\tthrow new Error('Must supply method');\n\n\t\tif (!SUPPORTED_METHODS.includes(resolvedMethod.toLowerCase())) {\n\t\t\tthrow new Error(\n\t\t\t\t`Method \"${resolvedMethod}\" is not supported (supported methods are ${SUPPORTED_METHODS})`\n\t\t\t);\n\t\t}\n\n\t\treturn shouldBatch({...resolvedOptions, batching})\n\t\t\t? enqueueBatchRequest(url, resolvedMethod, {\n\t\t\t\t...resolvedOptions,\n\t\t\t\tbatch: true,\n\t\t\t\t...enqueueRequestPrioritizer(url),\n\t\t\t})\n\t\t\t: enqueueRequest(url, resolvedMethod, {\n\t\t\t\t...resolvedOptions,\n\t\t\t\tbatch: false,\n\t\t\t\t...enqueueRequestPrioritizer(url),\n\t\t\t});\n\t}\n\n\tconst helperMethods = {\n\t\tget client() {\n\t\t\treturn resolvedClient;\n\t\t},\n\t\tget queue() {\n\t\t\treturn queue;\n\t\t},\n\t\tget interceptors() {\n\t\t\treturn resolvedClient.interceptors;\n\t\t},\n\t\tcancelRequests,\n\t\tcancelInFlightRequests,\n\t\trequest,\n\t};\n\n\treturn SUPPORTED_METHODS.reduce((acc, method) => ({\n\t\t...acc,\n\t\t[method]: (url, options = {}) => request(url, method, options),\n\t}), helperMethods);\n})(snHttpClient);\n\nexport default snHttpFactory;\n","/* eslint-disable no-console */\nimport snHttpFactory from './snHttpFactory';\nimport get from 'lodash/get';\nimport {isWebWorker} from './utils';\nimport {\n\tDEFAULT_BATCH_USE_STREAMING,\n\tDEFAULT_BATCH_HTTP_REQUEST_DATA_BROKER_URLS,\n\tDEFAULT_BATCH_USE_DATA_BROKER_SINGLE_REQUEST_STRATEGY,\n\tDEFAULT_BATCH_SINGLE_REQUEST\n} from './batch/defaults';\n\nconst DEFAULT_HTTP_REQUEST_COMPRESSION_THRESHOLD = 40000;\nconst DEFAULT_HTTP_REQUEST_COMPRESSION_EXCLUDE_URLS = ['xmlhttp.do'];\n\nfunction getUxfSysProp(name, defaultValue) {\n\tif (isWebWorker())\n\t\treturn defaultValue;\n\n\treturn get(window, ['ux_globals', 'libuxf', 'sysprops', name], defaultValue);\n}\n\nconst DEFAULT_MAX_CONCURRENT = 20;\n\nfunction getGlobalObject() {\n\tif (typeof self !== 'undefined')\n\t\treturn self;\n\n\tif (typeof window !== 'undefined')\n\t\treturn window;\n\n\tif (typeof global !== 'undefined')\n\t\treturn global;\n\n\tthrow new Error('Unable to locate global object');\n}\n\nfunction isBatchingEnabled(root) {\n\tif (\n\t\troot.nowUiFramework &&\n\t\ttypeof root.nowUiFramework.disableRestBatching === 'boolean'\n\t)\n\t\treturn !root.nowUiFramework.disableRestBatching;\n\treturn true;\n}\n\nconst defaultHighPriorityPathNames =\n\t'/api/now/uxframework/macroponent_drivers,/api/now/uxframework/component_drivers,/api/now/uxframework/scripted_conditions,/api/now/uxframework/scripted_route_conditions,/api/now/uxf/databroker/exec,/api/now/graphql,/api/now/uxf/databroker/exec/macroponent,/api/now/uxframework/legacy_presources,/api/now/uxf/page/hydrate';\nconst root = getGlobalObject();\nconst {navigator} = root;\nconst highPriorityPathNames = getUxfSysProp(\n\t'glide.uxf.lib.highPriorityPathNames',\n\tdefaultHighPriorityPathNames\n).split(',');\n\nconst enqueueRequestPrioritizer = url => {\n\tif (highPriorityPathNames.length && highPriorityPathNames.includes(url))\n\t\treturn {priority: 'high', operation: 'push'};\n\n\n\treturn {priority: 'low', operation: 'push'};\n};\n\nconst maxConcurrent =\n\tnavigator && navigator.userAgent.indexOf('Trident/7.0') !== -1\n\t\t? 1\n\t\t: getUxfSysProp('glide.uxf.lib.maxConcurrent', DEFAULT_MAX_CONCURRENT);\n\n/**\n * parameters to tweak http request compression\n * httpRequestCompressionThreshold: compress the request payload whose size >= httpRequestCompressionThreshold,\n * httpRequestCompressionLevel: the level of compression to use, ranging from 0-9 (0 is no compression),\n * httpRequestCompressionMemoryLevel: the memory level of compression to use, ranging from 0-12,\n *   increasing this increases speed and compression ratio at the cost of memory.\n * https://github.com/101arrowz/fflate/blob/73172166987299e61dadbf26b067bd47f7fbe1c1/src/index.ts#L784\n */\nconst httpRequestCompressionThreshold = isWebWorker() ? DEFAULT_HTTP_REQUEST_COMPRESSION_THRESHOLD : get(\n\twindow,\n\t['NOW', 'httpRequestCompressionThreshold'],\n\tDEFAULT_HTTP_REQUEST_COMPRESSION_THRESHOLD\n);\nconst httpRequestCompressionLevel = isWebWorker() ? null : get(\n\twindow,\n\t['NOW', 'httpRequestCompressionLevel'],\n\tnull\n);\nconst httpRequestCompressionMemoryLevel = isWebWorker() ? null : get(\n\twindow,\n\t['NOW', 'httpRequestCompressionMemoryLevel'],\n\tnull\n);\nconst httpRequestCompressionExcludeUrls = isWebWorker() ? DEFAULT_HTTP_REQUEST_COMPRESSION_EXCLUDE_URLS : get(\n\twindow,\n\t['NOW', 'httpRequestCompressionExcludeUrls'],\n\tDEFAULT_HTTP_REQUEST_COMPRESSION_EXCLUDE_URLS\n);\nconst httpRequestDataBrokerUrls = isWebWorker() ? DEFAULT_BATCH_HTTP_REQUEST_DATA_BROKER_URLS : get(\n\twindow,\n\t['NOW', 'httpRequestDataBrokerUrls'],\n\tDEFAULT_BATCH_HTTP_REQUEST_DATA_BROKER_URLS\n);\n// This is an instance shared across seismic and UXF scripting layer to maintain a single batch queue\nconst snHttp = snHttpFactory({\n\txsrfToken: root.g_ck || 'default',\n\txTransactionSource: root.transaction_source,\n\tmaxConcurrent,\n\tbatching: isBatchingEnabled(root),\n\tbatchingOptions: {\n\t\tuseStreaming:\n\t\t\tgetUxfSysProp('glide.uxf.lib.batchingOptions.useStreaming',\n\t\t\t\tDEFAULT_BATCH_USE_STREAMING.toString()\n\t\t\t) === 'true',\n\t\tencodeRequestBodies:\n\t\t\tgetUxfSysProp(\n\t\t\t\t'glide.uxf.lib.batchingOptions.encodeRequestBodies',\n\t\t\t\t'false'\n\t\t\t) === 'true',\n\t\tencodeResponsesBodies:\n\t\t\tgetUxfSysProp(\n\t\t\t\t'glide.uxf.lib.batchingOptions.encodeResponsesBodies',\n\t\t\t\t'false'\n\t\t\t) === 'true',\n\t\tuseDataBrokerSingleRequestStrategy:\n\t\t\tgetUxfSysProp(\n\t\t\t\t'glide.uxf.lib.batchingOptions.useDataBrokerSingleRequestStrategy',\n\t\t\t\tDEFAULT_BATCH_USE_DATA_BROKER_SINGLE_REQUEST_STRATEGY.toString()\n\t\t\t) === 'true',\n\t\tbatchSingleRequest:\n\t\t\tgetUxfSysProp(\n\t\t\t\t'glide.uxf.lib.batchingOptions.singleRequest',\n\t\t\t\tDEFAULT_BATCH_SINGLE_REQUEST.toString()\n\t\t\t) === 'true',\n\t\thttpRequestDataBrokerUrls\n\t},\n\tenqueueRequestPrioritizer,\n\thttpRequestCompressionThreshold,\n\thttpRequestCompressionLevel,\n\thttpRequestCompressionMemoryLevel,\n\thttpRequestCompressionExcludeUrls\n});\n\nfunction addSnHttpToWindow() {\n\tif (isWebWorker())\n\t\treturn;\n\n\tif (!window.nowUiFramework)\n\t\twindow.nowUiFramework = {};\n\n\n\t// batchGQLEffectRequests -- feature flag to share this single snHttp instance with the GQL batcher:\n\t// when true, seismic component GQL and REST, and UXF runtime all use one snHttp instance -- good for\n\t// managing throughput to the backend, as well as enabling response caching, to pre-fetch requests\n\t// and/or save time on repeated requests. (when set to false, only seismic REST and UXF share it)\n\t//\n\t// however, as a side-effect (good or bad, TBD) GQL requests are batched twice, essentially: once by the GQL\n\t// batcher that consolidates multiple queries into a single payload, and then batched again by the REST\n\t// batcher, along with other REST requests for POSTing to the /batch endpoint.\n\t//\n\t// TBD TODO: move GQL batching to the /batch endpoint (backend), and do only REST batching on the frontend\n\tconst isNonUxAppConfigAdminPanel = get(\n\t\twindow,\n\t\t['ux_globals', 'isNonUxAppConfigAdminPanel'],\n\t\tfalse\n\t);\n\n\twindow.nowUiFramework.batchGQLEffectRequests = isNonUxAppConfigAdminPanel\n\t\t? getUxfSysProp('glide.uxf.lib.classic.batchGQLEffectRequests', 'false') ===\n\t\t'true'\n\t\t: getUxfSysProp('glide.uxf.lib.batchGQLEffectRequests', 'true') === 'true';\n\n\twindow.nowUiFramework.snHttp = new Proxy(snHttp, {\n\t\tget(target, prop) {\n\t\t\tswitch (prop) {\n\t\t\t\tcase 'request':\n\t\t\t\tcase 'client':\n\t\t\t\t\treturn target[prop];\n\t\t\t\tdefault:\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error('Operation not allowed');\n\t\t\treturn undefined;\n\t\t},\n\t\tset() {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error('Operation not allowed');\n\t\t}\n\t});\n}\n\naddSnHttpToWindow();\nexport default snHttp;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.sign = exports.removeSignature = exports.denyUnlessSigned = exports.signingH = exports.signedData = void 0;\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar signatureKey = 'snabbdom_signature';\nvar signature = Symbol.for(signatureKey);\n\nvar signedData = _defineProperty({}, signatureKey, signature);\n\nexports.signedData = signedData;\n\nvar signData = function signData(data) {\n  return Object.assign({}, data, signedData);\n};\n\nvar isPlainTextNode = function isPlainTextNode(vnode) {\n  return vnode.children === undefined && vnode.data === undefined && vnode.key === undefined;\n};\n\nvar isSigned = function isSigned(vnode) {\n  return vnode.data ? vnode.data[signatureKey] === signature : isPlainTextNode(vnode);\n};\n\nvar removeSignatureFromData = function removeSignatureFromData(data) {\n  return Object.assign({}, data, _defineProperty({}, signatureKey, undefined));\n};\n\nvar isPrimitive = function isPrimitive(a) {\n  return ['string', 'number'].includes(_typeof(a));\n};\n\nvar signingH = function signingH(defaultH) {\n  return function (sel, b, c) {\n    if (c !== undefined) {\n      // a - sel, b - data, c - primitive/child/children\n      return defaultH(sel, signData(b), c);\n    } else if (b === undefined) {\n      // a - sel\n      return defaultH(sel, signedData);\n    } else if (Array.isArray(b) || b.sel || isPrimitive(b)) {\n      // a - sel, b - primitive/child/children\n      return defaultH(sel, signedData, b);\n    } else {\n      // a - sel, b - data\n      return defaultH(sel, signData(b));\n    }\n  };\n};\n\nexports.signingH = signingH;\n\nvar denyUnlessSignedHook = function denyUnlessSignedHook(oldVnode, vnode) {\n  if (!isSigned(vnode)) {\n    throw new Error('Patching with a vnode which is not correctly signed!');\n  }\n};\n\nvar denyUnlessSigned = {\n  create: denyUnlessSignedHook,\n  update: denyUnlessSignedHook\n};\nexports.denyUnlessSigned = denyUnlessSigned;\n\nvar processDataRecursively = function processDataRecursively(checkIfValidVnode, dataProcessFn) {\n  var fn = function fn(tree) {\n    checkIfValidVnode(tree);\n    var data = dataProcessFn(tree.data);\n    var children = tree.children ? tree.children.map(fn) : undefined;\n    return Object.assign({}, tree, {\n      data: data,\n      children: children\n    });\n  };\n\n  return fn;\n};\n\nvar removeSignature = processDataRecursively(function (vnode) {\n  if (!isSigned(vnode)) {\n    throw new Error('Unable to remove the signature, because the vnode is not signed.');\n  }\n}, removeSignatureFromData);\nexports.removeSignature = removeSignature;\nvar sign = processDataRecursively(function () {}, signData);\nexports.sign = sign;","var nargs = /\\{([0-9a-zA-Z_]+)\\}/g\n\nmodule.exports = template\n\nfunction template(string) {\n    var args\n\n    if (arguments.length === 2 && typeof arguments[1] === \"object\") {\n        args = arguments[1]\n    } else {\n        args = new Array(arguments.length - 1)\n        for (var i = 1; i < arguments.length; ++i) {\n            args[i - 1] = arguments[i]\n        }\n    }\n\n    if (!args || !args.hasOwnProperty) {\n        args = {}\n    }\n\n    return string.replace(nargs, function replaceArg(match, i, index) {\n        var result\n\n        if (string[index - 1] === \"{\" &&\n            string[index + match.length] === \"}\") {\n            return i\n        } else {\n            result = args.hasOwnProperty(i) ? args[i] : null\n            if (result === null || result === undefined) {\n                return \"\"\n            }\n\n            return result\n        }\n    })\n}\n","export function merge(...sets:Array<string>):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array<any> {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n\n\nexport function assign(target: object, source: any): any {\n\tconst obj = target as any;\n\tif (source) {\n\t\tfor (const key in source) {\n\t\t\tobj[key] = source[key];\n\t\t}\n\t}\n\treturn obj;\n}","import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"),  //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)),  //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\",  //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\",  //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tDEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$),  //relaxed parsing rules\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp(                                                            subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), //                           6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp(                                                 \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), //                      \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp(                                 H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[               h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" +        H16$ + \"\\\\:\"          + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\"    h16 \":\"   ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\"                                + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\"              ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\"                                + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\"              h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\"                                       ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"),  //RFC 6874\n\t\tIPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$),  //RFC 6874\n\t\tIPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$),  //RFC 6874, with relaxed parsing rules\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"),  //RFC 6874\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"),  //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$),  //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$),  //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV4ADDRESS : new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\tIPV6ADDRESS : new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\")  //RFC 6874, with relaxed parsing rules\n\t};\n}\n\nexport default buildExps(false);\n","import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t//  0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n","/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n *    1. Redistributions of source code must retain the above copyright notice, this list of\n *       conditions and the following disclaimer.\n *\n *    2. Redistributions in binary form must reproduce the above copyright notice, this list\n *       of conditions and the following disclaimer in the documentation and/or other materials\n *       provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf, assign } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string;\n\tuserinfo?:string;\n\thost?:string;\n\tport?:number|string;\n\tpath?:string;\n\tquery?:string;\n\tfragment?:string;\n\treference?:string;\n\terror?:string;\n}\n\nexport interface URIOptions {\n\tscheme?:string;\n\treference?:string;\n\ttolerant?:boolean;\n\tabsolutePath?:boolean;\n\tiri?:boolean;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n}\n\nexport interface URISchemeHandler<Components extends URIComponents = URIComponents, Options extends URIOptions = URIOptions, ParentComponents extends URIComponents = URIComponents> {\n\tscheme:string;\n\tparse(components:ParentComponents, options:Options):Components;\n\tserialize(components:Components, options:Options):ParentComponents;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n\tabsolutePath?:boolean;\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV4ADDRESS : RegExp,\n\tIPV6ADDRESS : RegExp,\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nfunction _stripLeadingZeros(str:string):string {\n\treturn str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\n\nfunction _normalizeIPv4(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV4ADDRESS) || [];\n\tconst [, address] = matches;\n\t\n\tif (address) {\n\t\treturn address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t} else {\n\t\treturn host;\n\t}\n}\n\nfunction _normalizeIPv6(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV6ADDRESS) || [];\n\tconst [, address, zone] = matches;\n\n\tif (address) {\n\t\tconst [last, first] = address.toLowerCase().split('::').reverse();\n\t\tconst firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\tconst lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\tconst isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\tconst fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\tconst lastFieldsStart = lastFields.length - fieldCount;\n\t\tconst fields = Array<string>(fieldCount);\n\n\t\tfor (let x = 0; x < fieldCount; ++x) {\n\t\t\tfields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t}\n\n\t\tif (isLastFieldIPv4Address) {\n\t\t\tfields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t}\n\n\t\tconst allZeroFields = fields.reduce<Array<{index:number,length:number}>>((acc, field, index) => {\n\t\t\tif (!field || field === \"0\") {\n\t\t\t\tconst lastLongest = acc[acc.length - 1];\n\t\t\t\tif (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t\t\t\tlastLongest.length++;\n\t\t\t\t} else {\n\t\t\t\t\tacc.push({ index, length : 1 });\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\n\t\tconst longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];\n\n\t\tlet newHost:string;\n\t\tif (longestZeroFields && longestZeroFields.length > 1) {\n\t\t\tconst newFirst = fields.slice(0, longestZeroFields.index) ;\n\t\t\tconst newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t\tnewHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t} else {\n\t\t\tnewHost = fields.join(\":\");\n\t\t}\n\n\t\tif (zone) {\n\t\t\tnewHost += \"%\" + zone;\n\t\t}\n\n\t\treturn newHost;\n\t} else {\n\t\treturn host;\n\t}\n}\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = (<RegExpMatchArray>(\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else {  //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (components.host) {\n\t\t\t//normalize IP hosts\n\t\t\tcomponents.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\turiTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\"));\n\t}\n\n\tif (typeof components.port === \"number\" || typeof components.port === \"string\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(String(components.port));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array<string> = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\");  //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\");  //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options);  //normalize base components\n\t\trelative = parse(serialize(relative, options), options);  //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\tconst schemelessOptions = assign({ scheme : 'null' }, options);\n\treturn serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(<URIComponents>uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(<URIComponents>uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(<URIComponents>uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\tconst secure = String(components.scheme).toLowerCase() === \"https\";\n\n\t\t//normalize the default port\n\t\tif (components.port === (secure ? 443 : 80) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nexport interface WSComponents extends URIComponents {\n\tresourceName?: string;\n\tsecure?: boolean;\n}\n\nfunction isSecure(wsComponents:WSComponents):boolean {\n\treturn typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === \"wss\";\n}\n\n//RFC 6455\nconst handler:URISchemeHandler = {\n\tscheme : \"ws\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):WSComponents {\n\t\tconst wsComponents = components as WSComponents;\n\n\t\t//indicate if the secure flag is set\n\t\twsComponents.secure = isSecure(wsComponents);\n\n\t\t//construct resouce name\n\t\twsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '');\n\t\twsComponents.path = undefined;\n\t\twsComponents.query = undefined;\n\n\t\treturn wsComponents;\n\t},\n\n\tserialize : function (wsComponents:WSComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === \"\") {\n\t\t\twsComponents.port = undefined;\n\t\t}\n\n\t\t//ensure scheme matches secure flag\n\t\tif (typeof wsComponents.secure === 'boolean') {\n\t\t\twsComponents.scheme = (wsComponents.secure ? 'wss' : 'ws');\n\t\t\twsComponents.secure = undefined;\n\t\t}\n\n\t\t//reconstruct path from resource name\n\t\tif (wsComponents.resourceName) {\n\t\t\tconst [path, query] = wsComponents.resourceName.split('?');\n\t\t\twsComponents.path = (path && path !== '/' ? path : undefined);\n\t\t\twsComponents.query = query;\n\t\t\twsComponents.resourceName = undefined;\n\t\t}\n\n\t\t//forbid fragment component\n\t\twsComponents.fragment = undefined;\n\n\t\treturn wsComponents;\n\t}\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport ws from \"./ws\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"wss\",\n\tdomainHost : ws.domainHost,\n\tparse : ws.parse,\n\tserialize : ws.serialize\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array<string>,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\";  //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$));  //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\";  //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$);  //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$));  //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\";  //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nconst handler:URISchemeHandler<MailtoComponents> =  {\n\tscheme : \"mailto\",\n\n\tparse : function (components:URIComponents, options:URIOptions):MailtoComponents {\n\t\tconst mailtoComponents = components as MailtoComponents;\n\t\tconst to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(\",\") : []);\n\t\tmailtoComponents.path = undefined;\n\n\t\tif (mailtoComponents.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = mailtoComponents.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tmailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tmailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) mailtoComponents.headers = headers;\n\t\t}\n\n\t\tmailtoComponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tmailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn mailtoComponents;\n\t},\n\n\tserialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst components = mailtoComponents as URIComponents;\n\t\tconst to = toArray(mailtoComponents.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\n\t\tif (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\tif (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nexport interface URNComponents extends URIComponents {\n\tnid?:string;\n\tnss?:string;\n}\n\nexport interface URNOptions extends URIOptions {\n\tnid?:string;\n}\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nconst handler:URISchemeHandler<URNComponents,URNOptions> = {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URNOptions):URNComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\t\tlet urnComponents = components as URNComponents;\n\n\t\tif (matches) {\n\t\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t\tconst nid = matches[1].toLowerCase();\n\t\t\tconst nss = matches[2];\n\t\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\t\turnComponents.nid = nid;\n\t\t\turnComponents.nss = nss;\n\t\t\turnComponents.path = undefined;\n\n\t\t\tif (schemeHandler) {\n\t\t\t\turnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;\n\t\t\t}\n\t\t} else {\n\t\t\turnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn urnComponents;\n\t},\n\n\tserialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {\n\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\tconst nid = urnComponents.nid;\n\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\tif (schemeHandler) {\n\t\t\turnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;\n\t\t}\n\n\t\tconst uriComponents = urnComponents as URIComponents;\n\t\tconst nss = urnComponents.nss;\n\t\turiComponents.path = `${nid || options.nid}:${nss}`;\n\n\t\treturn uriComponents;\n\t},\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { URNComponents } from \"./urn\";\nimport { SCHEMES } from \"../uri\";\n\nexport interface UUIDComponents extends URNComponents {\n\tuuid?: string;\n}\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\nconst UUID_PARSE = /^[0-9A-Fa-f\\-]{36}/;\n\n//RFC 4122\nconst handler:URISchemeHandler<UUIDComponents, URIOptions, URNComponents> = {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {\n\t\tconst uuidComponents = urnComponents as UUIDComponents;\n\t\tuuidComponents.uuid = uuidComponents.nss;\n\t\tuuidComponents.nss = undefined;\n\n\t\tif (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t\tuuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t}\n\n\t\treturn uuidComponents;\n\t},\n\n\tserialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {\n\t\tconst urnComponents = uuidComponents as URNComponents;\n\t\t//normalize UUID\n\t\turnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\treturn urnComponents;\n\t},\n};\n\nexport default handler;","import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[http.scheme] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[https.scheme] = https;\n\nimport ws from \"./schemes/ws\";\nSCHEMES[ws.scheme] = ws;\n\nimport wss from \"./schemes/wss\";\nSCHEMES[wss.scheme] = wss;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[mailto.scheme] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[urn.scheme] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[uuid.scheme] = uuid;\n\nexport * from \"./uri\";\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-a11y-label{clip:rect(0 0 0 0);block-size:1px;border:none;clip-path:inset(50%);inline-size:1px;margin:0;overflow:hidden;padding:0;position:absolute;white-space:nowrap}:host{display:inline}.now-requestor-chat-popover-position{bottom:0;display:flex;flex-direction:column-reverse;height:auto;margin:20px;position:fixed;width:380px;z-index:3000}.now-requestor-chat-popover-position.nava-enabled{width:420px}.now-requestor-chat-popover-position.left{align-items:flex-start;left:0}.now-requestor-chat-popover-position.right{align-items:flex-end;right:0}.now-requestor-chat-popover-position.closed{pointer-events:none}.now-requestor-chat-popover-launcher{pointer-events:auto;position:relative}.now-requestor-chat-popover-notification{border:2px solid #fff;border-radius:100%;position:absolute;right:-12px;top:4px}.now-requestor-chat-popover-button{margin-top:16px}.now-requestor-chat-popover-iframe{border-width:0}.now-requestor-chat-popover-dialog{max-height:calc(100vh - 101px)}.now-requestor-chat-popover-button{align-items:center;background-color:RGB(var(--now-button-circular--background-color,var(--now-actionable--brand-primary--background-color,var(--now-color--primary-1,30,133,109))));block-size:calc(3.75rem*var(--now-rem-multiplier-from-root));border-radius:50%;border-style:solid;border-width:var(--now-button-circular--border-width,var(--now-actionable--brand-primary--border-width,var(--now-actionable--contained_brand--border-width,0)));color:RGB(var(--now-button-circular--color,var(--now-actionable_icon--brand-primary--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))));cursor:pointer;display:flex;inline-size:calc(3.75rem*var(--now-rem-multiplier-from-root));justify-content:center;position:relative}.now-requestor-chat-popover-button::-moz-focus-inner{border-style:none}.now-requestor-chat-popover-button:focus,.now-requestor-chat-popover-button:focus-visible{box-shadow:inset 0 0 0 calc(.125rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}.now-requestor-chat-popover-button:not(.is-disabled):hover{background-color:RGB(var(--now-button-circular--background-color--hover,var(--now-actionable--brand-primary--background-color--hover,var(--now-color--primary-2,23,100,82))));color:RGB(var(--now-button-circular--color--hover,var(--now-actionable_icon--brand-primary--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-requestor-chat-popover-button:not(.is-disabled).is-active,.now-requestor-chat-popover-button:not(.is-disabled):active{color:RGB(var(--now-button-circular--color--active,var(--now-actionable_icon--brand-primary--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".now-resizable-target{position:absolute;z-index:1000}.now-resizable-target.-inline{block-size:100%;inline-size:calc(.25rem*var(--now-rem-multiplier-from-root));inset-block-start:0}.now-resizable-target.-inline.-right{inset-inline-end:0}:host([dir=rtl]) .now-resizable-target.-inline.-right{inset-inline:0 auto}.now-resizable-target.-inline.-right.-cursor{cursor:ew-resize}.now-resizable-target.-inline.-left{inset-inline-start:0}:host([dir=rtl]) .now-resizable-target.-inline.-left{inset-inline:auto 0}.now-resizable-target.-inline.-left.-cursor{cursor:ew-resize}.now-resizable-target.-block{block-size:calc(.25rem*var(--now-rem-multiplier-from-root));inline-size:100%;inset-inline-start:0}.now-resizable-target.-block.-top{inset-block-start:0}.now-resizable-target.-block.-top.-cursor{cursor:ns-resize}.now-resizable-target.-block.-bottom{inset-block-end:0}.now-resizable-target.-block.-bottom.-cursor{cursor:ns-resize}.now-resizable-target.-corner{block-size:calc(.25rem*var(--now-rem-multiplier-from-root));inline-size:calc(.25rem*var(--now-rem-multiplier-from-root))}.now-resizable-target.-corner.-top-left{inset-block-start:0;inset-inline-start:0}:host([dir=rtl]) .now-resizable-target.-corner.-top-left{inset-inline:auto 0}.now-resizable-target.-corner.-top-left.-cursor{cursor:nwse-resize}.now-resizable-target.-corner.-top-right{inset-block-start:0;inset-inline-end:0}:host([dir=rtl]) .now-resizable-target.-corner.-top-right{inset-inline:0 auto}.now-resizable-target.-corner.-top-right.-cursor{cursor:nesw-resize}.now-resizable-target.-corner.-bottom-right{block-size:unset;inline-size:unset;inset-block-end:0;inset-inline-end:0}:host([dir=rtl]) .now-resizable-target.-corner.-bottom-right{block-size:calc(.25rem*var(--now-rem-multiplier-from-root));inline-size:calc(.25rem*var(--now-rem-multiplier-from-root));inset-inline:0 auto}.now-resizable-target.-corner.-bottom-right.-cursor{cursor:nwse-resize}.now-resizable-target.-corner.-bottom-left{inset-block-end:0;inset-inline-start:0}:host([dir=rtl]) .now-resizable-target.-corner.-bottom-left{block-size:unset;inline-size:unset;inset-inline:auto 0;rotate:90deg}.now-resizable-target.-corner.-bottom-left.-cursor{cursor:nesw-resize}.is-active .now-resizable-target{border-color:RGB(var(--now-color--focus-2,1,119,142))}.is-active .now-resizable-target.-inline{block-size:calc(100% - 2 * var(--now-space--lg2, calc(1.5rem * var(--now-rem-multiplier-from-root))));margin-block:var(--now-space--lg2,calc(1.5rem*var(--now-rem-multiplier-from-root)))}.is-active .now-resizable-target.-inline.-right{border-inline-end-style:solid;border-inline-end-width:calc(.125rem*var(--now-rem-multiplier-from-root))}.is-active .now-resizable-target.-inline.-left{border-inline-start-style:solid;border-inline-start-width:calc(.125rem*var(--now-rem-multiplier-from-root))}.is-active .now-resizable-target.-block{inline-size:calc(100% - 2 * var(--now-space--lg2, calc(1.5rem * var(--now-rem-multiplier-from-root))));margin-inline:var(--now-space--lg2,calc(1.5rem*var(--now-rem-multiplier-from-root)))}.is-active .now-resizable-target.-block.-top{border-block-start-style:solid;border-block-start-width:calc(.125rem*var(--now-rem-multiplier-from-root))}.is-active .now-resizable-target.-block.-bottom{border-block-end-style:solid;border-block-end-width:calc(.125rem*var(--now-rem-multiplier-from-root))}.resize-edge-highlight{background-color:RGB(var(--now-window_highlight--color,var(--now-color--primary-1,30,133,109)))}.now-resizable-target-button{background-color:transparent;border:0;border-radius:var(--now-button-stateful--primary--border-radius,var(--now-actionable--primary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,0))));color:RGB(var(--now-button-stateful--primary--color,var(--now-actionable_icon--primary_bare--color,var(--now-color--primary-2,23,100,82))));cursor:inherit;display:flex;padding:0}.now-resizable-target-button::-moz-focus-inner{border-style:none}.now-resizable-target-button:focus-visible{box-shadow:inset 0 0 0 calc(.125rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-resizable-target-button:focus-visible{outline:1px solid highlight}}.now-resizable-target-button:hover{background-color:RGB(var(--now-button-stateful--primary--background-color--hover,var(--now-actionable--primary_bare--background-color--hover,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));color:RGB(var(--now-button-stateful--primary--color--hover,var(--now-actionable_icon--primary_bare--color--hover,var(--now-color--primary-3,15,67,55))))}.now-resizable-target-button:active{background-color:RGB(var(--now-button-stateful--primary--background-color--active,var(--now-actionable--primary_bare--background-color--active,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));color:RGB(var(--now-button-stateful--primary--color--active,var(--now-actionable_icon--primary_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-resizable-target-button.is-selected{color:RGB(var(--now-button-stateful--primary--color--selected,var(--now-actionable_icon--primary_bare--color--selected,var(--now-color--primary-2,23,100,82))))}.now-resizable-target-button.is-selected:hover{background-color:RGB(var(--now-button-stateful--primary--background-color--selected_hover,var(--now-actionable--primary_bare--background-color--selected_hover,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));color:RGB(var(--now-button-stateful--primary--color--selected_hover,var(--now-actionable_icon--primary_bare--color--selected_hover,var(--now-color--primary-3,15,67,55))))}.now-resizable-target-button.is-selected:active{background-color:RGB(var(--now-button-stateful--primary--background-color--selected_active,var(--now-actionable--primary_bare--background-color--selected_active,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))));color:RGB(var(--now-button-stateful--primary--color--selected_active,var(--now-actionable_icon--primary_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-resizable-target-button>svg{fill:currentcolor}@media(forced-colors:active){.now-resizable-target-button{background-color:buttonface!important;border-style:solid!important;border-width:1px!important;color:buttontext!important}.now-resizable-target-button now-icon,.now-resizable-target-button now-icon-animated{color:inherit!important}.now-resizable-target-button:focus-visible,.now-resizable-target-button:hover{background-color:highlighttext!important;border-color:highlight!important;color:highlight!important}.now-resizable-target-button.is-disabled,.now-resizable-target-button.is-disabled:hover{background-color:buttonface!important;border-color:graytext!important;color:graytext!important;opacity:1!important}.now-resizable-target-button.is-selected{background-color:selecteditem!important;border-color:selecteditemtext;color:selecteditemtext!important}.now-resizable-target-button.is-selected.is-disabled{background-color:buttonface!important;color:graytext!important}.now-resizable-target-button>svg{forced-color-adjust:auto}.resize-edge-highlight{background-color:highlight}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:inline-block;vertical-align:middle}.now-badge{align-items:center;border-radius:var(--now-badge--border-radius,var(--now-indicator--border-radius,calc(.125rem*var(--now-rem-multiplier-from-root))));border-style:solid;border-width:var(--now-badge--border-width,var(--now-indicator--border-width,0));display:flex;font-family:var(--now-badge--font-family,var(--now-indicator--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)));font-style:var(--now-badge--font-style,var(--now-indicator--font-style,normal));font-variant:normal;font-weight:var(--now-badge--font-weight,var(--now-indicator--font-weight,normal));justify-content:center;letter-spacing:inherit;text-indent:0;text-shadow:none;text-transform:var(--now-badge--text-transform,var(--now-indicator--text-transform,none));white-space:normal;word-spacing:inherit}.now-badge.-sm{block-size:calc(1rem*var(--now-rem-multiplier-from-root)/2 + var(--now-badge--scale-size-block, 1)*1rem*var(--now-rem-multiplier-from-root)/2);font-size:var(--now-indicator_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--now-rem-multiplier-from-root))));line-height:1.3333;min-inline-size:calc(1rem*var(--now-rem-multiplier-from-root)/2 + var(--now-badge--scale-size-inline, 1)*1rem*var(--now-rem-multiplier-from-root)/2);padding-inline:calc(var(--now-space--xs, calc(.25rem * var(--now-rem-multiplier-from-root))) * var(--now-badge--scale-size-inline, 1))}.now-badge.-md{block-size:calc(1.5rem*var(--now-rem-multiplier-from-root)/2 + var(--now-badge--scale-size-block, 1)*1.5rem*var(--now-rem-multiplier-from-root)/2);font-size:var(--now-indicator_label--font-size--md,var(--now-font-size--md1,calc(1rem*var(--now-rem-multiplier-from-root))));line-height:1.25;min-inline-size:calc(1.5rem*var(--now-rem-multiplier-from-root)/2 + var(--now-badge--scale-size-inline, 1)*1.5rem*var(--now-rem-multiplier-from-root)/2);padding-inline:calc(var(--now-space--sm, calc(.5rem * var(--now-rem-multiplier-from-root))) * var(--now-badge--scale-size-inline, 1))}.now-badge.-md .now-line-height-crop{display:block}.now-badge.-md .now-line-height-crop:after,.now-badge.-md .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-badge.-md .now-line-height-crop:before{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--before,\\n\\t\\t\\t\\t\\t-.25em\\n\\t\\t\\t\\t)*1)}.now-badge.-md .now-line-height-crop:after{margin-block-end:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1)}.now-badge.-md .now-line-height-crop+.now-badge.-md .now-line-height-crop{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1*-1)}.now-badge.-lg{block-size:calc(2rem*var(--now-rem-multiplier-from-root)/2 + var(--now-badge--scale-size-block, 1)*2rem*var(--now-rem-multiplier-from-root)/2);font-size:var(--now-indicator_label--font-size--lg,var(--now-font-size--lg1,calc(1.5rem*var(--now-rem-multiplier-from-root))));line-height:1.25;min-inline-size:calc(2rem*var(--now-rem-multiplier-from-root)/2 + var(--now-badge--scale-size-inline, 1)*2rem*var(--now-rem-multiplier-from-root)/2);padding-inline:calc(var(--now-space--sm, calc(.5rem * var(--now-rem-multiplier-from-root))) * var(--now-badge--scale-size-inline, 1))}.now-badge.-lg .now-line-height-crop{display:block}.now-badge.-lg .now-line-height-crop:after,.now-badge.-lg .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-badge.-lg .now-line-height-crop:before{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--before,\\n\\t\\t\\t\\t\\t-.25em\\n\\t\\t\\t\\t)*1)}.now-badge.-lg .now-line-height-crop:after{margin-block-end:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1)}.now-badge.-lg .now-line-height-crop+.now-badge.-lg .now-line-height-crop{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1*-1)}.now-badge.-primary{border-radius:var(--now-badge--primary--border-radius,var(--now-indicator--primary--border-radius,var(--now-indicator--border-radius,calc(.125rem*var(--now-rem-multiplier-from-root)))));border-width:var(--now-badge--primary--border-width,var(--now-indicator--primary--border-width,var(--now-indicator--border-width,0)));color:var(--now-badge--primary--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)));font-family:var(--now-badge--primary--font-family,var(--now-indicator--primary--font-family,var(--now-indicator--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-badge--primary--font-style,var(--now-indicator--primary--font-style,var(--now-indicator--font-style,normal)));font-weight:var(--now-badge--primary--font-weight,var(--now-indicator--primary--font-weight,var(--now-indicator--font-weight,normal)));text-transform:var(--now-badge--primary--text-transform,var(--now-indicator--primary--text-transform,var(--now-indicator--text-transform,none)))}.now-badge.-secondary{border-radius:var(--now-badge--secondary--border-radius,var(--now-indicator--primary--border-radius,var(--now-indicator--border-radius,calc(.125rem*var(--now-rem-multiplier-from-root)))));border-width:var(--now-badge--secondary--border-width,var(--now-indicator--primary--border-width,var(--now-indicator--border-width,0)));color:var(--now-badge--secondary--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)));font-family:var(--now-badge--secondary--font-family,var(--now-indicator--primary--font-family,var(--now-indicator--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-badge--secondary--font-style,var(--now-indicator--primary--font-style,var(--now-indicator--font-style,normal)));font-weight:var(--now-badge--secondary--font-weight,var(--now-indicator--primary--font-weight,var(--now-indicator--font-weight,normal)));text-transform:var(--now-badge--secondary--text-transform,var(--now-indicator--primary--text-transform,var(--now-indicator--text-transform,none)))}.now-badge.-critical.-primary{background-color:RGB(var(--now-badge--primary_critical--background-color,var(--now-indicator--primary_critical--background-color,var(--now-color_alert--critical-2,200,60,54))));border-color:RGB(var(--now-badge--primary_critical--border-color,var(--now-indicator--primary_critical--border-color,var(--now-color_alert--critical-3,160,48,43))));color:RGB(var(--now-badge--primary_critical--color,var(--now-indicator_label--primary_critical--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-badge.-critical.-secondary{background-color:RGB(var(--now-badge--secondary_critical--background-color,var(--now-indicator--secondary_critical--background-color,var(--now-color_alert--critical-1,221,133,129))));border-color:RGB(var(--now-badge--secondary_critical--border-color,var(--now-indicator--secondary_critical--border-color,var(--now-color_alert--critical-2,200,60,54))));color:RGB(var(--now-badge--secondary_critical--color,var(--now-indicator_label--secondary_critical--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-high.-primary{background-color:RGB(var(--now-badge--primary_high--background-color,var(--now-indicator--primary_high--background-color,var(--now-color_alert--high-2,221,145,34))));border-color:RGB(var(--now-badge--primary_high--border-color,var(--now-indicator--primary_high--border-color,var(--now-color_alert--high-3,177,116,27))));color:RGB(var(--now-badge--primary_high--color,var(--now-indicator_label--primary_high--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-high.-secondary{background-color:RGB(var(--now-badge--secondary_high--background-color,var(--now-indicator--secondary_high--background-color,var(--now-color_alert--high-1,234,186,117))));border-color:RGB(var(--now-badge--secondary_high--border-color,var(--now-indicator--secondary_high--border-color,var(--now-color_alert--high-2,221,145,34))));color:RGB(var(--now-badge--secondary_high--color,var(--now-indicator_label--secondary_high--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-warning.-primary{background-color:RGB(var(--now-badge--primary_warning--background-color,var(--now-indicator--primary_warning--background-color,var(--now-color_alert--warning-2,210,195,0))));border-color:RGB(var(--now-badge--primary_warning--border-color,var(--now-indicator--primary_warning--border-color,var(--now-color_alert--warning-3,198,185,22))));color:RGB(var(--now-badge--primary_warning--color,var(--now-indicator_label--primary_warning--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-warning.-secondary{background-color:RGB(var(--now-badge--secondary_warning--background-color,var(--now-indicator--secondary_warning--background-color,var(--now-color_alert--warning-1,227,218,96))));border-color:RGB(var(--now-badge--secondary_warning--border-color,var(--now-indicator--secondary_warning--border-color,var(--now-color_alert--warning-2,210,195,0))));color:RGB(var(--now-badge--secondary_warning--color,var(--now-indicator_label--secondary_warning--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-moderate.-primary{background-color:RGB(var(--now-badge--primary_moderate--background-color,var(--now-indicator--primary_moderate--background-color,var(--now-color_alert--moderate-2,84,86,207))));border-color:RGB(var(--now-badge--primary_moderate--border-color,var(--now-indicator--primary_moderate--border-color,var(--now-color_alert--moderate-3,67,69,166))));color:RGB(var(--now-badge--primary_moderate--color,var(--now-indicator_label--primary_moderate--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-badge.-moderate.-secondary{background-color:RGB(var(--now-badge--secondary_moderate--background-color,var(--now-indicator--secondary_moderate--background-color,var(--now-color_alert--moderate-1,148,149,225))));border-color:RGB(var(--now-badge--secondary_moderate--border-color,var(--now-indicator--secondary_moderate--border-color,var(--now-color_alert--moderate-2,84,86,207))));color:RGB(var(--now-badge--secondary_moderate--color,var(--now-indicator_label--secondary_moderate--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-info.-primary{background-color:RGB(var(--now-badge--primary_info--background-color,var(--now-indicator--primary_info--background-color,var(--now-color_alert--info-2,14,120,196))));border-color:RGB(var(--now-badge--primary_info--border-color,var(--now-indicator--primary_info--border-color,var(--now-color_alert--info-3,11,96,157))));color:RGB(var(--now-badge--primary_info--color,var(--now-indicator_label--primary_info--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-badge.-info.-secondary{background-color:RGB(var(--now-badge--secondary_info--background-color,var(--now-indicator--secondary_info--background-color,var(--now-color_alert--info-1,104,171,218))));border-color:RGB(var(--now-badge--secondary_info--border-color,var(--now-indicator--secondary_info--border-color,var(--now-color_alert--info-2,14,120,196))));color:RGB(var(--now-badge--secondary_info--color,var(--now-indicator_label--secondary_info--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-positive.-primary{background-color:RGB(var(--now-badge--primary_positive--background-color,var(--now-indicator--primary_positive--background-color,var(--now-color_alert--positive-2,37,131,43))));border-color:RGB(var(--now-badge--primary_positive--border-color,var(--now-indicator--primary_positive--border-color,var(--now-color_alert--positive-3,30,105,34))));color:RGB(var(--now-badge--primary_positive--color,var(--now-indicator_label--primary_positive--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-badge.-positive.-secondary{background-color:RGB(var(--now-badge--secondary_positive--background-color,var(--now-indicator--secondary_positive--background-color,var(--now-color_alert--positive-1,119,178,123))));border-color:RGB(var(--now-badge--secondary_positive--border-color,var(--now-indicator--secondary_positive--border-color,var(--now-color_alert--positive-2,37,131,43))));color:RGB(var(--now-badge--secondary_positive--color,var(--now-indicator_label--secondary_positive--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-low.-primary{background-color:RGB(var(--now-badge--primary_low--background-color,var(--now-indicator--primary_low--background-color,var(--now-color_alert--low-2,102,102,102))));border-color:RGB(var(--now-badge--primary_low--border-color,var(--now-indicator--primary_low--border-color,var(--now-color_alert--low-3,82,82,82))));color:RGB(var(--now-badge--primary_low--color,var(--now-indicator_label--primary_low--color,var(--now-indicator_label--primary--color,var(--now-color--neutral-0,255,255,255)))))}.now-badge.-low.-secondary{background-color:RGB(var(--now-badge--secondary_low--background-color,var(--now-indicator--secondary_low--background-color,var(--now-color_alert--low-1,159,159,159))));border-color:RGB(var(--now-badge--secondary_low--border-color,var(--now-indicator--secondary_low--border-color,var(--now-color_alert--low-2,102,102,102))));color:RGB(var(--now-badge--secondary_low--color,var(--now-indicator_label--secondary_low--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-yellow.-primary{background-color:RGB(var(--now-badge--primary_yellow--background-color,var(--now-indicator--primary_yellow--background-color,var(--now-color_grouped--yellow-2,240,207,101))));border-color:RGB(var(--now-badge--primary_yellow--border-color,var(--now-indicator--primary_yellow--border-color,var(--now-color_grouped--yellow-3,204,176,86))));color:RGB(var(--now-badge--primary_yellow--color,var(--now-indicator_label--primary_yellow--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-yellow.-secondary{background-color:RGB(var(--now-badge--secondary_yellow--background-color,var(--now-indicator--secondary_yellow--background-color,var(--now-color_grouped--yellow-1,245,224,155))));border-color:RGB(var(--now-badge--secondary_yellow--border-color,var(--now-indicator--secondary_yellow--border-color,var(--now-color_grouped--yellow-2,240,207,101))));color:RGB(var(--now-badge--secondary_yellow--color,var(--now-indicator_label--secondary_yellow--color,var(--now-color_grouped--yellow-5,132,114,56))))}.now-badge.-orange.-primary{background-color:RGB(var(--now-badge--primary_orange--background-color,var(--now-indicator--primary_orange--background-color,var(--now-color_grouped--orange-2,215,129,106))));border-color:RGB(var(--now-badge--primary_orange--border-color,var(--now-indicator--primary_orange--border-color,var(--now-color_grouped--orange-3,183,110,90))));color:RGB(var(--now-badge--primary_orange--color,var(--now-indicator_label--primary_orange--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-orange.-secondary{background-color:RGB(var(--now-badge--secondary_orange--background-color,var(--now-indicator--secondary_orange--background-color,var(--now-color_grouped--orange-1,229,173,158))));border-color:RGB(var(--now-badge--secondary_orange--border-color,var(--now-indicator--secondary_orange--border-color,var(--now-color_grouped--orange-2,215,129,106))));color:RGB(var(--now-badge--secondary_orange--color,var(--now-indicator_label--secondary_orange--color,var(--now-color_grouped--orange-5,118,71,58))))}.now-badge.-magenta.-primary{background-color:RGB(var(--now-badge--primary_magenta--background-color,var(--now-indicator--primary_magenta--background-color,var(--now-color_grouped--magenta-2,203,121,193))));border-color:RGB(var(--now-badge--primary_magenta--border-color,var(--now-indicator--primary_magenta--border-color,var(--now-color_grouped--magenta-3,173,103,164))));color:RGB(var(--now-badge--primary_magenta--color,var(--now-indicator_label--primary_magenta--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-magenta.-secondary{background-color:RGB(var(--now-badge--secondary_magenta--background-color,var(--now-indicator--secondary_magenta--background-color,var(--now-color_grouped--magenta-1,221,168,215))));border-color:RGB(var(--now-badge--secondary_magenta--border-color,var(--now-indicator--secondary_magenta--border-color,var(--now-color_grouped--magenta-2,203,121,193))));color:RGB(var(--now-badge--secondary_magenta--color,var(--now-indicator_label--secondary_magenta--color,var(--now-color_grouped--magenta-5,112,67,106))))}.now-badge.-purple.-primary{background-color:RGB(var(--now-badge--primary_purple--background-color,var(--now-indicator--primary_purple--background-color,var(--now-color_grouped--purple-2,181,155,209))));border-color:RGB(var(--now-badge--primary_purple--border-color,var(--now-indicator--primary_purple--border-color,var(--now-color_grouped--purple-3,154,132,178))));color:RGB(var(--now-badge--primary_purple--color,var(--now-indicator_label--primary_purple--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-purple.-secondary{background-color:RGB(var(--now-badge--secondary_purple--background-color,var(--now-indicator--secondary_purple--background-color,var(--now-color_grouped--purple-1,207,190,225))));border-color:RGB(var(--now-badge--secondary_purple--border-color,var(--now-indicator--secondary_purple--border-color,var(--now-color_grouped--purple-2,181,155,209))));color:RGB(var(--now-badge--secondary_purple--color,var(--now-indicator_label--secondary_purple--color,var(--now-color_grouped--purple-5,100,85,115))))}.now-badge.-blue.-primary{background-color:RGB(var(--now-badge--primary_blue--background-color,var(--now-indicator--primary_blue--background-color,var(--now-color_grouped--blue-2,120,176,204))));border-color:RGB(var(--now-badge--primary_blue--border-color,var(--now-indicator--primary_blue--border-color,var(--now-color_grouped--blue-3,102,150,173))));color:RGB(var(--now-badge--primary_blue--color,var(--now-indicator_label--primary_blue--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-blue.-secondary{background-color:RGB(var(--now-badge--secondary_blue--background-color,var(--now-indicator--secondary_blue--background-color,var(--now-color_grouped--blue-1,167,204,222))));border-color:RGB(var(--now-badge--secondary_blue--border-color,var(--now-indicator--secondary_blue--border-color,var(--now-color_grouped--blue-2,120,176,204))));color:RGB(var(--now-badge--secondary_blue--color,var(--now-indicator_label--secondary_blue--color,var(--now-color_grouped--blue-5,66,97,112))))}.now-badge.-green-yellow.-primary{background-color:RGB(var(--now-badge--primary_green-yellow--background-color,var(--now-indicator--primary_green-yellow--background-color,var(--now-color_grouped--green-yellow-2,154,173,94))));border-color:RGB(var(--now-badge--primary_green-yellow--border-color,var(--now-indicator--primary_green-yellow--border-color,var(--now-color_grouped--green-yellow-3,131,147,80))));color:RGB(var(--now-badge--primary_green-yellow--color,var(--now-indicator_label--primary_green-yellow--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-green-yellow.-secondary{background-color:RGB(var(--now-badge--secondary_green-yellow--background-color,var(--now-indicator--secondary_green-yellow--background-color,var(--now-color_grouped--green-yellow-1,189,202,150))));border-color:RGB(var(--now-badge--secondary_green-yellow--border-color,var(--now-indicator--secondary_green-yellow--border-color,var(--now-color_grouped--green-yellow-2,154,173,94))));color:RGB(var(--now-badge--secondary_green-yellow--color,var(--now-indicator_label--secondary_green-yellow--color,var(--now-color_grouped--green-yellow-5,85,95,52))))}.now-badge.-pink.-primary{background-color:RGB(var(--now-badge--primary_pink--background-color,var(--now-indicator--primary_pink--background-color,var(--now-color_grouped--pink-2,203,121,143))));border-color:RGB(var(--now-badge--primary_pink--border-color,var(--now-indicator--primary_pink--border-color,var(--now-color_grouped--pink-3,173,103,122))));color:RGB(var(--now-badge--primary_pink--color,var(--now-indicator_label--primary_pink--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-pink.-secondary{background-color:RGB(var(--now-badge--secondary_pink--background-color,var(--now-indicator--secondary_pink--background-color,var(--now-color_grouped--pink-1,221,168,182))));border-color:RGB(var(--now-badge--secondary_pink--border-color,var(--now-indicator--secondary_pink--border-color,var(--now-color_grouped--pink-2,203,121,143))));color:RGB(var(--now-badge--secondary_pink--color,var(--now-indicator_label--secondary_pink--color,var(--now-color_grouped--pink-5,112,67,79))))}.now-badge.-brown.-primary{background-color:RGB(var(--now-badge--primary_brown--background-color,var(--now-indicator--primary_brown--background-color,var(--now-color_grouped--brown-2,156,138,119))));border-color:RGB(var(--now-badge--primary_brown--border-color,var(--now-indicator--primary_brown--border-color,var(--now-color_grouped--brown-3,133,117,101))));color:RGB(var(--now-badge--primary_brown--color,var(--now-indicator_label--primary_brown--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-brown.-secondary{background-color:RGB(var(--now-badge--secondary_brown--background-color,var(--now-indicator--secondary_brown--background-color,var(--now-color_grouped--brown-1,191,179,167))));border-color:RGB(var(--now-badge--secondary_brown--border-color,var(--now-indicator--secondary_brown--border-color,var(--now-color_grouped--brown-2,156,138,119))));color:RGB(var(--now-badge--secondary_brown--color,var(--now-indicator_label--secondary_brown--color,var(--now-color_grouped--brown-5,86,76,66))))}.now-badge.-green.-primary{background-color:RGB(var(--now-badge--primary_green--background-color,var(--now-indicator--primary_green--background-color,var(--now-color_grouped--green-2,147,170,125))));border-color:RGB(var(--now-badge--primary_green--border-color,var(--now-indicator--primary_green--border-color,var(--now-color_grouped--green-3,125,145,106))));color:RGB(var(--now-badge--primary_green--color,var(--now-indicator_label--primary_green--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-green.-secondary{background-color:RGB(var(--now-badge--secondary_green--background-color,var(--now-indicator--secondary_green--background-color,var(--now-color_grouped--green-1,185,200,171))));border-color:RGB(var(--now-badge--secondary_green--border-color,var(--now-indicator--secondary_green--border-color,var(--now-color_grouped--green-2,147,170,125))));color:RGB(var(--now-badge--secondary_green--color,var(--now-indicator_label--secondary_green--color,var(--now-color_grouped--green-5,81,94,69))))}.now-badge.-teal.-primary{background-color:RGB(var(--now-badge--primary_teal--background-color,var(--now-indicator--primary_teal--background-color,var(--now-color_grouped--teal-2,104,174,163))));border-color:RGB(var(--now-badge--primary_teal--border-color,var(--now-indicator--primary_teal--border-color,var(--now-color_grouped--teal-3,88,148,139))));color:RGB(var(--now-badge--primary_teal--color,var(--now-indicator_label--primary_teal--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-teal.-secondary{background-color:RGB(var(--now-badge--secondary_teal--background-color,var(--now-indicator--secondary_teal--background-color,var(--now-color_grouped--teal-1,157,202,195))));border-color:RGB(var(--now-badge--secondary_teal--border-color,var(--now-indicator--secondary_teal--border-color,var(--now-color_grouped--teal-2,104,174,163))));color:RGB(var(--now-badge--secondary_teal--color,var(--now-indicator_label--secondary_teal--color,var(--now-color_grouped--teal-5,57,96,90))))}.now-badge.-gray.-primary{background-color:RGB(var(--now-badge--primary_gray--background-color,var(--now-indicator--primary_gray--background-color,var(--now-color_grouped--gray-2,139,145,150))));border-color:RGB(var(--now-badge--primary_gray--border-color,var(--now-indicator--primary_gray--border-color,var(--now-color_grouped--gray-3,118,123,128))));color:RGB(var(--now-badge--primary_gray--color,var(--now-indicator_label--primary_gray--color,var(--now-indicator_label--secondary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-badge.-gray.-secondary{background-color:RGB(var(--now-badge--secondary_gray--background-color,var(--now-indicator--secondary_gray--background-color,var(--now-color_grouped--gray-1,180,184,187))));border-color:RGB(var(--now-badge--secondary_gray--border-color,var(--now-indicator--secondary_gray--border-color,var(--now-color_grouped--gray-2,139,145,150))));color:RGB(var(--now-badge--secondary_gray--color,var(--now-indicator_label--secondary_gray--color,var(--now-color_grouped--gray-5,77,80,83))))}@media(forced-colors:active){.now-badge{border:none;outline:1px solid canvastext}.now-badge .now-line-height-crop{color:canvastext;forced-color-adjust:none}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.now-m-block--xxs{margin-block-end:var(--now-space--xxs,calc(.125rem*var(--now-rem-multiplier-from-root)))}.now-m-block--xxs,.now-m-block-start--xxs{margin-block-start:var(--now-space--xxs,calc(.125rem*var(--now-rem-multiplier-from-root)))}.now-m-block-end--xxs{margin-block-end:var(--now-space--xxs,calc(.125rem*var(--now-rem-multiplier-from-root)))}.now-m-inline--xxs{margin-inline-end:var(--now-space--xxs,calc(.125rem*var(--now-rem-multiplier-from-root)))}.now-m-inline--xxs,.now-m-inline-start--xxs{margin-inline-start:var(--now-space--xxs,calc(.125rem*var(--now-rem-multiplier-from-root)))}.now-m-inline-end--xxs{margin-inline-end:var(--now-space--xxs,calc(.125rem*var(--now-rem-multiplier-from-root)))}.now-m-block--xs{margin-block-end:var(--now-space--xs,calc(.25rem*var(--now-rem-multiplier-from-root)))}.now-m-block--xs,.now-m-block-start--xs{margin-block-start:var(--now-space--xs,calc(.25rem*var(--now-rem-multiplier-from-root)))}.now-m-block-end--xs{margin-block-end:var(--now-space--xs,calc(.25rem*var(--now-rem-multiplier-from-root)))}.now-m-inline--xs{margin-inline-end:var(--now-space--xs,calc(.25rem*var(--now-rem-multiplier-from-root)))}.now-m-inline--xs,.now-m-inline-start--xs{margin-inline-start:var(--now-space--xs,calc(.25rem*var(--now-rem-multiplier-from-root)))}.now-m-inline-end--xs{margin-inline-end:var(--now-space--xs,calc(.25rem*var(--now-rem-multiplier-from-root)))}:host{--now-line-height:0;display:inline-block;vertical-align:middle}.now-button-bare{align-items:center;background-color:transparent;border-color:transparent;border-radius:var(--now-button--bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,0)));border-style:solid;cursor:pointer;display:flex;font-family:var(--now-button--bare--font-family,var(--now-actionable--bare--font-family,var(--now-actionable--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-style:var(--now-button--bare--font-style,var(--now-actionable--bare--font-style,var(--now-actionable--font-style,normal)));font-variant:normal;font-weight:var(--now-button--bare--font-weight,var(--now-actionable--bare--font-weight,var(--now-actionable--font-weight,normal)));inline-size:inherit;justify-content:center;letter-spacing:inherit;margin:0;max-inline-size:calc(100vw - 1.0625rem*var(--now-rem-multiplier-from-root));overflow:hidden;padding-inline:0;position:relative;text-indent:0;text-shadow:none;text-transform:var(--now-button--bare--text-transform,var(--now-actionable--bare--text-transform,var(--now-actionable--text-transform,none)));white-space:var(--now-button--bare--text-wrap,var(--now-actionable--text-wrap,normal));word-spacing:inherit}.now-button-bare ::slotted(*),.now-button-bare now-icon,.now-button-bare slot>*{z-index:1}.now-button-bare .now-ripple{aspect-ratio:1/1;border-radius:100%;inline-size:100%;left:50%;position:absolute;top:50%;transform:scale(0);transform-origin:center;z-index:0}.now-button-bare.should-animate{transition-duration:var(--now-motion--duration--faster,.1s);transition-property:background-color,box-shadow,color;transition-timing-function:var(--now-motion--ease--linear,linear)}.now-button-bare.should-animate:focus{transition-duration:var(--now-motion--duration--faster,.1s),var(--now-motion--duration--normal,.2s),var(--now-motion--duration--normal,.2s);transition-property:background-color,box-shadow,color}.now-button-bare.should-animate:focus-visible{transition-duration:var(--now-motion--duration--faster,.1s),var(--now-motion--duration--normal,.2s);transition-property:background-color,color}.now-button-bare:focus-visible::-moz-focus-inner{border-style:none}.now-button-bare:focus-visible:focus-visible{box-shadow:inset 0 0 0 calc(.125rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)));outline:none}@media(forced-colors:active){.now-button-bare:focus-visible:focus-visible{outline:1px solid highlight}}.now-button-bare.-sm{font-size:var(--now-actionable--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--now-rem-multiplier-from-root))));line-height:1.3333;min-block-size:calc(1.5rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size-block, 1)*1.5rem*var(--now-rem-multiplier-from-root)/2);padding-block:calc(.25rem*var(--now-rem-multiplier-from-root)*var(--now-button--scale-size-block, 1))}.now-button-bare.-sm.hide-block-padding{min-block-size:calc(1rem*var(--now-rem-multiplier-from-root));padding-block:0}.now-button-bare.-sm.show-inline-padding{padding-inline:calc(var(--now-space--sm, calc(.5rem * var(--now-rem-multiplier-from-root))) * var(--now-button--scale-size-inline, 1))}.now-button-bare.-sm .now-line-height-crop{display:block}.now-button-bare.-sm .now-line-height-crop:after,.now-button-bare.-sm .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-button-bare.-sm .now-line-height-crop:before{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--before,\\n\\t\\t\\t\\t\\t-.25em\\n\\t\\t\\t\\t)*1.06664)}.now-button-bare.-sm .now-line-height-crop:after{margin-block-end:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1.06664)}.now-button-bare.-sm .now-line-height-crop+.now-button-bare.-sm .now-line-height-crop{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1.06664*-1)}.now-button-bare.-md{font-size:var(--now-actionable--font-size--md,var(--now-font-size--md1,calc(1rem*var(--now-rem-multiplier-from-root))));line-height:1.25;min-block-size:calc(2rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size-block, 1)*2rem*var(--now-rem-multiplier-from-root)/2);padding-block:calc(.375rem*var(--now-rem-multiplier-from-root)*var(--now-button--scale-size-block, 1))}.now-button-bare.-md.hide-block-padding{min-block-size:calc(1.25rem*var(--now-rem-multiplier-from-root));padding-block:0}.now-button-bare.-md.show-inline-padding{padding-inline:calc(var(--now-space--md1, calc(1rem * var(--now-rem-multiplier-from-root))) * var(--now-button--scale-size-inline, 1))}.now-button-bare.-md .now-line-height-crop{display:block}.now-button-bare.-md .now-line-height-crop:after,.now-button-bare.-md .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-button-bare.-md .now-line-height-crop:before{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--before,\\n\\t\\t\\t\\t\\t-.25em\\n\\t\\t\\t\\t)*1)}.now-button-bare.-md .now-line-height-crop:after{margin-block-end:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1)}.now-button-bare.-md .now-line-height-crop+.now-button-bare.-md .now-line-height-crop{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1*-1)}.now-button-bare.-lg{font-size:var(--now-actionable--font-size--lg,var(--now-font-size--lg1,calc(1.5rem*var(--now-rem-multiplier-from-root))));line-height:1.25;min-block-size:calc(3rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size-block, 1)*3rem*var(--now-rem-multiplier-from-root)/2);padding-block:calc(.375rem*var(--now-rem-multiplier-from-root)*var(--now-button--scale-size-block, 1))}.now-button-bare.-lg.hide-block-padding{min-block-size:calc(1.75rem*var(--now-rem-multiplier-from-root));padding-block:0}.now-button-bare.-lg.show-inline-padding{padding-inline:calc(var(--now-space--lg2, calc(1.5rem * var(--now-rem-multiplier-from-root))) * var(--now-button--scale-size-inline, 1))}.now-button-bare.-lg .now-line-height-crop{display:block}.now-button-bare.-lg .now-line-height-crop:after,.now-button-bare.-lg .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-button-bare.-lg .now-line-height-crop:before{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--before,\\n\\t\\t\\t\\t\\t-.25em\\n\\t\\t\\t\\t)*1)}.now-button-bare.-lg .now-line-height-crop:after{margin-block-end:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1)}.now-button-bare.-lg .now-line-height-crop+.now-button-bare.-lg .now-line-height-crop{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1*-1)}.now-button-bare.-primary{border-radius:var(--now-button--bare_primary--border-radius,var(--now-actionable--primary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button--bare_primary--border-width,var(--now-actionable--primary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button--bare_primary--color,var(--now-actionable_label--primary_bare--color,var(--now-color--primary-2,23,100,82))))}.now-button-bare.-primary .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_primary--color,var(--now-actionable_icon--primary_bare--color,var(--now-color--primary-2,23,100,82))))}.now-button-bare.-primary:not(.is-disabled):hover{background-color:RGB(var(--now-button--bare_primary--background-color--hover,var(--now-actionable--primary_bare--background-color--hover,var(--now-color--primary-1,30,133,109))),var(--now-button--bare_primary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--bare_primary--border-color--hover,var(--now-actionable--primary_bare--border-color--hover,var(--now-color--primary-3,15,67,55))),var(--now-button--bare_primary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button--bare_primary--color--hover,var(--now-actionable_label--primary_bare--color--hover,var(--now-color--primary-3,15,67,55))))}.now-button-bare.-primary:not(.is-disabled):hover .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_primary--color--hover,var(--now-actionable_icon--primary_bare--color--hover,var(--now-color--primary-3,15,67,55))))}.now-button-bare.-primary:not(.is-disabled).is-active,.now-button-bare.-primary:not(.is-disabled):active{border-color:RGB(var(--now-button--bare_primary--border-color--active,var(--now-actionable--primary_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button--bare_primary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button--bare_primary--color--active,var(--now-actionable_label--primary_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-primary:not(.is-disabled).is-active .now-button-bare-icon,.now-button-bare.-primary:not(.is-disabled):active .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_primary--color--active,var(--now-actionable_icon--primary_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-primary:not(.is-disabled) .now-ripple,.now-button-bare.-primary:not(.is-disabled).is-active,.now-button-bare.-primary:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button--bare_primary--background-color--active,var(--now-actionable--primary_bare--background-color--active,var(--now-color--primary-1,30,133,109))),var(--now-button--bare_primary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-bare.-primary.is-disabled{opacity:var(--now-button--bare_primary--opacity--disabled,var(--now-actionable--primary_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-bare.-primary.high-contrast{color:RGB(var(--now-button--bare_primary_high-contrast--color,var(--now-actionable_label--primary_high-contrast_bare--color,var(--now-color--primary-3,15,67,55))))}.now-button-bare.-primary.high-contrast .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_primary_high-contrast--color,var(--now-actionable_icon--primary_high-contrast_bare--color,var(--now-color--primary-3,15,67,55))))}.now-button-bare.-primary.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button--bare_primary_high-contrast--color--hover,var(--now-actionable_label--primary_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-primary.high-contrast:not(.is-disabled):hover .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_primary_high-contrast--color--hover,var(--now-actionable_icon--primary_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-primary.high-contrast:not(.is-disabled).is-active,.now-button-bare.-primary.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button--bare_primary_high-contrast--color--active,var(--now-actionable_label--primary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-primary.high-contrast:not(.is-disabled).is-active .now-button-bare-icon,.now-button-bare.-primary.high-contrast:not(.is-disabled):active .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_primary_high-contrast--color--active,var(--now-actionable_icon--primary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-secondary{border-radius:var(--now-button--bare_secondary--border-radius,var(--now-actionable--secondary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button--bare_secondary--border-width,var(--now-actionable--secondary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button--bare_secondary--color,var(--now-actionable_label--secondary_bare--color,var(--now-actionable_label--secondary--color,var(--now-color--secondary-1,1,119,142)))))}.now-button-bare.-secondary .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_secondary--color,var(--now-actionable_icon--secondary_bare--color,var(--now-actionable_icon--secondary--color,var(--now-color--secondary-1,1,119,142)))))}.now-button-bare.-secondary:not(.is-disabled):hover{background-color:RGB(var(--now-button--bare_secondary--background-color--hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142)))),var(--now-button--bare_secondary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--bare_secondary--border-color--hover,var(--now-actionable--secondary_bare--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107)))),var(--now-button--bare_secondary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button--bare_secondary--color--hover,var(--now-actionable_label--secondary_bare--color--hover,var(--now-actionable_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107)))))}.now-button-bare.-secondary:not(.is-disabled):hover .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_secondary--color--hover,var(--now-actionable_icon--secondary_bare--color--hover,var(--now-actionable_icon--secondary--color--hover,var(--now-color--secondary-2,1,89,107)))))}.now-button-bare.-secondary:not(.is-disabled).is-active,.now-button-bare.-secondary:not(.is-disabled):active{border-color:RGB(var(--now-button--bare_secondary--border-color--active,var(--now-actionable--secondary_bare--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71)))),var(--now-button--bare_secondary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button--bare_secondary--color--active,var(--now-actionable_label--secondary_bare--color--active,var(--now-actionable_label--secondary--color--active,var(--now-color--secondary-3,1,60,71)))))}.now-button-bare.-secondary:not(.is-disabled).is-active .now-button-bare-icon,.now-button-bare.-secondary:not(.is-disabled):active .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_secondary--color--active,var(--now-actionable_icon--secondary_bare--color--active,var(--now-actionable_icon--secondary--color--active,var(--now-color--secondary-3,1,60,71)))))}.now-button-bare.-secondary:not(.is-disabled) .now-ripple,.now-button-bare.-secondary:not(.is-disabled).is-active,.now-button-bare.-secondary:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button--bare_secondary--background-color--active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142)))),var(--now-button--bare_secondary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-bare.-secondary.is-disabled{opacity:var(--now-button--bare_secondary--opacity--disabled,var(--now-actionable--secondary_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-bare.-secondary.high-contrast{color:RGB(var(--now-button--bare_secondary_high-contrast--color,var(--now-actionable_label--secondary_high-contrast_bare--color,var(--now-color--secondary-2,1,89,107))))}.now-button-bare.-secondary.high-contrast .now-button-bare-icon{color:RGB(var(--now-button-iconic--bare_secondary_high-contrast--color,var(--now-actionable_icon--secondary_high-contrast_bare--color,var(--now-color--secondary-2,1,89,107))))}.now-button-bare.-secondary.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button--bare_secondary_high-contrast--color--hover,var(--now-actionable_label--secondary_high-contrast_bare--color--hover,var(--now-color--secondary-3,1,60,71))))}.now-button-bare.-secondary.high-contrast:not(.is-disabled):hover .now-button-bare-icon{color:RGB(var(--now-button-iconic--bare_secondary_high-contrast--color--hover,var(--now-actionable_icon--secondary_high-contrast_bare--color--hover,var(--now-color--secondary-3,1,60,71))))}.now-button-bare.-secondary.high-contrast:not(.is-disabled).is-active,.now-button-bare.-secondary.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button--bare_secondary_high-contrast--color--active,var(--now-actionable_label--secondary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-secondary.high-contrast:not(.is-disabled).is-active .now-button-bare-icon,.now-button-bare.-secondary.high-contrast:not(.is-disabled):active .now-button-bare-icon{color:RGB(var(--now-button-iconic--bare_secondary_high-contrast--color--active,var(--now-actionable_icon--secondary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-tertiary{border-radius:var(--now-button--bare_tertiary--border-radius,var(--now-actionable--tertiary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button--bare_tertiary--border-width,var(--now-actionable--tertiary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button--bare_tertiary--color,var(--now-actionable_label--tertiary_bare--color,var(--now-actionable_label--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-button-bare.-tertiary .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_tertiary--color,var(--now-actionable_icon--tertiary_bare--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-button-bare.-tertiary:not(.is-disabled):hover{background-color:RGB(var(--now-button--bare_tertiary--background-color--hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button--bare_tertiary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--bare_tertiary--border-color--hover,var(--now-actionable--tertiary_bare--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button--bare_tertiary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button--bare_tertiary--color--hover,var(--now-actionable_label--tertiary_bare--color--hover,var(--now-actionable_label--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-button-bare.-tertiary:not(.is-disabled):hover .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_tertiary--color--hover,var(--now-actionable_icon--tertiary_bare--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-button-bare.-tertiary:not(.is-disabled).is-active,.now-button-bare.-tertiary:not(.is-disabled):active{border-color:RGB(var(--now-button--bare_tertiary--border-color--active,var(--now-actionable--tertiary_bare--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28))))),var(--now-button--bare_tertiary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button--bare_tertiary--color--active,var(--now-actionable_label--tertiary_bare--color--active,var(--now-actionable_label--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-button-bare.-tertiary:not(.is-disabled).is-active .now-button-bare-icon,.now-button-bare.-tertiary:not(.is-disabled):active .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_tertiary--color--active,var(--now-actionable_icon--tertiary_bare--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-button-bare.-tertiary:not(.is-disabled) .now-ripple,.now-button-bare.-tertiary:not(.is-disabled).is-active,.now-button-bare.-tertiary:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button--bare_tertiary--background-color--active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button--bare_tertiary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-bare.-tertiary.is-disabled{opacity:var(--now-button--bare_tertiary--opacity--disabled,var(--now-actionable--tertiary_bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button-bare.-tertiary.high-contrast{color:RGB(var(--now-button--bare_tertiary_high-contrast--color,var(--now-actionable_label--tertiary_high-contrast_bare--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button--bare_tertiary_high-contrast--color-alpha,1))}.now-button-bare.-tertiary.high-contrast .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_tertiary_high-contrast--color,var(--now-actionable_icon--tertiary_high-contrast_bare--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-tertiary.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button--bare_tertiary_high-contrast--color--hover,var(--now-actionable_label--tertiary_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button--bare_tertiary_high-contrast--color-alpha--hover,1))}.now-button-bare.-tertiary.high-contrast:not(.is-disabled):hover .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_tertiary_high-contrast--color--hover,var(--now-actionable_icon--tertiary_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.-tertiary.high-contrast:not(.is-disabled).is-active,.now-button-bare.-tertiary.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button--bare_tertiary_high-contrast--color--active,var(--now-actionable_label--tertiary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button--bare_tertiary_high-contrast--color-alpha--active,1))}.now-button-bare.-tertiary.high-contrast:not(.is-disabled).is-active .now-button-bare-icon,.now-button-bare.-tertiary.high-contrast:not(.is-disabled):active .now-button-bare-icon{color:RGB(var(--now-button_icon--bare_tertiary_high-contrast--color--active,var(--now-actionable_icon--tertiary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-bare.is-disabled{cursor:not-allowed;opacity:var(--now-button--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button-bare.is-disabled:hover{box-shadow:none}.now-button-bare.is-disabled:focus-visible::-moz-focus-inner{border-style:none}.now-button-bare.is-disabled:focus-visible:focus-visible{box-shadow:inset 0 0 0 calc(.125rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button-bare.is-disabled:focus-visible:focus-visible{outline:1px solid highlight}}.now-button-bare .now-line-height-crop{min-inline-size:0}.now-button-bare-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.now-button-bare-label:after{content:\\\"\\\";display:block}@media(forced-colors:active){.now-button-bare,.now-button-bare:focus-visible,.now-button-bare:hover{transition:none}.now-button-bare{background-color:buttonface!important;border-style:solid!important;border-width:1px!important;color:buttontext!important}.now-button-bare now-icon,.now-button-bare now-icon-animated{color:inherit!important}.now-button-bare:focus-visible,.now-button-bare:hover{background-color:highlighttext!important;border-color:highlight!important;color:highlight!important}.now-button-bare.is-disabled,.now-button-bare.is-disabled:hover{background-color:buttonface!important;border-color:graytext!important;color:graytext!important;opacity:1!important}.now-button-bare .now-line-height-crop{forced-color-adjust:none}.now-button-bare ::slotted(*){forced-color-adjust:none}.now-button-bare.hide-block-padding.-sm{padding-block:calc(.125rem*var(--now-rem-multiplier-from-root))!important}.now-button-bare.hide-block-padding.-md{padding-block:calc(.1875rem*var(--now-rem-multiplier-from-root))!important}.now-button-bare.hide-block-padding.-lg{padding-block:calc(.375rem*var(--now-rem-multiplier-from-root))!important}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:inline-block;vertical-align:middle}.now-button-circular{--now-motion--timing-function:var(--now-motion--ease--focus-standard,cubic-bezier(0.4,0,0.5,1));--now-motion--duration:var(--now-motion--duration--normal,200ms);--now-button-circular--duration--faster:var(--now-motion--duration--faster,100ms);align-items:center;block-size:calc(3.75rem*var(--now-rem-multiplier-from-root));border-color:RGB(var(--now-button-circular--border-color,var(--now-actionable--brand-primary--border-color,var(--now-color--primary-1,30,133,109))));border-radius:50%;border-style:solid;border-width:var(--now-button-circular--border-width,var(--now-actionable--brand-primary--border-width,var(--now-actionable--contained_brand--border-width,0)));cursor:pointer;display:flex;inline-size:inherit;inline-size:calc(3.75rem*var(--now-rem-multiplier-from-root));justify-content:center;position:relative}.now-button-circular .now-ripple{aspect-ratio:1/1;border-radius:100%;inline-size:100%;left:50%;position:absolute;top:50%;transform:scale(0);transform-origin:center;z-index:0}.now-button-circular ::slotted(*),.now-button-circular now-icon,.now-button-circular slot>*{z-index:1}.now-button-circular.should-animate{transition-duration:var(--now-motion--duration--faster,.1s);transition-property:background-color,box-shadow,color,--now-button--ai--gradient-start,--now-button--ai--gradient-end;transition-timing-function:var(--now-motion--ease--linear,linear)}.now-button-circular:focus-visible{transition-property:background-color,color}.now-button-circular:focus-visible::-moz-focus-inner{border-style:none}.now-button-circular:focus-visible:focus-visible{box-shadow:inset 0 0 0 calc(.125rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button-circular:focus-visible:focus-visible{outline:1px solid highlight}}.now-button-circular.has-shadow{box-shadow:0 calc(.5rem*var(--now-rem-multiplier-from-root)) calc(.75rem*var(--now-rem-multiplier-from-root)) 0 RGB(56,56,56,var(--now-opacity--less,.25))}.now-button-circular.has-shadow:focus-visible{box-shadow:0 calc(.5rem*var(--now-rem-multiplier-from-root)) calc(.75rem*var(--now-rem-multiplier-from-root)) 0 RGB(56,56,56,var(--now-opacity--less,.25)),inset 0 0 0 calc(.125rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))}.now-button-circular.-initial{background-color:RGB(var(--now-button-circular--background-color,var(--now-actionable--brand-primary--background-color,var(--now-color--primary-1,30,133,109))));color:RGB(var(--now-button-circular--color,var(--now-actionable_icon--brand-primary--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button-circular.-initial:not(.is-disabled):hover{background-color:RGB(var(--now-button-circular--background-color--hover,var(--now-actionable--brand-primary--background-color--hover,var(--now-color--primary-2,23,100,82))));border-color:RGB(var(--now-button-circular--border-color--hover,var(--now-actionable--brand-primary--border-color--hover,var(--now-color--primary-2,23,100,82))));color:RGB(var(--now-button-circular--color--hover,var(--now-actionable_icon--brand-primary--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button-circular.-initial:not(.is-disabled).is-active,.now-button-circular.-initial:not(.is-disabled):active{border-color:RGB(var(--now-button-circular--border-color--active,var(--now-actionable--brand-primary--border-color--active,var(--now-color--primary-3,15,67,55))));color:RGB(var(--now-button-circular--color--active,var(--now-actionable_icon--brand-primary--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button-circular.-initial:not(.is-disabled) .now-ripple,.now-button-circular.-initial:not(.is-disabled).is-active,.now-button-circular.-initial:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-circular--background-color--active,var(--now-actionable--brand-primary--background-color--active,var(--now-color--primary-3,15,67,55))))}.now-button-circular.-ai{--now-button--ai--gradient-start:RGB(var(--now-actionable--primary-ai--background-color-gradient--start,var(--now-color--secondary-brand-10,134,246,115)));--now-button--ai--gradient-end:RGB(var(--now-actionable--primary-ai--background-color-gradient--end,var(--now-color--supplementary1-brand-10,113,213,254)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%)}.now-button-circular.-ai,.now-button-circular.-ai.is-disabled{color:RGB(var(--now-actionable_icon--primary-ai--color,var(--now-actionable_label--primary-ai--color,var(--now-color--primary-brand-16,0,79,101))))}.now-button-circular.-ai:not(.is-disabled):hover{--now-button--ai--gradient-start:RGB(var(--now-actionable--primary-ai--background-color--hover,var(--now-color--secondary-brand-10,134,246,115)));--now-button--ai--gradient-end:RGB(var(--now-actionable--primary-ai--background-color--hover,var(--now-color--secondary-brand-10,134,246,115)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);color:RGB(var(--now-actionable_icon--primary-ai--color--hover,var(--now-actionable_label--primary-ai--color--hover,var(--now-color--primary-brand-17,0,72,91))))}.now-button-circular.-ai:not(.is-disabled) .now-ripple,.now-button-circular.-ai:not(.is-disabled).is-active,.now-button-circular.-ai:not(.is-disabled):active{--now-button--ai--gradient-start:RGB(var(--now-actionable--primary-ai--background-color--active,var(--now-color--secondary-brand-11,125,229,107)));--now-button--ai--gradient-end:RGB(var(--now-actionable--primary-ai--background-color--active,var(--now-color--secondary-brand-11,125,229,107)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);color:RGB(var(--now-actionable_icon--primary-ai--color--active,var(--now-actionable_label--primary-ai--color--active,var(--now-color--primary-brand-18,0,64,82))))}.now-button-circular.is-disabled{color:RGB(var(--now-button-circular--color,var(--now-actionable_icon--brand-primary--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))));cursor:not-allowed;opacity:var(--now-button-circular--opacity--disabled,var(--now-actionable--brand-primary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}@media(forced-colors:active){.now-button-circular,.now-button-circular:focus-visible,.now-button-circular:hover{transition:none}.now-button-circular{background-color:buttonface!important;border-style:solid!important;border-width:1px!important;color:buttontext!important}.now-button-circular now-icon,.now-button-circular now-icon-animated{color:inherit!important}.now-button-circular:focus-visible,.now-button-circular:hover{background-color:highlighttext!important;border-color:highlight!important;color:highlight!important}.now-button-circular.is-disabled,.now-button-circular.is-disabled:hover{background-color:buttonface!important;border-color:graytext!important;color:graytext!important;opacity:1!important}.now-button-circular .now-line-height-crop{forced-color-adjust:none}.now-button-circular ::slotted(*){forced-color-adjust:none}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:inline-block;vertical-align:middle}.now-button-iconic{align-items:center;border-radius:var(--now-button-iconic--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0)));border-style:solid;cursor:pointer;display:flex;inline-size:inherit;justify-content:center;margin:0;overflow:hidden;padding:0;position:relative}.now-button-iconic ::slotted(*),.now-button-iconic now-icon,.now-button-iconic slot>*{z-index:1}.now-button-iconic .now-ripple{aspect-ratio:1/1;border-radius:100%;inline-size:100%;left:50%;position:absolute;top:50%;transform:scale(0);transform-origin:center;z-index:0}.now-button-iconic.should-animate{transition-duration:var(--now-motion--duration--faster,.1s);transition-property:--now-button--ai--gradient-start,--now-button--ai--gradient-end,border-color,background-color,box-shadow,color;transition-timing-function:var(--now-motion--ease--linear,linear)}.now-button-iconic.should-animate:hover{transition-duration:var(--now-motion--duration--faster,.1s),var(--now-motion--duration--normal,.2s),var(--now-motion--duration--faster,.1s);transition-property:--now-button--ai--gradient-start,--now-button--ai--gradient-end,border-color,background-color,box-shadow,color}.now-button-iconic.should-animate:focus{transition-duration:var(--now-motion--duration--faster,.1s),var(--now-motion--duration--normal,.2s),var(--now-motion--duration--normal,.2s)}.now-button-iconic.should-animate:focus-visible{transition-duration:var(--now-motion--duration--faster,.1s),var(--now-motion--duration--normal,.2s);transition-property:background-color,color}.now-button-iconic:not(.is-bare):hover{box-shadow:0 calc(.125rem*var(--now-rem-multiplier-from-root)) calc(.25rem*var(--now-rem-multiplier-from-root)) 0 RGB(56,56,56,var(--now-opacity--less,.25))}.now-button-iconic:focus-visible::-moz-focus-inner{border-style:none}.now-button-iconic:focus-visible:focus-visible{box-shadow:inset 0 0 0 calc(.125rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button-iconic:focus-visible:focus-visible{outline:1px solid highlight}}.now-button-iconic.-sm{block-size:calc(1.5rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--now-rem-multiplier-from-root)/2);inline-size:calc(1.5rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--now-rem-multiplier-from-root)/2)}.now-button-iconic.-md{block-size:calc(2rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size, 1)*2rem*var(--now-rem-multiplier-from-root)/2);inline-size:calc(2rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size, 1)*2rem*var(--now-rem-multiplier-from-root)/2)}.now-button-iconic.-lg{block-size:calc(3rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size, 1)*3rem*var(--now-rem-multiplier-from-root)/2);inline-size:calc(3rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size, 1)*3rem*var(--now-rem-multiplier-from-root)/2)}.now-button-iconic.-primary{background-color:RGB(var(--now-button-iconic--primary--background-color,var(--now-actionable--primary--background-color,var(--now-color--primary-1,30,133,109))));border-color:RGB(var(--now-button-iconic--primary--border-color,var(--now-actionable--primary--border-color,var(--now-color--primary-1,30,133,109))));border-radius:var(--now-button-iconic--primary--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button-iconic--primary--border-width,var(--now-actionable--primary--border-width,var(--now-actionable--contained_brand--border-width,0)));color:RGB(var(--now-button-iconic--primary--color,var(--now-actionable_icon--primary--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button-iconic.-primary:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--primary--background-color--hover,var(--now-actionable--primary--background-color--hover,var(--now-color--primary-2,23,100,82))));border-color:RGB(var(--now-button-iconic--primary--border-color--hover,var(--now-actionable--primary--border-color--hover,var(--now-color--primary-2,23,100,82))));color:RGB(var(--now-button-iconic--primary--color--hover,var(--now-actionable_icon--primary--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button-iconic.-primary:not(.is-disabled).is-active,.now-button-iconic.-primary:not(.is-disabled):active{border-color:RGB(var(--now-button-iconic--primary--border-color--active,var(--now-actionable--primary--border-color--active,var(--now-color--primary-3,15,67,55))));color:RGB(var(--now-button-iconic--primary--color--active,var(--now-actionable_icon--primary--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button-iconic.-primary:not(.is-disabled) .now-ripple,.now-button-iconic.-primary:not(.is-disabled).is-active,.now-button-iconic.-primary:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-iconic--primary--background-color--active,var(--now-actionable--primary--background-color--active,var(--now-color--primary-3,15,67,55))))}.now-button-iconic.-primary.is-disabled{opacity:var(--now-button-iconic--primary--opacity--disabled,var(--now-actionable--primary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-iconic.-secondary{background-color:RGB(var(--now-button-iconic--secondary--background-color,var(--now-actionable--secondary--background-color,var(--now-color--secondary-1,1,119,142))),var(--now-button-iconic--secondary--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-button-iconic--secondary--border-color,var(--now-actionable--secondary--border-color,var(--now-color--secondary-1,1,119,142))));border-radius:var(--now-button-iconic--secondary--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button-iconic--secondary--border-width,var(--now-actionable--secondary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button-iconic--secondary--color,var(--now-actionable_icon--secondary--color,var(--now-color--secondary-1,1,119,142))))}.now-button-iconic.-secondary:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--secondary--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142))),var(--now-button-iconic--secondary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-iconic--secondary--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107))));color:RGB(var(--now-button-iconic--secondary--color--hover,var(--now-actionable_icon--secondary--color--hover,var(--now-color--secondary-2,1,89,107))))}.now-button-iconic.-secondary:not(.is-disabled).is-active,.now-button-iconic.-secondary:not(.is-disabled):active{border-color:RGB(var(--now-button-iconic--secondary--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71))));color:RGB(var(--now-button-iconic--secondary--color--active,var(--now-actionable_icon--secondary--color--active,var(--now-color--secondary-3,1,60,71))))}.now-button-iconic.-secondary:not(.is-disabled) .now-ripple,.now-button-iconic.-secondary:not(.is-disabled).is-active,.now-button-iconic.-secondary:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-iconic--secondary--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142))),var(--now-button-iconic--secondary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-iconic.-secondary.is-disabled{opacity:var(--now-button-iconic--secondary--opacity--disabled,var(--now-actionable--secondary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-iconic.-tertiary{background-color:RGB(var(--now-button-iconic--tertiary--background-color,var(--now-actionable--tertiary--background-color,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button-iconic--tertiary--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-button-iconic--tertiary--border-color,var(--now-actionable--tertiary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))),var(--now-button-iconic--tertiary--border-color-alpha,var(--now-actionable--iconic--border-color-alpha,1)));border-radius:var(--now-button-iconic--tertiary--border-radius,var(--now-actionable--tertiary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button-iconic--tertiary--border-width,var(--now-actionable--tertiary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button-iconic--tertiary--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-button-iconic.-tertiary:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--tertiary--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button-iconic--tertiary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-iconic--tertiary--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button-iconic--tertiary--border-color-alpha--hover,var(--now-actionable--iconic--border-color-alpha,1)));color:RGB(var(--now-button-iconic--tertiary--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))))}.now-button-iconic.-tertiary:not(.is-disabled).is-active,.now-button-iconic.-tertiary:not(.is-disabled):active{border-color:RGB(var(--now-button-iconic--tertiary--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28)))),var(--now-button-iconic--tertiary--border-color-alpha--active,var(--now-actionable--iconic--border-color-alpha,1)));color:RGB(var(--now-button-iconic--tertiary--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-iconic.-tertiary:not(.is-disabled) .now-ripple,.now-button-iconic.-tertiary:not(.is-disabled).is-active,.now-button-iconic.-tertiary:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-iconic--tertiary--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button-iconic--tertiary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-iconic.-tertiary.is-disabled{opacity:var(--now-button-iconic--tertiary--opacity--disabled,var(--now-actionable--tertiary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-iconic.-primary-ai{--now-button--ai--gradient-start:RGB(var(--now-actionable--primary-ai--background-color-gradient--start,var(--now-color--secondary-brand-10,134,246,115)));--now-button--ai--gradient-end:RGB(var(--now-actionable--primary-ai--background-color-gradient--end,var(--now-color--supplementary1-brand-10,113,213,254)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--primary-ai--border-color,var(--now-color--secondary-brand-10,134,246,115)));border-radius:var(--now-actionable--primary-ai--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,0)));border-width:var(--now-actionable--primary-ai--border-width,var(--now-actionable--contained_brand--border-width,0));color:RGB(var(--now-actionable_label--primary-ai--color,var(--now-color--primary-brand-16,0,79,101)))}.now-button-iconic.-primary-ai .now-button-icon{color:RGB(var(--now-actionable_icon--primary-ai--color,var(--now-actionable_label--primary-ai--color,var(--now-color--primary-brand-16,0,79,101))))}.now-button-iconic.-primary-ai:not(.is-disabled):hover{--now-button--ai--gradient-start:RGB(var(--now-actionable--primary-ai--background-color--hover,var(--now-color--secondary-brand-10,134,246,115)));--now-button--ai--gradient-end:RGB(var(--now-actionable--primary-ai--background-color--hover,var(--now-color--secondary-brand-10,134,246,115)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--primary-ai--border-color--hover,var(--now-color--secondary-brand-10,134,246,115)));color:RGB(var(--now-actionable_label--primary-ai--color--hover,var(--now-color--primary-brand-17,0,72,91)))}.now-button-iconic.-primary-ai:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-actionable_icon--primary-ai--color--hover,var(--now-actionable_label--primary-ai--color--hover,var(--now-color--primary-brand-17,0,72,91))))}.now-button-iconic.-primary-ai:not(.is-disabled).is-active,.now-button-iconic.-primary-ai:not(.is-disabled):active{--now-button--ai--gradient-start:RGB(var(--now-actionable--primary-ai--background-color--active,var(--now-color--secondary-brand-11,125,229,107)));--now-button--ai--gradient-end:RGB(var(--now-actionable--primary-ai--background-color--active,var(--now-color--secondary-brand-11,125,229,107)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--primary-ai--border-color--active,var(--now-color--secondary-brand-11,125,229,107)));color:RGB(var(--now-actionable_label--primary-ai--color--active,var(--now-color--primary-brand-18,0,64,82)))}.now-button-iconic.-primary-ai:not(.is-disabled).is-active .now-button-icon,.now-button-iconic.-primary-ai:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-actionable_icon--primary-ai--color--active,var(--now-actionable_label--primary-ai--color--active,var(--now-color--primary-brand-18,0,64,82))))}.now-button-iconic.-primary-ai:not(.is-disabled) .now-ripple,.now-button-iconic.-primary-ai:not(.is-disabled).is-active,.now-button-iconic.-primary-ai:not(.is-disabled):active:not(.has-ripple){--now-button--ai--gradient-start:RGB(var(--now-actionable--primary-ai--background-color--active,var(--now-color--secondary-brand-11,125,229,107)));--now-button--ai--gradient-end:RGB(var(--now-actionable--primary-ai--background-color--active,var(--now-color--secondary-brand-11,125,229,107)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%)}.now-button-iconic.-primary-ai.is-disabled{opacity:var(--now-actionable--primary-ai--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button-iconic.-secondary-ai{--now-button--ai--gradient-start:RGB(var(--now-actionable--secondary-ai--background-color-gradient--start,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--secondary-ai--background-color-alpha,var(--now-opacity--less,0.25)));--now-button--ai--gradient-end:RGB(var(--now-actionable--secondary-ai--background-color-gradient--end,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--secondary-ai--background-color-alpha,var(--now-opacity--less,0.25)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--secondary-ai--border-color,var(--now-color--secondary-brand-11,125,229,107)));border-radius:var(--now-actionable--secondary-ai--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0)));border-width:var(--now-actionable--secondary-ai--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px)));color:RGB(var(--now-actionable_label--secondary-ai--color,var(--now-color--primary-brand-12,0,111,142)))}.now-button-iconic.-secondary-ai .now-button-icon{color:RGB(var(--now-actionable_icon--secondary-ai--color,var(--now-actionable_label--secondary-ai--color,var(--now-color--primary-brand-12,0,111,142))))}.now-button-iconic.-secondary-ai:not(.is-disabled):hover{--now-button--ai--gradient-start:RGB(var(--now-actionable--secondary-ai--background-color-gradient--start_hover,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--secondary-ai--background-color-alpha--hover,var(--now-opacity--mid,0.5)));--now-button--ai--gradient-end:RGB(var(--now-actionable--secondary-ai--background-color-gradient--end_hover,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--secondary-ai--background-color-alpha--hover,var(--now-opacity--mid,0.5)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--secondary-ai--border-color--hover,var(--now-color--secondary-brand-12,114,209,98)));color:RGB(var(--now-actionable_label--secondary-ai--color--hover,var(--now-color--primary-brand-13,0,104,132)))}.now-button-iconic.-secondary-ai:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-actionable_icon--secondary-ai--color--hover,var(--now-actionable_label--secondary-ai--color--hover,var(--now-color--primary-brand-13,0,104,132))))}.now-button-iconic.-secondary-ai:not(.is-disabled).is-active,.now-button-iconic.-secondary-ai:not(.is-disabled):active{--now-button--ai--gradient-start:RGB(var(--now-actionable--secondary-ai--background-color-gradient--start_active,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--secondary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));--now-button--ai--gradient-end:RGB(var(--now-actionable--secondary-ai--background-color-gradient--end_active,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--secondary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--secondary-ai--border-color--active,var(--now-color--secondary-brand-13,105,192,90)));color:RGB(var(--now-actionable_label--secondary-ai--color--active,var(--now-color--primary-brand-14,0,96,122)))}.now-button-iconic.-secondary-ai:not(.is-disabled).is-active .now-button-icon,.now-button-iconic.-secondary-ai:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-actionable_icon--secondary-ai--color--active,var(--now-actionable_label--secondary-ai--color--active,var(--now-color--primary-brand-14,0,96,122))))}.now-button-iconic.-secondary-ai:not(.is-disabled) .now-ripple,.now-button-iconic.-secondary-ai:not(.is-disabled).is-active,.now-button-iconic.-secondary-ai:not(.is-disabled):active:not(.has-ripple){--now-button--ai--gradient-start:RGB(var(--now-actionable--secondary-ai--background-color-gradient--start_active,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--secondary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));--now-button--ai--gradient-end:RGB(var(--now-actionable--secondary-ai--background-color-gradient--end_active,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--secondary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%)}.now-button-iconic.-secondary-ai.is-disabled{opacity:var(--now-actionable--secondary-ai--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button-iconic.-tertiary-ai{--now-button--ai--gradient-start:RGB(var(--now-actionable--tertiary-ai--background-color-gradient--start,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--tertiary-ai--background-color-alpha,var(--now-opacity--least,0.1)));--now-button--ai--gradient-end:RGB(var(--now-actionable--tertiary-ai--background-color-gradient--end,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--tertiary-ai--background-color-alpha,var(--now-opacity--least,0.1)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--tertiary-ai--border-color,var(--now-color--secondary-brand-11,125,229,107)));border-radius:var(--now-actionable--tertiary-ai--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0)));border-width:var(--now-actionable--tertiary-ai--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px)));color:RGB(var(--now-actionable_label--tertiary-ai--color,var(--now-color--primary-brand-12,0,111,142)))}.now-button-iconic.-tertiary-ai .now-button-icon{color:RGB(var(--now-actionable_icon--tertiary-ai--color,var(--now-actionable_label--tertiary-ai--color,var(--now-color--primary-brand-12,0,111,142))))}.now-button-iconic.-tertiary-ai:not(.is-disabled):hover{--now-button--ai--gradient-start:RGB(var(--now-actionable--tertiary-ai--background-color-gradient--start_hover,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--tertiary-ai--background-color-alpha--hover,var(--now-opacity--mid,0.5)));--now-button--ai--gradient-end:RGB(var(--now-actionable--tertiary-ai--background-color-gradient--end_hover,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--tertiary-ai--background-color-alpha--hover,var(--now-opacity--mid,0.5)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--tertiary-ai--border-color--hover,var(--now-color--secondary-brand-12,114,209,98)));color:RGB(var(--now-actionable_label--tertiary-ai--color--hover,var(--now-color--primary-brand-13,0,104,132)))}.now-button-iconic.-tertiary-ai:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-actionable_icon--tertiary-ai--color--hover,var(--now-actionable_label--tertiary-ai--color--hover,var(--now-color--primary-brand-13,0,104,132))))}.now-button-iconic.-tertiary-ai:not(.is-disabled).is-active,.now-button-iconic.-tertiary-ai:not(.is-disabled):active{--now-button--ai--gradient-start:RGB(var(--now-actionable--tertiary-ai--background-color-gradient--start_active,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--tertiary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));--now-button--ai--gradient-end:RGB(var(--now-actionable--tertiary-ai--background-color-gradient--end_active,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--tertiary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--tertiary-ai--border-color--active,var(--now-color--secondary-brand-13,105,192,90)));color:RGB(var(--now-actionable_label--tertiary-ai--color--active,var(--now-color--primary-brand-14,0,96,122)))}.now-button-iconic.-tertiary-ai:not(.is-disabled).is-active .now-button-icon,.now-button-iconic.-tertiary-ai:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-actionable_icon--tertiary-ai--color--active,var(--now-actionable_label--tertiary-ai--color--active,var(--now-color--primary-brand-14,0,96,122))))}.now-button-iconic.-tertiary-ai:not(.is-disabled) .now-ripple,.now-button-iconic.-tertiary-ai:not(.is-disabled).is-active,.now-button-iconic.-tertiary-ai:not(.is-disabled):active:not(.has-ripple){--now-button--ai--gradient-start:RGB(var(--now-actionable--tertiary-ai--background-color-gradient--start_active,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--tertiary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));--now-button--ai--gradient-end:RGB(var(--now-actionable--tertiary-ai--background-color-gradient--end_active,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--tertiary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%)}.now-button-iconic.-tertiary-ai.is-disabled{opacity:var(--now-actionable--tertiary-ai--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button-iconic.is-bare,.now-button-iconic.is-bare.is-active,.now-button-iconic.is-bare:active,.now-button-iconic.is-bare:hover{background-color:transparent;border-color:transparent;border-width:0}.now-button-iconic.is-bare:focus-visible::-moz-focus-inner{border-style:none}.now-button-iconic.is-bare:focus-visible:focus-visible{box-shadow:inset 0 0 0 calc(.125rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)));outline:none}@media(forced-colors:active){.now-button-iconic.is-bare:focus-visible:focus-visible{outline:1px solid highlight}}.now-button-iconic.is-bare.-primary{border-radius:var(--now-button-iconic--bare_primary--border-radius,var(--now-actionable--primary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button-iconic--bare_primary--border-width,var(--now-actionable--primary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button-iconic--bare_primary--color,var(--now-actionable_icon--primary_bare--color,var(--now-color--primary-2,23,100,82))))}.now-button-iconic.is-bare.-primary:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--bare_primary--background-color--hover,var(--now-actionable--primary_bare--background-color--hover,var(--now-color--primary-1,30,133,109))),var(--now-button-iconic--bare_primary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-iconic--bare_primary--border-color--hover,var(--now-actionable--primary_bare--border-color--hover,var(--now-color--primary-3,15,67,55))),var(--now-button-iconic--bare_primary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-iconic--bare_primary--color--hover,var(--now-actionable_icon--primary_bare--color--hover,var(--now-color--primary-3,15,67,55))))}.now-button-iconic.is-bare.-primary:not(.is-disabled).is-active,.now-button-iconic.is-bare.-primary:not(.is-disabled):active{border-color:RGB(var(--now-button-iconic--bare_primary--border-color--active,var(--now-actionable--primary_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-iconic--bare_primary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-iconic--bare_primary--color--active,var(--now-actionable_icon--primary_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-iconic.is-bare.-primary:not(.is-disabled) .now-ripple,.now-button-iconic.is-bare.-primary:not(.is-disabled).is-active,.now-button-iconic.is-bare.-primary:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-iconic--bare_primary--background-color--active,var(--now-actionable--primary_bare--background-color--active,var(--now-color--primary-1,30,133,109))),var(--now-button-iconic--bare_primary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-iconic.is-bare.-primary.is-disabled{opacity:var(--now-button-iconic--bare_primary--opacity--disabled,var(--now-actionable--primary_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-iconic.is-bare.-primary.high-contrast{color:RGB(var(--now-button-iconic--bare_primary_high-contrast--color,var(--now-actionable_icon--primary_high-contrast_bare--color,var(--now-color--primary-3,15,67,55))))}.now-button-iconic.is-bare.-primary.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button-iconic--bare_primary_high-contrast--color--hover,var(--now-actionable_icon--primary_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-iconic.is-bare.-primary.high-contrast:not(.is-disabled).is-active,.now-button-iconic.is-bare.-primary.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button-iconic--bare_primary_high-contrast--color--active,var(--now-actionable_icon--primary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-iconic.is-bare.-secondary{border-radius:var(--now-button-iconic--bare_secondary--border-radius,var(--now-actionable--secondary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button-iconic--bare_secondary--border-width,var(--now-actionable--secondary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button-iconic--bare_secondary--color,var(--now-actionable_icon--secondary_bare--color,var(--now-actionable_icon--secondary--color,var(--now-color--secondary-1,1,119,142)))))}.now-button-iconic.is-bare.-secondary:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--bare_secondary--background-color--hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142)))),var(--now-button-iconic--bare_secondary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-iconic--bare_secondary--border-color--hover,var(--now-actionable--secondary_bare--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107)))),var(--now-button-iconic--bare_secondary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-iconic--bare_secondary--color--hover,var(--now-actionable_icon--secondary_bare--color--hover,var(--now-actionable_icon--secondary--color--hover,var(--now-color--secondary-2,1,89,107)))))}.now-button-iconic.is-bare.-secondary:not(.is-disabled).is-active,.now-button-iconic.is-bare.-secondary:not(.is-disabled):active{border-color:RGB(var(--now-button-iconic--bare_secondary--border-color--active,var(--now-actionable--secondary_bare--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71)))),var(--now-button-iconic--bare_secondary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-iconic--bare_secondary--color--active,var(--now-actionable_icon--secondary_bare--color--active,var(--now-actionable_icon--secondary--color--active,var(--now-color--secondary-3,1,60,71)))))}.now-button-iconic.is-bare.-secondary:not(.is-disabled) .now-ripple,.now-button-iconic.is-bare.-secondary:not(.is-disabled).is-active,.now-button-iconic.is-bare.-secondary:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-iconic--bare_secondary--background-color--active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142)))),var(--now-button-iconic--bare_secondary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-iconic.is-bare.-secondary.is-disabled{opacity:var(--now-button-iconic--bare_secondary--opacity--disabled,var(--now-actionable--secondary_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-iconic.is-bare.-secondary.high-contrast{color:RGB(var(--now-button-iconic--bare_secondary_high-contrast--color,var(--now-actionable_icon--secondary_high-contrast_bare--color,var(--now-color--secondary-2,1,89,107))))}.now-button-iconic.is-bare.-secondary.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button-iconic--bare_secondary_high-contrast--color--hover,var(--now-actionable_icon--secondary_high-contrast_bare--color--hover,var(--now-color--secondary-3,1,60,71))))}.now-button-iconic.is-bare.-secondary.high-contrast:not(.is-disabled).is-active,.now-button-iconic.is-bare.-secondary.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button-iconic--bare_secondary_high-contrast--color--active,var(--now-actionable_icon--secondary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-iconic.is-bare.-tertiary{border-radius:var(--now-button-iconic--bare_tertiary--border-radius,var(--now-actionable--tertiary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button-iconic--bare_tertiary--border-width,var(--now-actionable--tertiary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button-iconic--bare_tertiary--color,var(--now-actionable_icon--tertiary_bare--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-button-iconic.is-bare.-tertiary:not(.is-disabled):hover{background-color:RGB(var(--now-button-iconic--bare_tertiary--background-color--hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button-iconic--bare_tertiary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-iconic--bare_tertiary--border-color--hover,var(--now-actionable--tertiary_bare--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button-iconic--bare_tertiary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-iconic--bare_tertiary--color--hover,var(--now-actionable_icon--tertiary_bare--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-button-iconic.is-bare.-tertiary:not(.is-disabled).is-active,.now-button-iconic.is-bare.-tertiary:not(.is-disabled):active{border-color:RGB(var(--now-button-iconic--bare_tertiary--border-color--active,var(--now-actionable--tertiary_bare--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28))))),var(--now-button-iconic--bare_tertiary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-iconic--bare_tertiary--color--active,var(--now-actionable_icon--tertiary_bare--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-button-iconic.is-bare.-tertiary:not(.is-disabled) .now-ripple,.now-button-iconic.is-bare.-tertiary:not(.is-disabled).is-active,.now-button-iconic.is-bare.-tertiary:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-iconic--bare_tertiary--background-color--active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button-iconic--bare_tertiary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-iconic.is-bare.-tertiary.is-disabled{opacity:var(--now-button-iconic--bare_tertiary--opacity--disabled,var(--now-actionable--tertiary_bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button-iconic.is-bare.-tertiary.high-contrast{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color,var(--now-actionable_icon--tertiary_high-contrast_bare--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-iconic.is-bare.-tertiary.high-contrast:not(.is-disabled):hover{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color--hover,var(--now-actionable_icon--tertiary_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-iconic--bare_tertiary_high-contrast--color-alpha--hover,var(--now-actionable--high-contrast--color-alpha,1)))}.now-button-iconic.is-bare.-tertiary.high-contrast:not(.is-disabled).is-active,.now-button-iconic.is-bare.-tertiary.high-contrast:not(.is-disabled):active{color:RGB(var(--now-button-iconic--bare_tertiary_high-contrast--color--active,var(--now-actionable_icon--tertiary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-iconic--bare_tertiary_high-contrast--color-alpha--active,var(--now-actionable--high-contrast--color-alpha,1)))}.now-button-iconic.is-bare.-primary-ai{background-image:none;border-radius:var(--now-button-iconic--bare_primary--border-radius,var(--now-actionable--primary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button-iconic--bare_primary--border-width,var(--now-actionable--primary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-actionable_label--primary-ai_bare--color,var(--now-color--secondary-brand-17,64,118,55)))}.now-button-iconic.is-bare.-primary-ai:before{display:none}.now-button-iconic.is-bare.-primary-ai:not(.is-disabled):hover{background-color:RGB(var(--now-actionable--primary-ai_bare--background-color--hover,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--primary-ai--background-color-alpha--hover,var(--now-opacity--mid,.5)));background-image:none;border-color:transparent;color:RGB(var(--now-actionable_icon--primary-ai_bare--color--hover,var(--now-actionable_label--primary-ai_bare--color--hover,var(--now-color--primary-brand-13,0,104,132))))}.now-button-iconic.is-bare.-primary-ai:not(.is-disabled):active{background-color:RGB(var(--now-actionable--primary-ai_bare--background-color--active,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--primary-ai--background-color-alpha--active,var(--now-opacity--more,.65)));border-color:transparent;color:RGB(var(--now-actionable_icon--primary-ai_bare--color--active,var(--now-actionable_label--primary-ai_bare--color--active,var(--now-color--primary-brand-14,0,96,122))))}.now-button-iconic.is-bare.-primary-ai.is-disabled{opacity:var(--now-button-iconic--bare_primary--opacity--disabled,var(--now-actionable--primary_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-iconic.is-bare.-secondary-ai{--now-button--ai--gradient-start:RGB(var(--now-actionable--secondary-ai_bare--background-color-gradient--start_hover,var(--now-color--secondary-brand-10,134,246,115)),0);--now-button--ai--gradient-end:RGB(var(--now-actionable--secondary-ai_bare--background-color-gradient--end_hover,var(--now-color--supplementary1-brand-10,113,213,254)),0);background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%) border-box;border-radius:var(--now-button-iconic--bare_secondary--border-radius,var(--now-actionable--secondary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button-iconic--bare_secondary--border-width,var(--now-actionable--secondary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-actionable_label--secondary-ai_bare--color,var(--now-color--primary-brand-12,0,111,142)))}.now-button-iconic.is-bare.-secondary-ai:before{display:none}.now-button-iconic.is-bare.-secondary-ai:not(.is-disabled):hover{--now-button--ai--gradient-start:RGB(var(--now-actionable--secondary-ai_bare--background-color-gradient--start_hover,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--secondary-ai--background-color-alpha--hover,var(--now-opacity--mid,0.5)));--now-button--ai--gradient-end:RGB(var(--now-actionable--secondary-ai_bare--background-color-gradient--end_hover,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--secondary-ai--background-color-alpha--hover,var(--now-opacity--mid,0.5)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%) border-box;border-color:transparent;color:RGB(var(--now-actionable_icon--secondary-ai_bare--color--hover,var(--now-actionable_label--secondary-ai_bare--color--hover,var(--now-color--primary-brand-13,0,104,132))))}.now-button-iconic.is-bare.-secondary-ai:not(.is-disabled):active{--now-button--ai--gradient-start:RGB(var(--now-actionable--secondary-ai_bare--background-color-gradient--start_active,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--secondary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));--now-button--ai--gradient-end:RGB(var(--now-actionable--secondary-ai_bare--background-color-gradient--end_active,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--secondary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%) border-box;border-color:transparent;color:RGB(var(--now-actionable_icon--secondary-ai_bare--color--active,var(--now-actionable_label--secondary-ai_bare--color--active,var(--now-color--primary-brand-14,0,96,122))))}.now-button-iconic.is-bare.-secondary-ai:not(.is-disabled).is-disabled{opacity:var(--now-button-iconic--bare_secondary--opacity--disabled,var(--now-actionable--secondary_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-iconic.is-bare.-tertiary-ai{--now-button--ai--gradient-start:RGB(var(--now-actionable--tertiary-ai_bare--background-color-gradient--start_hover,var(--now-color--secondary-brand-10,134,246,115)),0);--now-button--ai--gradient-end:RGB(var(--now-actionable--tertiary-ai_bare--background-color-gradient--end_hover,var(--now-color--supplementary1-brand-10,113,213,254)),0);background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%) border-box;border-radius:var(--now-button-iconic--bare_tertiary--border-radius,var(--now-actionable--tertiary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button-iconic--bare_tertiary--border-width,var(--now-actionable--tertiary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-actionable_icon--tertiary-ai_bare--color,var(--now-actionable_label--tertiary-ai_bare--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-button-iconic.is-bare.-tertiary-ai:before{display:none}.now-button-iconic.is-bare.-tertiary-ai:not(.is-disabled):hover{--now-button--ai--gradient-start:RGB(var(--now-actionable--tertiary-ai_bare--background-color-gradient--start_hover,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--tertiary-ai--background-color-alpha--hover,var(--now-opacity--mid,0.5)));--now-button--ai--gradient-end:RGB(var(--now-actionable--tertiary-ai_bare--background-color-gradient--end_hover,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--tertiary-ai--background-color-alpha--hover,var(--now-opacity--mid,0.5)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%) border-box;border-color:transparent;color:RGB(var(--now-actionable_icon--tertiary-ai_bare--color--hover,var(--now-actionable_label--tertiary-ai_bare--color--hover,var(--now-color--primary-brand-13,0,104,132))))}.now-button-iconic.is-bare.-tertiary-ai:not(.is-disabled):active{--now-button--ai--gradient-start:RGB(var(--now-actionable--tertiary-ai_bare--background-color-gradient--start_active,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--tertiary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));--now-button--ai--gradient-end:RGB(var(--now-actionable--tertiary-ai_bare--background-color-gradient--end_active,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--tertiary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%) border-box;border-color:transparent;color:RGB(var(--now-actionable_icon--tertiary-ai_bare--color--active,var(--now-actionable_label--tertiary-ai_bare--color--active,var(--now-color--primary-brand-14,0,96,122))))}.now-button-iconic.is-bare.-tertiary-ai.is-disabled{opacity:var(--now-button-iconic--bare_tertiary--opacity--disabled,var(--now-actionable--tertiary_bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button-iconic.is-disabled{cursor:not-allowed;opacity:var(--now-button--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button-iconic.is-disabled:hover{box-shadow:none}.now-button-iconic.is-disabled:focus-visible::-moz-focus-inner{border-style:none}.now-button-iconic.is-disabled:focus-visible:focus-visible{box-shadow:inset 0 0 0 calc(.125rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button-iconic.is-disabled:focus-visible:focus-visible{outline:1px solid highlight}}.now-button-iconic.hide-padding{block-size:auto;border-width:0;inline-size:auto}@media(forced-colors:active){.now-button-iconic,.now-button-iconic:focus-visible,.now-button-iconic:hover{transition:none}.now-button-iconic{background-color:buttonface!important;border-style:solid!important;border-width:1px!important;color:buttontext!important}.now-button-iconic now-icon,.now-button-iconic now-icon-animated{color:inherit!important}.now-button-iconic:focus-visible,.now-button-iconic:hover{background-color:highlighttext!important;border-color:highlight!important;color:highlight!important}.now-button-iconic.is-disabled,.now-button-iconic.is-disabled:hover{background-color:buttonface!important;border-color:graytext!important;color:graytext!important;opacity:1!important}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:inline-block;vertical-align:middle}.now-button-stateful{align-items:center;background-color:transparent;border-color:transparent;border-style:solid;cursor:pointer;display:flex;inline-size:inherit;justify-content:center;margin:0;overflow:hidden;padding:0;position:relative}.now-button-stateful .now-ripple{aspect-ratio:1/1;border-radius:100%;inline-size:100%;left:50%;position:absolute;top:50%;transform:scale(0);transform-origin:center;z-index:0}.now-button-stateful.should-animate{transition-duration:var(--now-motion--duration--faster,.1s);transition-property:background-color,box-shadow,color;transition-timing-function:var(--now-motion--ease--linear,linear)}.now-button-stateful.should-animate:hover{transition-duration:var(--now-motion--duration--faster,.1s),var(--now-motion--duration--normal,.2s),var(--now-motion--duration--faster,.1s);transition-property:background-color,box-shadow,color}.now-button-stateful.should-animate:focus{transition-duration:var(--now-motion--duration--faster,.1s),var(--now-motion--duration--normal,.2s),var(--now-motion--duration--normal,.2s)}.now-button-stateful.should-animate:focus-visible{transition-duration:var(--now-motion--duration--faster,.1s),var(--now-motion--duration--normal,.2s);transition-property:background-color,color}.now-button-stateful:focus-visible::-moz-focus-inner{border-style:none}.now-button-stateful:focus-visible:focus-visible{box-shadow:inset 0 0 0 calc(.125rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button-stateful:focus-visible:focus-visible{outline:1px solid highlight}}.now-button-stateful.-sm{block-size:calc(1.5rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--now-rem-multiplier-from-root)/2);inline-size:calc(1.5rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--now-rem-multiplier-from-root)/2)}.now-button-stateful.-md{block-size:calc(2rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size, 1)*2rem*var(--now-rem-multiplier-from-root)/2);inline-size:calc(2rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size, 1)*2rem*var(--now-rem-multiplier-from-root)/2)}.now-button-stateful.-lg{block-size:calc(3rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size, 1)*3rem*var(--now-rem-multiplier-from-root)/2);inline-size:calc(3rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size, 1)*3rem*var(--now-rem-multiplier-from-root)/2)}.now-button-stateful.-primary{border-radius:var(--now-button-stateful--primary--border-radius,var(--now-actionable--primary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button-stateful--primary--border-width,var(--now-actionable--primary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button-stateful--primary--color,var(--now-actionable_icon--primary_bare--color,var(--now-color--primary-2,23,100,82))))}.now-button-stateful.-primary:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary--background-color--hover,var(--now-actionable--primary_bare--background-color--hover,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary--border-color--hover,var(--now-actionable--primary_bare--border-color--hover,var(--now-color--primary-3,15,67,55))),var(--now-button-stateful--primary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary--color--hover,var(--now-actionable_icon--primary_bare--color--hover,var(--now-color--primary-3,15,67,55))))}.now-button-stateful.-primary:not(.is-disabled).is-active,.now-button-stateful.-primary:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--primary--border-color--active,var(--now-actionable--primary_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary--color--active,var(--now-actionable_icon--primary_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary:not(.is-disabled) .now-ripple,.now-button-stateful.-primary:not(.is-disabled).is-active,.now-button-stateful.-primary:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--primary--background-color--active,var(--now-actionable--primary_bare--background-color--active,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-primary.is-disabled{opacity:var(--now-button-stateful--primary--opacity--disabled,var(--now-actionable--primary_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-stateful.-primary.is-selected{color:RGB(var(--now-button-stateful--primary--color--selected,var(--now-actionable_icon--primary_bare--color--selected,var(--now-color--primary-2,23,100,82))))}.now-button-stateful.-primary.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary--background-color--selected_hover,var(--now-actionable--primary_bare--background-color--selected_hover,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary--border-color--selected_hover,var(--now-actionable--primary_bare--border-color--selected_hover,var(--now-color--primary-3,15,67,55))),var(--now-button-stateful--primary--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary--color--selected_hover,var(--now-actionable_icon--primary_bare--color--selected_hover,var(--now-color--primary-3,15,67,55))))}.now-button-stateful.-primary.is-selected:not(.is-disabled).is-active,.now-button-stateful.-primary.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--primary--border-color--selected_active,var(--now-actionable--primary_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary--color--selected_active,var(--now-actionable_icon--primary_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-primary.is-selected:not(.is-disabled).is-active,.now-button-stateful.-primary.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--primary--background-color--selected_active,var(--now-actionable--primary_bare--background-color--selected_active,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-primary.high-contrast{color:RGB(var(--now-button-stateful--primary_high-contrast--color,var(--now-actionable_icon--primary_high-contrast_bare--color,var(--now-color--primary-3,15,67,55))))}.now-button-stateful.-primary.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary_high-contrast--background-color--hover,var(--now-actionable--primary_high-contrast_bare--background-color--hover,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_high-contrast--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary_high-contrast--border-color--hover,var(--now-actionable--primary_high-contrast_bare--border-color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary_high-contrast--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_high-contrast--color--hover,var(--now-actionable_icon--primary_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-primary.high-contrast:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--primary_high-contrast--border-color--active,var(--now-actionable--primary_high-contrast_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary_high-contrast--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_high-contrast--color--active,var(--now-actionable_icon--primary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-primary.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-primary.high-contrast:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--primary_high-contrast--background-color--active,var(--now-actionable--primary_high-contrast_bare--background-color--active,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_high-contrast--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-primary.high-contrast.is-selected{color:RGB(var(--now-button-stateful--primary_high-contrast--color--selected,var(--now-actionable_icon--primary_high-contrast_bare--color--selected,var(--now-color--primary-3,15,67,55))))}.now-button-stateful.-primary.high-contrast.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary_high-contrast--background-color--selected_hover,var(--now-actionable--primary_high-contrast_bare--background-color--selected_hover,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary_high-contrast--border-color--selected_hover,var(--now-actionable--primary_high-contrast_bare--border-color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_high-contrast--color--selected_hover,var(--now-actionable_icon--primary_high-contrast_bare--color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.high-contrast.is-selected:not(.is-disabled).is-active,.now-button-stateful.-primary.high-contrast.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--primary_high-contrast--border-color--selected_active,var(--now-actionable--primary_highlighted_high-contrast_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_high-contrast--color--selected_active,var(--now-actionable_icon--primary_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.high-contrast.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-primary.high-contrast.is-selected:not(.is-disabled).is-active,.now-button-stateful.-primary.high-contrast.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--primary_high-contrast--background-color--selected_active,var(--now-actionable--primary_high-contrast_bare--background-color--selected_active,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-primary.-highlighted.is-selected,.now-button-stateful.-primary.is-highlighted.is-selected{background-color:RGB(var(--now-button-stateful--primary_highlighted--background-color--selected,var(--now-actionable--primary_highlighted_bare--background-color--selected,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_highlighted--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary_highlighted--border-color--selected,var(--now-actionable--primary_bare--border-color--selected,var(--now-color--primary-2,23,100,82))),var(--now-button-stateful--primary_highlighted--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_highlighted--color--selected,var(--now-actionable_icon--primary_highlighted_bare--color--selected,var(--now-color--primary-2,23,100,82))))}.now-button-stateful.-primary.-highlighted.is-selected:not(.is-disabled):hover,.now-button-stateful.-primary.is-highlighted.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary_highlighted--background-color--selected_hover,var(--now-actionable--primary_highlighted_bare--background-color--selected_hover,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_highlighted--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary_highlighted--border-color--selected_hover,var(--now-actionable--primary_bare--border-color--selected_hover,var(--now-color--primary-3,15,67,55))),var(--now-button-stateful--primary_highlighted--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_highlighted--color--selected_hover,var(--now-actionable_icon--primary_highlighted_bare--color--selected_hover,var(--now-color--primary-3,15,67,55))))}.now-button-stateful.-primary.-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-primary.-highlighted.is-selected:not(.is-disabled):active,.now-button-stateful.-primary.is-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-primary.is-highlighted.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--primary_highlighted--border-color--selected_active,var(--now-actionable--primary_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary_highlighted--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_highlighted--color--selected_active,var(--now-actionable_icon--primary_highlighted_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-highlighted.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-primary.-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-primary.-highlighted.is-selected:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-primary.is-highlighted.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-primary.is-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-primary.is-highlighted.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--primary_highlighted--background-color--selected_active,var(--now-actionable--primary_highlighted_bare--background-color--selected_active,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_highlighted--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-primary.-highlighted.is-selected.high-contrast,.now-button-stateful.-primary.is-highlighted.is-selected.high-contrast{background-color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--background-color--selected,var(--now-actionable--primary_highlighted_high-contrast_bare--background-color--selected,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_highlighted_high-contrast--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--border-color--selected,var(--now-actionable--primary_highlighted_high-contrast_bare--border-color--selected,var(--now-color--primary-3,15,67,55))),var(--now-button-stateful--primary_highlighted_high-contrast--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--color--selected,var(--now-actionable_icon--primary_highlighted_high-contrast_bare--color--selected,var(--now-color--primary-3,15,67,55))))}.now-button-stateful.-primary.-highlighted.is-selected.high-contrast:not(.is-disabled):hover,.now-button-stateful.-primary.is-highlighted.is-selected.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--background-color--selected_hover,var(--now-actionable--primary_highlighted_high-contrast_bare--background-color--selected_hover,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_highlighted_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--border-color--selected_hover,var(--now-actionable--primary_highlighted_high-contrast_bare--border-color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary_highlighted_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--color--selected_hover,var(--now-actionable_icon--primary_highlighted_high-contrast_bare--color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-primary.-highlighted.is-selected.high-contrast:not(.is-disabled):active,.now-button-stateful.-primary.is-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-primary.is-highlighted.is-selected.high-contrast:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--border-color--selected_active,var(--now-actionable--primary_highlighted_high-contrast_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary_highlighted_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--color--selected_active,var(--now-actionable_icon--primary_highlighted_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-highlighted.is-selected.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-primary.-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-primary.-highlighted.is-selected.high-contrast:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-primary.is-highlighted.is-selected.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-primary.is-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-primary.is-highlighted.is-selected.high-contrast:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--primary_highlighted_high-contrast--background-color--selected_active,var(--now-actionable--primary_highlighted_high-contrast_bare--background-color--selected_active,var(--now-color--primary-1,30,133,109))),var(--now-button-stateful--primary_highlighted_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-primary.-selection,.now-button-stateful.-primary.-selection.-highlighted,.now-button-stateful.-primary.-selection.is-highlighted{border-radius:var(--now-button-stateful--primary-selection--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,0)));border-width:var(--now-button-stateful--primary-selection--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px)));color:RGB(var(--now-button-stateful--primary-selection--color,var(--now-actionable_icon--primary-selection_bare--color,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-primary.-selection.-highlighted:not(.is-disabled):hover,.now-button-stateful.-primary.-selection.is-highlighted:not(.is-disabled):hover,.now-button-stateful.-primary.-selection:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary-selection--background-color--hover,var(--now-actionable--primary-selection_bare--background-color--hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary-selection--border-color--hover,var(--now-actionable--primary-selection_bare--border-color--hover,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--primary-selection--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection--color--hover,var(--now-actionable_icon--primary-selection_bare--color--hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-primary.-selection.-highlighted:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.-highlighted:not(.is-disabled):active,.now-button-stateful.-primary.-selection.is-highlighted:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.is-highlighted:not(.is-disabled):active,.now-button-stateful.-primary.-selection:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--primary-selection--border-color--active,var(--now-actionable--primary-selection_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection--color--active,var(--now-actionable_icon--primary-selection_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection.-highlighted:not(.is-disabled) .now-ripple,.now-button-stateful.-primary.-selection.-highlighted:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.-highlighted:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-primary.-selection.is-highlighted:not(.is-disabled) .now-ripple,.now-button-stateful.-primary.-selection.is-highlighted:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.is-highlighted:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-primary.-selection:not(.is-disabled) .now-ripple,.now-button-stateful.-primary.-selection:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--primary-selection--background-color--active,var(--now-actionable--primary-selection_bare--background-color--active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-primary.-selection.is-disabled{opacity:var(--now-button-stateful--primary-selection--opacity--disabled,var(--now-actionable--primary-selection_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-stateful.-primary.-selection.is-selected{color:RGB(var(--now-button-stateful--primary-selection--color--selected,var(--now-actionable_icon--primary-selection_bare--color--selected,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-primary.-selection.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary-selection--background-color--selected_hover,var(--now-actionable--primary-selection_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary-selection--border-color--selected_hover,var(--now-actionable--primary-selection_bare--border-color--selected_hover,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--primary-selection--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection--color--selected_hover,var(--now-actionable_icon--primary-selection_bare--color--selected_hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-primary.-selection.is-selected:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--primary-selection--border-color--selected_active,var(--now-actionable--primary-selection_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection--color--selected_active,var(--now-actionable_icon--primary-selection_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-primary.-selection.is-selected:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--primary-selection--background-color--selected_active,var(--now-actionable--primary-selection_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-primary.-selection.high-contrast{color:RGB(var(--now-button-stateful--primary-selection_high-contrast--color,var(--now-actionable_label--primary-selection_high-contrast_bare--color,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-primary.-selection.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary-selection_high-contrast--background-color--hover,var(--now-actionable--primary-selection_high-contrast_bare--background-color--hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_high-contrast--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary-selection_high-contrast--border-color--hover,var(--now-actionable--primary-selection_high-contrast_bare--border-color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection_high-contrast--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_high-contrast--color--hover,var(--now-actionable_label--primary-selection_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.high-contrast:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--primary-selection_high-contrast--border-color--active,var(--now-actionable--primary-selection_high-contrast_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection_high-contrast--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_high-contrast--color--active,var(--now-actionable_label--primary-selection_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-primary.-selection.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.high-contrast:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--primary-selection_high-contrast--background-color--active,var(--now-actionable--primary-selection_high-contrast_bare--background-color--active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_high-contrast--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-primary.-selection.high-contrast.is-selected{color:RGB(var(--now-button-stateful--primary-selection_high-contrast--color--selected,var(--now-actionable_label--primary-selection_high-contrast_bare--color--selected,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-primary.-selection.high-contrast.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary-selection_high-contrast--background-color--selected_hover,var(--now-actionable--primary-selection_high-contrast_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary-selection_high-contrast--border-color--selected_hover,var(--now-actionable--primary-selection_highlighted_high-contrast_bare--border-color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_high-contrast--color--selected_hover,var(--now-actionable_label--primary-selection_highlighted_high-contrast_bare--color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection.high-contrast.is-selected:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.high-contrast.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--primary-selection_high-contrast--border-color--selected_active,var(--now-actionable--primary-selection_high-contrast_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_high-contrast--color--selected_active,var(--now-actionable_label--primary-selection_highlighted_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection.high-contrast.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-primary.-selection.high-contrast.is-selected:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.high-contrast.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--primary-selection_high-contrast--background-color--selected_active,var(--now-actionable--primary-selection_high-contrast_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-primary.-selection.-highlighted.is-selected,.now-button-stateful.-primary.-selection.is-highlighted.is-selected{background-color:RGB(var(--now-button-stateful--primary-selection_highlighted--background-color--selected,var(--now-actionable--primary-selection_bare--background-color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_highlighted--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary-selection_highlighted--border-color--selected,var(--now-actionable--primary-selection_highlighted_bare--border-color--selected,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--primary-selection_highlighted--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_highlighted--color--selected,var(--now-actionable_label--primary-selection_bare--color--selected,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-primary.-selection.-highlighted.is-selected:not(.is-disabled):hover,.now-button-stateful.-primary.-selection.is-highlighted.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary-selection_highlighted--background-color--selected_hover,var(--now-actionable--primary-selection_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_highlighted--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary-selection_highlighted--border-color--selected_hover,var(--now-actionable--primary-selection_highlighted_bare--border-color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection_highlighted--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_highlighted--color--selected_hover,var(--now-actionable_label--primary-selection_bare--color--selected_hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-primary.-selection.-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.-highlighted.is-selected:not(.is-disabled):active,.now-button-stateful.-primary.-selection.is-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.is-highlighted.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--primary-selection_highlighted--border-color--selected_active,var(--now-actionable--primary-selection_highlighted_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection_highlighted--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_highlighted--color--selected_active,var(--now-actionable_label--primary-selection_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection.-highlighted.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-primary.-selection.-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.-highlighted.is-selected:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-primary.-selection.is-highlighted.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-primary.-selection.is-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.is-highlighted.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--primary-selection_highlighted--background-color--selected_active,var(--now-actionable--primary-selection_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_highlighted--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-primary.-selection.-highlighted.is-selected.high-contrast,.now-button-stateful.-primary.-selection.is-highlighted.is-selected.high-contrast{background-color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--background-color--selected,var(--now-actionable--primary-selection_highlighted_high-contrast_bare--background-color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_highlighted_high-contrast--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--border-color--selected,var(--now-actionable--primary-selection_high-contrast_bare--border-color--selected,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--primary-selection_highlighted_high-contrast--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--color--selected,var(--now-actionable_label--primary-selection_highlighted_high-contrast_bare--color--selected,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-primary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled):hover,.now-button-stateful.-primary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--background-color--selected_hover,var(--now-actionable--primary-selection_highlighted_high-contrast_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_highlighted_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--border-color--selected_hover,var(--now-actionable--primary-selection_highlighted_high-contrast_bare--border-color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection_highlighted_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--color--selected_hover,var(--now-actionable_label--primary-selection_highlighted_high-contrast_bare--color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled):active,.now-button-stateful.-primary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--border-color--selected_active,var(--now-actionable--primary-selection_highlighted_high-contrast_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--primary-selection_highlighted_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--color--selected_active,var(--now-actionable_label--primary-selection_highlighted_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-primary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-primary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-primary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-primary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-primary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--primary-selection_highlighted_high-contrast--background-color--selected_active,var(--now-actionable--primary-selection_highlighted_high-contrast_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--primary-selection_highlighted_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-secondary{border-radius:var(--now-button-stateful--secondary--border-radius,var(--now-actionable--secondary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button-stateful--secondary--border-width,var(--now-actionable--secondary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button-stateful--secondary--color,var(--now-actionable_label--secondary_bare--color,var(--now-actionable_label--secondary--color,var(--now-color--secondary-1,1,119,142)))))}.now-button-stateful.-secondary:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary--background-color--hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142)))),var(--now-button-stateful--secondary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary--border-color--hover,var(--now-actionable--secondary_bare--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107)))),var(--now-button-stateful--secondary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary--color--hover,var(--now-actionable_label--secondary_bare--color--hover,var(--now-actionable_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107)))))}.now-button-stateful.-secondary:not(.is-disabled).is-active,.now-button-stateful.-secondary:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--secondary--border-color--active,var(--now-actionable--secondary_bare--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71)))),var(--now-button-stateful--secondary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary--color--active,var(--now-actionable_label--secondary_bare--color--active,var(--now-actionable_label--secondary--color--active,var(--now-color--secondary-3,1,60,71)))))}.now-button-stateful.-secondary:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary:not(.is-disabled).is-active,.now-button-stateful.-secondary:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--secondary--background-color--active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142)))),var(--now-button-stateful--secondary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-secondary.is-disabled{opacity:var(--now-button-stateful--secondary--opacity--disabled,var(--now-actionable--secondary_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-stateful.-secondary.is-selected{color:RGB(var(--now-button-stateful--secondary--color--selected,var(--now-actionable_label--secondary_bare--color--selected,var(--now-actionable_label--secondary_bare--color,var(--now-actionable_label--secondary--color,var(--now-color--secondary-1,1,119,142))))))}.now-button-stateful.-secondary.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary--background-color--selected_hover,var(--now-actionable--secondary_bare--background-color--selected_hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142))))),var(--now-button-stateful--secondary--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary--border-color--selected_hover,var(--now-actionable--secondary_bare--border-color--selected_hover,var(--now-actionable--secondary_bare--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107))))),var(--now-button-stateful--secondary--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary--color--selected_hover,var(--now-actionable_label--secondary_bare--color--selected_hover,var(--now-actionable_label--secondary_bare--color--hover,var(--now-actionable_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107))))))}.now-button-stateful.-secondary.is-selected:not(.is-disabled).is-active,.now-button-stateful.-secondary.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--secondary--border-color--selected_active,var(--now-actionable--secondary_bare--border-color--selected_active,var(--now-actionable--secondary_bare--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71))))),var(--now-button-stateful--secondary--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary--color--selected_active,var(--now-actionable_label--secondary_bare--color--selected_active,var(--now-actionable_label--secondary_bare--color--active,var(--now-actionable_label--secondary--color--active,var(--now-color--secondary-3,1,60,71))))))}.now-button-stateful.-secondary.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary.is-selected:not(.is-disabled).is-active,.now-button-stateful.-secondary.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--secondary--background-color--selected_active,var(--now-actionable--secondary_bare--background-color--selected_active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142))))),var(--now-button-stateful--secondary--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-secondary.high-contrast{color:RGB(var(--now-button-stateful--secondary_high-contrast--color,var(--now-actionable_label--secondary_high-contrast_bare--color,var(--now-color--secondary-2,1,89,107))))}.now-button-stateful.-secondary.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary_high-contrast--background-color--hover,var(--now-actionable--secondary_high-contrast_bare--background-color--hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142))))),var(--now-button-stateful--secondary_high-contrast--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary_high-contrast--border-color--hover,var(--now-actionable--secondary_high-contrast_bare--border-color--hover,var(--now-actionable--secondary_bare--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107))))),var(--now-button-stateful--secondary_high-contrast--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_high-contrast--color--hover,var(--now-actionable_label--secondary_high-contrast_bare--color--hover,var(--now-color--secondary-3,1,60,71))))}.now-button-stateful.-secondary.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-secondary.high-contrast:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--secondary_high-contrast--border-color--active,var(--now-actionable--secondary_high-contrast_bare--border-color--active,var(--now-actionable--secondary_bare--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71))))),var(--now-button-stateful--secondary_high-contrast--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_high-contrast--color--active,var(--now-actionable_label--secondary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-secondary.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-secondary.high-contrast:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--secondary_high-contrast--background-color--active,var(--now-actionable--secondary_high-contrast_bare--background-color--active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142))))),var(--now-button-stateful--secondary_high-contrast--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-secondary.high-contrast.is-selected{color:RGB(var(--now-button-stateful--secondary_high-contrast--color--selected,var(--now-actionable_label--secondary_high-contrast_bare--color--selected,var(--now-color--secondary-2,1,89,107))))}.now-button-stateful.-secondary.high-contrast.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary_high-contrast--background-color--selected_hover,var(--now-actionable--secondary_highlighted_high-contrast_bare--background-color--selected_hover,var(--now-actionable--secondary_highlighted_bare--background-color--selected_hover,var(--now-actionable--secondary_bare--background-color--selected_hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142))))))),var(--now-button-stateful--secondary_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary_high-contrast--border-color--selected_hover,var(--now-actionable--secondary_highlighted_high-contrast_bare--border-color--selected_hover,var(--now-actionable--secondary_highlighted_bare--border-color--selected_hover,var(--now-actionable--secondary_bare--border-color--selected_hover,var(--now-actionable--secondary_bare--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107))))))),var(--now-button-stateful--secondary_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_high-contrast--color--selected_hover,var(--now-actionable_label--secondary_high-contrast_bare--color--selected_hover,var(--now-color--secondary-3,1,60,71))))}.now-button-stateful.-secondary.high-contrast.is-selected:not(.is-disabled).is-active,.now-button-stateful.-secondary.high-contrast.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--secondary_high-contrast--border-color--selected_active,var(--now-actionable--secondary_highlighted_high-contrast_bare--border-color--selected_active,var(--now-actionable--secondary_highlighted_bare--border-color--selected_active,var(--now-actionable--secondary_bare--border-color--selected_active,var(--now-actionable--secondary_bare--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71))))))),var(--now-button-stateful--secondary_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_high-contrast--color--selected_active,var(--now-actionable_label--secondary_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-secondary.high-contrast.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary.high-contrast.is-selected:not(.is-disabled).is-active,.now-button-stateful.-secondary.high-contrast.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--secondary_high-contrast--background-color--selected_active,var(--now-actionable--secondary_highlighted_high-contrast_bare--background-color--selected_active,var(--now-actionable--secondary_highlighted_bare--background-color--selected_active,var(--now-actionable--secondary_bare--background-color--selected_active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142))))))),var(--now-button-stateful--secondary_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-secondary.-highlighted.is-selected,.now-button-stateful.-secondary.is-highlighted.is-selected{background-color:RGB(var(--now-button-stateful--secondary_highlighted--background-color--selected,var(--now-actionable--secondary_highlighted_bare--background-color--selected,var(--now-actionable--secondary_bare--background-color--selected,var(--now-actionable--secondary--background-color,var(--now-color--secondary-1,1,119,142))))),var(--now-button-stateful--secondary_highlighted--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary_highlighted--border-color--selected,var(--now-actionable--secondary_highlighted_bare--border-color--selected,var(--now-actionable--secondary_bare--border-color--selected,var(--now-actionable--secondary--border-color,var(--now-color--secondary-1,1,119,142))))),var(--now-button-stateful--secondary_highlighted--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_highlighted--color--selected,var(--now-actionable_label--secondary_highlighted_bare--color--selected,var(--now-actionable_label--secondary_bare--color--selected,var(--now-actionable_label--secondary_bare--color,var(--now-actionable_label--secondary--color,var(--now-color--secondary-1,1,119,142)))))))}.now-button-stateful.-secondary.-highlighted.is-selected:not(.is-disabled):hover,.now-button-stateful.-secondary.is-highlighted.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary_highlighted--background-color--selected_hover,var(--now-actionable--secondary_highlighted_bare--background-color--selected_hover,var(--now-actionable--secondary_bare--background-color--selected_hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142)))))),var(--now-button-stateful--secondary_highlighted--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary_highlighted--border-color--selected_hover,var(--now-actionable--secondary_highlighted_bare--border-color--selected_hover,var(--now-actionable--secondary_bare--border-color--selected_hover,var(--now-actionable--secondary_bare--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107)))))),var(--now-button-stateful--secondary_highlighted--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_highlighted--color--selected_hover,var(--now-actionable_label--secondary_highlighted_bare--color--selected_hover,var(--now-actionable_label--secondary_bare--color--selected_hover,var(--now-actionable_label--secondary_bare--color--hover,var(--now-actionable_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107)))))))}.now-button-stateful.-secondary.-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-secondary.-highlighted.is-selected:not(.is-disabled):active,.now-button-stateful.-secondary.is-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-secondary.is-highlighted.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--secondary_highlighted--border-color--selected_active,var(--now-actionable--secondary_highlighted_bare--border-color--selected_active,var(--now-actionable--secondary_bare--border-color--selected_active,var(--now-actionable--secondary_bare--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71)))))),var(--now-button-stateful--secondary_highlighted--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_highlighted--color--selected_active,var(--now-actionable_label--secondary_highlighted_bare--color--selected_active,var(--now-actionable_label--secondary_bare--color--selected_active,var(--now-actionable_label--secondary_bare--color--active,var(--now-actionable_label--secondary--color--active,var(--now-color--secondary-3,1,60,71)))))))}.now-button-stateful.-secondary.-highlighted.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary.-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-secondary.-highlighted.is-selected:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-secondary.is-highlighted.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary.is-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-secondary.is-highlighted.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--secondary_highlighted--background-color--selected_active,var(--now-actionable--secondary_highlighted_bare--background-color--selected_active,var(--now-actionable--secondary_bare--background-color--selected_active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142)))))),var(--now-button-stateful--secondary_highlighted--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-secondary.-highlighted.is-selected.high-contrast,.now-button-stateful.-secondary.is-highlighted.is-selected.high-contrast{background-color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--background-color--selected,var(--now-actionable--secondary_highlighted_high-contrast_bare--background-color--selected,var(--now-actionable--secondary_highlighted_bare--background-color--selected,var(--now-actionable--secondary_bare--background-color--selected,var(--now-actionable--secondary--background-color,var(--now-color--secondary-1,1,119,142)))))),var(--now-button-stateful--secondary_highlighted_high-contrast--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--border-color--selected,var(--now-actionable--secondary_highlighted_high-contrast_bare--border-color--selected,var(--now-actionable--secondary_highlighted_bare--border-color--selected,var(--now-actionable--secondary_bare--border-color--selected,var(--now-actionable--secondary--border-color,var(--now-color--secondary-1,1,119,142)))))),var(--now-button-stateful--secondary_highlighted_high-contrast--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--color--selected,var(--now-actionable_label--secondary_high-contrast_bare--color--selected,var(--now-color--secondary-2,1,89,107))))}.now-button-stateful.-secondary.-highlighted.is-selected.high-contrast:not(.is-disabled):hover,.now-button-stateful.-secondary.is-highlighted.is-selected.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--background-color--selected_hover,var(--now-actionable--secondary_highlighted_high-contrast_bare--background-color--selected_hover,var(--now-actionable--secondary_highlighted_bare--background-color--selected_hover,var(--now-actionable--secondary_bare--background-color--selected_hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142))))))),var(--now-button-stateful--secondary_highlighted_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--border-color--selected_hover,var(--now-actionable--secondary_highlighted_high-contrast_bare--border-color--selected_hover,var(--now-actionable--secondary_highlighted_bare--border-color--selected_hover,var(--now-actionable--secondary_bare--border-color--selected_hover,var(--now-actionable--secondary_bare--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107))))))),var(--now-button-stateful--secondary_highlighted_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--color--selected_hover,var(--now-actionable_label--secondary_high-contrast_bare--color--selected_hover,var(--now-color--secondary-3,1,60,71))))}.now-button-stateful.-secondary.-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-secondary.-highlighted.is-selected.high-contrast:not(.is-disabled):active,.now-button-stateful.-secondary.is-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-secondary.is-highlighted.is-selected.high-contrast:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--border-color--selected_active,var(--now-actionable--secondary_highlighted_high-contrast_bare--border-color--selected_active,var(--now-actionable--secondary_highlighted_bare--border-color--selected_active,var(--now-actionable--secondary_bare--border-color--selected_active,var(--now-actionable--secondary_bare--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71))))))),var(--now-button-stateful--secondary_highlighted_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--color--selected_active,var(--now-actionable_label--secondary_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-secondary.-highlighted.is-selected.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary.-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-secondary.-highlighted.is-selected.high-contrast:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-secondary.is-highlighted.is-selected.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary.is-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-secondary.is-highlighted.is-selected.high-contrast:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--secondary_highlighted_high-contrast--background-color--selected_active,var(--now-actionable--secondary_highlighted_high-contrast_bare--background-color--selected_active,var(--now-actionable--secondary_highlighted_bare--background-color--selected_active,var(--now-actionable--secondary_bare--background-color--selected_active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142))))))),var(--now-button-stateful--secondary_highlighted_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-secondary.-selection,.now-button-stateful.-secondary.-selection.-highlighted,.now-button-stateful.-secondary.-selection.is-highlighted{border-radius:var(--now-button-stateful--secondary-selection--border-radius,var(--now-actionable--secondary-selection_bare--border-radius,var(--now-actionable--secondary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,0)))));border-width:var(--now-button-stateful--secondary-selection--border-width,var(--now-actionable--secondary-selection_bare--border-width,var(--now-actionable--secondary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px)))));color:RGB(var(--now-button-stateful--secondary-selection--color,var(--now-actionable_icon--primary-selection_bare--color,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-secondary.-selection.-highlighted:not(.is-disabled):hover,.now-button-stateful.-secondary.-selection.is-highlighted:not(.is-disabled):hover,.now-button-stateful.-secondary.-selection:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary-selection--background-color--hover,var(--now-actionable--secondary-selection_bare--background-color--hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary-selection--border-color--hover,var(--now-actionable--secondary-selection_bare--border-color--hover,var(--now-color_selection--primary-3,23,100,82))),var(--now-button-stateful--secondary-selection--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection--color--hover,var(--now-actionable_icon--primary-selection_bare--color--hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-secondary.-selection.-highlighted:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.-highlighted:not(.is-disabled):active,.now-button-stateful.-secondary.-selection.is-highlighted:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.is-highlighted:not(.is-disabled):active,.now-button-stateful.-secondary.-selection:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--secondary-selection--border-color--active,var(--now-actionable--secondary-selection_bare--border-color--active,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--secondary-selection--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection--color--active,var(--now-actionable_icon--primary-selection_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-secondary.-selection.-highlighted:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary.-selection.-highlighted:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.-highlighted:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-secondary.-selection.is-highlighted:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary.-selection.is-highlighted:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.is-highlighted:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-secondary.-selection:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary.-selection:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--secondary-selection--background-color--active,var(--now-actionable--secondary-selection_bare--background-color--active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-secondary.-selection.is-disabled{opacity:var(--now-button-stateful--secondary-selection--opacity--disabled,var(--now-actionable--secondary-selection_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-stateful.-secondary.-selection.is-selected{color:RGB(var(--now-button-stateful--secondary-selection--color--selected,var(--now-actionable_icon--secondary-selection_bare--color--selected,var(--now-color_selection--primary-2,30,133,109))))}.now-button-stateful.-secondary.-selection.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary-selection--background-color--selected_hover,var(--now-actionable--secondary-selection_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary-selection--border-color--selected_hover,var(--now-actionable--secondary-selection_highlighted_bare--border-color--selected_hover,var(--now-color_selection--primary-3,23,100,82))),var(--now-button-stateful--secondary-selection--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection--color--selected_hover,var(--now-actionable_icon--secondary-selection_bare--color--selected_hover,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-secondary.-selection.is-selected:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--secondary-selection--border-color--selected_active,var(--now-actionable--secondary-selection_highlighted_bare--border-color--selected_active,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--secondary-selection--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection--color--selected_active,var(--now-actionable_icon--secondary-selection_bare--color--selected_active,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-secondary.-selection.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary.-selection.is-selected:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--secondary-selection--background-color--selected_active,var(--now-actionable--secondary-selection_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-secondary.-selection.high-contrast{color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--color,var(--now-actionable_icon--secondary-selection_high-contrast_bare--color,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-secondary.-selection.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--background-color--hover,var(--now-actionable--secondary-selection_high-contrast_bare--background-color--hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_high-contrast--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--border-color--hover,var(--now-actionable--secondary-selection_high-contrast_bare--border-color--hover,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--secondary-selection_high-contrast--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--color--hover,var(--now-actionable_icon--secondary-selection_high-contrast_bare--color--hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-secondary.-selection.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.high-contrast:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--border-color--active,var(--now-actionable--secondary-selection_high-contrast_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--secondary-selection_high-contrast--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--color--active,var(--now-actionable_icon--secondary-selection_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-secondary.-selection.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary.-selection.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.high-contrast:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--background-color--active,var(--now-actionable--secondary-selection_high-contrast_bare--background-color--active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_high-contrast--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-secondary.-selection.high-contrast.is-selected{color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--color--selected,var(--now-actionable_icon--secondary-selection_high-contrast_bare--color--selected,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-secondary.-selection.high-contrast.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--background-color--selected_hover,var(--now-actionable--secondary-selection_high-contrast_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--border-color--selected_hover,var(--now-actionable--secondary-selection_high-contrast_bare--border-color--selected_hover,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--secondary-selection_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--color--selected_hover,var(--now-actionable_icon--secondary-selection_high-contrast_bare--color--selected_hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-secondary.-selection.high-contrast.is-selected:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.high-contrast.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--border-color--selected_active,var(--now-actionable--secondary-selection_high-contrast_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--secondary-selection_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--color--selected_active,var(--now-actionable_icon--secondary-selection_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-secondary.-selection.high-contrast.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary.-selection.high-contrast.is-selected:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.high-contrast.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--secondary-selection_high-contrast--background-color--selected_active,var(--now-actionable--secondary-selection_high-contrast_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-secondary.-selection.-highlighted.is-selected,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected{background-color:RGB(var(--now-button-stateful--secondary-selection_highlighted--background-color--selected,var(--now-actionable--secondary-selection_highlighted_bare--background-color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_highlighted--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary-selection_highlighted--border-color--selected,var(--now-actionable--secondary-selection_highlighted_bare--border-color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_highlighted--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_highlighted--color--selected,var(--now-actionable_icon--secondary-selection_highlighted_bare--color--selected,var(--now-color_selection--primary-2,30,133,109))))}.now-button-stateful.-secondary.-selection.-highlighted.is-selected:not(.is-disabled):hover,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary-selection_highlighted--background-color--selected_hover,var(--now-actionable--secondary-selection_highlighted_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_highlighted--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary-selection_highlighted--border-color--selected_hover,var(--now-actionable--secondary-selection_highlighted_bare--border-color--selected_hover,var(--now-color_selection--primary-3,23,100,82))),var(--now-button-stateful--secondary-selection_highlighted--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_highlighted--color--selected_hover,var(--now-actionable_icon--secondary-selection_highlighted_bare--color--selected_hover,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-secondary.-selection.-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.-highlighted.is-selected:not(.is-disabled):active,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--secondary-selection_highlighted--border-color--selected_active,var(--now-actionable--secondary-selection_highlighted_bare--border-color--selected_active,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--secondary-selection_highlighted--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_highlighted--color--selected_active,var(--now-actionable_icon--secondary-selection_highlighted_bare--color--selected_active,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-secondary.-selection.-highlighted.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary.-selection.-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.-highlighted.is-selected:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-secondary.-selection.is-highlighted.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--secondary-selection_highlighted--background-color--selected_active,var(--now-actionable--secondary-selection_highlighted_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_highlighted--background-color-alpha--selected_active,now-actionable--background-color-alpha--active))}.now-button-stateful.-secondary.-selection.-highlighted.is-selected.high-contrast,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected.high-contrast{background-color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--background-color--selected,var(--now-actionable--secondary-selection_highlighted_high-contrast_bare--background-color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_highlighted_high-contrast--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--border-color--selected,var(--now-actionable--secondary-selection_highlighted_high-contrast_bare--border-color--selected,var(--now-color_selection--primary-3,23,100,82))),var(--now-button-stateful--secondary-selection_highlighted_high-contrast--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--color--selected,var(--now-actionable_icon--secondary-selection_highlighted_high-contrast_bare--color--selected,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-secondary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled):hover,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--background-color--selected_hover,var(--now-actionable--secondary-selection_highlighted_high-contrast_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_highlighted_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--border-color--selected_hover,var(--now-actionable--secondary-selection_highlighted_high-contrast_bare--border-color--selected_hover,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--secondary-selection_highlighted_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--color--selected_hover,var(--now-actionable_icon--secondary-selection_highlighted_high-contrast_bare--color--selected_hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-secondary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled):active,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--border-color--selected_active,var(--now-actionable--secondary-selection_highlighted_high-contrast_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--secondary-selection_highlighted_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--color--selected_active,var(--now-actionable_icon--secondary-selection_highlighted_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-secondary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-secondary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-secondary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--secondary-selection_highlighted_high-contrast--background-color--selected_active,var(--now-actionable--secondary-selection_highlighted_high-contrast_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--secondary-selection_highlighted_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-tertiary{border-radius:var(--now-button-stateful--tertiary--border-radius,var(--now-actionable--tertiary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button-stateful--tertiary--border-width,var(--now-actionable--tertiary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button-stateful--tertiary--color,var(--now-actionable_icon--tertiary_bare--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-button-stateful.-tertiary:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary--background-color--hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button-stateful--tertiary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary--border-color--hover,var(--now-actionable--tertiary_bare--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button-stateful--tertiary--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary--color--hover,var(--now-actionable_icon--tertiary_bare--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-button-stateful.-tertiary:not(.is-disabled).is-active,.now-button-stateful.-tertiary:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--tertiary--border-color--active,var(--now-actionable--tertiary_bare--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28))))),var(--now-button-stateful--tertiary--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary--color--active,var(--now-actionable_icon--tertiary_bare--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-button-stateful.-tertiary:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary:not(.is-disabled).is-active,.now-button-stateful.-tertiary:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--tertiary--background-color--active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button-stateful--tertiary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-tertiary.is-disabled{opacity:var(--now-button-stateful--tertiary--opacity--disabled,var(--now-actionable--tertiary_bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button-stateful.-tertiary.is-selected{color:RGB(var(--now-button-stateful--tertiary--color--selected,var(--now-actionable_icon--tertiary_bare--color--selected,var(--now-actionable_icon--tertiary_bare--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))))}.now-button-stateful.-tertiary.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary--background-color--selected_hover,var(--now-actionable--tertiary_bare--background-color--selected_hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))),var(--now-button-stateful--tertiary--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary--border-color--selected_hover,var(--now-actionable--tertiary_bare--border-color--selected_hover,var(--now-actionable--tertiary_bare--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))),var(--now-button-stateful--tertiary--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary--color--selected_hover,var(--now-actionable_icon--tertiary_bare--color--selected_hover,var(--now-actionable_icon--tertiary_bare--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))))))}.now-button-stateful.-tertiary.is-selected:not(.is-disabled).is-active,.now-button-stateful.-tertiary.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--tertiary--border-color--selected_active,var(--now-actionable--tertiary_bare--border-color--selected_active,var(--now-actionable--tertiary_bare--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28)))))),var(--now-button-stateful--tertiary--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary--color--selected_active,var(--now-actionable_icon--tertiary_bare--color--selected_active,var(--now-actionable_icon--tertiary_bare--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))))}.now-button-stateful.-tertiary.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary.is-selected:not(.is-disabled).is-active,.now-button-stateful.-tertiary.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--tertiary--background-color--selected_active,var(--now-actionable--tertiary_bare--background-color--selected_active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))),var(--now-button-stateful--tertiary--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-tertiary.high-contrast{color:RGB(var(--now-button-stateful--tertiary_high-contrast--color,var(--now-actionable_icon--tertiary_high-contrast_bare--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--tertiary_high-contrast--color-alpha,var(--now-actionable--high-contrast--color-alpha,1)))}.now-button-stateful.-tertiary.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary_high-contrast--background-color--hover,var(--now-actionable--tertiary_high-contrast_bare--background-color--hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))),var(--now-button-stateful--tertiary_high-contrast--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary_high-contrast--border-color--hover,var(--now-actionable--tertiary_high-contrast_bare--border-color--hover,var(--now-actionable--tertiary_bare--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))),var(--now-button-stateful--tertiary_high-contrast--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_high-contrast--color--hover,var(--now-actionable_icon--tertiary_high-contrast_bare--color--hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--tertiary_high-contrast--color-alpha--hover,var(--now-actionable--high-contrast--color-alpha,1)))}.now-button-stateful.-tertiary.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-tertiary.high-contrast:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--tertiary_high-contrast--border-color--active,var(--now-actionable--tertiary_high-contrast_bare--border-color--active,var(--now-actionable--tertiary_bare--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28)))))),var(--now-button-stateful--tertiary_high-contrast--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_high-contrast--color--active,var(--now-actionable_icon--tertiary_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--tertiary_high-contrast--color-alpha--active,var(--now-actionable--high-contrast--color-alpha,1)))}.now-button-stateful.-tertiary.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-tertiary.high-contrast:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--tertiary_high-contrast--background-color--active,var(--now-actionable--tertiary_high-contrast_bare--background-color--active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))),var(--now-button-stateful--tertiary_high-contrast--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-tertiary.high-contrast.is-selected{color:RGB(var(--now-button-stateful--tertiary_high-contrast--color--selected,var(--now-actionable_icon--tertiary_high-contrast_bare--color--selected,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.high-contrast.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary_high-contrast--background-color--selected_hover,var(--now-actionable--tertiary_high-contrast_bare--background-color--selected_hover,var(--now-actionable--tertiary_bare--background-color--selected_hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))))),var(--now-button-stateful--tertiary_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary_high-contrast--border-color--selected_hover,var(--now-actionable--tertiary_high-contrast_bare--border-color--selected_hover,var(--now-actionable--tertiary_bare--border-color--selected_hover,var(--now-actionable--tertiary_bare--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55))))))),var(--now-button-stateful--tertiary_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_high-contrast--color--selected_hover,var(--now-actionable_icon--tertiary_high-contrast_bare--color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.high-contrast.is-selected:not(.is-disabled).is-active,.now-button-stateful.-tertiary.high-contrast.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--tertiary_high-contrast--border-color--selected_active,var(--now-actionable--tertiary_high-contrast_bare--border-color--selected_active,var(--now-actionable--tertiary_bare--border-color--selected_active,var(--now-actionable--tertiary_bare--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28))))))),var(--now-button-stateful--tertiary_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_high-contrast--color--selected_active,var(--now-actionable_icon--tertiary_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.high-contrast.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary.high-contrast.is-selected:not(.is-disabled).is-active,.now-button-stateful.-tertiary.high-contrast.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--tertiary_high-contrast--background-color--selected_active,var(--now-actionable--tertiary_high-contrast_bare--background-color--selected_active,var(--now-actionable--tertiary_bare--background-color--selected_active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))))),var(--now-button-stateful--tertiary_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-tertiary.-highlighted.is-selected,.now-button-stateful.-tertiary.is-highlighted.is-selected{background-color:RGB(var(--now-button-stateful--tertiary_highlighted--background-color--selected,var(--now-actionable--tertiary_highlighted_bare--background-color--selected,var(--now-actionable--tertiary_bare--background-color--selected,var(--now-actionable--tertiary--background-color,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))),var(--now-button-stateful--tertiary_highlighted--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary_highlighted--border-color--selected,var(--now-actionable--tertiary_highlighted_bare--border-color--selected,var(--now-actionable--tertiary_bare--border-color--selected,var(--now-actionable--tertiary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))))),var(--now-button-stateful--tertiary_highlighted--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_highlighted--color--selected,var(--now-actionable_icon--tertiary_highlighted_bare--color--selected,var(--now-actionable_icon--tertiary_bare--color--selected,var(--now-actionable_icon--tertiary_bare--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))))}.now-button-stateful.-tertiary.-highlighted.is-selected:not(.is-disabled):hover,.now-button-stateful.-tertiary.is-highlighted.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary_highlighted--background-color--selected_hover,var(--now-actionable--tertiary_highlighted_bare--background-color--selected_hover,var(--now-actionable--tertiary_bare--background-color--selected_hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))))),var(--now-button-stateful--tertiary_highlighted--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary_highlighted--border-color--selected_hover,var(--now-actionable--tertiary_highlighted_bare--border-color--selected_hover,var(--now-actionable--tertiary_bare--border-color--selected_hover,var(--now-actionable--tertiary_bare--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55))))))),var(--now-button-stateful--tertiary_highlighted--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_highlighted--color--selected_hover,var(--now-actionable_icon--tertiary_highlighted_bare--color--selected_hover,var(--now-actionable_icon--tertiary_bare--color--selected_hover,var(--now-actionable_icon--tertiary_bare--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))))}.now-button-stateful.-tertiary.-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-highlighted.is-selected:not(.is-disabled):active,.now-button-stateful.-tertiary.is-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-tertiary.is-highlighted.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--tertiary_highlighted--border-color--selected_active,var(--now-actionable--tertiary_highlighted_bare--border-color--selected_active,var(--now-actionable--tertiary_bare--border-color--selected_active,var(--now-actionable--tertiary_bare--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28))))))),var(--now-button-stateful--tertiary_highlighted--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_highlighted--color--selected_active,var(--now-actionable_icon--tertiary_highlighted_bare--color--selected_active,var(--now-actionable_icon--tertiary_bare--color--selected_active,var(--now-actionable_icon--tertiary_bare--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))))}.now-button-stateful.-tertiary.-highlighted.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary.-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-highlighted.is-selected:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-tertiary.is-highlighted.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary.is-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-tertiary.is-highlighted.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--tertiary_highlighted--background-color--selected_active,var(--now-actionable--tertiary_highlighted_bare--background-color--selected_active,var(--now-actionable--tertiary_bare--background-color--selected_active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))))),var(--now-button-stateful--tertiary_highlighted--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-tertiary.-highlighted.is-selected.high-contrast,.now-button-stateful.-tertiary.is-highlighted.is-selected.high-contrast{background-color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--background-color--selected,var(--now-actionable--tertiary_highlighted_high-contrast_bare--background-color--selected,var(--now-actionable--tertiary_highlighted_bare--background-color--selected,var(--now-actionable--tertiary_bare--background-color--selected,var(--now-actionable--tertiary--background-color,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))))),var(--now-button-stateful--tertiary_highlighted_high-contrast--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--border-color--selected,var(--now-actionable--tertiary_highlighted_high-contrast_bare--border-color--selected,var(--now-actionable--tertiary_highlighted_bare--border-color--selected,var(--now-actionable--tertiary_bare--border-color--selected,var(--now-actionable--tertiary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81))))))),var(--now-button-stateful--tertiary_highlighted_high-contrast--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--color--selected,var(--now-actionable_icon--tertiary_highlighted_high-contrast_bare--color--selected,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.-highlighted.is-selected.high-contrast:not(.is-disabled):hover,.now-button-stateful.-tertiary.is-highlighted.is-selected.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--background-color--selected_hover,var(--now-actionable--tertiary_highlighted_high-contrast_bare--background-color--selected_hover,var(--now-actionable--tertiary_highlighted_bare--background-color--selected_hover,var(--now-actionable--tertiary_bare--background-color--selected_hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))))),var(--now-button-stateful--tertiary_highlighted_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--border-color--selected_hover,var(--now-actionable--tertiary_highlighted_high-contrast_bare--border-color--selected_hover,var(--now-actionable--tertiary_highlighted_bare--border-color--selected_hover,var(--now-actionable--tertiary_bare--border-color--selected_hover,var(--now-actionable--tertiary_bare--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))))),var(--now-button-stateful--tertiary_highlighted_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--color--selected_hover,var(--now-actionable_icon--tertiary_highlighted_high-contrast_bare--color--selected_hover,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-highlighted.is-selected.high-contrast:not(.is-disabled):active,.now-button-stateful.-tertiary.is-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-tertiary.is-highlighted.is-selected.high-contrast:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--border-color--selected_active,var(--now-actionable--tertiary_highlighted_high-contrast_bare--border-color--selected_active,var(--now-actionable--tertiary_highlighted_bare--border-color--selected_active,var(--now-actionable--tertiary_bare--border-color--selected_active,var(--now-actionable--tertiary_bare--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28)))))))),var(--now-button-stateful--tertiary_highlighted_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--color--selected_active,var(--now-actionable_icon--tertiary_highlighted_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.-highlighted.is-selected.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary.-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-highlighted.is-selected.high-contrast:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-tertiary.is-highlighted.is-selected.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary.is-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-tertiary.is-highlighted.is-selected.high-contrast:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--tertiary_highlighted_high-contrast--background-color--selected_active,var(--now-actionable--tertiary_highlighted_high-contrast_bare--background-color--selected_active,var(--now-actionable--tertiary_highlighted_bare--background-color--selected_active,var(--now-actionable--tertiary_bare--background-color--selected_active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))))))),var(--now-button-stateful--tertiary_highlighted_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-tertiary.-selection,.now-button-stateful.-tertiary.-selection.highlighted,.now-button-stateful.-tertiary.-selection.is-highlighted{border-radius:var(--now-button-stateful--tertiary-selection--border-radius,var(--now-actionable--tertiary-selection_bare--border-radius,var(--now-actionable--tertiary_bare--border-radius,var(--now-actionable--bare--border-radius,var(--now-actionable--border-radius,0)))));border-width:var(--now-button-stateful--tertiary-selection--border-width,var(--now-actionable--tertiary-selection_bare--border-width,var(--now-actionable--tertiary_bare--border-width,var(--now-actionable--bare--border-width,var(--now-actionable--border-width,1px)))));color:RGB(var(--now-button-stateful--tertiary-selection--color,var(--now-actionable_icon--tertiary-selection_bare--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-button-stateful.-tertiary.-selection.highlighted:not(.is-disabled):hover,.now-button-stateful.-tertiary.-selection.is-highlighted:not(.is-disabled):hover,.now-button-stateful.-tertiary.-selection:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary-selection--background-color--hover,var(--now-actionable--tertiary-selection_bare--background-color--hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary-selection--border-color--hover,var(--now-actionable--tertiary-selection_bare--border-color--hover,var(--now-color_selection--primary-3,23,100,82))),var(--now-button-stateful--tertiary-selection--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection--color--hover,var(--now-actionable_icon--tertiary-selection_bare--color--hover,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-tertiary.-selection.highlighted:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.highlighted:not(.is-disabled):active,.now-button-stateful.-tertiary.-selection.is-highlighted:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.is-highlighted:not(.is-disabled):active,.now-button-stateful.-tertiary.-selection:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--tertiary-selection--border-color--active,var(--now-actionable--tertiary-selection_bare--border-color--active,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--tertiary-selection--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection--color--active,var(--now-actionable_icon--tertiary-selection_bare--color--active,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-tertiary.-selection.highlighted:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary.-selection.highlighted:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.highlighted:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-tertiary.-selection.is-highlighted:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary.-selection.is-highlighted:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.is-highlighted:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-tertiary.-selection:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary.-selection:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--tertiary-selection--background-color--active,var(--now-actionable--tertiary-selection_bare--background-color--active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-tertiary.-selection.is-disabled{opacity:var(--now-button-stateful--tertiary-selection--opacity--disabled,var(--now-actionable--tertiary-selection_bare--opacity--disabled,var(--now-actionable--bare--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button-stateful.-tertiary.-selection.is-selected{color:RGB(var(--now-button-stateful--tertiary-selection--color--selected,var(--now-actionable_icon--tertiary-selection_bare--color--selected,var(--now-color_selection--primary-2,30,133,109))))}.now-button-stateful.-tertiary.-selection.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary-selection--background-color--selected_hover,var(--now-actionable--tertiary-selection_highlighted_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary-selection--border-color--selected_hover,var(--now-actionable--tertiary-selection_bare--border-color--selected_hover,var(--now-color_selection--primary-3,23,100,82))),var(--now-button-stateful--tertiary-selection--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection--color--selected_hover,var(--now-actionable_icon--tertiary-selection_bare--color--selected_hover,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-tertiary.-selection.is-selected:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--tertiary-selection--border-color--selected_active,var(--now-actionable--tertiary-selection_bare--border-color--selected_active,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--tertiary-selection--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection--color--selected_active,var(--now-actionable_icon--tertiary-selection_bare--color--selected_active,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-tertiary.-selection.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary.-selection.is-selected:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--tertiary-selection--background-color--selected_active,var(--now-actionable--tertiary-selection_highlighted_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-tertiary.-selection.high-contrast{color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--color,var(--now-actionable_icon--tertiary-selection_high-contrast_bare--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.-selection.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--background-color--hover,var(--now-actionable--tertiary-selection_high-contrast_bare--background-color--hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_high-contrast--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--border-color--hover,var(--now-actionable--tertiary-selection_high-contrast_bare--border-color--hover,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--tertiary-selection_high-contrast--border-color-alpha--hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--color--hover,var(--now-actionable_icon--tertiary-selection_high-contrast_bare--color--hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-tertiary.-selection.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.high-contrast:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--border-color--active,var(--now-actionable--tertiary-selection_high-contrast_bare--border-color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--tertiary-selection_high-contrast--border-color-alpha--active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--color--active,var(--now-actionable_icon--tertiary-selection_high-contrast_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.-selection.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary.-selection.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.high-contrast:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--background-color--active,var(--now-actionable--tertiary-selection_high-contrast_bare--background-color--active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_high-contrast--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-tertiary.-selection.high-contrast.is-selected{color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--color--selected,var(--now-actionable_icon--tertiary-selection_high-contrast_bare--color--selected,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-tertiary.-selection.high-contrast.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--background-color--selected_hover,var(--now-actionable--tertiary-selection_high-contrast_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--border-color--selected_hover,var(--now-actionable--tertiary-selection_high-contrast_bare--border-color--selected_hover,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--tertiary-selection_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--color--selected_hover,var(--now-actionable_icon--tertiary-selection_high-contrast_bare--color--selected_hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-tertiary.-selection.high-contrast.is-selected:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.high-contrast.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--border-color--selected_active,var(--now-actionable--tertiary-selection_high-contrast_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--tertiary-selection_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--color--selected_active,var(--now-actionable_icon--tertiary-selection_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.-selection.high-contrast.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary.-selection.high-contrast.is-selected:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.high-contrast.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--tertiary-selection_high-contrast--background-color--selected_active,var(--now-actionable--tertiary-selection_high-contrast_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-tertiary.-selection.-highlighted.is-selected,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected{background-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--background-color--selected,var(--now-actionable--tertiary-selection_highlighted_bare--background-color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_highlighted--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--border-color--selected,var(--now-actionable--tertiary-selection_highlighted_bare--border-color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_highlighted--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--color--selected,var(--now-actionable_icon--tertiary-selection_bare--color--selected,var(--now-color_selection--primary-2,30,133,109))))}.now-button-stateful.-tertiary.-selection.-highlighted.is-selected:not(.is-disabled):hover,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--background-color--selected_hover,var(--now-actionable--tertiary-selection_highlighted_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_highlighted--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--border-color--selected_hover,var(--now-actionable--tertiary-selection_highlighted_bare--border-color--selected_hover,var(--now-color_selection--primary-3,23,100,82))),var(--now-button-stateful--tertiary-selection_highlighted--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--color--selected_hover,var(--now-actionable_icon--tertiary-selection_bare--color--selected_hover,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-tertiary.-selection.-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.-highlighted.is-selected:not(.is-disabled):active,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--border-color--selected_active,var(--now-actionable--tertiary-selection_highlighted_bare--border-color--selected_active,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--tertiary-selection_highlighted--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--color--selected_active,var(--now-actionable_icon--tertiary-selection_bare--color--selected_active,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-tertiary.-selection.-highlighted.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary.-selection.-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.-highlighted.is-selected:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted--background-color--selected_active,var(--now-actionable--tertiary-selection_highlighted_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_highlighted--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.-tertiary.-selection.-highlighted.is-selected.high-contrast,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected.high-contrast{background-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--background-color--selected,var(--now-actionable--tertiary-selection_highlighted_high-contrast_bare--background-color--selected,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--background-color-alpha--selected,var(--now-actionable--background-color-alpha--selected,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--border-color--selected,var(--now-actionable--tertiary-selection_highlighted_high-contrast_bare--border-color--selected,var(--now-color_selection--primary-3,23,100,82))),var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--border-color-alpha--selected,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--color--selected,var(--now-actionable_icon--tertiary-selection_highlighted_high-contrast_bare--color--selected,var(--now-color_selection--primary-3,23,100,82))))}.now-button-stateful.-tertiary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled):hover,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled):hover{background-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--background-color--selected_hover,var(--now-actionable--tertiary-selection_highlighted_high-contrast_bare--background-color--selected_hover,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--background-color-alpha--selected_hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--border-color--selected_hover,var(--now-actionable--tertiary-selection_highlighted_high-contrast_bare--border-color--selected_hover,var(--now-color_selection--primary-4,15,67,55))),var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--border-color-alpha--selected_hover,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--color--selected_hover,var(--now-actionable_icon--tertiary-selection_highlighted_high-contrast_bare--color--selected_hover,var(--now-color_selection--primary-4,15,67,55))))}.now-button-stateful.-tertiary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled):active,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled):active{border-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--border-color--selected_active,var(--now-actionable--tertiary-selection_highlighted_high-contrast_bare--border-color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--border-color-alpha--selected_active,var(--now-actionable--bare--border-color-alpha,var(--now-actionable--border-color-alpha,0))));color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--color--selected_active,var(--now-actionable_icon--tertiary-selection_highlighted_high-contrast_bare--color--selected_active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button-stateful.-tertiary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.-highlighted.is-selected.high-contrast:not(.is-disabled):active:not(.has-ripple),.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled) .now-ripple,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled).is-active,.now-button-stateful.-tertiary.-selection.is-highlighted.is-selected.high-contrast:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--background-color--selected_active,var(--now-actionable--tertiary-selection_highlighted_high-contrast_bare--background-color--selected_active,var(--now-color_selection--primary-2,30,133,109))),var(--now-button-stateful--tertiary-selection_highlighted_high-contrast--background-color-alpha--selected_active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button-stateful.is-disabled,.now-button-stateful.is-disabled:hover{cursor:not-allowed}.now-button-stateful.is-disabled:hover,.now-button-stateful.is-disabled:hover:hover{box-shadow:none}.now-button-stateful.hide-padding{block-size:auto;border-width:0;inline-size:auto}@media(forced-colors:active){.now-button-stateful,.now-button-stateful:focus-visible,.now-button-stateful:hover{transition:none}.now-button-stateful{background-color:buttonface!important;border-style:solid!important;border-width:1px!important;color:buttontext!important}.now-button-stateful now-icon,.now-button-stateful now-icon-animated{color:inherit!important}.now-button-stateful:focus-visible,.now-button-stateful:hover{background-color:highlighttext!important;border-color:highlight!important;color:highlight!important}.now-button-stateful.is-disabled,.now-button-stateful.is-disabled:hover{background-color:buttonface!important;border-color:graytext!important;color:graytext!important;opacity:1!important}.now-button-stateful.is-selected{background-color:selecteditem!important;border-color:selecteditemtext;color:selecteditemtext!important}.now-button-stateful.is-selected.is-disabled{background-color:buttonface!important;color:graytext!important}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:inline-block;vertical-align:middle}.now-button{align-items:center;border-end-end-radius:var(--now-button--border-end-end-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0)));border-end-start-radius:var(--now-button--border-end-start-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0)));border-start-end-radius:var(--now-button--border-start-end-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0)));border-start-start-radius:var(--now-button--border-start-start-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0)));border-style:solid;cursor:pointer;display:flex;font-family:var(--now-button--font-family,var(--now-actionable--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)));font-style:var(--now-button--font-style,var(--now-actionable--font-style,normal));font-variant:normal;font-weight:var(--now-button--font-weight,var(--now-actionable--font-weight,normal));inline-size:inherit;justify-content:center;letter-spacing:inherit;margin:0;overflow:hidden;position:relative;text-indent:0;text-shadow:none;text-transform:var(--now-button--text-transform,var(--now-actionable--text-transform,none));white-space:normal;word-spacing:inherit}.now-button::-moz-focus-inner{border-style:none}.now-button:focus-visible{box-shadow:inset 0 0 0 calc(.125rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button:focus-visible{outline:1px solid highlight}}.now-button ::slotted(*),.now-button now-icon,.now-button slot>*{z-index:1}.now-button .now-ripple{aspect-ratio:1/1;border-radius:100%;inline-size:100%;left:50%;position:absolute;top:50%;transform:scale(0);transform-origin:center;z-index:0}.now-button.should-animate{transition-duration:var(--now-motion--duration--faster,.1s);transition-property:--now-button--ai--gradient-start,--now-button--ai--gradient-end,border-color,background-color,box-shadow,color;transition-timing-function:var(--now-motion--ease--linear,linear)}.now-button.should-animate:hover{transition-duration:var(--now-motion--duration--faster,.1s),var(--now-motion--duration--normal,.2s),var(--now-motion--duration--faster,.1s);transition-property:--now-button--ai--gradient-start,--now-button--ai--gradient-end,border-color,background-color,box-shadow,color}.now-button.should-animate:focus{transition-duration:var(--now-motion--duration--faster,.1s),var(--now-motion--duration--normal,.2s),var(--now-motion--duration--normal,.2s)}.now-button.should-animate:focus-visible{transition-duration:var(--now-motion--duration--faster,.1s),var(--now-motion--duration--normal,.2s);transition-property:background-color,color}.now-button:hover{box-shadow:0 calc(.125rem*var(--now-rem-multiplier-from-root)) calc(.25rem*var(--now-rem-multiplier-from-root)) 0 RGB(56,56,56,var(--now-opacity--less,.25))}.now-button:focus-visible::-moz-focus-inner{border-style:none}.now-button:focus-visible:focus-visible{box-shadow:inset 0 0 0 calc(.125rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button:focus-visible:focus-visible{outline:1px solid highlight}}.now-button.-sm{font-size:var(--now-actionable--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--now-rem-multiplier-from-root))));line-height:1.3333;min-block-size:calc(1.5rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size-block, 1)*1.5rem*var(--now-rem-multiplier-from-root)/2);padding-block:calc(.25rem*var(--now-rem-multiplier-from-root)*var(--now-button--scale-size-block, 1));padding-inline:calc(var(--now-space--sm, calc(.5rem * var(--now-rem-multiplier-from-root))) * var(--now-button--scale-size-inline, 1))}.now-button.-sm .now-line-height-crop{display:block}.now-button.-sm .now-line-height-crop:after,.now-button.-sm .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-button.-sm .now-line-height-crop:before{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--before,\\n\\t\\t\\t\\t\\t-.25em\\n\\t\\t\\t\\t)*1.06664)}.now-button.-sm .now-line-height-crop:after{margin-block-end:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1.06664)}.now-button.-sm .now-line-height-crop+.now-button.-sm .now-line-height-crop{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1.06664*-1)}.now-button.-sm:not(.only-icon) .now-button-icon{margin-inline-end:var(--now-space--xxs,calc(.125rem*var(--now-rem-multiplier-from-root)))}.now-button.-md{font-size:var(--now-actionable--font-size--md,var(--now-font-size--md1,calc(1rem*var(--now-rem-multiplier-from-root))));line-height:1.25;min-block-size:calc(2rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size-block, 1)*2rem*var(--now-rem-multiplier-from-root)/2);padding-block:calc(.375rem*var(--now-rem-multiplier-from-root)*var(--now-button--scale-size-block, 1));padding-inline:calc(var(--now-space--md1, calc(1rem * var(--now-rem-multiplier-from-root))) * var(--now-button--scale-size-inline, 1))}.now-button.-md .now-line-height-crop{display:block}.now-button.-md .now-line-height-crop:after,.now-button.-md .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-button.-md .now-line-height-crop:before{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--before,\\n\\t\\t\\t\\t\\t-.25em\\n\\t\\t\\t\\t)*1)}.now-button.-md .now-line-height-crop:after{margin-block-end:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1)}.now-button.-md .now-line-height-crop+.now-button.-md .now-line-height-crop{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1*-1)}.now-button.-md:not(.only-icon) .now-button-icon{margin-inline-end:var(--now-space--xxs,calc(.125rem*var(--now-rem-multiplier-from-root)))}.now-button.-lg{font-size:var(--now-actionable--font-size--lg,var(--now-font-size--lg1,calc(1.5rem*var(--now-rem-multiplier-from-root))));line-height:1.25;min-block-size:calc(3rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size-block, 1)*3rem*var(--now-rem-multiplier-from-root)/2);padding-block:calc(.375rem*var(--now-rem-multiplier-from-root)*var(--now-button--scale-size-block, 1));padding-inline:calc(var(--now-space--lg2, calc(1.5rem * var(--now-rem-multiplier-from-root))) * var(--now-button--scale-size-inline, 1))}.now-button.-lg .now-line-height-crop{display:block}.now-button.-lg .now-line-height-crop:after,.now-button.-lg .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-button.-lg .now-line-height-crop:before{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--before,\\n\\t\\t\\t\\t\\t-.25em\\n\\t\\t\\t\\t)*1)}.now-button.-lg .now-line-height-crop:after{margin-block-end:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1)}.now-button.-lg .now-line-height-crop+.now-button.-lg .now-line-height-crop{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1*-1)}.now-button.-lg:not(.only-icon) .now-button-icon{margin-inline-end:var(--now-space--xs,calc(.25rem*var(--now-rem-multiplier-from-root)))}.now-button.-primary{background-color:RGB(var(--now-button--primary--background-color,var(--now-actionable--primary--background-color,var(--now-color--primary-1,30,133,109))));border-color:RGB(var(--now-button--primary--border-color,var(--now-actionable--primary--border-color,var(--now-color--primary-1,30,133,109))));border-end-end-radius:var(--now-button--primary--border-end-end-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,0))));border-end-start-radius:var(--now-button--primary--border-end-start-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,0))));border-start-end-radius:var(--now-button--primary--border-start-end-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,0))));border-start-start-radius:var(--now-button--primary--border-start-start-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button--primary--border-width,var(--now-actionable--primary--border-width,var(--now-actionable--contained_brand--border-width,0)));color:RGB(var(--now-button--primary--color,var(--now-actionable_label--primary--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary .now-button-icon{color:RGB(var(--now-button_icon--primary--color,var(--now-actionable_icon--primary--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary:not(.is-disabled):hover{background-color:RGB(var(--now-button--primary--background-color--hover,var(--now-actionable--primary--background-color--hover,var(--now-color--primary-2,23,100,82))));border-color:RGB(var(--now-button--primary--border-color--hover,var(--now-actionable--primary--border-color--hover,var(--now-color--primary-2,23,100,82))));color:RGB(var(--now-button--primary--color--hover,var(--now-actionable_label--primary--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--primary--color--hover,var(--now-actionable_icon--primary--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary:not(.is-disabled).is-active,.now-button.-primary:not(.is-disabled):active{border-color:RGB(var(--now-button--primary--border-color--active,var(--now-actionable--primary--border-color--active,var(--now-color--primary-3,15,67,55))));color:RGB(var(--now-button--primary--color--active,var(--now-actionable_label--primary--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary:not(.is-disabled).is-active .now-button-icon,.now-button.-primary:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--primary--color--active,var(--now-actionable_icon--primary--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary:not(.is-disabled) .now-ripple,.now-button.-primary:not(.is-disabled).is-active,.now-button.-primary:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button--primary--background-color--active,var(--now-actionable--primary--background-color--active,var(--now-color--primary-3,15,67,55))))}.now-button.-primary.is-disabled{opacity:var(--now-button--primary--opacity--disabled,var(--now-actionable--primary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-primary.-positive{background-color:RGB(var(--now-button--primary-positive--background-color,var(--now-actionable--primary-positive--background-color,var(--now-color_alert--positive-3,30,105,34))));border-color:RGB(var(--now-button--primary-positive--border-color,var(--now-actionable--primary-positive--border-color,var(--now-color_alert--positive-3,30,105,34))));border-end-end-radius:var(--now-button--primary-positive--border-end-end-radius,var(--now-actionable--primary-positive--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,0)))));border-end-start-radius:var(--now-button--primary-positive--border-end-start-radius,var(--now-actionable--primary-positive--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,0)))));border-start-end-radius:var(--now-button--primary-positive--border-start-end-radius,var(--now-actionable--primary-positive--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,0)))));border-start-start-radius:var(--now-button--primary-positive--border-start-start-radius,var(--now-actionable--primary-positive--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,0)))));border-width:var(--now-button--primary-positive--border-width,var(--now-actionable--primary-positive--border-width,var(--now-actionable--primary--border-width,var(--now-actionable--contained_brand--border-width,0))));color:RGB(var(--now-button--primary-positive--color,var(--now-actionable_label--primary-positive--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive .now-button-icon{color:RGB(var(--now-button_icon--primary-positive--color,var(--now-actionable_icon--primary-positive--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive:not(.is-disabled):hover{background-color:RGB(var(--now-button--primary-positive--background-color--hover,var(--now-actionable--primary-positive--background-color--hover,var(--now-color_alert--positive-4,22,79,26))));border-color:RGB(var(--now-button--primary-positive--border-color--hover,var(--now-actionable--primary-positive--border-color--hover,var(--now-color_alert--positive-4,22,79,26))));color:RGB(var(--now-button--primary-positive--color--hover,var(--now-actionable_label--primary-positive--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--primary-positive--color--hover,var(--now-actionable_icon--primary-positive--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive:not(.is-disabled).is-active,.now-button.-primary.-positive:not(.is-disabled):active{border-color:RGB(var(--now-button--primary-positive--border-color--active,var(--now-actionable--primary-positive--border-color--active,var(--now-color_alert--positive-5,15,52,17))));color:RGB(var(--now-button--primary-positive--color--active,var(--now-actionable_label--primary-positive--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive:not(.is-disabled).is-active .now-button-icon,.now-button.-primary.-positive:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--primary-positive--color--active,var(--now-actionable_icon--primary-positive--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-positive:not(.is-disabled) .now-ripple,.now-button.-primary.-positive:not(.is-disabled).is-active,.now-button.-primary.-positive:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button--primary-positive--background-color--active,var(--now-actionable--primary-positive--background-color--active,var(--now-color_alert--positive-5,15,52,17))))}.now-button.-primary.-positive.is-disabled{opacity:var(--now-button--primary-positive--opacity--disabled,var(--now-actionable--primary-positive--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-primary.-negative{background-color:RGB(var(--now-button--primary-negative--background-color,var(--now-actionable--primary-negative--background-color,var(--now-color_alert--critical-3,160,48,43))));border-color:RGB(var(--now-button--primary-negative--border-color,var(--now-actionable--primary-negative--border-color,var(--now-color_alert--critical-3,160,48,43))));border-end-end-radius:var(--now-button--primary-negative--border-end-end-radius,var(--now-actionable--primary-negative--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,0)))));border-end-start-radius:var(--now-button--primary-negative--border-end-start-radius,var(--now-actionable--primary-negative--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,0)))));border-start-end-radius:var(--now-button--primary-negative--border-start-end-radius,var(--now-actionable--primary-negative--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,0)))));border-start-start-radius:var(--now-button--primary-negative--border-start-start-radius,var(--now-actionable--primary-negative--border-radius,var(--now-actionable--primary--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,0)))));border-width:var(--now-button--primary-negative--border-width,var(--now-actionable--primary-negative--border-width,var(--now-actionable--primary--border-width,var(--now-actionable--contained_brand--border-width,0))));color:RGB(var(--now-button--primary-negative--color,var(--now-actionable_label--primary-negative--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative .now-button-icon{color:RGB(var(--now-button_icon--primary-negative--color,var(--now-actionable_icon--primary-negative--color,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative:not(.is-disabled):hover{background-color:RGB(var(--now-button--primary-negative--background-color--hover,var(--now-actionable--primary-negative--background-color--hover,var(--now-color_alert--critical-4,120,36,32))));border-color:RGB(var(--now-button--primary-negative--border-color--hover,var(--now-actionable--primary-negative--border-color--hover,var(--now-color_alert--critical-4,120,36,32))));color:RGB(var(--now-button--primary-negative--color--hover,var(--now-actionable_label--primary-negative--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--primary-negative--color--hover,var(--now-actionable_icon--primary-negative--color--hover,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative:not(.is-disabled).is-active,.now-button.-primary.-negative:not(.is-disabled):active{border-color:RGB(var(--now-button--primary-negative--border-color--active,var(--now-actionable--primary-negative--border-color--active,var(--now-color_alert--critical-5,80,24,22))));color:RGB(var(--now-button--primary-negative--color--active,var(--now-actionable_label--primary-negative--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative:not(.is-disabled).is-active .now-button-icon,.now-button.-primary.-negative:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--primary-negative--color--active,var(--now-actionable_icon--primary-negative--color--active,var(--now-color_text--primary-actionable,var(--now-color--neutral-0,255,255,255)))))}.now-button.-primary.-negative:not(.is-disabled) .now-ripple,.now-button.-primary.-negative:not(.is-disabled).is-active,.now-button.-primary.-negative:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button--primary-negative--background-color--active,var(--now-actionable--primary-negative--background-color--active,var(--now-color_alert--critical-5,80,24,22))))}.now-button.-primary.-negative.is-disabled{opacity:var(--now-button--primary-negative--opacity--disabled,var(--now-actionable--primary-negative--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-primary.-ai{--now-button--ai--gradient-start:RGB(var(--now-actionable--primary-ai--background-color-gradient--start,var(--now-color--secondary-brand-10,134,246,115)));--now-button--ai--gradient-end:RGB(var(--now-actionable--primary-ai--background-color-gradient--end,var(--now-color--supplementary1-brand-10,113,213,254)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--primary-ai--border-color,var(--now-color--secondary-brand-10,134,246,115)));border-radius:var(--now-actionable--primary-ai--border-radius,var(--now-actionable--contained_brand--border-radius,var(--now-actionable--border-radius,0)));border-width:var(--now-actionable--primary-ai--border-width,var(--now-actionable--contained_brand--border-width,0));color:RGB(var(--now-actionable_label--primary-ai--color,var(--now-color--primary-brand-16,0,79,101)))}.now-button.-primary.-ai .now-button-icon{color:RGB(var(--now-actionable_icon--primary-ai--color,var(--now-actionable_label--primary-ai--color,var(--now-color--primary-brand-16,0,79,101))))}.now-button.-primary.-ai:not(.is-disabled):hover{--now-button--ai--gradient-start:RGB(var(--now-actionable--primary-ai--background-color--hover,var(--now-color--secondary-brand-10,134,246,115)));--now-button--ai--gradient-end:RGB(var(--now-actionable--primary-ai--background-color--hover,var(--now-color--secondary-brand-10,134,246,115)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--primary-ai--border-color--hover,var(--now-color--secondary-brand-10,134,246,115)));color:RGB(var(--now-actionable_label--primary-ai--color--hover,var(--now-color--primary-brand-17,0,72,91)))}.now-button.-primary.-ai:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-actionable_icon--primary-ai--color--hover,var(--now-actionable_label--primary-ai--color--hover,var(--now-color--primary-brand-17,0,72,91))))}.now-button.-primary.-ai:not(.is-disabled).is-active,.now-button.-primary.-ai:not(.is-disabled):active{--now-button--ai--gradient-start:RGB(var(--now-actionable--primary-ai--background-color--active,var(--now-color--secondary-brand-11,125,229,107)));--now-button--ai--gradient-end:RGB(var(--now-actionable--primary-ai--background-color--active,var(--now-color--secondary-brand-11,125,229,107)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--primary-ai--border-color--active,var(--now-color--secondary-brand-11,125,229,107)));color:RGB(var(--now-actionable_label--primary-ai--color--active,var(--now-color--primary-brand-18,0,64,82)))}.now-button.-primary.-ai:not(.is-disabled).is-active .now-button-icon,.now-button.-primary.-ai:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-actionable_icon--primary-ai--color--active,var(--now-actionable_label--primary-ai--color--active,var(--now-color--primary-brand-18,0,64,82))))}.now-button.-primary.-ai:not(.is-disabled) .now-ripple,.now-button.-primary.-ai:not(.is-disabled).is-active,.now-button.-primary.-ai:not(.is-disabled):active:not(.has-ripple){--now-button--ai--gradient-start:RGB(var(--now-actionable--primary-ai--background-color--active,var(--now-color--secondary-brand-11,125,229,107)));--now-button--ai--gradient-end:RGB(var(--now-actionable--primary-ai--background-color--active,var(--now-color--secondary-brand-11,125,229,107)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%)}.now-button.-primary.-ai.is-disabled{opacity:var(--now-actionable--primary-ai--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button.-secondary{background-color:RGB(var(--now-button--secondary--background-color,var(--now-actionable--secondary--background-color,var(--now-color--secondary-1,1,119,142))),var(--now-button--secondary--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-button--secondary--border-color,var(--now-actionable--secondary--border-color,var(--now-color--secondary-1,1,119,142))));border-end-end-radius:var(--now-button--secondary--border-end-end-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0))));border-end-start-radius:var(--now-button--secondary--border-end-start-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0))));border-start-end-radius:var(--now-button--secondary--border-start-end-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0))));border-start-start-radius:var(--now-button--secondary--border-start-start-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button--secondary--border-width,var(--now-actionable--secondary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button--secondary--color,var(--now-actionable_label--secondary--color,var(--now-color--secondary-1,1,119,142))))}.now-button.-secondary .now-button-icon{color:RGB(var(--now-button_icon--secondary--color,var(--now-actionable_icon--secondary--color,var(--now-color--secondary-1,1,119,142))))}.now-button.-secondary:not(.is-disabled):hover{background-color:RGB(var(--now-button--secondary--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142))),var(--now-button--secondary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--secondary--border-color--hover,var(--now-actionable--secondary--border-color--hover,var(--now-color--secondary-2,1,89,107))));color:RGB(var(--now-button--secondary--color--hover,var(--now-actionable_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107))))}.now-button.-secondary:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--secondary--color--hover,var(--now-actionable_icon--secondary--color--hover,var(--now-color--secondary-2,1,89,107))))}.now-button.-secondary:not(.is-disabled).is-active,.now-button.-secondary:not(.is-disabled):active{border-color:RGB(var(--now-button--secondary--border-color--active,var(--now-actionable--secondary--border-color--active,var(--now-color--secondary-3,1,60,71))));color:RGB(var(--now-button--secondary--color--active,var(--now-actionable_label--secondary--color--active,var(--now-color--secondary-3,1,60,71))))}.now-button.-secondary:not(.is-disabled).is-active .now-button-icon,.now-button.-secondary:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--secondary--color--active,var(--now-actionable_icon--secondary--color--active,var(--now-color--secondary-3,1,60,71))))}.now-button.-secondary:not(.is-disabled) .now-ripple,.now-button.-secondary:not(.is-disabled).is-active,.now-button.-secondary:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button--secondary--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142))),var(--now-button--secondary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button.-secondary.is-disabled{opacity:var(--now-button--secondary--opacity--disabled,var(--now-actionable--secondary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-secondary.-positive{background-color:RGB(var(--now-button--secondary-positive--background-color,var(--now-actionable--secondary-positive--background-color,var(--now-color_alert--positive-3,30,105,34))),var(--now-button--secondary-positive--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-button--secondary-positive--border-color,var(--now-actionable--secondary-positive--border-color,var(--now-color_alert--positive-3,30,105,34))));border-end-end-radius:var(--now-button--secondary-positive--border-end-end-radius,var(--now-actionable--secondary-positive--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0)))));border-end-start-radius:var(--now-button--secondary-positive--border-end-start-radius,var(--now-actionable--secondary-positive--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0)))));border-start-end-radius:var(--now-button--secondary-positive--border-start-end-radius,var(--now-actionable--secondary-positive--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0)))));border-start-start-radius:var(--now-button--secondary-positive--border-start-start-radius,var(--now-actionable--secondary-positive--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0)))));border-width:var(--now-button--secondary-positive--border-width,var(--now-actionable--secondary-positive--border-width,var(--now-actionable--secondary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px)))));color:RGB(var(--now-button--secondary-positive--color,var(--now-actionable_label--secondary-positive--color,var(--now-color_alert--positive-3,30,105,34))))}.now-button.-secondary.-positive .now-button-icon{color:RGB(var(--now-button_icon--secondary-positive--color,var(--now-actionable_icon--secondary-positive--color,var(--now-color_alert--positive-3,30,105,34))))}.now-button.-secondary.-positive:not(.is-disabled):hover{background-color:RGB(var(--now-button--secondary-positive--background-color--hover,var(--now-actionable--secondary-positive--background-color--hover,var(--now-color_alert--positive-3,30,105,34))),var(--now-button--secondary-positive--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--secondary-positive--border-color--hover,var(--now-actionable--secondary-positive--border-color--hover,var(--now-color_alert--positive-4,22,79,26))));color:RGB(var(--now-button--secondary-positive--color--hover,var(--now-actionable_label--secondary-positive--color--hover,var(--now-color_alert--positive-4,22,79,26))))}.now-button.-secondary.-positive:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--secondary-positive--color--hover,var(--now-actionable_icon--secondary-positive--color--hover,var(--now-color_alert--positive-4,22,79,26))))}.now-button.-secondary.-positive:not(.is-disabled).is-active,.now-button.-secondary.-positive:not(.is-disabled):active{border-color:RGB(var(--now-button--secondary-positive--border-color--active,var(--now-actionable--secondary-positive--border-color--active,var(--now-color_alert--positive-5,15,52,17))));color:RGB(var(--now-button--secondary-positive--color--active,var(--now-actionable_label--secondary-positive--color--active,var(--now-color_alert--positive-5,15,52,17))))}.now-button.-secondary.-positive:not(.is-disabled).is-active .now-button-icon,.now-button.-secondary.-positive:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--secondary-positive--color--active,var(--now-actionable_icon--secondary-positive--color--active,var(--now-color_alert--positive-5,15,52,17))))}.now-button.-secondary.-positive:not(.is-disabled) .now-ripple,.now-button.-secondary.-positive:not(.is-disabled).is-active,.now-button.-secondary.-positive:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button--secondary-positive--background-color--active,var(--now-actionable--secondary-positive--background-color--active,var(--now-color_alert--positive-3,30,105,34))),var(--now-button--secondary-positive--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button.-secondary.-positive.is-disabled{opacity:var(--now-button--secondary-positive--opacity--disabled,var(--now-actionable--secondary-positive--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-secondary.-negative{background-color:RGB(var(--now-button--secondary-negative--background-color,var(--now-actionable--secondary-negative--background-color,var(--now-color_alert--critical-0,241,206,205))),var(--now-button--secondary-negative--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-button--secondary-negative--border-color,var(--now-actionable--secondary-negative--border-color,var(--now-color_alert--critical-3,160,48,43))));border-end-end-radius:var(--now-button--secondary-negative--border-end-end-radius,var(--now-actionable--secondary-negative--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0)))));border-end-start-radius:var(--now-button--secondary-negative--border-end-start-radius,var(--now-actionable--secondary-negative--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0)))));border-start-end-radius:var(--now-button--secondary-negative--border-start-end-radius,var(--now-actionable--secondary-negative--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0)))));border-start-start-radius:var(--now-button--secondary-negative--border-start-start-radius,var(--now-actionable--secondary-negative--border-radius,var(--now-actionable--secondary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0)))));border-width:var(--now-button--secondary-negative--border-width,var(--now-actionable--secondary-negative--border-width,var(--now-actionable--secondary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px)))));color:RGB(var(--now-button--secondary-negative--color,var(--now-actionable_label--secondary-negative--color,var(--now-color_alert--critical-3,160,48,43))))}.now-button.-secondary.-negative .now-button-icon{color:RGB(var(--now-button_icon--secondary-negative--color,var(--now-actionable_icon--secondary-negative--color,var(--now-color_alert--critical-3,160,48,43))))}.now-button.-secondary.-negative:not(.is-disabled):hover{background-color:RGB(var(--now-button--secondary-negative--background-color--hover,var(--now-actionable--secondary-negative--background-color--hover,var(--now-color_alert--critical-3,160,48,43))),var(--now-button--secondary-negative--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--secondary-negative--border-color--hover,var(--now-actionable--secondary-negative--border-color--hover,var(--now-color_alert--critical-4,120,36,32))));color:RGB(var(--now-button--secondary-negative--color--hover,var(--now-actionable_label--secondary-negative--color--hover,var(--now-color_alert--critical-4,120,36,32))))}.now-button.-secondary.-negative:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--secondary-negative--color--hover,var(--now-actionable_icon--secondary-negative--color--hover,var(--now-color_alert--critical-4,120,36,32))))}.now-button.-secondary.-negative:not(.is-disabled).is-active,.now-button.-secondary.-negative:not(.is-disabled):active{border-color:RGB(var(--now-button--secondary-negative--border-color--active,var(--now-actionable--secondary-negative--border-color--active,var(--now-color_alert--critical-5,80,24,22))));color:RGB(var(--now-button--secondary-negative--color--active,var(--now-actionable_label--secondary-negative--color--active,var(--now-color_alert--critical-5,80,24,22))))}.now-button.-secondary.-negative:not(.is-disabled).is-active .now-button-icon,.now-button.-secondary.-negative:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--secondary-negative--color--active,var(--now-actionable_icon--secondary-negative--color--active,var(--now-color_alert--critical-5,80,24,22))))}.now-button.-secondary.-negative:not(.is-disabled) .now-ripple,.now-button.-secondary.-negative:not(.is-disabled).is-active,.now-button.-secondary.-negative:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button--secondary-negative--background-color--active,var(--now-actionable--secondary-negative--background-color--active,var(--now-color_alert--critical-3,160,48,43))),var(--now-button--secondary-negative--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button.-secondary.-negative.is-disabled{opacity:var(--now-button--secondary-negative--opacity--disabled,var(--now-actionable--secondary-negative--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-secondary.-ai{--now-button--ai--gradient-start:RGB(var(--now-actionable--secondary-ai--background-color-gradient--start,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--secondary-ai--background-color-alpha,var(--now-opacity--less,0.25)));--now-button--ai--gradient-end:RGB(var(--now-actionable--secondary-ai--background-color-gradient--end,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--secondary-ai--background-color-alpha,var(--now-opacity--less,0.25)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--secondary-ai--border-color,var(--now-color--secondary-brand-11,125,229,107)));border-radius:var(--now-actionable--secondary-ai--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0)));border-width:var(--now-actionable--secondary-ai--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px)));color:RGB(var(--now-actionable_label--secondary-ai--color,var(--now-color--primary-brand-12,0,111,142)))}.now-button.-secondary.-ai .now-button-icon{color:RGB(var(--now-actionable_icon--secondary-ai--color,var(--now-actionable_label--secondary-ai--color,var(--now-color--primary-brand-12,0,111,142))))}.now-button.-secondary.-ai:not(.is-disabled):hover{--now-button--ai--gradient-start:RGB(var(--now-actionable--secondary-ai--background-color-gradient--start_hover,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--secondary-ai--background-color-alpha--hover,var(--now-opacity--mid,0.5)));--now-button--ai--gradient-end:RGB(var(--now-actionable--secondary-ai--background-color-gradient--end_hover,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--secondary-ai--background-color-alpha--hover,var(--now-opacity--mid,0.5)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--secondary-ai--border-color--hover,var(--now-color--secondary-brand-12,114,209,98)));color:RGB(var(--now-actionable_label--secondary-ai--color--hover,var(--now-color--primary-brand-13,0,104,132)))}.now-button.-secondary.-ai:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-actionable_icon--secondary-ai--color--hover,var(--now-actionable_label--secondary-ai--color--hover,var(--now-color--primary-brand-13,0,104,132))))}.now-button.-secondary.-ai:not(.is-disabled).is-active,.now-button.-secondary.-ai:not(.is-disabled):active{--now-button--ai--gradient-start:RGB(var(--now-actionable--secondary-ai--background-color-gradient--start_active,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--secondary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));--now-button--ai--gradient-end:RGB(var(--now-actionable--secondary-ai--background-color-gradient--end_active,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--secondary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--secondary-ai--border-color--active,var(--now-color--secondary-brand-13,105,192,90)));color:RGB(var(--now-actionable_label--secondary-ai--color--active,var(--now-color--primary-brand-14,0,96,122)))}.now-button.-secondary.-ai:not(.is-disabled).is-active .now-button-icon,.now-button.-secondary.-ai:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-actionable_icon--secondary-ai--color--active,var(--now-actionable_label--secondary-ai--color--active,var(--now-color--primary-brand-14,0,96,122))))}.now-button.-secondary.-ai:not(.is-disabled) .now-ripple,.now-button.-secondary.-ai:not(.is-disabled).is-active,.now-button.-secondary.-ai:not(.is-disabled):active:not(.has-ripple){--now-button--ai--gradient-start:RGB(var(--now-actionable--secondary-ai--background-color-gradient--start_active,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--secondary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));--now-button--ai--gradient-end:RGB(var(--now-actionable--secondary-ai--background-color-gradient--end_active,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--secondary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%)}.now-button.-secondary.-ai.is-disabled{opacity:var(--now-actionable--secondary-ai--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button.-tertiary{background-color:RGB(var(--now-button--tertiary--background-color,var(--now-actionable--tertiary--background-color,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button--tertiary--background-color-alpha,var(--now-actionable--background-color-alpha,0)));border-color:RGB(var(--now-button--tertiary--border-color,var(--now-actionable--tertiary--border-color,var(--now-color_border--tertiary-actionable,var(--now-color--neutral-12,66,80,81)))),var(--now-button--tertiary--border-color-alpha,1));border-end-end-radius:var(--now-button--tertiary--border-end-end-radius,var(--now-actionable--tertiary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0))));border-end-start-radius:var(--now-button--tertiary--border-end-start-radius,var(--now-actionable--tertiary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0))));border-start-end-radius:var(--now-button--tertiary--border-start-end-radius,var(--now-actionable--tertiary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0))));border-start-start-radius:var(--now-button--tertiary--border-start-start-radius,var(--now-actionable--tertiary--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0))));border-width:var(--now-button--tertiary--border-width,var(--now-actionable--tertiary--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px))));color:RGB(var(--now-button--tertiary--color,var(--now-actionable_label--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))),var(--now-button--tertiary--color-alpha,1))}.now-button.-tertiary .now-button-icon{color:RGB(var(--now-button_icon--tertiary--color,var(--now-actionable_icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81)))))}.now-button.-tertiary:not(.is-disabled):hover{background-color:RGB(var(--now-button--tertiary--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button--tertiary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));border-color:RGB(var(--now-button--tertiary--border-color--hover,var(--now-actionable--tertiary--border-color--hover,var(--now-color_border--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button--tertiary--border-color-alpha--hover,1));color:RGB(var(--now-button--tertiary--color--hover,var(--now-actionable_label--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))),var(--now-button--tertiary--color-alpha--hover,1))}.now-button.-tertiary:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-button_icon--tertiary--color--hover,var(--now-actionable_icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55)))))}.now-button.-tertiary:not(.is-disabled).is-active,.now-button.-tertiary:not(.is-disabled):active{border-color:RGB(var(--now-button--tertiary--border-color--active,var(--now-actionable--tertiary--border-color--active,var(--now-color_border--primary-actionable,var(--now-color--neutral-18,22,27,28)))),var(--now-button--tertiary--border-color-alpha--active,1));color:RGB(var(--now-button--tertiary--color--active,var(--now-actionable_label--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))),var(--now-button--tertiary--color-alpha--active,1))}.now-button.-tertiary:not(.is-disabled).is-active .now-button-icon,.now-button.-tertiary:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-button_icon--tertiary--color--active,var(--now-actionable_icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button.-tertiary:not(.is-disabled) .now-ripple,.now-button.-tertiary:not(.is-disabled).is-active,.now-button.-tertiary:not(.is-disabled):active:not(.has-ripple){background-color:RGB(var(--now-button--tertiary--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55)))),var(--now-button--tertiary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button.-tertiary.is-disabled{opacity:var(--now-button--tertiary--opacity--disabled,var(--now-actionable--tertiary--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25)))))}.now-button.-tertiary.-ai{--now-button--ai--gradient-start:RGB(var(--now-actionable--tertiary-ai--background-color-gradient--start,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--tertiary-ai--background-color-alpha,var(--now-opacity--least,0.1)));--now-button--ai--gradient-end:RGB(var(--now-actionable--tertiary-ai--background-color-gradient--end,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--tertiary-ai--background-color-alpha,var(--now-opacity--least,0.1)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--tertiary-ai--border-color,var(--now-color--secondary-brand-11,125,229,107)));border-radius:var(--now-actionable--tertiary-ai--border-radius,var(--now-actionable--contained--border-radius,var(--now-actionable--border-radius,0)));border-width:var(--now-actionable--tertiary-ai--border-width,var(--now-actionable--contained--border-width,var(--now-actionable--border-width,1px)));color:RGB(var(--now-actionable_label--tertiary-ai--color,var(--now-color--primary-brand-12,0,111,142)))}.now-button.-tertiary.-ai .now-button-icon{color:RGB(var(--now-actionable_icon--tertiary-ai--color,var(--now-actionable_label--tertiary-ai--color,var(--now-color--primary-brand-12,0,111,142))))}.now-button.-tertiary.-ai:not(.is-disabled):hover{--now-button--ai--gradient-start:RGB(var(--now-actionable--tertiary-ai--background-color-gradient--start_hover,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--tertiary-ai--background-color-alpha--hover,var(--now-opacity--mid,0.5)));--now-button--ai--gradient-end:RGB(var(--now-actionable--tertiary-ai--background-color-gradient--end_hover,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--tertiary-ai--background-color-alpha--hover,var(--now-opacity--mid,0.5)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--tertiary-ai--border-color--hover,var(--now-color--secondary-brand-12,114,209,98)));color:RGB(var(--now-actionable_label--tertiary-ai--color--hover,var(--now-color--primary-brand-13,0,104,132)))}.now-button.-tertiary.-ai:not(.is-disabled):hover .now-button-icon{color:RGB(var(--now-actionable_icon--tertiary-ai--color--hover,var(--now-actionable_label--tertiary-ai--color--hover,var(--now-color--primary-brand-13,0,104,132))))}.now-button.-tertiary.-ai:not(.is-disabled).is-active,.now-button.-tertiary.-ai:not(.is-disabled):active{--now-button--ai--gradient-start:RGB(var(--now-actionable--tertiary-ai--background-color-gradient--start_active,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--tertiary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));--now-button--ai--gradient-end:RGB(var(--now-actionable--tertiary-ai--background-color-gradient--end_active,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--tertiary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%);border-color:RGB(var(--now-actionable--tertiary-ai--border-color--active,var(--now-color--secondary-brand-13,105,192,90)));color:RGB(var(--now-actionable_label--tertiary-ai--color--active,var(--now-color--primary-brand-14,0,96,122)))}.now-button.-tertiary.-ai:not(.is-disabled).is-active .now-button-icon,.now-button.-tertiary.-ai:not(.is-disabled):active .now-button-icon{color:RGB(var(--now-actionable_icon--tertiary-ai--color--active,var(--now-actionable_label--tertiary-ai--color--active,var(--now-color--primary-brand-14,0,96,122))))}.now-button.-tertiary.-ai:not(.is-disabled) .now-ripple,.now-button.-tertiary.-ai:not(.is-disabled).is-active,.now-button.-tertiary.-ai:not(.is-disabled):active:not(.has-ripple){--now-button--ai--gradient-start:RGB(var(--now-actionable--tertiary-ai--background-color-gradient--start_active,var(--now-color--secondary-brand-10,134,246,115)),var(--now-actionable--tertiary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));--now-button--ai--gradient-end:RGB(var(--now-actionable--tertiary-ai--background-color-gradient--end_active,var(--now-color--supplementary1-brand-10,113,213,254)),var(--now-actionable--tertiary-ai--background-color-alpha--active,var(--now-opacity--more,0.65)));background:linear-gradient(135deg,var(--now-button--ai--gradient-start) 5%,var(--now-button--ai--gradient-end) 95%)}.now-button.-tertiary.-ai.is-disabled{opacity:var(--now-actionable--tertiary-ai--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button.is-disabled{cursor:not-allowed;opacity:var(--now-button--opacity--disabled,var(--now-actionable--contained--opacity--disabled,var(--now-actionable--opacity--disabled,var(--now-opacity--less,.25))))}.now-button.is-disabled:hover{box-shadow:none}.now-button.is-disabled:focus-visible::-moz-focus-inner{border-style:none}.now-button.is-disabled:focus-visible:focus-visible{box-shadow:inset 0 0 0 calc(.125rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))),inset 0 0 0 calc(.1875rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring_shadow,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))));outline:none}@media(forced-colors:active){.now-button.is-disabled:focus-visible:focus-visible{outline:1px solid highlight}}.now-button.is-bare,.now-button.is-bare.is-active,.now-button.is-bare:active,.now-button.is-bare:hover{background-color:transparent;border-color:transparent;border-width:0}.now-button.is-bare::-moz-focus-inner{border-style:none}.now-button.is-bare:focus-visible{box-shadow:inset 0 0 0 calc(.125rem*var(--now-rem-multiplier-from-root)) RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)));outline:none}@media(forced-colors:active){.now-button.is-bare:focus-visible{outline:1px solid highlight}}.now-button.is-bare.only-icon:hover{background-color:RGB(var(--now-color--neutral-9,99,114,116),.1)}.now-button.is-bare.only-icon .now-ripple,.now-button.is-bare.only-icon.is-active,.now-button.is-bare.only-icon:active:not(.has-ripple){background-color:RGB(var(--now-color--neutral-9,99,114,116),.35)}.now-button.is-bare.-inherit{color:inherit}.now-button.is-bare.-inherit.is-active,.now-button.is-bare.-inherit:active,.now-button.is-bare.-inherit:hover{color:inherit}.now-button.is-bare.-primary{color:RGB(var(--now-button--bare_primary--color,var(--now-actionable_label--primary_bare--color,var(--now-color--primary-2,23,100,82))))}.now-button.is-bare.-primary:not(.is-disabled):hover{background-color:RGBA(var(--now-button--bare_primary--background-color--hover,var(--now-actionable--primary_bare--background-color--hover,var(--now-color--primary-1,30,133,109))),var(--now-button--bare_primary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));color:RGB(var(--now-button--bare_primary--color--hover,var(--now-actionable_label--primary_bare--color--hover,var(--now-color--primary-3,15,67,55))))}.now-button.is-bare.-primary:not(.is-disabled).is-active,.now-button.is-bare.-primary:not(.is-disabled):active{color:RGB(var(--now-button--bare_primary--color--active,var(--now-actionable_label--primary_bare--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-button.is-bare.-primary:not(.is-disabled) .now-ripple,.now-button.is-bare.-primary:not(.is-disabled):active:not(.has-ripple){background-color:RGBA(var(--now-button--bare_primary--background-color--active,var(--now-actionable--primary_bare--background-color--active,var(--now-color--primary-1,30,133,109))),var(--now-button--bare_primary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button.is-bare.-secondary{color:RGB(var(--now-button--bare_secondary--color,var(--now-actionable_label--secondary_bare--color,var(--now-actionable_label--secondary--color,var(--now-color--secondary-1,1,119,142)))))}.now-button.is-bare.-secondary:not(.is-disabled):hover{background-color:RGBA(var(--now-button--bare_secondary--background-color--hover,var(--now-actionable--secondary_bare--background-color--hover,var(--now-actionable--secondary--background-color--hover,var(--now-color--secondary-1,1,119,142)))),var(--now-button--bare_secondary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));color:RGB(var(--now-button--bare_secondary--color--hover,var(--now-actionable_label--secondary_bare--color--hover,var(--now-actionable_label--secondary--color--hover,var(--now-color--secondary-2,1,89,107)))))}.now-button.is-bare.-secondary:not(.is-disabled).is-active,.now-button.is-bare.-secondary:not(.is-disabled):active{color:RGB(var(--now-button--bare_secondary--color--active,var(--now-actionable_label--secondary_bare--color--active,var(--now-actionable_label--secondary--color--active,var(--now-color--secondary-3,1,60,71)))))}.now-button.is-bare.-secondary:not(.is-disabled) .now-ripple,.now-button.is-bare.-secondary:not(.is-disabled):active:not(.has-ripple){background-color:RGBA(var(--now-button--bare_secondary--background-color--active,var(--now-actionable--secondary_bare--background-color--active,var(--now-actionable--secondary--background-color--active,var(--now-color--secondary-1,1,119,142)))),var(--now-button--bare_secondary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button.is-bare.-tertiary{color:RGB(var(--now-button--bare_tertiary--color,var(--now-actionable_label--tertiary_bare--color,var(--now-actionable_label--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))))}.now-button.is-bare.-tertiary:not(.is-disabled):hover{background-color:RGBA(var(--now-button--bare_tertiary--background-color--hover,var(--now-actionable--tertiary_bare--background-color--hover,var(--now-actionable--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button--bare_tertiary--background-color-alpha--hover,var(--now-actionable--background-color-alpha--hover,var(--now-opacity--least,.1))));color:RGB(var(--now-button--bare_tertiary--color--hover,var(--now-actionable_label--tertiary_bare--color--hover,var(--now-actionable_label--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))))))}.now-button.is-bare.-tertiary:not(.is-disabled).is-active,.now-button.is-bare.-tertiary:not(.is-disabled):active{color:RGB(var(--now-button--bare_tertiary--color--active,var(--now-actionable_label--tertiary_bare--color--active,var(--now-actionable_label--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))))))}.now-button.is-bare.-tertiary:not(.is-disabled) .now-ripple,.now-button.is-bare.-tertiary:not(.is-disabled):active:not(.has-ripple){background-color:RGBA(var(--now-button--bare_tertiary--background-color--active,var(--now-actionable--tertiary_bare--background-color--active,var(--now-actionable--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))))),var(--now-button--bare_tertiary--background-color-alpha--active,var(--now-actionable--background-color-alpha--active,var(--now-opacity--less,.25))))}.now-button.is-bare.is-disabled,.now-button.is-bare.is-disabled:hover{background-color:transparent;border-color:transparent}.now-button.only-icon{padding-inline:0}.now-button.only-icon.-sm{inline-size:calc(1.5rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size, 1)*1.5rem*var(--now-rem-multiplier-from-root)/2)}.now-button.only-icon.-md{inline-size:calc(2rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size, 1)*2rem*var(--now-rem-multiplier-from-root)/2)}.now-button.only-icon.-lg{inline-size:calc(3rem*var(--now-rem-multiplier-from-root)/2 + var(--now-button--scale-size, 1)*3rem*var(--now-rem-multiplier-from-root)/2)}@media(forced-colors:active){.now-button,.now-button:focus-visible,.now-button:hover{transition:none}.now-button{background-color:buttonface!important;border-style:solid!important;border-width:1px!important;color:buttontext!important}.now-button now-icon,.now-button now-icon-animated{color:inherit!important}.now-button:focus-visible,.now-button:hover{background-color:highlighttext!important;border-color:highlight!important;color:highlight!important}.now-button.is-disabled,.now-button.is-disabled:hover{background-color:buttonface!important;border-color:graytext!important;color:graytext!important;opacity:1!important}.now-button .now-line-height-crop{forced-color-adjust:none}.now-button ::slotted(*){forced-color-adjust:none}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{--now-line-height:0;color:inherit;display:inline-block;vertical-align:middle}.now-icon-animated{fill-rule:evenodd;fill:currentcolor}.now-icon-animated path{fill:currentcolor}.now-icon-animated.-sm{block-size:calc(.75rem*var(--now-rem-multiplier-from-root));inline-size:calc(.75rem*var(--now-rem-multiplier-from-root))}.now-icon-animated.-md{block-size:calc(1rem*var(--now-rem-multiplier-from-root));inline-size:calc(1rem*var(--now-rem-multiplier-from-root))}.now-icon-animated.-lg{block-size:calc(1.5rem*var(--now-rem-multiplier-from-root));inline-size:calc(1.5rem*var(--now-rem-multiplier-from-root))}.now-icon-animated.-xl{block-size:calc(2rem*var(--now-rem-multiplier-from-root));inline-size:calc(2rem*var(--now-rem-multiplier-from-root))}@media(forced-colors:active){svg{forced-color-adjust:auto}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{--now-line-height:0;color:inherit;display:inline-block;vertical-align:middle}:host .-spin{animation:spin 2s linear infinite}@media(prefers-reduced-motion:reduce){:host .-spin{animation:none}}.now-icon{fill-rule:evenodd;fill:currentcolor}.now-icon.-sm{block-size:calc(.75rem*var(--now-rem-multiplier-from-root)/2 + var(--now-icon--scale-size, 1)*.75rem*var(--now-rem-multiplier-from-root)/2);inline-size:calc(.75rem*var(--now-rem-multiplier-from-root)/2 + var(--now-icon--scale-size, 1)*.75rem*var(--now-rem-multiplier-from-root)/2)}.now-icon.-md{block-size:calc(1rem*var(--now-rem-multiplier-from-root)/2 + var(--now-icon--scale-size, 1)*1rem*var(--now-rem-multiplier-from-root)/2);inline-size:calc(1rem*var(--now-rem-multiplier-from-root)/2 + var(--now-icon--scale-size, 1)*1rem*var(--now-rem-multiplier-from-root)/2)}.now-icon.-lg{block-size:calc(1.5rem*var(--now-rem-multiplier-from-root)/2 + var(--now-icon--scale-size, 1)*1.5rem*var(--now-rem-multiplier-from-root)/2);inline-size:calc(1.5rem*var(--now-rem-multiplier-from-root)/2 + var(--now-icon--scale-size, 1)*1.5rem*var(--now-rem-multiplier-from-root)/2)}.now-icon.-xl{block-size:calc(2rem*var(--now-rem-multiplier-from-root)/2 + var(--now-icon--scale-size, 1)*2rem*var(--now-rem-multiplier-from-root)/2);inline-size:calc(2rem*var(--now-rem-multiplier-from-root)/2 + var(--now-icon--scale-size, 1)*2rem*var(--now-rem-multiplier-from-root)/2)}.now-icon.is-custom{object-fit:fill}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.now-icon-presence{fill-rule:evenodd;fill:currentcolor}.now-icon-presence.-available{color:RGB(var(--now-color_presence--available,75,166,107))}.now-icon-presence.-busy{color:RGB(var(--now-color_presence--busy,234,60,16))}.now-icon-presence.-away{color:RGB(var(--now-color_presence--away,226,121,24))}.now-icon-presence.-offline{color:RGB(var(--now-color_presence--offline,135,147,148))}@media(forced-colors:active){svg{forced-color-adjust:auto}.now-icon-presence{color:inherit!important}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{display:block;pointer-events:none}.now-modeless-dialog{background-color:RGB(var(--now-modeless-dialog--background-color,var(--now-window--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255)))));border-color:RGB(var(--now-modeless-dialog--border-color,var(--now-window--border-color,var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))));border-radius:var(--now-modeless-dialog--border-radius,var(--now-window--border-radius,calc(.25rem*var(--now-rem-multiplier-from-root))));border-style:solid;border-width:var(--now-modeless-dialog--border-width,var(--now-window--border-width,1px));box-shadow:0 calc(1rem*var(--now-rem-multiplier-from-root)) calc(1.5rem*var(--now-rem-multiplier-from-root)) 0 RGB(56,56,56,var(--now-opacity--less,.25));display:flex;flex-direction:column;overflow:hidden;overflow-wrap:anywhere;pointer-events:none;position:relative;visibility:hidden}.now-modeless-dialog:not(:active,.resize-edge-highlight){transition:left .5s cubic-bezier(.85,0,.14,1),top .5s cubic-bezier(.85,0,.14,1),bottom .5s cubic-bezier(.85,0,.14,1),right .5s cubic-bezier(.85,0,.14,1),height .5s cubic-bezier(.85,0,.14,1),width .5s cubic-bezier(.85,0,.14,1),opacity .5s cubic-bezier(.85,0,.14,1),border-radius .5s cubic-bezier(.85,0,.14,1),max-block-size .5s cubic-bezier(.85,0,.14,1),min-block-size .5s cubic-bezier(.85,0,.14,1),max-inline-size .5s cubic-bezier(.85,0,.14,1),min-inline-size .5s cubic-bezier(.85,0,.14,1),margin .5s cubic-bezier(.85,0,.14,1),margin-block-start .5s cubic-bezier(.85,0,.14,1),margin-inline-start .5s cubic-bezier(.85,0,.14,1),inset .5s cubic-bezier(.85,0,.14,1)}.now-modeless-dialog.fit-content{block-size:-moz-fit-content;block-size:fit-content;inline-size:-moz-fit-content;inline-size:fit-content;max-inline-size:calc(100vw - 1.0625rem*var(--now-rem-multiplier-from-root));min-block-size:calc(12.5rem*var(--now-rem-multiplier-from-root));min-inline-size:calc(20rem*var(--now-rem-multiplier-from-root))}.now-modeless-dialog.is-open{max-block-size:calc(100vh - 1.0625rem*var(--now-rem-multiplier-from-root));pointer-events:auto;visibility:visible}.now-modeless-dialog.auto-resizable-height{block-size:-moz-fit-content;block-size:fit-content;max-block-size:100vh;min-block-size:calc(12.5rem*var(--now-rem-multiplier-from-root))}.now-modeless-dialog.is-fullscreen{block-size:100%!important;inline-size:100%!important;inset:0!important;max-block-size:100vh;overflow:auto!important;position:fixed!important}.now-modeless-dialog-content,.now-modeless-dialog-footer,.now-modeless-dialog-header{display:flex;flex-shrink:0}.now-modeless-dialog-footer,.now-modeless-dialog-header{align-items:center}.now-modeless-dialog-footer.can-drag,.now-modeless-dialog-header.can-drag{cursor:move}.now-modeless-dialog-header{justify-content:flex-end}.now-modeless-dialog-header ::slotted(*){align-items:center;align-self:stretch;display:flex;margin-block:0}.now-modeless-dialog-header ::slotted([slot=heading]){flex-grow:1;pointer-events:none}.now-modeless-dialog-header ::slotted([slot=actions]){align-self:flex-start;pointer-events:inherit;z-index:2}.now-modeless-dialog-header.-initial{background-color:RGB(var(--now-modeless-dialog_header--initial--background-color,var(--now-window_header--tertiary--background-color,var(--now-window--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))))}.now-modeless-dialog-header.-initial .now-modeless-dialog-heading,.now-modeless-dialog-header.-initial ::slotted([slot=heading]){color:RGB(var(--now-modeless-dialog_header--initial--color,var(--now-window_header_label--tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-modeless-dialog-header.-initial .now-modeless-dialog-action-button-iconic,.now-modeless-dialog-header.-initial .now-modeless-dialog-action-slot,.now-modeless-dialog-header.-initial .now-modeless-dialog-drag-icon{--now-button-iconic--bare_tertiary--color:var(--now-modeless-dialog_actions--initial--color,var(--now-window_header_action-icon--tertiary--color,var(--now-color_text--tertiary,var(--now-color--neutral-12,66,80,81))))}.now-modeless-dialog-header.-initial .now-modeless-dialog-action-button-iconic:hover,.now-modeless-dialog-header.-initial .now-modeless-dialog-action-slot:hover,.now-modeless-dialog-header.-initial .now-modeless-dialog-drag-icon:hover{--now-button-iconic--bare_tertiary--color--hover:var(--now-modeless-dialog_actions--initial--color--hover,var(--now-window_header_action-icon--tertiary--color--hover,var(--now-color_text--secondary,var(--now-color--neutral-15,44,53,55))));--now-button-iconic--bare_tertiary--background-color--hover:var(--now-modeless-dialog_actions--initial--background-color--hover,var(--now-window_header_action-icon--tertiary--background-color--hover,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))));--now-button-iconic--bare_tertiary--background-color-alpha--hover:var(--now-modeless-dialog_actions--initial--background-color-alpha--hover,var(--now-window_header_action-icon--tertiary--background-color-alpha--hover,var(--now-opacity--least,0.1)))}.now-modeless-dialog-header.-initial .now-modeless-dialog-action-button-iconic:active,.now-modeless-dialog-header.-initial .now-modeless-dialog-action-slot:active,.now-modeless-dialog-header.-initial .now-modeless-dialog-drag-icon:active{--now-button-iconic--bare_tertiary--color--active:var(--now-modeless-dialog_actions--initial--color--active,var(--now-window_header_action-icon--tertiary--color--active,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28))));--now-button-iconic--bare_tertiary--background-color--active:var(--now-modeless-dialog_actions--initial--background-color--active,var(--now-window_header_action-icon--tertiary--background-color--active,var(--now-color_background--secondary-actionable,var(--now-color--neutral-15,44,53,55))));--now-button-iconic--bare_tertiary--background-color-alpha--active:var(--now-modeless-dialog_actions--initial--background-color-alpha--active,var(--now-window_header_action-icon--tertiary--background-color-alpha--active,var(--now-opacity--less,0.25)))}.now-modeless-dialog-header.-initial .now-modeless-dialog-action-button-iconic:focus-visible,.now-modeless-dialog-header.-initial .now-modeless-dialog-action-slot:focus-visible,.now-modeless-dialog-header.-initial .now-modeless-dialog-drag-icon:focus-visible{--now-color_focus-ring:var(--now-modeless-dialog_actions_focus-ring--initial--color,var(--now-window_header_action-icon--tertiary_focus-ring--color,var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))))}.now-modeless-dialog-header.-primary{background-color:RGB(var(--now-modeless-dialog_header--primary--background-color,var(--now-window_header--primary--background-color,var(--now-color_chrome--brand-10,21,32,32))))}.now-modeless-dialog-header.-primary .now-modeless-dialog-heading,.now-modeless-dialog-header.-primary ::slotted([slot=heading]){color:RGB(var(--now-modeless-dialog_header--primary--color,var(--now-window_header_label--primary--color,var(--now-color--neutral-0,255,255,255))))}.now-modeless-dialog-header.-primary .now-modeless-dialog-action-button-iconic,.now-modeless-dialog-header.-primary .now-modeless-dialog-action-slot,.now-modeless-dialog-header.-primary .now-modeless-dialog-drag-icon{--now-button-iconic--bare_tertiary--color:var(--now-modeless-dialog_actions--primary--color,var(--now-window_header_action-icon--primary--color,var(--now-color--neutral-0,255,255,255)))}.now-modeless-dialog-header.-primary .now-modeless-dialog-action-button-iconic:hover,.now-modeless-dialog-header.-primary .now-modeless-dialog-action-slot:hover,.now-modeless-dialog-header.-primary .now-modeless-dialog-drag-icon:hover{--now-button-iconic--bare_tertiary--color--hover:var(--now-modeless-dialog_actions--primary--color--hover,var(--now-window_header_action-icon--primary--color--hover,var(--now-window_header_action-icon--primary--color,var(--now-color--neutral-0,255,255,255))));--now-button-iconic--bare_tertiary--background-color--hover:var(--now-modeless-dialog_actions--primary--background-color--hover,var(--now-window_header_action-icon--primary--background-color--hover,var(--now-color_chrome--brand-4,77,96,97)));--now-button-iconic--bare_tertiary--background-color-alpha--hover:var(--now-modeless-dialog_actions--primary--background-color-alpha--hover,var(--now-window_header_action-icon--primary--background-color-alpha--hover,var(--now-opacity--most,0.8)))}.now-modeless-dialog-header.-primary .now-modeless-dialog-action-button-iconic:active,.now-modeless-dialog-header.-primary .now-modeless-dialog-action-slot:active,.now-modeless-dialog-header.-primary .now-modeless-dialog-drag-icon:active{--now-button-iconic--bare_tertiary--color--active:var(--now-modeless-dialog_actions--primary--color--active,var(--now-window_header_action-icon--primary--color--active,var(--now-window_header_action-icon--primary--color,var(--now-color--neutral-0,255,255,255))));--now-button-iconic--bare_tertiary--background-color--active:var(--now-modeless-dialog_actions--primary--background-color--active,var(--now-window_header_action-icon--primary--background-color--active,var(--now-color_chrome--brand-4,77,96,97)));--now-button-iconic--bare_tertiary--background-color-alpha--active:var(--now-modeless-dialog_actions--primary--background-color-alpha--active,var(--now-window_header_action-icon--primary--background-color-alpha--active,var(--now-opacity--most,0.8)))}.now-modeless-dialog-header.-primary .now-modeless-dialog-action-button-iconic:focus-visible,.now-modeless-dialog-header.-primary .now-modeless-dialog-action-slot:focus-visible,.now-modeless-dialog-header.-primary .now-modeless-dialog-drag-icon:focus-visible{--now-color_focus-ring:var(--now-modeless-dialog_actions_focus-ring--primary--color,var(--now-window_header_action-icon--primary_focus-ring--color,var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142))))}.now-modeless-dialog-header.-secondary{background-color:RGB(var(--now-modeless-dialog_header--secondary--background-color,var(--now-window_header--secondary--background-color,var(--now-color_chrome--brand-5,41,63,64))))}.now-modeless-dialog-header.-secondary .now-modeless-dialog-heading,.now-modeless-dialog-header.-secondary ::slotted([slot=heading]){color:RGB(var(--now-modeless-dialog_header--secondary--color,var(--now-window_header_label--secondary--color,var(--now-color--neutral-0,255,255,255))))}.now-modeless-dialog-header.-secondary .now-modeless-dialog-action-button-iconic,.now-modeless-dialog-header.-secondary .now-modeless-dialog-action-slot,.now-modeless-dialog-header.-secondary .now-modeless-dialog-drag-icon{--now-button-iconic--bare_tertiary--color:var(--now-modeless-dialog_actions--secondary--color,var(--now-window_header_action-icon--secondary--color,var(--now-color--neutral-0,255,255,255)))}.now-modeless-dialog-header.-secondary .now-modeless-dialog-action-button-iconic:hover,.now-modeless-dialog-header.-secondary .now-modeless-dialog-action-slot:hover,.now-modeless-dialog-header.-secondary .now-modeless-dialog-drag-icon:hover{--now-button-iconic--bare_tertiary--color--hover:var(--now-modeless-dialog_actions--secondary--color--hover,var(--now-window_header_action-icon--secondary--color--hover,var(--now-window_header_action-icon--secondary--color,var(--now-color--neutral-0,255,255,255))));--now-button-iconic--bare_tertiary--background-color--hover:var(--now-modeless-dialog_actions--secondary--background-color--hover,var(--now-window_header_action-icon--secondary--background-color--hover,var(--now-color_chrome--brand-4,77,96,97)));--now-button-iconic--bare_tertiary--background-color-alpha--hover:var(--now-modeless-dialog_actions--secondary--background-color-alpha--hover,var(--now-window_header_action-icon--secondary--background-color-alpha--hover,var(--now-opacity--most,0.8)))}.now-modeless-dialog-header.-secondary .now-modeless-dialog-action-button-iconic:active,.now-modeless-dialog-header.-secondary .now-modeless-dialog-action-slot:active,.now-modeless-dialog-header.-secondary .now-modeless-dialog-drag-icon:active{--now-button-iconic--bare_tertiary--color--active:var(--now-modeless-dialog_actions--secondary--color--active,var(--now-window_header_action-icon--secondary--color--active,var(--now-window_header_action-icon--secondary--color,var(--now-color--neutral-0,255,255,255))));--now-button-iconic--bare_tertiary--background-color--active:var(--now-modeless-dialog_actions--secondary--background-color--active,var(--now-window_header_action-icon--secondary--background-color--active,var(--now-color_chrome--brand-4,77,96,97)));--now-button-iconic--bare_tertiary--background-color-alpha--active:var(--now-modeless-dialog_actions--secondary--background-color-alpha--active,var(--now-window_header_action-icon--secondary--background-color-alpha--active,var(--now-opacity--most,0.8)))}.now-modeless-dialog-header.-secondary .now-modeless-dialog-action-button-iconic:focus-visible,.now-modeless-dialog-header.-secondary .now-modeless-dialog-action-slot:focus-visible,.now-modeless-dialog-header.-secondary .now-modeless-dialog-drag-icon:focus-visible{--now-color_focus-ring:var(--now-modeless-dialog_actions_focus-ring--secondary--color,var(--now-window_header_action-icon--secondary_focus-ring--color,var(--now-color--focus-1,77,160,176)))}.now-modeless-dialog-header.-border-block-end{border-block-end-color:RGB(var(--now-modeless-dialog--border-color,var(--now-window--border-color,var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))));border-block-end-style:solid;border-block-end-width:var(--now-modeless-dialog--border-width,var(--now-window--border-width,1px))}.now-modeless-dialog-header-container{display:flex;flex-grow:1;gap:var(--now-space--sm,calc(.5rem*var(--now-rem-multiplier-from-root)));justify-content:space-between}.now-modeless-dialog-header-container.-sm{padding:var(--now-space--sm2,calc(.75rem*var(--now-rem-multiplier-from-root)))}.now-modeless-dialog-header-container.-md{padding:var(--now-space--md1,calc(1rem*var(--now-rem-multiplier-from-root)))}.-sm .now-modeless-dialog-heading-container.drag-button-has-focus,.-sm .now-modeless-dialog-heading.drag-button-has-focus{margin-inline-start:var(--now-space--lg2,calc(1.5rem*var(--now-rem-multiplier-from-root)))}.-md .now-modeless-dialog-heading-container.drag-button-has-focus,.-md .now-modeless-dialog-heading.drag-button-has-focus{margin-inline-start:var(--now-space--lg6,calc(2rem*var(--now-rem-multiplier-from-root)))}.now-modeless-dialog-heading-container{display:flex}.now-modeless-dialog-heading{align-self:center;font-family:var(--now-display-type--primary--font-family,var(--now-display-type--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif)));font-style:var(--now-display-type--primary--font-style,var(--now-display-type--font-style,normal));margin-block:0;pointer-events:none;text-align:start;text-transform:var(--now-display-type--primary--text-transform,var(--now-display-type--text-transform,none))}.-sm .now-modeless-dialog-heading{font-size:var(--now-window_header--font-size--sm,var(--now-display-type_header--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--now-rem-multiplier-from-root)))));font-weight:400;line-height:1.3333}.-md .now-modeless-dialog-heading{font-size:var(--now-window_header--font-size--md,var(--now-display-type_header--font-size--md,var(--now-font-size--md1,calc(1rem*var(--now-rem-multiplier-from-root)))));font-weight:600;line-height:1.25}.now-modeless-dialog-heading-icon{margin-inline-end:var(--now-space--xs,calc(.25rem*var(--now-rem-multiplier-from-root)))}.-initial .now-modeless-dialog-heading-icon{color:RGB(var(--now-modeless-dialog_header--initial--color,var(--now-window_header_label--tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.-primary .now-modeless-dialog-heading-icon{color:RGB(var(--now-modeless-dialog_header--primary--color,var(--now-window_header_label--primary--color,var(--now-color--neutral-0,255,255,255))))}.-secondary .now-modeless-dialog-heading-icon{color:RGB(var(--now-modeless-dialog_header--secondary--color,var(--now-window_header_label--secondary--color,var(--now-color--neutral-0,255,255,255))))}.now-modeless-dialog-heading-icon.-initial{color:RGB(var(--now-modeless-dialog_header_icon--initial--color,var(--now-window_header_icon--tertiary--color,var(--now-color_text--primary,var(--now-color--neutral-18,22,27,28)))))}.now-modeless-dialog-heading-icon.-primary{color:RGB(var(--now-modeless-dialog_header_icon--primary--color,var(--now-window_header_icon--primary--color,var(--now-color--primary-1,30,133,109))))}.now-modeless-dialog-heading-icon.-secondary{color:RGB(var(--now-modeless-dialog_header_icon--secondary--color,var(--now-window_header_icon--secondary--color,var(--now-color--secondary-1,1,119,142))))}.now-modeless-dialog-drag-button{block-size:1px;inline-size:1px;overflow:hidden;position:absolute}.now-modeless-dialog-drag-button:focus-visible{block-size:auto;inline-size:auto;overflow:initial}.now-modeless-dialog-drag-button.-sm:focus-visible{inset-block-start:var(--now-space--sm2,calc(.75rem*var(--now-rem-multiplier-from-root)));inset-inline-start:var(--now-space--sm2,calc(.75rem*var(--now-rem-multiplier-from-root)))}.now-modeless-dialog-drag-button.-md:focus-visible{inset-block-start:var(--now-space--md1,calc(1rem*var(--now-rem-multiplier-from-root)));inset-inline-start:var(--now-space--md1,calc(1rem*var(--now-rem-multiplier-from-root)))}.now-modeless-dialog-header-actions{display:flex;flex-grow:1;gap:var(--now-space--sm,calc(.5rem*var(--now-rem-multiplier-from-root)));justify-content:flex-end}.now-modeless-dialog-footer{border-block-start-color:RGB(var(--now-modeless-dialog--border-color,var(--now-window--border-color,var(--now-color_divider--secondary,var(--now-color--neutral-5,172,180,181)))));border-block-start-style:solid;border-block-start-width:var(--now-modeless-dialog--border-width,var(--now-window--border-width,1px))}::slotted([slot=content]){inline-size:100%;min-block-size:0}.now-modeless-dialog-content{flex-grow:1;flex-shrink:1;min-block-size:0}.resize-edge-highlight{outline:calc(.1875rem*var(--now-rem-multiplier-from-root)) solid RGB(var(--now-window_highlight--color,var(--now-color--primary-1,30,133,109)))}@media(forced-colors:active){.now-modeless-dialog{border-width:1px}.now-modeless-dialog-header.-border-block-end{border-block-end-width:1px}.now-modeless-dialog-footer{border-block-start-width:1px}.resize-edge-highlight{outline-color:highlight}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{block-size:0;display:block;inline-size:0;position:relative}.fit-content-area{--now-motion--duration:var(--now-motion--duration--faster,100ms);--now-motion--timing-function:var(--now-motion--ease--linear,linear);visibility:hidden;z-index:4000}.fit-content-area.has-tail:after,.fit-content-area.has-tail:before{block-size:0;border:solid transparent;content:\\\" \\\";inline-size:0;pointer-events:none;position:absolute}.fit-content-area.has-tail:before{border-width:calc(.625rem*var(--now-rem-multiplier-from-root));filter:drop-shadow(0 calc(.125rem*var(--now-rem-multiplier-from-root)) calc(.125rem*var(--now-rem-multiplier-from-root)) RGB(56,56,56,var(--now-opacity--less,.25)))}.fit-content-area.has-tail:after{border-width:calc(.5625rem*var(--now-rem-multiplier-from-root))}.fit-content-area.has-tail.-up:before{border-block-end-color:RGB(var(--now-popover--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));border-block-start:0;inset-block-start:calc(-.5rem*var(--now-rem-multiplier-from-root))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-up:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-up:before{inset-inline-start:var(--popover-tail,1px)}:host([dir=rtl]) .fit-content-area.has-tail.-up:before,:root[dir=rtl] .fit-content-area.has-tail.-up:before{inset-inline-end:var(--popover-tail,1px)}.fit-content-area.has-tail.-up:after{border-block-end-color:RGB(var(--now-popover--background-color,var(--now-menu_container--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))));border-block-start:0;inset-block-start:calc(-.4375rem*var(--now-rem-multiplier-from-root))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-up:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-up:after{inset-inline-start:calc(var(--popover-tail, 0px) + 1px)}:host([dir=rtl]) .fit-content-area.has-tail.-up:after,:root[dir=rtl] .fit-content-area.has-tail.-up:after{inset-inline-end:calc(var(--popover-tail, 0px) + 1px)}.fit-content-area.has-tail.-up.has-focus:before{border-block-end-color:RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}.fit-content-area.has-tail.-down:before{border-block-end:0;border-block-start-color:RGB(var(--now-popover--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));inset-block-end:calc(-.5rem*var(--now-rem-multiplier-from-root))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-down:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-down:before{inset-inline-start:var(--popover-tail,1px)}:host([dir=rtl]) .fit-content-area.has-tail.-down:before,:root[dir=rtl] .fit-content-area.has-tail.-down:before{inset-inline-end:var(--popover-tail,1px)}.fit-content-area.has-tail.-down:after{border-block-end:0;border-block-start-color:RGB(var(--now-popover--background-color,var(--now-menu_container--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))));inset-block-end:calc(-.4375rem*var(--now-rem-multiplier-from-root))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-down:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-down:after{inset-inline-start:calc(var(--popover-tail, 0px) + 1px)}:host([dir=rtl]) .fit-content-area.has-tail.-down:after,:root[dir=rtl] .fit-content-area.has-tail.-down:after{inset-inline-end:calc(var(--popover-tail, 0px) + 1px)}.fit-content-area.has-tail.-down.has-focus:before{border-block-start-color:RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}.fit-content-area.has-tail.-right:before{inset-block-start:var(--popover-tail,1px)}:host(:not([dir=rtl])) .fit-content-area.has-tail.-right:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-right:before{inset-inline-end:calc(-.5rem*var(--now-rem-multiplier-from-root))}:host([dir=rtl]) .fit-content-area.has-tail.-right:before,:root[dir=rtl] .fit-content-area.has-tail.-right:before{inset-inline-start:calc(-.5rem*var(--now-rem-multiplier-from-root))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-right:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-right:before{border-inline-start-color:RGB(var(--now-popover--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))))}:host([dir=rtl]) .fit-content-area.has-tail.-right:before,:root[dir=rtl] .fit-content-area.has-tail.-right:before{border-inline-end-color:RGB(var(--now-popover--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-right:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-right:before{border-inline-end:0}:host([dir=rtl]) .fit-content-area.has-tail.-right:before,:root[dir=rtl] .fit-content-area.has-tail.-right:before{border-inline-start:0}.fit-content-area.has-tail.-right:after{inset-block-start:calc(var(--popover-tail, 0px) + 1px)}:host(:not([dir=rtl])) .fit-content-area.has-tail.-right:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-right:after{inset-inline-end:calc(-.4375rem*var(--now-rem-multiplier-from-root))}:host([dir=rtl]) .fit-content-area.has-tail.-right:after,:root[dir=rtl] .fit-content-area.has-tail.-right:after{inset-inline-start:calc(-.4375rem*var(--now-rem-multiplier-from-root))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-right:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-right:after{border-inline-start-color:RGB(var(--now-popover--background-color,var(--now-menu_container--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))))}:host([dir=rtl]) .fit-content-area.has-tail.-right:after,:root[dir=rtl] .fit-content-area.has-tail.-right:after{border-inline-end-color:RGB(var(--now-popover--background-color,var(--now-menu_container--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-right:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-right:after{border-inline-end:0}:host([dir=rtl]) .fit-content-area.has-tail.-right:after,:root[dir=rtl] .fit-content-area.has-tail.-right:after{border-inline-start:0}.fit-content-area.has-tail.-right.has-focus:before{border-inline-start-color:RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}.fit-content-area.has-tail.-left:before{inset-block-start:var(--popover-tail,1px)}:host(:not([dir=rtl])) .fit-content-area.has-tail.-left:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-left:before{inset-inline-start:calc(-.5rem*var(--now-rem-multiplier-from-root))}:host([dir=rtl]) .fit-content-area.has-tail.-left:before,:root[dir=rtl] .fit-content-area.has-tail.-left:before{inset-inline-end:calc(-.5rem*var(--now-rem-multiplier-from-root))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-left:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-left:before{border-inline-end-color:RGB(var(--now-popover--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))))}:host([dir=rtl]) .fit-content-area.has-tail.-left:before,:root[dir=rtl] .fit-content-area.has-tail.-left:before{border-inline-start-color:RGB(var(--now-popover--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-left:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-left:before{border-inline-start:0}:host([dir=rtl]) .fit-content-area.has-tail.-left:before,:root[dir=rtl] .fit-content-area.has-tail.-left:before{border-inline-end:0}.fit-content-area.has-tail.-left:after{inset-block-start:calc(var(--popover-tail, 0px) + 1px)}:host(:not([dir=rtl])) .fit-content-area.has-tail.-left:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-left:after{inset-inline-start:calc(-.4375rem*var(--now-rem-multiplier-from-root))}:host([dir=rtl]) .fit-content-area.has-tail.-left:after,:root[dir=rtl] .fit-content-area.has-tail.-left:after{inset-inline-end:calc(-.4375rem*var(--now-rem-multiplier-from-root))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-left:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-left:after{border-inline-end-color:RGB(var(--now-popover--background-color,var(--now-menu_container--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))))}:host([dir=rtl]) .fit-content-area.has-tail.-left:after,:root[dir=rtl] .fit-content-area.has-tail.-left:after{border-inline-start-color:RGB(var(--now-popover--background-color,var(--now-menu_container--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))))}:host(:not([dir=rtl])) .fit-content-area.has-tail.-left:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-left:after{border-inline-start:0}:host([dir=rtl]) .fit-content-area.has-tail.-left:after,:root[dir=rtl] .fit-content-area.has-tail.-left:after{border-inline-end:0}.fit-content-area.has-tail.-left.has-focus:before{border-inline-end-color:RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)))}.fit-content{--now-motion--duration:var(--now-motion--duration--fast,150ms);--now-motion--timing-function:var(--now-motion--ease--guided-enter,cubic-bezier(0.21,0.64,0.52,1));background-color:RGB(var(--now-popover--background-color,var(--now-menu_container--primary--background-color,var(--now-menu--background-color,var(--now-color_background--primary,var(--now-color--neutral-0,255,255,255))))));border-color:RGB(var(--now-popover--border-color,var(--now-menu_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));border-radius:var(--now-popover--border-radius,var(--now-menu_container--primary--border-radius,var(--now-menu--border-radius,calc(.125rem*var(--now-rem-multiplier-from-root)))));border-style:solid;border-width:var(--now-popover--border-width,var(--now-menu_container--primary--border-width,var(--now-menu--border-width,1px)));box-shadow:0 calc(.25rem*var(--now-rem-multiplier-from-root)) calc(.5rem*var(--now-rem-multiplier-from-root)) 0 RGB(56,56,56,var(--now-opacity--less,.25));max-block-size:100%;max-inline-size:100%;overflow:auto;position:fixed}.has-tail.-down .fit-content,.has-tail.-up .fit-content{min-inline-size:calc(1.25rem*var(--now-rem-multiplier-from-root))}.has-tail.-left .fit-content,.has-tail.-right .fit-content{min-block-size:calc(1.25rem*var(--now-rem-multiplier-from-root))}.disable-scroll .fit-content{overflow:hidden}.is-bare .fit-content{border-width:0}.fit-content:focus-visible{border-color:RGB(var(--now-color_focus-ring,var(--now-color--secondary-1,1,119,142)));outline:none}.fit-content-transform{transform:translateZ(0)}@media(forced-colors:active){.fit-content-area.has-tail:after,.fit-content-area.has-tail:before{forced-color-adjust:none}.fit-content-area.has-tail.-up:before{border-block-end-color:canvastext}.fit-content-area.has-tail.-up:after{border-block-end-color:canvas}.fit-content-area.has-tail.-up.has-focus:before{border-block-end-color:highlight}.fit-content-area.has-tail.-down:before{border-block-start-color:canvastext}.fit-content-area.has-tail.-down:after{border-block-start-color:canvas}.fit-content-area.has-tail.-down.has-focus:before{border-block-start-color:highlight}:host(:not([dir=rtl])) .fit-content-area.has-tail.-right:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-right:before{border-inline-start-color:canvastext}:host([dir=rtl]) .fit-content-area.has-tail.-right:before,:root[dir=rtl] .fit-content-area.has-tail.-right:before{border-inline-end-color:canvastext}:host(:not([dir=rtl])) .fit-content-area.has-tail.-right:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-right:after{border-inline-start-color:canvas}:host([dir=rtl]) .fit-content-area.has-tail.-right:after,:root[dir=rtl] .fit-content-area.has-tail.-right:after{border-inline-end-color:canvas}.fit-content-area.has-tail.-right.has-focus:before{border-inline-start-color:highlight}:host(:not([dir=rtl])) .fit-content-area.has-tail.-left:before,:root:not([dir=rtl]) .fit-content-area.has-tail.-left:before{border-inline-end-color:canvastext}:host([dir=rtl]) .fit-content-area.has-tail.-left:before,:root[dir=rtl] .fit-content-area.has-tail.-left:before{border-inline-start-color:canvastext}:host(:not([dir=rtl])) .fit-content-area.has-tail.-left:after,:root:not([dir=rtl]) .fit-content-area.has-tail.-left:after{border-inline-end-color:canvas}:host([dir=rtl]) .fit-content-area.has-tail.-left:after,:root[dir=rtl] .fit-content-area.has-tail.-left:after{border-inline-start-color:canvas}.fit-content-area.has-tail.-left.has-focus:before{border-inline-end-color:highlight}.fit-content{background-color:canvas;border-color:canvastext;border-width:1px!important}.fit-content:focus-visible{border-color:highlight}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}:host{block-size:0;display:inline-block;inline-size:0;position:absolute}.fit-content-area{display:block;visibility:hidden;z-index:5000}.fit-content{--now-motion--duration:var(--now-motion--duration--fast,150ms);--now-motion--timing-function:var(--now-motion--ease--guided-enter,cubic-bezier(0.21,0.64,0.52,1));display:block;max-block-size:100%;max-inline-size:100%;overflow:auto;position:fixed}.now-tooltip{word-wrap:break-word;background-color:RGB(var(--now-tooltip--background-color,var(--now-menu-contextual_container--primary--background-color,var(--now-color--neutral-19,15,18,19))),var(--now-tooltip--background-color-alpha,var(--now-menu-contextual_container--primary--background-color-alpha,1)));border-color:RGB(var(--now-tooltip--border-color,var(--now-menu-contextual_container--primary--border-color,var(--now-menu--border-color,var(--now-color_border--primary,var(--now-color--neutral-7,135,147,148))))));border-radius:var(--now-tooltip--border-radius,var(--now-menu-contextual_container--primary--border-radius,var(--now-menu--border-radius,calc(.125rem*var(--now-rem-multiplier-from-root)))));border-style:solid;border-width:var(--now-tooltip--border-width,var(--now-menu-contextual_container--primary--border-width,0));color:RGB(var(--now-tooltip--color,var(--now-menu-contextual_container_label--primary--color,var(--now-color--neutral-0,255,255,255))));cursor:default;font-family:var(--now-tooltip--font-family,var(--now-menu-contextual_container--primary--font-family,var(--now-menu--font-family,var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif))));font-size:var(--now-menu_label--font-size--sm,var(--now-font-size--sm,calc(.75rem*var(--now-rem-multiplier-from-root))));font-style:var(--now-tooltip--font-style,var(--now-menu-contextual_container--primary--font-style,var(--now-menu--font-style,normal)));font-variant:normal;font-weight:var(--now-tooltip--font-weight,var(--now-menu-contextual_container--primary--font-weight,var(--now-menu--font-weight,normal)));letter-spacing:inherit;line-height:1.3333;max-inline-size:calc(19rem*var(--now-rem-multiplier-from-root));overflow-wrap:break-word;padding:var(--now-space--sm,calc(.5rem*var(--now-rem-multiplier-from-root)));text-align:start;text-indent:0;text-shadow:none;text-transform:var(--now-tooltip--text-transform,var(--now-menu-contextual_container--primary--text-transform,var(--now-menu--text-transform,none)));white-space:normal;word-spacing:inherit}.now-tooltip,.now-tooltip .now-line-height-crop{display:block}.now-tooltip .now-line-height-crop:after,.now-tooltip .now-line-height-crop:before{block-size:0;content:\\\"\\\";display:block}.now-tooltip .now-line-height-crop:before{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--before,\\n\\t\\t\\t\\t\\t-.25em\\n\\t\\t\\t\\t)*1.06664)}.now-tooltip .now-line-height-crop:after{margin-block-end:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1.06664)}.now-tooltip .now-line-height-crop+.now-tooltip .now-line-height-crop{margin-block-start:calc(var(\\n\\t\\t\\t\\t\\t--now-line-height-crop--after,\\n\\t\\t\\t\\t\\t-.125em\\n\\t\\t\\t\\t)*1.06664*-1)}@media(forced-colors:active){.now-tooltip{border-width:1px}}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \":host{box-sizing:border-box;font-family:var(--now-font-family,\\\"Source Sans Pro\\\",Arial,sans-serif);line-height:var(--now-line-height,1.25)}:host([hidden]){display:none}*,:after,:before{box-sizing:border-box}.sn-unread-preview{cursor:pointer;display:flex;min-block-size:calc(2.125rem*var(--now-rem-multiplier-from-root));overflow:hidden hidden}.sn-unread-preview,.sn-unread-preview-bottom-controls,.sn-unread-preview-read-more-button{border-inline-start:calc(.3125rem*var(--now-rem-multiplier-from-root)) solid RGB(var(--now-button-circular--background-color,var(--now-button--primary--background-color,var(--now-color--primary-1))))}.sn-unread-preview-bottom-controls{font-size:calc(.75rem*var(--now-rem-multiplier-from-root))}.sn-unread-preview-bottom-controls .container{border-block-start:calc(.0625rem*var(--now-rem-multiplier-from-root)) solid RGB(var(--now-color_divider--tertiary,var(--now-color--neutral-3,209,214,214)));padding:calc(1rem*var(--now-rem-multiplier-from-root)) calc(1rem*var(--now-rem-multiplier-from-root)) 0 calc(1rem*var(--now-rem-multiplier-from-root))}.sn-unread-preview-bottom-controls .supplemental-controls{list-style:none;margin:0;padding:0}.sn-unread-preview-bottom-controls .supplemental-controls li{margin-block-start:calc(.5rem*var(--now-rem-multiplier-from-root))}.sn-unread-preview-bottom-controls .supplemental-controls li:last-child{padding-block-end:calc(.75rem*var(--now-rem-multiplier-from-root))}.sn-unread-preview.is-content-expanded{overflow-y:auto}.sn-unread-preview-content{font-weight:400;line-height:calc(1.125rem*var(--now-rem-multiplier-from-root));max-inline-size:320px;padding:calc(1rem*var(--now-rem-multiplier-from-root));text-overflow:ellipsis}.sn-unread-preview-content article:first-child,.sn-unread-preview-content aside:first-child,.sn-unread-preview-content blockquote:first-child,.sn-unread-preview-content details:first-child,.sn-unread-preview-content div:first-child,.sn-unread-preview-content dl:first-child,.sn-unread-preview-content fieldset:first-child,.sn-unread-preview-content figcaption:first-child,.sn-unread-preview-content figure:first-child,.sn-unread-preview-content footer:first-child,.sn-unread-preview-content form:first-child,.sn-unread-preview-content h1:first-child,.sn-unread-preview-content h2:first-child,.sn-unread-preview-content h3:first-child,.sn-unread-preview-content h4:first-child,.sn-unread-preview-content h5:first-child,.sn-unread-preview-content h6:first-child,.sn-unread-preview-content header:first-child,.sn-unread-preview-content menu:first-child,.sn-unread-preview-content nav:first-child,.sn-unread-preview-content ol:first-child,.sn-unread-preview-content p:first-child,.sn-unread-preview-content pre:first-child,.sn-unread-preview-content section:first-child,.sn-unread-preview-content summary:first-child,.sn-unread-preview-content table:first-child,.sn-unread-preview-content ul:first-child{margin-block-start:0}.sn-unread-preview now-button-iconic{margin-inline-start:calc(.5rem*var(--now-rem-multiplier-from-root))}.sn-unread-preview img{max-inline-size:100%}now-popover-panel{inset-block-start:calc(.625rem*var(--now-rem-multiplier-from-root))}.sn-unread-preview-read-more-button{color:RGB(var(--client-link-color));cursor:pointer;font-size:calc(.75rem*var(--now-rem-multiplier-from-root));padding:calc(.3125rem*var(--now-rem-multiplier-from-root)) 0 calc(1rem*var(--now-rem-multiplier-from-root)) calc(1rem*var(--now-rem-multiplier-from-root))}.sr-only{clip:rect(0 0 0 0);block-size:calc(.0625rem*var(--now-rem-multiplier-from-root));clip-path:inset(50%);inline-size:calc(.0625rem*var(--now-rem-multiplier-from-root));overflow:hidden;position:absolute;white-space:nowrap}.popover-close-icon{inset-block-start:0;position:sticky}\", \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\n        var result = require(\"!!../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../node_modules/.pnpm/postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../node_modules/.pnpm/resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../node_modules/.pnpm/sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-requestor-chat-popover.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_resizable-target.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-badge.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-button-bare.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-button-circular.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-button-iconic.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-button-stateful.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-button.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-icon-animated.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-icon.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-modeless-dialog.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-popover-panel.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../../../css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../../../postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../../../resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../../../sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_now-tooltip.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","\n        var result = require(\"!!../../../node_modules/.pnpm/css-loader@6.7.1_webpack@5.95.0/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../node_modules/.pnpm/postcss-loader@7.0.1_postcss@8.4.31_webpack@5.95.0/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!../../../node_modules/.pnpm/resolve-url-loader@5.0.0/node_modules/resolve-url-loader/index.js??ruleSet[1].rules[2].use[3]!../../../node_modules/.pnpm/sass-loader@13.0.2_sass@1.53.0_webpack@5.95.0/node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[4]!./_sn-unread-preview.scss\");\n\n        if (result && result.__esModule) {\n            result = result.default;\n        }\n\n        if (typeof result === \"string\") {\n            module.exports = result;\n        } else {\n            module.exports = result.toString();\n        }\n    ","function _assertThisInitialized(e) {\n  if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  return e;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(a, n) {\n  if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _construct(t, e, r) {\n  if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n  var o = [null];\n  o.push.apply(o, e);\n  var p = new (t.bind.apply(t, o))();\n  return r && setPrototypeOf(p, r.prototype), p;\n}\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(e, r) {\n  for (var t = 0; t < r.length; t++) {\n    var o = r[t];\n    o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t) {\n  return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n    writable: !1\n  }), e;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n  return module.exports = _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _extends.apply(null, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var superPropBase = require(\"./superPropBase.js\");\nfunction _get() {\n  return module.exports = _get = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get.bind() : function (e, t, r) {\n    var p = superPropBase(e, t);\n    if (p) {\n      var n = Object.getOwnPropertyDescriptor(p, t);\n      return n.get ? n.get.call(arguments.length < 3 ? e : r) : n.value;\n    }\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _get.apply(null, arguments);\n}\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(t) {\n  return module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n    return t.__proto__ || Object.getPrototypeOf(t);\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _getPrototypeOf(t);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(t, e) {\n  if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n  t.prototype = Object.create(e && e.prototype, {\n    constructor: {\n      value: t,\n      writable: !0,\n      configurable: !0\n    }\n  }), Object.defineProperty(t, \"prototype\", {\n    writable: !1\n  }), e && setPrototypeOf(t, e);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeFunction(t) {\n  try {\n    return -1 !== Function.toString.call(t).indexOf(\"[native code]\");\n  } catch (n) {\n    return \"function\" == typeof t;\n  }\n}\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n  try {\n    var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n  } catch (t) {}\n  return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() {\n    return !!t;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (e.includes(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(t, e) {\n  if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n  if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n  return assertThisInitialized(t);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(t, e) {\n  return module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n    return t.__proto__ = e, t;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _setPrototypeOf(t, e);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nfunction _superPropBase(t, o) {\n  for (; !{}.hasOwnProperty.call(t, o) && null !== (t = getPrototypeOf(t)););\n  return t;\n}\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction 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}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeFunction = require(\"./isNativeFunction.js\");\nvar construct = require(\"./construct.js\");\nfunction _wrapNativeSuper(t) {\n  var r = \"function\" == typeof Map ? new Map() : void 0;\n  return module.exports = _wrapNativeSuper = function _wrapNativeSuper(t) {\n    if (null === t || !isNativeFunction(t)) return t;\n    if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\");\n    if (void 0 !== r) {\n      if (r.has(t)) return r.get(t);\n      r.set(t, Wrapper);\n    }\n    function Wrapper() {\n      return construct(t, arguments, getPrototypeOf(this).constructor);\n    }\n    return Wrapper.prototype = Object.create(t.prototype, {\n      constructor: {\n        value: Wrapper,\n        enumerable: !1,\n        writable: !0,\n        configurable: !0\n      }\n    }), setPrototypeOf(Wrapper, t);\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _wrapNativeSuper(t);\n}\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// 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// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"now-requestor-chat-popover-app:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\t\tscript.type = \"module\";\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"externals/now-requestor-chat-popover-app/\" + chunkId + \".index.min.js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","var scriptUrl;\nif (typeof import.meta.url === \"string\") scriptUrl = import.meta.url\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl + \"../../\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t38792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknow_requestor_chat_popover_app\"] = self[\"webpackChunknow_requestor_chat_popover_app\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","/**\n * A handful of pure helpers for the unread-message polling logic that's\n * otherwise reimplemented in both `now-requestor-chat-popover` (same-origin,\n * AMB + snHttpFactory transport) and `embedded-enhanced-chat` (third-party\n * embed, plain `fetch` transport). Each app keeps its own transport/effect\n * code -- only the plain-data rules that both need to agree on live here.\n */\n\n/**\n * Query params sent alongside every unread-message fetch.\n */\nexport function buildUnreadQueryParams(portal, consumerAccountContext) {\n\treturn {\n\t\tportal,\n\t\t// eslint-disable-next-line camelcase -- server-defined query param name\n\t\tconsumer_account_context: consumerAccountContext\n\t};\n}\n\n/**\n * The unread-message API returns messages newest-first, but the \"first\n * unread\" message to preview is the *last* element of that array -- easy to\n * get backwards, so it's centralized here instead of re-derived per caller.\n */\nexport function pickPreviewMessage(unreadMessages) {\n\treturn unreadMessages?.length ? unreadMessages[unreadMessages.length - 1] : null;\n}\n\n/**\n * Normalizes the `/api/now/advance_chat_settings/get_feature_status`\n * response shape, applying the same fallback defaults regardless of which\n * transport fetched it (or whether the fetch failed outright).\n */\nexport function normalizeFeatureStatus(result) {\n\treturn {\n\t\tfetchUnreadInterval: result?.fetchUnreadInterval ?? 10000,\n\t\tisMessagePreviewEnabled: result?.isMessagePreviewEnabled ?? false,\n\t\tisProactiveTriggersEnabled: result?.isProactiveTriggersEnabled ?? false\n\t};\n}","const callAsync = Promise.resolve().then.bind(Promise.resolve());\nexport default callAsync;\n","export const VARIABLES = Symbol('__variables__');\nexport const INTERNAL_HOST_DISPATCH = Symbol('__internal_host_dispatch__');\nexport const EXISTING_SHADOW_ROOT_ON_CREATE = Symbol('__existing_shadow_root_on_create__');\n","export const errorTypes = {\n\tCOMPONENT_ERROR_THROWN: 'SEISMIC_COMPONENT_ERROR_THROWN'\n};\n\n// Public action types\nexport const actionTypes = {\n\tCOMPONENT_CONNECTED: 'SEISMIC_COMPONENT_CONNECTED',\n\tCOMPONENT_DISCONNECTED: 'SEISMIC_COMPONENT_DISCONNECTED',\n\tCOMPONENT_BOOTSTRAPPED: 'SEISMIC_COMPONENT_BOOTSTRAPPED',\n\tCOMPONENT_PROPERTY_CHANGED: 'SEISMIC_COMPONENT_PROPERTY_CHANGED',\n\tCOMPONENT_RENDERED: 'SEISMIC_COMPONENT_RENDERED',\n\tCOMPONENT_DOM_READY: 'SEISMIC_COMPONENT_DOM_READY',\n\tCOMPONENT_PROPERTY_UPDATE_REQUESTED: 'SEISMIC_COMPONENT_PROPERTY_UPDATE_REQUESTED',\n\tCOMPONENT_RENDER_REQUESTED: 'SEISMIC_COMPONENT_RENDER_REQUESTED',\n\tCOMPONENT_DOM_TREE_READY: 'SEISMIC_COMPONENT_DOM_TREE_READY',\n\tCOMPONENT_TREE_RENDERED: 'SEISMIC_COMPONENT_TREE_RENDERED',\n\tCOMPONENT_ACTION_DISPATCHED: 'SEISMIC_COMPONENT_ACTION_DISPATCHED',\n\tCOMPONENT_ERROR_THROWN: errorTypes.COMPONENT_ERROR_THROWN,\n\tCOMPONENT_INTERACTIVE: 'SEISMIC_COMPONENT_INTERACTIVE'\n};\n\nexport const locations = {\n\tEFFECT: 'SEISMIC_LOCATION_EFFECT',\n\tEVENT: 'SEISMIC_LOCATION_EVENT',\n\tINITIAL_STATE: 'SEISMIC_LOCATION_INITIAL_STATE',\n\tINTERCEPTOR: 'SEISMIC_LOCATION_INTERCEPTOR',\n\tLIFECYCLE: 'SEISMIC_LOCATION_LIFECYCLE',\n\tPROPERTY: 'SEISMIC_LOCATION_PROPERTY',\n\tRENDERER: 'SEISMIC_LOCATION_RENDERER',\n\tTRANSFORM_STATE: 'SEISMIC_LOCATION_TRANSFORM_STATE',\n\tVIEW: 'SEISMIC_LOCATION_VIEW'\n};\n\nexport const COMPONENT_ID_ATTRIBUTE = 'component-id';\nexport const NOW_ID_ATTRIBUTE = 'now-id';\nexport const NOW_ID_PROP = 'nowId';\nexport const DISCONNECTED_TIME = Symbol('SEISMIC_COMPONENT_DISCONNECTED_TIME');\n\nexport const domainSeparationProperties = {\n\tNOW_DS_RECORD_TABLE: 'nowDsRecordTable',\n\tNOW_DS_RECORD_ID: 'nowDsRecordId',\n\tNOW_DS_DOMAIN_ID: 'nowDsDomainId',\n\tNOW_DS_DOMAIN_SCOPE: 'nowDsDomainScope'\n};\n\nexport const CREATE_REF_SYMBOL = Symbol('__CREATE_REF_SYMBOL__');\nexport const CREATE_REF_SUBSCRIBE_SYMBOL = Symbol('__CREATE_REF_SUBSCRIBE_SYMBOL__');\nexport const CREATE_REF_COMP_PROPS_SUBSCRIPTIONS_SYMBOL = Symbol(\n\t'__CREATE_REF_COMP_PROPS_SUBSCRIPTIONS_SYMBOL__'\n);\n\n//tracing\nexport const ACTIVE_SPAN = Symbol('__ACTIVE_SPAN__');\nexport const SPAN_KIND_CLIENT = 3;\nexport const SPAN_FOR_DISPATCH = 'ACTION_DISPATCH';\nexport const SPAN_ATTR_DISPATCH_ACTION_TYPE = 'actionType';\nexport const SPAN_LEVEL_FINE = 100;\n\n// server-side rendering\n/**\n * NOW_SKIP_RENDER_UNTIL_PRESENT_ATTR defines a comma-separated list of property names\n * whose values should be present before the component is rendered. The reason for this\n * attribute is that the server rendered markup presents the settled state of the component,\n * while the client-side rendering may take a few renders before getting to the same state.\n * If we don't skip the intermediate renders, the hydration/patch process will trash the\n * server-rendered markups.\n */\nexport const NOW_SKIP_RENDER_UNTIL_PRESENT_ATTR = 'now-skip-render-until-present';\nexport const NOW_SKIP_RENDER_UNTIL_PRESENT = 'nowSkipRenderUntilPresent';\nexport const NOW_DEFER_HYDRATION_ATTR = 'defer-hydration';\nexport const NOW_DEFER_HYDRATION = 'deferHydration';\n/**\n * NOW_EXCLUDED_FROM_HYDRATION_ATTR is a boolean to indicate if an element should be excluded\n * from the hydration. The reason is that some components (like some UXR components) directly\n * manipulate the DOM without going through the seismic renderer. In such case, the client-side\n * rendering will not be able to generate the same DOM structure as the server-side rendering,\n * which causes the server markups to be trashed during the hydration process.\n */\nexport const NOW_EXCLUDED_FROM_HYDRATION_ATTR = 'now-excluded-from-hydration';\nexport const RESOLVED_PROPS_ATTRIBUTE = 'now-resolved-props';\n","const ERROR = 'error';\nconst WARN = 'warn';\nconst INFO = 'info';\nconst DEBUG = 'debug';\nconst TRACE = 'trace';\nconst EMIT = 'emit';\n\nexport const logTypes = [ERROR, WARN, INFO, DEBUG, TRACE, EMIT];\nexport const allLogTypes = {\n\tERROR,\n\tWARN,\n\tINFO,\n\tDEBUG,\n\tTRACE,\n\tEMIT\n};\n","export default function createLogContext({\n\thost,\n\ttagName: componentName,\n\tcomponentId,\n\tlevel,\n\terror,\n\tdocs,\n\torigin,\n\tmodule,\n\tmessage,\n\tpostfix\n}) {\n\tconst tempHost = host ? host : {};\n\tconst {\n\t\ttagName = null,\n\t\tnowId = null,\n\t\t__DO_NOT_USE_OR_YOU_WILL_BE_FIRED_BY_YOUR_PARENT__ = null,\n\t\tnowLoggingLevels = null\n\t} = tempHost;\n\n\tconst logContext = {\n\t\tcomponentName: tagName ? tagName : componentName,\n\t\tcomponentId: nowId ? nowId : componentId,\n\t\tparentComponentId: __DO_NOT_USE_OR_YOU_WILL_BE_FIRED_BY_YOUR_PARENT__,\n\t\tlevel,\n\t\terror,\n\t\tdocs,\n\t\torigin,\n\t\tmodule,\n\t\tpostfix,\n\t\tnowLoggingLevels\n\t};\n\n\tlogContext.logMessage = getLogMessage(logContext, message);\n\treturn logContext;\n}\n\nconst getLogMessage = (logContext, message) => {\n\tconst {componentName, componentId, docs, error, postfix, module, origin} = logContext;\n\tconst componentMsg = componentName\n\t\t? `<${componentName.toLowerCase()} ${componentId ? `component-id=\"${componentId}\"` : ''}/>`\n\t\t: '';\n\n\tlet startMessage = '';\n\tif (componentMsg && origin)\n\t\tstartMessage = `For component ${componentMsg} with origin '${origin}': `;\n\telse if (componentMsg) startMessage = `For component ${componentMsg}: `;\n\telse if (origin) startMessage = `At origin '${origin}': `;\n\n\treturn `${module} ${startMessage}${message}${error ? `\\n${error.stack}` : ''}${\n\t\tdocs ? `\\nDocumentation: ${docs}` : `\\n${postfix}`\n\t}`;\n};\n","/**\n * Converts a string to [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @example\n * kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * @function kebabCase\n * @param {string} str The string to convert.\n * @return {string} Returns the kebab cased string.\n */\nexport default function kebabCase(str) {\n\tif (typeof str !== 'string') return '';\n\n\treturn str\n\t\t.trim()\n\t\t.replace(/(\\B[A-Z]|\\B[0-9])/g, '-$1')\n\t\t.replace(/[\\s_]+/g, '-')\n\t\t.toLowerCase();\n}\n","import kebabCase from './kebabCase';\n\n/**\n * Converts a string to [camel case](https://en.wikipedia.org/wiki/Camel_case).\n *\n * @example\n * camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * @function camelCase\n * @param {string} str The string to convert.\n * @return {string} Returns the camel cased string.\n */\nexport default function camelCase(str) {\n\treturn kebabCase(str)\n\t\t.replace(/[-_]+/g, ' ')\n\t\t.replace(/[^\\w\\s]/g, '')\n\t\t.replace(/ (.)/g, $1 => $1.toUpperCase())\n\t\t.replace(/ /g, '');\n}\n","/**\n * Converts a value to string.  If given `null` or `undefined`, an empty string is returned.\n * @function toString\n * @param value The value to convert.\n * @return {string} Returns converted string value.\n */\nexport default function toString(value) {\n\tif (value === null || value === undefined) return '';\n\n\treturn value.toString();\n}\n","/**\n * Converts a string to lower case similar to [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @example\n * toLower('FOO BAR');\n * // => 'foo bar'\n *\n * @function toLower\n * @param {string} str The string to convert.\n * @return {string} Returns the lower cased string.\n */\nexport default function toLower(str) {\n\tif (typeof str !== 'string') return '';\n\n\treturn str.toLowerCase();\n}\n","/**\n * Converts a string to upper case similar to [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @example\n * toUpper('foo bar');\n * // => 'FOO BAR'\n *\n * @function toUpper\n * @param {string} str The string to convert.\n * @return {string} Returns the upper cased string.\n */\nexport default function toUpper(str) {\n\tif (typeof str !== 'string') return '';\n\n\treturn str.toUpperCase();\n}\n","let trackStats = false;\nlet stats = {};\nfunction recordStat(profileName, hit) {\n\tlet stat = stats[profileName];\n\n\tif (!stat) {\n\t\tstat = {calls: 0, hits: 0, size: 0};\n\t\tstats[profileName] = stat;\n\t}\n\n\tstat.calls += 1;\n\tif (hit) stat.hits += 1;\n\telse stat.size += 1;\n}\n/**\n * Creates a new function that memoizes the result of the provided `func` function.  When the\n * `resolver` function is specified, its returned value is used as the cache key of the memoized\n * function. By default, the first argument of the memoized function is used as the cache key.\n *\n * The cache is exposed as the `cache` property on the returned memoized function. It can be\n * customized by replacing the `memoize.Cache` constructor with one whose instances implement the\n * same [instance methods](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Instance_methods)\n * of `Map`.\n *\n * @function memoize\n * @param {Function} func The function to have its output memoized.\n * @param {Object} options Additional memoize options.\n * @param {Function} options.createCacheKey The function to resolve the cache key. Must return a string.\n * @param {string} options.profileName A unique name to use to track this function and its performance. Optional but highly encouraged to set it\n * @param {string} options.snabbdom Set to true if the function is returning JSX and is using snabbdom-renderer\n * @return {Function} Returns a new memoized function.\n */\nexport default function memoize(func, createCacheKey, options) {\n\tlet cck = createCacheKey;\n\tlet profileName;\n\tlet snabbdom = false;\n\tif (options === undefined && typeof createCacheKey === 'object') {\n\t\tcck = createCacheKey.createCacheKey;\n\t\tprofileName = createCacheKey.profileName;\n\t\tsnabbdom = createCacheKey.snabbdom;\n\t} else if (typeof options === 'object') {\n\t\tcck = createCacheKey || options.createCacheKey;\n\t\tprofileName = options.profileName;\n\t\tsnabbdom = options.snabbdom;\n\t}\n\n\tconst memoized = function (...args) {\n\t\tconst key = cck ? cck.apply(this, args) : args[0];\n\t\tconst {cache} = memoized;\n\n\t\tif (cache.has(key)) {\n\t\t\tif (trackStats) recordStat(profileName, true);\n\n\t\t\tconst result = cache.get(key);\n\t\t\treturn snabbdom ? cloneVnode(result) : result;\n\t\t}\n\n\t\tif (trackStats) recordStat(profileName, false);\n\n\t\tconst result = func.apply(this, args);\n\t\tconst cacheValue = snabbdom ? cloneVnode(result) : result;\n\t\tmemoized.cache = cache.set(key, cacheValue) || cache;\n\n\t\treturn cacheValue;\n\t};\n\tmemoized.cache = new (memoize.Cache || Map)();\n\treturn memoized;\n}\n\nmemoize.Cache = Map;\n\nmemoize.collectStats = function collectStats(value = true) {\n\ttrackStats = value;\n};\n\nmemoize.clearStats = function clearStats() {\n\tstats = {};\n};\n\nmemoize.getStats = function getStats() {\n\treturn Object.keys(stats).reduce((obj, current) => {\n\t\tconst {hits, calls} = stats[current];\n\t\tconst stat = {\n\t\t\t...stats[current],\n\t\t\tusage: calls ? `${((hits / calls) * 100).toFixed(4)}%` : '0.0000%'\n\t\t};\n\t\treturn {\n\t\t\t...obj,\n\t\t\t[current]: stat\n\t\t};\n\t}, {});\n};\n\nfunction cloneVnode(vnode) {\n\tif (!vnode) return vnode;\n\treturn {\n\t\tchildren:\n\t\t\tvnode.children !== undefined ? vnode.children.map(child => cloneVnode(child)) : undefined,\n\t\tdata: vnode.data,\n\t\telm: undefined,\n\t\tkey: vnode.key,\n\t\tsel: vnode.sel,\n\t\ttext: vnode.text\n\t};\n}\n","/**\n * Finds the key of the first element predicate that returns truthy.\n *\n * @example\n * findKey({foo: 0, bar: 1}, value => value === 1);\n * // => 'bar'\n *\n * @function findKey\n * @param {Object} object The object to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @return {*} Returns the key of the first matched element, otherwise `undefined`.\n */\nexport default function findKey(object, predicate) {\n\tif (!object) return;\n\n\tconst result = Object.entries(object).find(([key, value]) => predicate(value, key));\n\tif (result) {\n\t\tconst [key] = result;\n\t\treturn key;\n\t}\n}\n","import memoize from './memoize';\n\n/**\n * Splits a property path into parts.\n * @function splitPath\n * @private\n * @param {string} path String path to split into parts.\n * @return {Array<(string)>} An array of path parts.\n */\nconst splitPathMemoized = memoize(\n\tfunction splitPath(path) {\n\t\t// Added support using Symbol as keys\n\t\tif (typeof path === 'symbol') return [path];\n\n\t\tif (typeof path !== 'string' && !Array.isArray(path)) return [];\n\n\t\tif (Array.isArray(path)) return path;\n\n\t\tconst keys = path.split('.');\n\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst part = keys[i];\n\t\t\tconst {length: partLength} = part;\n\t\t\tif (part.charAt(partLength - 1) === ']') {\n\t\t\t\tconst index = [];\n\t\t\t\tlet char = '[';\n\t\t\t\tlet indexStartPosition = part.indexOf(char);\n\t\t\t\tconst key = part.substring(0, indexStartPosition);\n\n\t\t\t\tif (key)\n\t\t\t\t\t// key will be empty for `[0].bar`\n\t\t\t\t\tindex.push(key);\n\n\t\t\t\twhile (indexStartPosition < partLength) {\n\t\t\t\t\tif (char !== '[' && char !== ']') {\n\t\t\t\t\t\tconst indexEndPosition = part.indexOf(']', indexStartPosition);\n\t\t\t\t\t\tlet arrayPart = part.substring(indexStartPosition, indexEndPosition);\n\n\t\t\t\t\t\t// If the part inside the array access is wrapped in quotes, remove them\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tarrayPart.charAt(0) === arrayPart.charAt(arrayPart.length - 1) &&\n\t\t\t\t\t\t\t[\"'\", '\"'].includes(arrayPart.charAt(0))\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\tarrayPart = arrayPart.slice(1, -1);\n\n\t\t\t\t\t\tindex.push(arrayPart); // this could be [0] or [foo]\n\t\t\t\t\t\tindexStartPosition = indexEndPosition;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tindexStartPosition += 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tchar = part.charAt(indexStartPosition);\n\t\t\t\t}\n\n\t\t\t\tconst {length: indexLength} = index;\n\t\t\t\tif (indexLength) {\n\t\t\t\t\tkeys.splice(i, 1, ...index);\n\t\t\t\t\ti += indexLength - 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn keys;\n\t},\n\tnull,\n\t{profileName: 'splitPath'}\n);\n\nexport {splitPathMemoized as splitPath};\n","import {splitPath} from './splitPath';\n\n/**\n * Gets the property value at `path` from `object`.  If the value cannot\n * resolved or is `undefined`, the `defaultValue` is returned.\n *\n * @example\n * const object = { 'foo': [{ 'bar': { 'baz': 1 } }] }\n * get(object, 'foo[0].bar.baz');\n * // => 1\n *\n * @function get\n * @param {Object} object The object to query.\n * @param {string} path The path of the property to get.\n * @param {*} [defaultValue] The returned value for unresolved properties.\n * @return {*} Returns the value from the specified `path`.\n */\nexport default function get(object, path, defaultValue) {\n\tif (!object || !path) return defaultValue;\n\n\tconst parts = splitPath(path);\n\tlet here = object;\n\tconst {length: partsCount} = parts;\n\tfor (let i = 0; i < partsCount; i++) {\n\t\tif (!here || !Object.prototype.hasOwnProperty.call(here, parts[i])) return defaultValue;\n\t\there = here[parts[i]];\n\t}\n\n\treturn here !== undefined ? here : defaultValue;\n}\n","import {splitPath} from './splitPath';\n\n/**\n * Sets the property value at `path` on `object`.  If a portion of the `path` does not exist, it\n * will be created.\n *\n * Note: This method mutates the object.\n *\n * @example\n * const object = { foo: [{ bar: { baz: 3 } }] };\n * set(object, 'foo[0].bar.baz', 4);\n *\n * @function set\n * @param {Object} object The object to modify.\n * @param {string} path The path of the property to set.\n * @param {*} value The value to set.\n */\nexport default function set(object, path, value) {\n\tif (!object || !path) return;\n\n\tconst parts = splitPath(path);\n\n\tlet here = object;\n\tlet next;\n\tconst {length: partsCount} = parts;\n\tfor (let i = 0; i < partsCount; i++) {\n\t\tconst shouldSet = i + 1 === partsCount;\n\t\tconst part = parts[i];\n\t\tnext = here[part];\n\t\tif (!next) {\n\t\t\tconst nextNext = parts[i + 1];\n\t\t\tconst index = Number.parseInt(nextNext);\n\t\t\tnext = here[part] = index == nextNext && !Number.isNaN(index) ? [] : {}; // eslint-disable-line eqeqeq, no-multi-assign\n\t\t}\n\t\tif (shouldSet) here[part] = value;\n\n\t\there = next;\n\t}\n}\n","/**\n * Creates an object composed of the picked properties from the `source` object.\n * @example\n * const object = { foo: 0, bar: 1, baz: 2 };\n * pick(object, ['bar', 'baz']);\n * // => { bar: 1, baz: 2 }\n *\n * @function pick\n * @param {Object} source The object to pick from.\n * @param {(string[]|string)} path The property path(s) to pick.\n * @return {Object} Returns an object with the picked properties.\n */\nexport default function pick(source, path) {\n\tconst values = {};\n\tif (!path || !path.length || !source) return {};\n\n\tconst paths = typeof path === 'string' ? [path] : path;\n\tconst {length: pathLength} = paths;\n\tfor (let i = 0; i < pathLength; i++) {\n\t\tconst key = paths[i];\n\t\tif (source.hasOwnProperty(key)) values[key] = source[key];\n\t}\n\n\treturn values;\n}\n","/**\n * Creates an object composed of all but the omitted properties from the `source` object.\n * @example\n * const object = { foo: 0, bar: 1, baz: 2 };\n * omit(object, ['bar', 'baz']);\n * // => { foo: 0 }\n *\n * @function omit\n * @param {Object} source The object to omit from.\n * @param {(string[]|string)} path The property path(s) to omit.\n * @return {Object} Returns an object without the omitted properties.\n */\nexport default function omit(source, path) {\n\tif (!path || !path.length || !source) return source;\n\n\tconst values = {};\n\tconst paths = typeof path === 'string' ? [path] : path;\n\tconst {length: pathLength} = paths;\n\tfor (const key in source) {\n\t\tlet shouldOmit = false;\n\t\tfor (let i = 0; i < pathLength; i++) {\n\t\t\tif (key === paths[i]) shouldOmit = true;\n\t\t}\n\n\t\tif (!shouldOmit) values[key] = source[key];\n\t}\n\n\treturn values;\n}\n","function isArrayEqual(source, target, options) {\n\tconst {length: sourceLength} = source;\n\tconst {length: targetLength} = target;\n\n\tif (sourceLength !== targetLength) return false;\n\n\tfor (let i = 0; i < sourceLength; i++) {\n\t\tif (!isEqual(source[i], target[i], options)) return false;\n\t}\n\n\treturn true;\n}\n\nfunction isObjectEqual(source, target, options) {\n\tif ((!source && target) || (source && !target)) return false;\n\n\tconst sourceKeys = Object.keys(source);\n\tconst targetKeys = Object.keys(target);\n\tconst {length: sourceKeyLength} = sourceKeys;\n\tconst {length: targetKeyLength} = targetKeys;\n\n\tif (sourceKeyLength !== targetKeyLength) return false;\n\n\treturn sourceKeys.every(key => isEqual(source[key], target[key], options));\n}\n\nfunction isObjectTagEqual(source, target, options) {\n\tconst {classes = true} = options;\n\tconst sourceTag = Object.prototype.toString.call(source);\n\tconst targetTag = Object.prototype.toString.call(target);\n\n\tif (sourceTag !== targetTag) return false;\n\n\tswitch (sourceTag) {\n\t\tcase '[object Boolean]':\n\t\tcase '[object Number]':\n\t\tcase '[object Date]':\n\t\t\treturn eq(+source, +target);\n\n\t\tcase '[object Set]':\n\t\t\treturn isArrayEqual([...source], [...target], options);\n\n\t\tcase '[object Map]':\n\t\t\treturn isObjectEqual(Object.fromEntries(source), Object.fromEntries(target), options);\n\n\t\tcase '[object String]':\n\t\t\treturn `${source}` === `${target}`;\n\n\t\tcase '[object Object]':\n\t\t\tif (!classes && source.constructor !== Object) return source === target;\n\t\t\treturn isObjectEqual(source, target, options);\n\t}\n}\n\nexport const eq = function (source, target) {\n\t// Given:\n\t// const source = { 'a': 1 };\n\t// const target = { 'a': 1 };\n\t//\n\t// Results:\n\t// eq(source, source)  => true\n\t// eq(source, target) => false\n\t// eq('a', 'a') => true\n\t// eq('a', Object('a')) => false\n\t// eq(NaN, NaN) => true\n\treturn source === target || (source !== source && target !== target);\n};\n\n/**\n * Performs a deep equality check between two values.\n *\n * @example\n * const foo = { a: 1 };\n * const bar = { a: 1 };\n *\n * isEqual(foo, bar);\n * // => true\n *\n * foo === bar\n * // => false\n *\n * @function isEqual\n * @param {*} source The value to compare.\n * @param {*} target The value to compare `source` against.\n * @return {boolean} Returns `true` if the values are equal, otherwise `false`.\n */\nexport default function isEqual(source, target, options = {}) {\n\tif (source === target) return true;\n\n\tif (Array.isArray(source) && Array.isArray(target)) return isArrayEqual(source, target, options);\n\n\tconst result = isObjectTagEqual(source, target, options);\n\tif (result !== undefined) return result;\n\n\tif (typeof source === 'object' && typeof target === 'object')\n\t\treturn isObjectEqual(source, target, options);\n\n\treturn typeof source === 'function' && typeof target === 'function' && source === target;\n}\n","import {eq} from './isEqual';\n/**\n * Performs a deep equality check between two object values selectively.\n *\n * @example\n * const source = { a: 1, b:1 };\n * const target = { a: 1 };\n *\n * isObjectMatches(foo, bar);\n * // => true\n * const source = { a: 1, b:1 };\n * const target = { a: 2 };\n *\n * foo === bar\n * // => false\n *\n * @function isObjectMatches\n * @param {*} source The value to compare.\n * @param {*} target The value to compare `source` against selectively.\n * @return {boolean} Returns `true` if the target values are selectively equal, otherwise `false`.\n */\n\nfunction isObjectMatches(source, target, options = {}) {\n\tif (!source || !target) return false;\n\tif (typeof target !== 'object' && typeof source !== 'object') return false;\n\tfor (var key in target) {\n\t\tif (target.hasOwnProperty(key) && !source.hasOwnProperty(key)) return false;\n\t\tif (source.hasOwnProperty(key) && !isSelectiveEqual(source[key], target[key], options))\n\t\t\treturn false;\n\t}\n\treturn true;\n}\n\n/**\n * Performs a deep equality check between two values of array.\n *\n * @example\n * const source = [{ a: 1 }, { b:1 }];\n * const target = [{ a: 1 }, { b:1 }];\n *\n * isArrayMatches(foo, bar);\n * // => true\n *\n * foo === bar\n * // => false\n *\n * @function isArrayMatches\n * @param {*} source The value to compare.\n * @param {*} target The value to compare `source` against selectively.\n * @return {boolean} Returns `true` if the target values are selectively equal, otherwise `false`.\n */\n\nfunction isArrayMatches(source, target, options) {\n\tconst {length: sourceLength} = source;\n\tconst {length: targetLength} = target;\n\n\tif (sourceLength !== targetLength) return false;\n\n\tfor (let i = 0; i < sourceLength; i++) {\n\t\tif (!isSelectiveEqual(source[i], target[i], options)) return false;\n\t}\n\n\treturn true;\n}\n\n/**\n * Performs a deep equality check between two values selectively.\n *\n * @example\n * const source = { a: 1, b:1 };\n * const target = { a: 1 };\n *\n * isSelectiveEqual(foo, bar);\n * // => true\n *\n * foo === bar\n * // => false\n *\n * @function isSelectiveEqual\n * @param {*} source The value to compare.\n * @param {*} target The value to compare `source` against selectively.\n * @return {boolean} Returns `true` if the target values are selectively equal, otherwise `false`.\n */\n\nexport default function isSelectiveEqual(source, target, options = {}) {\n\tif (source === target) return true;\n\tif (Array.isArray(source) && Array.isArray(target))\n\t\treturn isArrayMatches(source, target, options);\n\tconst result = isObjectTagMatches(source, target, options);\n\tif (result !== undefined) return result;\n\n\tif (typeof source === 'object' && typeof target === 'object')\n\t\treturn isObjectMatches(source, target, options);\n\n\treturn typeof source === 'function' && typeof target === 'function' && source === target;\n}\n\n/**\n * Performs a object type comparision based on different data types of object and delegates the comparision to respective functions\n *\n * @example\n * const source = { a: 1, b:1 };\n * const target = { a: 1 };\n *\n * isObjectTagMatches(foo, bar);\n * // => true\n *\n * const source = { a: 1, b:1 };\n * const target = { a: 2 };\n * // => false\n *\n * @function isObjectTagMatches\n * @param {*} source The value to compare.\n * @param {*} target The value to compare `source` against selectively.\n * @return {boolean} Returns `true` if the target values are selectively equal, otherwise `false`.\n */\n\nfunction isObjectTagMatches(source, target, options) {\n\tconst {classes = true} = options;\n\tconst sourceTag = Object.prototype.toString.call(source);\n\tconst targetTag = Object.prototype.toString.call(target);\n\n\tif (sourceTag !== targetTag) return false;\n\n\tswitch (sourceTag) {\n\t\tcase '[object Boolean]':\n\t\tcase '[object Number]':\n\t\tcase '[object Date]':\n\t\t\treturn eq(+source, +target);\n\n\t\tcase '[object Set]':\n\t\t\treturn isArrayMatches([...source], [...target], options);\n\n\t\tcase '[object Map]':\n\t\t\treturn isObjectMatches(Object.fromEntries(source), Object.fromEntries(target), options);\n\n\t\tcase '[object String]':\n\t\t\treturn `${source}` === `${target}`;\n\n\t\tcase '[object Object]':\n\t\t\tif (!classes && source.constructor !== Object) return source === target;\n\t\t\treturn isObjectMatches(source, target, options);\n\t}\n}\n","/**\n * Checks whether a value is a plain object, an object with a prototype of `Object`.\n *\n * @example\n * isPlainObject(new Date());\n * // => false\n *\n * isPlainObject({ foo: 1, bar: 2 });\n * // => true\n *\n * @function isPlainObject\n * @param {*} value The value to check.\n * @return {boolean} Returns `true` if `value` is a plain object, else `false`.\n */\nexport default function isPlainObject(value) {\n\treturn (\n\t\t!!value &&\n\t\ttypeof value === 'object' &&\n\t\tObject.prototype.toString.call(value) === '[object Object]'\n\t);\n}\n","/**\n * The isEmpty function determines if a given value is empty or not.\n * @param {any} value The value to check\n * @returns {boolean} True if the value is empty, false otherwise\n */\nexport default function isEmpty(value) {\n\tif (value == null) return true;\n\tif (typeof value === 'string' || Array.isArray(value)) return value.length === 0;\n\n\tif (value instanceof Map || value instanceof Set) return value.size === 0;\n\n\tif (typeof value === 'object') return Object.keys(value).length === 0;\n\n\treturn false;\n}\n","const globalValueToBoolean = value => value === true || value === 'true';\n\nexport default () =>\n\tdocument.hidden &&\n\t!globalValueToBoolean(\n\t\twindow?.ux_globals?.sysprops?.['sn_nxui_framework.scheduler.unchained.defer.off']\n\t) &&\n\t!globalValueToBoolean(\n\t\twindow?.ux_globals?.nxui?.sysprops?.['sn_nxui_framework.scheduler.unchained.defer.off']\n\t);\n","const nextTick = fn => {\n\tconst channel = new MessageChannel();\n\tchannel.port1.onmessage = () => fn();\n\tchannel.port2.postMessage(null);\n};\nexport default nextTick;\n","//Have to have the following logic within utils package to avoid circular dependency\nlet deferMetrics = {};\nconst UNKNOWN_COMPONENT_NAME = 'UNKNOWN';\n\nexport function clearDeferMetrics() {\n\tdeferMetrics = {};\n}\n\nexport function logDuration(metrics, duration = 0, incomingComponentName) {\n\tconst componentName = incomingComponentName ? incomingComponentName : UNKNOWN_COMPONENT_NAME;\n\tif (!metrics[componentName]) metrics[componentName] = [];\n\n\tmetrics[componentName].push(duration);\n}\n\nexport function getDeferMetrics() {\n\treturn deferMetrics;\n}\n\nexport function logDeferTiming(duration) {\n\tlogDuration(deferMetrics, duration);\n}\n","import isThrottled from './isThrottled';\nimport nextTick from './nextTick';\nimport {logDeferTiming} from './deferMetrics';\n\nexport default function defer(fn, duration = 0) {\n\tlogDeferTiming(duration);\n\treturn isThrottled() ? nextTick(fn) : setTimeout(fn, duration);\n}\n","import defer from './defer';\n\nexport function requestIdleCallbackPollyfill(callback) {\n\tdefer(function requestIdleCallbackPollyfillTimeout() {\n\t\tconst start = Date.now();\n\t\tconst maxBusy = 100;\n\t\tcallback({\n\t\t\tdidTimeout: false,\n\t\t\ttimeRemaining() {\n\t\t\t\treturn Math.max(0, maxBusy - (Date.now() - start));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * This method queues a function to be called during a browser's idle periods\n * @example\n * requestIdleCallback(() => {})\n *\n * @function requestIdleCallback\n * @param {Function} callback The callback function to execute\n * @return {Object} undefined\n */\nconst requestIdleCallback = window.requestIdleCallback || requestIdleCallbackPollyfill;\n\n/*\nChromium based browsers have a bug in which Iframes and rIC do not work well together.\n\nSee -\n\nhttps://bugs.chromium.org/p/chromium/issues/detail?id=1240307\nhttps://bugs.chromium.org/p/chromium/issues/detail?id=1240317\n\nso when we see an Iframe on Chromium, we force rIC to be called every X milliseconds to\nensure the tasks are run.\n\nDO NOT MOVE THIS TO A UTILS FILE, we want to get rid of this logic ASAP rather than reuse it\nelsewhere\n*/\nconst isChromium = window?.navigator?.userAgentData?.brands?.some(b => b.brand === 'Chromium');\nconst isIframe = window?.location !== window?.parent?.location;\n// eslint-disable-next-line no-undef\nconst isWebWorker = typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope;\n\nconst rIC =\n\tisWebWorker || (isChromium && isIframe) ? requestIdleCallbackPollyfill : requestIdleCallback;\n\nexport default rIC;\n","import isThrottled from './isThrottled';\nimport {default as requestIdleCallback, requestIdleCallbackPollyfill} from './requestIdleCallback';\n\nexport default function whenIdle(fn) {\n\treturn isThrottled() ? requestIdleCallbackPollyfill(fn) : requestIdleCallback(fn);\n}\n","import isThrottled from './isThrottled';\nimport nextTick from './nextTick';\n\nexport default function raf(fn) {\n\treturn isThrottled() ? nextTick(fn) : requestAnimationFrame(fn);\n}\n","/**\n *\n * @param {*} snHttpFactoryConfig\n * @returns A function, that when called, will create an instance of sn-http-request\n */\nconst createSnHttp = snHttpFactoryConfig => async () => {\n\tconst snHttpRequest = await import('sn-http-request');\n\tconst {snHttpFactory} = snHttpRequest;\n\tconst snHttp = snHttpFactory(snHttpFactoryConfig);\n\n\treturn snHttp;\n};\n\nexport default createSnHttp;\n","import {NOW_UI_EVENT} from './constants';\n\nconst emitNowUiEvent = (type, detail) => {\n\tif (!window.__ENABLE_NOW_UI_EVENT__) return;\n\tconst event = new CustomEvent(NOW_UI_EVENT, {\n\t\tcomposed: true,\n\t\tbubbles: true,\n\t\tdetail: {\n\t\t\ttype,\n\t\t\t...detail\n\t\t}\n\t});\n\tdocument.dispatchEvent(event);\n};\n\nexport default emitNowUiEvent;\n","import {\n\tAMB_GC,\n\tGARBAGE_COLLECTOR_INTERVAL,\n\tTIME_TO_WAIT_AFTER_DISCONNECT,\n\tGQL_CACHE_CAPACITY,\n\tGQL_CACHING_ENABLED,\n\tGQL_CACHING_REFRESH_DELAY,\n\tHTTP_CACHING_REFRESH_DELAY,\n\tHTTP_CACHE_CAPACITY,\n\tHTTP_CACHING_ENABLED,\n\tCHECK_FOR_POSSIBLE_PRESENTATIONAL_COMPONENTS,\n\tLOGGING_ENABLED,\n\tLOGGING_LEVELS,\n\tLOGS_OBSERVER_INTERVAL,\n\tLOGS_CLEANUP_INTERVAL,\n\tVALIDATE_SCHEMAS,\n\tENABLE_SCHEDULER_STATS,\n\tMETRICS_COMPONENT_INTERACTIVE_ENABLED,\n\tARIA_LIVE_ASSERTIVE_TIMEOUT,\n\tARIA_LIVE_POLITE_TIMEOUT,\n\tWHEN_COMPONENT_IS_IDLE_TIMEOUT,\n\tWHEN_COMPONENT_IS_IDLE_THROTTLE,\n\tWHEN_COMPONENT_IS_IDLE_MIN_INTERVAL,\n\tMETRICS_OBSERVER_INTERVAL,\n\tSCHEDULER_RAF_TIMEOUT,\n\tMETRICS_MARK_PRUNING_INTERVAL,\n\tMETRICS_MARK_EXPIRATION,\n\tMETRICS_PRUNE_MARKS\n} from '../constants';\n\nexport const devConfig = {};\n\n// AMB GC\ndevConfig[AMB_GC] = {};\ndevConfig[AMB_GC][GARBAGE_COLLECTOR_INTERVAL] = 20000;\ndevConfig[AMB_GC][TIME_TO_WAIT_AFTER_DISCONNECT] = 5000;\n\n// Caching\ndevConfig[GQL_CACHING_ENABLED] = true;\ndevConfig[GQL_CACHING_REFRESH_DELAY] = 500;\ndevConfig[GQL_CACHE_CAPACITY] = 3;\ndevConfig[HTTP_CACHING_ENABLED] = true;\ndevConfig[HTTP_CACHE_CAPACITY] = 3;\ndevConfig[HTTP_CACHING_REFRESH_DELAY] = 500;\n\n// Logging\ndevConfig[LOGGING_ENABLED] = true;\ndevConfig[LOGGING_LEVELS] = true;\ndevConfig[LOGS_OBSERVER_INTERVAL] = 1000;\ndevConfig[LOGS_CLEANUP_INTERVAL] = 60000;\n\n// Validation\ndevConfig[VALIDATE_SCHEMAS] = true;\ndevConfig[CHECK_FOR_POSSIBLE_PRESENTATIONAL_COMPONENTS] = true;\n\ndevConfig[ENABLE_SCHEDULER_STATS] = true;\n\ndevConfig[METRICS_COMPONENT_INTERACTIVE_ENABLED] = true;\n\ndevConfig[ARIA_LIVE_ASSERTIVE_TIMEOUT] = 500;\ndevConfig[ARIA_LIVE_POLITE_TIMEOUT] = 5000;\n\ndevConfig[WHEN_COMPONENT_IS_IDLE_TIMEOUT] = 5000;\ndevConfig[WHEN_COMPONENT_IS_IDLE_THROTTLE] = 50;\ndevConfig[WHEN_COMPONENT_IS_IDLE_MIN_INTERVAL] = 25;\n\ndevConfig[METRICS_OBSERVER_INTERVAL] = 3000;\ndevConfig[SCHEDULER_RAF_TIMEOUT] = 0;\n\ndevConfig[METRICS_MARK_PRUNING_INTERVAL] = 300000;\ndevConfig[METRICS_MARK_EXPIRATION] = 300000;\ndevConfig[METRICS_PRUNE_MARKS] = true;\n","import {memoize} from '@servicenow/ui-utils';\nimport {\n\tAMB_GC,\n\tGQL_CACHE_CAPACITY,\n\tGQL_CACHING_ENABLED,\n\tHTTP_CACHE_CAPACITY,\n\tHTTP_CACHING_ENABLED,\n\tDISABLE_GQL_BATCHING,\n\tDISABLE_REST_BATCHING,\n\tENABLE_ACTION_DISPATCHED_HANDLING,\n\tGARBAGE_COLLECTOR_INTERVAL,\n\tINTERSECT_ROOT_MARGIN,\n\tVALIDATE_SCHEMAS,\n\tCHECK_FOR_POSSIBLE_PRESENTATIONAL_COMPONENTS,\n\tPOSSIBLE_PRESENTATIONAL_COMPONENTS,\n\tLOGGING_ENABLED,\n\tLOGGING_LEVELS,\n\tLOGS_OBSERVER_INTERVAL,\n\tLOGS_CLEANUP_INTERVAL,\n\tMEMOIZE,\n\tMETRICS_LEVEL,\n\tMETRICS_OBSERVER_INTERVAL,\n\tMETRICS_TYPES,\n\tQUEUE_FLUSH_ENABLED,\n\tTELEMETRY_MARKING_ENABLED,\n\tTIME_TO_WAIT_AFTER_DISCONNECT,\n\tENABLE_SCHEDULER_STATS,\n\tMETRICS_COMPONENT_INTERACTIVE_ENABLED,\n\tARIA_LIVE_ASSERTIVE_TIMEOUT,\n\tARIA_LIVE_POLITE_TIMEOUT,\n\tWHEN_COMPONENT_IS_IDLE_TIMEOUT,\n\tWHEN_COMPONENT_IS_IDLE_THROTTLE,\n\tWHEN_COMPONENT_IS_IDLE_MIN_INTERVAL,\n\tSCHEDULER_RAF_TIMEOUT,\n\tMETRICS_MARK_PRUNING_INTERVAL,\n\tMETRICS_MARK_EXPIRATION,\n\tMETRICS_PRUNE_MARKS\n} from '../constants';\n\nexport const prodConfig = {};\n\n// AMB GC\nprodConfig[AMB_GC] = {};\nprodConfig[AMB_GC][GARBAGE_COLLECTOR_INTERVAL] = 5000;\nprodConfig[AMB_GC][TIME_TO_WAIT_AFTER_DISCONNECT] = 1000;\n\n// Caching\nprodConfig[GQL_CACHING_ENABLED] = false;\nprodConfig[GQL_CACHE_CAPACITY] = 200;\nprodConfig[HTTP_CACHING_ENABLED] = false;\nprodConfig[HTTP_CACHE_CAPACITY] = 200;\n\n// Request Batching\nprodConfig[DISABLE_GQL_BATCHING] = false;\nprodConfig[DISABLE_REST_BATCHING] = false;\n\n// Memoize\nprodConfig[MEMOIZE] = memoize;\n\n// Validation\nprodConfig[VALIDATE_SCHEMAS] = false;\nprodConfig[CHECK_FOR_POSSIBLE_PRESENTATIONAL_COMPONENTS] = false;\nprodConfig[POSSIBLE_PRESENTATIONAL_COMPONENTS] = [];\n\n// Metrics\n//\n// Heads up that these following 2 config values are a little tricky when\n// unset:\n// - When `metricTypes` is not defined, then fall back to checking `metricsLevel`\n// - When `metricsLevel` is not defined, then nothing is marked\nprodConfig[METRICS_TYPES] = null;\nprodConfig[METRICS_LEVEL] = null;\nprodConfig[METRICS_OBSERVER_INTERVAL] = 3000;\nprodConfig[ENABLE_SCHEDULER_STATS] = false;\nprodConfig[TELEMETRY_MARKING_ENABLED] = true;\n\n// Custom Event Dispatching\nprodConfig[ENABLE_ACTION_DISPATCHED_HANDLING] = false;\n\n// Intersection Observer\nprodConfig[INTERSECT_ROOT_MARGIN] = '500px';\n\n// Queue Flush Enabled\nprodConfig[QUEUE_FLUSH_ENABLED] = false;\n\n// Logging\nprodConfig[LOGGING_ENABLED] = false;\nprodConfig[LOGGING_LEVELS] = null;\nprodConfig[LOGS_OBSERVER_INTERVAL] = 1000;\nprodConfig[LOGS_CLEANUP_INTERVAL] = 60000;\n\nprodConfig[METRICS_COMPONENT_INTERACTIVE_ENABLED] = false;\n\nprodConfig[ARIA_LIVE_ASSERTIVE_TIMEOUT] = 500;\nprodConfig[ARIA_LIVE_POLITE_TIMEOUT] = 5000;\n\nprodConfig[WHEN_COMPONENT_IS_IDLE_TIMEOUT] = 5000;\nprodConfig[WHEN_COMPONENT_IS_IDLE_THROTTLE] = 50;\nprodConfig[WHEN_COMPONENT_IS_IDLE_MIN_INTERVAL] = 25;\n\nprodConfig[SCHEDULER_RAF_TIMEOUT] = 0;\n\nprodConfig[METRICS_MARK_PRUNING_INTERVAL] = 300000;\nprodConfig[METRICS_MARK_EXPIRATION] = 300000;\nprodConfig[METRICS_PRUNE_MARKS] = true;\n","import {\n\tENABLE_SCHEDULER_STATS,\n\tGQL_CACHING_REFRESH_DELAY,\n\tHTTP_CACHING_REFRESH_DELAY,\n\tINTERSECT_ROOT_MARGIN,\n\tLOGGING_ENABLED,\n\tMETRICS_COMPONENT_INTERACTIVE_ENABLED,\n\tMETRICS_TYPES,\n\tVALIDATE_SCHEMAS,\n\tARIA_LIVE_ASSERTIVE_TIMEOUT,\n\tARIA_LIVE_POLITE_TIMEOUT,\n\tWHEN_COMPONENT_IS_IDLE_TIMEOUT,\n\tWHEN_COMPONENT_IS_IDLE_THROTTLE,\n\tWHEN_COMPONENT_IS_IDLE_MIN_INTERVAL,\n\tMETRICS_OBSERVER_INTERVAL,\n\tSCHEDULER_RAF_TIMEOUT,\n\tMETRICS_MARK_PRUNING_INTERVAL,\n\tMETRICS_MARK_EXPIRATION,\n\tMETRICS_PRUNE_MARKS\n} from '../constants';\n\nexport const testConfig = {};\n// caching\ntestConfig[GQL_CACHING_REFRESH_DELAY] = 500;\ntestConfig[HTTP_CACHING_REFRESH_DELAY] = 500;\n\n// Metrics\ntestConfig[METRICS_TYPES] = ['TEST'];\ntestConfig[ENABLE_SCHEDULER_STATS] = false;\n\n// Intersection Observer\ntestConfig[INTERSECT_ROOT_MARGIN] = '400px';\n\n// Logging\ntestConfig[LOGGING_ENABLED] = true;\n\n// Validation\ntestConfig[VALIDATE_SCHEMAS] = true;\n\ntestConfig[METRICS_COMPONENT_INTERACTIVE_ENABLED] = true;\n\ntestConfig[ARIA_LIVE_ASSERTIVE_TIMEOUT] = 500;\ntestConfig[ARIA_LIVE_POLITE_TIMEOUT] = 5000;\n\ntestConfig[WHEN_COMPONENT_IS_IDLE_TIMEOUT] = 600;\ntestConfig[WHEN_COMPONENT_IS_IDLE_THROTTLE] = 50;\ntestConfig[WHEN_COMPONENT_IS_IDLE_MIN_INTERVAL] = 25;\n\ntestConfig[METRICS_OBSERVER_INTERVAL] = 3000;\n\ntestConfig[SCHEDULER_RAF_TIMEOUT] = 0;\n\ntestConfig[METRICS_MARK_PRUNING_INTERVAL] = 300000;\ntestConfig[METRICS_MARK_EXPIRATION] = 300000;\ntestConfig[METRICS_PRUNE_MARKS] = true;\n","import {devConfig} from './dev';\nimport {prodConfig} from './prod';\nimport {testConfig} from './test';\n\nimport {DEV, PROD, TEST} from '../constants';\n\n/***\n * @function getConfigForEnv\n * @description gets the default config values for the process.env\n */\nexport const getConfigForEnv = () => {\n\tconst configEnv = process.env.NODE_ENV ? process.env.NODE_ENV : PROD;\n\tif (configEnv === PROD) return prodConfig;\n\n\tif (configEnv === DEV) return {...prodConfig, ...devConfig};\n\n\tif (configEnv === TEST) return {...prodConfig, ...testConfig};\n\n\treturn {};\n};\n","import {get, set} from '@servicenow/ui-utils';\nimport {\n\tNOW_UI_CONFIG,\n\tNOW_UI_FRAMEWORK,\n\tNOW_UI_FRAMEWORK_CONFIG_KEYS,\n\tNXUI_SYS_PROPS\n} from './constants';\nimport {default as emitNowUiEvent} from './emitNowUiEvent';\nimport {getConfigForEnv} from './configs/index';\n\nconst configInstance = {};\n\n/***\n * Private\n */\n\n/***\n * @function getConfigFromGlobal\n * @description checks the globalThis object for configs\n */\nconst getConfigFromGlobal = () => {\n\tconst globalConfig = {};\n\n\tif (!globalThis[NOW_UI_FRAMEWORK]) return globalConfig;\n\n\tNOW_UI_FRAMEWORK_CONFIG_KEYS.forEach(key => {\n\t\tif (globalThis[NOW_UI_FRAMEWORK][key] !== undefined)\n\t\t\tglobalConfig[key] = globalThis[NOW_UI_FRAMEWORK][key];\n\t});\n\n\treturn globalConfig;\n};\n\nconst getConfigFromSysProps = () => {\n\tconst nxuiConfig = {};\n\n\tif (!globalThis.ux_globals?.nxui?.sysprops) return nxuiConfig;\n\n\tconst sysPropKeys = Object.keys(NXUI_SYS_PROPS);\n\tfor (const sysProp in globalThis.ux_globals.nxui.sysprops) {\n\t\tif (sysPropKeys.indexOf(sysProp) > -1) {\n\t\t\tconst configKey = NXUI_SYS_PROPS[sysProp];\n\t\t\tconst sysPropValue = globalThis.ux_globals.nxui.sysprops[sysProp];\n\t\t\tif (sysPropValue === 'true') nxuiConfig[configKey] = true;\n\t\t\telse if (sysPropValue === 'false') nxuiConfig[configKey] = false;\n\t\t\telse nxuiConfig[configKey] = sysPropValue;\n\t\t}\n\t}\n\n\treturn nxuiConfig;\n};\n\nconst observeredProperties = {};\n\n/***\n * Public\n */\n\n/**\n * getConfig\n * @description returns the config instance\n * @function getConfig\n */\nexport const getConfig = () => {\n\t// Need to whitelist keys\n\tconst globalConfig = getConfigFromGlobal();\n\tconst sysPropConfig = getConfigFromSysProps();\n\tconst envConfig = getConfigForEnv();\n\n\t// Build Config Object -> Env Defaults -> Sys Props -> Global Config -> Overrides\n\tconst configObj = {...envConfig, ...sysPropConfig, ...globalConfig, ...configInstance};\n\treturn configObj;\n};\n\n/**\n * observeConfigItem\n * @description returns a function to remove the observer\n * @param {String} path\n * @param {Function} fn\n * @function observeConfigItem\n */\nexport const observeConfigItem = (path, fn) => {\n\tconst observers = observeredProperties[path] || (observeredProperties[path] = new Set());\n\tobservers.add(fn);\n\treturn () => observers.delete(fn);\n};\n\n/**\n * Getter for Config\n * @param {String} path\n * @returns {Object} Returns the key and value for the config item\n */\nexport const getConfigItem = path => {\n\tconst overridden = get(configInstance, path);\n\tif (overridden !== undefined) return overridden;\n\n\tconst globalVar = get(getConfigFromGlobal(), path);\n\tif (globalVar !== undefined) return globalVar;\n\n\tconst sysPropVar = get(getConfigFromSysProps(), path);\n\tif (sysPropVar !== undefined) return sysPropVar;\n\n\treturn get(getConfigForEnv(), path, undefined);\n};\n\n/**\n * Setter for Config\n * @function setConfigItem\n * @description Setter for the Seismic config\n * @param {String} path\n * @param {*} value\n * @returns {Object} Returns the key and value for the config item that was set\n *\n * Is it a junk drawer or do we want to whitelist keys?\n */\nexport const setConfigItem = (path, value) => {\n\tif (getConfigItem(path) === value) return;\n\n\temitNowUiEvent(NOW_UI_CONFIG, {path, value, previousValue: getConfigItem(path)});\n\tconst retVal = set(configInstance, path, value);\n\tconst observers = observeredProperties[path];\n\tif (observers) observers.forEach(fn => fn(path, value));\n\n\treturn retVal;\n};\n","import {getConfigItem, setConfigItem} from '../config';\nimport {EMBEDDABLE_BASE_URL} from '../constants';\n\n/**\n * Description: Setter for `baseUrl` for Embeddable environment\n * @param {string} url - value to be used as baseurl\n * @returns {void}\n */\nexport const setEmbeddableBaseUrl = url => setConfigItem(EMBEDDABLE_BASE_URL, url);\n/**\n * Description: Getter for `baseUrl` , used by HttpEffect, GraphQLEffect for preparing request `url`\n * @returns {string}\n */\nexport const getEmbeddableBaseUrl = () => getConfigItem(EMBEDDABLE_BASE_URL) || '';\n","export {default as kebabCase} from './kebabCase';\nexport {default as camelCase} from './camelCase';\nexport {default as toString} from './toString';\nexport {default as toLower} from './toLower';\nexport {default as toUpper} from './toUpper';\nexport {default as memoize} from './memoize';\nexport {default as findKey} from './findKey';\nexport {default as get} from './get';\nexport {default as set} from './set';\nexport {splitPath} from './splitPath';\nexport {default as pick} from './pick';\nexport {default as omit} from './omit';\nexport {default as values} from './values';\nexport {default as noop} from './noop';\nexport {default as isEqual} from './isEqual';\nexport {default as isSelectiveEqual} from './isSelectiveEqual';\nexport {default as isPlainObject} from './isPlainObject';\nexport {default as isEmpty} from './isEmpty';\nexport {default as defer} from './defer';\nexport {default as whenIdle} from './whenIdle';\nexport {default as raf} from './raf';\nexport {default as requestIdleCallback, requestIdleCallbackPollyfill} from './requestIdleCallback';\nexport {default as isThrottled} from './isThrottled';\nexport {default as createSnHttp} from './createSnHttp';\nexport * from './deferMetrics';\n","import {logTypes} from './constants';\nimport {getConfigItem, configConstants, observeConfigItem} from '@servicenow/ui-config';\nconst {LOGGING_ENABLED, LOGGING_LEVELS} = configConstants;\n\nlet globalLoggingEnabled = getConfigItem(LOGGING_ENABLED);\nlet globalLoggingLevels = getConfigItem(LOGGING_LEVELS);\n\nconst observer = (path, value) => {\n\tswitch (path) {\n\t\tcase LOGGING_ENABLED:\n\t\t\tglobalLoggingEnabled = value;\n\t\t\tbreak;\n\t\tcase LOGGING_LEVELS:\n\t\t\tglobalLoggingLevels = value;\n\t\t\tbreak;\n\t}\n};\n\nobserveConfigItem(LOGGING_ENABLED, observer);\nobserveConfigItem(LOGGING_LEVELS, observer);\n\nexport default function shouldLog(logContext, options) {\n\tconst {always, level: logType} = options;\n\tif (always) return true;\n\n\tif (!logTypes.includes(logType)) return false;\n\n\tconst {nowLoggingLevels} = logContext;\n\n\tif (nowLoggingLevels === true || nowLoggingLevels === false) return nowLoggingLevels;\n\n\tif (Array.isArray(nowLoggingLevels)) return nowLoggingLevels.includes(logType);\n\n\tif (globalLoggingLevels === true || globalLoggingLevels === false) return globalLoggingLevels;\n\n\tif (Array.isArray(globalLoggingLevels)) return globalLoggingLevels.includes(logType);\n\n\treturn !!globalLoggingEnabled;\n}\n","export default new Set();\n","import logObservers from './logObservers';\n\nexport default function observe(observer) {\n\tif (typeof observer === 'function') {\n\t\tconst observerObj = {observer, logsToSend: []};\n\t\tlogObservers.add(observerObj);\n\t\treturn () => logObservers.delete(observerObj);\n\t}\n}\n","import {getConfigItem, configConstants, observeConfigItem} from '@servicenow/ui-config';\nimport logObservers from './logObservers';\nimport {defer, whenIdle} from '@servicenow/ui-utils';\n\nconst {LOGS_OBSERVER_INTERVAL} = configConstants;\nlet timeoutId;\nlet logsObserverInterval = getConfigItem(LOGS_OBSERVER_INTERVAL);\n\nconst observer = (path, value) => {\n\tif (path === LOGS_OBSERVER_INTERVAL) {\n\t\tlogsObserverInterval = value;\n\t}\n};\n\nobserveConfigItem(LOGS_OBSERVER_INTERVAL, observer);\n\nconst addLog = logContext => {\n\tfor (const observer of logObservers) observer.logsToSend.push(logContext);\n};\n\nconst notifyLogObserver = observer => {\n\tconst {logsToSend} = observer;\n\tobserver.observer(logsToSend.splice(0, logsToSend.length));\n};\n\nexport default function notifyLogObservers(logContext) {\n\tif (logObservers.size) {\n\t\tlet timeExpired = false;\n\t\tif (logContext) addLog(logContext);\n\t\tclearTimeout(timeoutId);\n\t\ttimeoutId = defer(() => {\n\t\t\twhenIdle(deadLine => {\n\t\t\t\tfor (const observer of logObservers) {\n\t\t\t\t\tif (deadLine.timeRemaining() > 0) {\n\t\t\t\t\t\tif (observer.logsToSend.length) notifyLogObserver(observer);\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttimeExpired = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (timeExpired) notifyLogObservers();\n\t\t\t});\n\t\t}, logsObserverInterval || 1000);\n\t}\n}\n","import {logTypes, allLogTypes} from './constants';\nimport {default as createLogContext} from './createLogContext';\nimport {default as shouldLog} from './shouldLog';\nimport {default as observe} from './observe';\nimport {default as notifyLogObservers} from './notifyLogObservers';\n\nglobalThis.nowUiFrameworkLogs = {\n\tobserve,\n\tlogTypes\n};\n\nexport {shouldLog, observe, createLogContext, notifyLogObservers, allLogTypes};\n","import {\n\tcreateLogContext,\n\tshouldLog,\n\tnotifyLogObservers,\n\tallLogTypes as logTypes\n} from './logHandler';\nconst tagNameCache = {};\n\nconst defaults = {\n\tsupport: 'https://developer.servicenow.com/now-experience-ui-framework/support',\n\tmodule: '@servicenow/ui-core'\n};\n\nconst logOptionDefaults = {\n\tlevel: logTypes.WARN,\n\terror: null,\n\talways: false,\n\tdocs: null,\n\ttagName: null,\n\tcomponentId: null\n};\n\n/**\n * Creates a logger.\n * @function createLogger\n * @private\n * @param {Object} config - The logger configuration.\n * @param {string} [config.support] - Link to NX UI Documentation & Support\n * @param {string} [config.module] - Module name.\n */\nexport default function createLogger(options = {}) {\n\tconst loggerOptions = {...defaults, ...options};\n\tconst {module, support} = loggerOptions;\n\tconst postfix = `Visit ${support} for more information about UI Framework on Next Experience.`;\n\treturn async function log(message, options = {}) {\n\t\tconst logOptions = {...logOptionDefaults, message, module, postfix, ...options};\n\t\tconst resolvedLogContext = createLogContext(logOptions);\n\t\tif (shouldLog(resolvedLogContext, logOptions)) {\n\t\t\tconst {level} = logOptions;\n\t\t\tconst logger = console[level] || console.log; // eslint-disable-line no-console\n\t\t\tconst {componentName, logMessage} = resolvedLogContext;\n\t\t\tif (componentName) {\n\t\t\t\tif (componentName in tagNameCache && message in tagNameCache[componentName]) return;\n\n\t\t\t\ttagNameCache[componentName] = tagNameCache[componentName] || {};\n\t\t\t\ttagNameCache[componentName][message] = true;\n\t\t\t}\n\t\t\tlogger(logMessage);\n\t\t\tnotifyLogObservers(resolvedLogContext);\n\t\t}\n\t};\n}\n","import {toLower} from '@servicenow/ui-utils';\n\nexport default function getHostInfo(host) {\n\treturn {\n\t\ttagName: toLower(host.tagName),\n\t\tcomponentId: host.getAttribute('component-id')\n\t};\n}\n","import {memoize} from '@servicenow/ui-utils';\n\nexport default function memoizeProfiler(func, options = {}) {\n\tconst {createCacheKey, profileName} = options;\n\treturn memoize(func, createCacheKey || (arg1 => arg1), {profileName});\n}\n","const x = 2147483648;\nconst baseId =\n\tMath.floor(Math.random() * x).toString(36) +\n\tMath.abs(Math.floor(Math.random() * x) ^ Date.now()).toString(36);\n\nlet count = 0;\n\nconst getBaseId = () => globalThis?.nowUiFramework?.metrics?.uxfInteractionIdBase || baseId;\n\nexport default function createTransactionId() {\n\tcount = count + 1;\n\treturn `${getBaseId()}-${count}`;\n}\n","import {INTERACTION_ID} from './symbols';\nimport createInteractionId from './createInteractionId';\n\nexport default function applyInteractionId(meta) {\n\tif (!meta[INTERACTION_ID]) meta[INTERACTION_ID] = createInteractionId(); // eslint-disable-line no-param-reassign\n\n\treturn meta;\n}\n","import {LIB_NAME} from './constants';\nimport isObject from './isObject';\n\nexport default function validateMeta(meta, callerName) {\n\tif (process.env.NODE_ENV === 'development') {\n\t\tif (!isObject(meta))\n\t\t\tconsole.warn(`${LIB_NAME} ${callerName}() arguments[0] meta must be an object.`); // eslint-disable-line no-console\n\t}\n}\n","import {INTERACTION_ID} from './symbols';\nimport validateMeta from './validateMeta';\n\n/**\n * Retrieves the interactionId from an action\n * @function getInteractionId\n * @example\n * import {getInteractionId} from '@servicenow/ui-metrics';\n *\n * const captureClickEvent = (coeffects, target) => {\n * \t const {action, host} = coeffects;\n *\n *   mark(host, getInteractionId(action.meta), 'CLICK_EVENT', {eventTarget: target});\n * }\n *\n * @param {Object} meta - The meta data from the action object\n */\nexport default function getInteractionId(meta) {\n\tvalidateMeta(meta, 'getInteractionId');\n\treturn meta[INTERACTION_ID];\n}\n","import validateMeta from './validateMeta';\nimport {LIB_NAME} from './constants';\n\nexport default function validateSetInteractionIdArguments(meta, fnName, id) {\n\tvalidateMeta(meta, fnName);\n\tif (process.env.NODE_ENV === 'development') {\n\t\tif (typeof id !== 'string')\n\t\t\tconsole.warn(`${LIB_NAME} ${fnName}() arguments[1] interactionId must be a string.`); // eslint-disable-line no-console\n\t}\n}\n","import {INTERACTION_ID} from './symbols';\nimport validateSetInteractionIdArguments from './validateSetInteractionIdArguments';\n\nexport default function setInteractionId(meta, id) {\n\tvalidateSetInteractionIdArguments(meta, 'setInteractionId', id);\n\tmeta[INTERACTION_ID] = id; // eslint-disable-line no-param-reassign\n\treturn meta;\n}\n","import * as uiAnalyticsConsumer from '@servicenow/ui-analytics-consumer';\nconst {createTraceId, getConfigValue} = uiAnalyticsConsumer;\n\nfunction isTracingEnabled() {\n\treturn getConfigValue('enableTrace') === true;\n}\n\nexport default function createTransactionId() {\n\tif (!isTracingEnabled()) {\n\t\treturn null;\n\t}\n\treturn createTraceId();\n}\n","import * as uiAnalyticsConsumer from '@servicenow/ui-analytics-consumer';\nimport {levels} from './constants';\nconst {createHistogram} = uiAnalyticsConsumer;\nconst types = {};\nfor (const k in levels) {\n\ttypes[k] = {\n\t\tlevel: levels[k],\n\t\thistogram: createHistogram(k)\n\t};\n}\n\nexport default types;\n","import levels from './levels';\nimport * as uiAnalyticsConsumer from '@servicenow/ui-analytics-consumer';\nconst {createHistogram} = uiAnalyticsConsumer;\n\n/**\n * Defines a custom metric\n * @function defineMetric\n * @example\n * import {defineMetric} from '@servicenow/ui-metrics';\n *\n * export const initCustomMetrics = () => {\n *\t\tif (shouldPersistMetrics) {\n *\t\t\tsetInteractionId();\n *\t\t\twindow.addEventListener('unload', () => {\n *\t\t\t\tpersistMetrics();\n *\t\t\t});\n *\n *\t\t\tdefineMetric('NAVIGATE', 4);\n *\t\t\tpersistAtInterval(intervalDuration);\n *\t\t}\n * };\n *\n * @param {String} name\n * @param {Number} level\n */\nexport default function defineMetric(name, level = 0) {\n\tif (levels[name]) throw new Error(`@servicenow/ui-metrics ${name} is already a defined metric.`);\n\tif (!Number.isInteger(level) || level > 5 || level < 0)\n\t\tthrow new Error(`@servicenow/ui-metrics ${level} is not valid metric level.`);\n\n\tlevels[name] = {level, histogram: createHistogram(name)};\n}\n","import {SEISMIC_HOIST_TAG_NAME} from './constants';\n\nexport default function resolveContext(context) {\n\tconst isSeismicElement = context.nowId;\n\tif (!isSeismicElement) return context;\n\n\tconst resolvedHost = context.tagName === SEISMIC_HOIST_TAG_NAME ? context.sourceElement : context;\n\n\treturn {\n\t\tcomponentName: resolvedHost.tagName,\n\t\tcomponentId: resolvedHost.nowId,\n\t\tparentComponentId: resolvedHost.__DO_NOT_USE_OR_YOU_WILL_BE_FIRED_BY_YOUR_PARENT__,\n\t\tmetricTypes: resolvedHost.metricTypes,\n\t\tmetricsLevel: resolvedHost.metricsLevel,\n\t\tready: resolvedHost.__DO_NOT_USE_BOOTSTRAPPED__\n\t};\n}\n","export default new Set();\n","import augmenters from './augmenters';\n\nexport default function augment(obj) {\n\tif (!augmenters.size) return obj;\n\n\treturn [...augmenters].reduceRight((acc, val) => val(acc), obj);\n}\n","export default [];\n","import {types} from './constants';\n\nconst {GQL, HTTP, RENDER_START, UPDATE_PROPERTIES, DISPATCH, UPDATE_STATE} = types;\n\nlet totalGQL = 0;\nlet totalHTTP = 0;\nlet totalRenders = 0;\nlet totalPropChange = 0;\nlet totalDispatch = 0;\nlet totalStateUpdates = 0;\n\nexport const getCounters = () => ({\n\ttotalGQL,\n\ttotalHTTP,\n\ttotalRenders,\n\ttotalPropChange,\n\ttotalDispatch,\n\ttotalStateUpdates\n});\n\nexport const clearCounters = () => {\n\ttotalGQL = 0;\n\ttotalHTTP = 0;\n\ttotalRenders = 0;\n\ttotalPropChange = 0;\n\ttotalDispatch = 0;\n\ttotalStateUpdates = 0;\n};\n\nexport const increment = type => {\n\tswitch (type) {\n\t\tcase GQL:\n\t\t\ttotalGQL++;\n\t\t\tbreak;\n\t\tcase HTTP:\n\t\t\ttotalHTTP++;\n\t\t\tbreak;\n\t\tcase RENDER_START:\n\t\t\ttotalRenders++;\n\t\t\tbreak;\n\t\tcase UPDATE_PROPERTIES:\n\t\t\ttotalPropChange++;\n\t\t\tbreak;\n\t\tcase DISPATCH:\n\t\t\ttotalDispatch++;\n\t\t\tbreak;\n\t\tcase UPDATE_STATE:\n\t\t\ttotalStateUpdates++;\n\t\t\tbreak;\n\t}\n};\n","import levels from './levels';\nimport {getConfigItem, configConstants, observeConfigItem} from '@servicenow/ui-config';\n\nconst {METRICS_LEVEL, METRICS_TYPES, TELEMETRY_MARKING_ENABLED, METRICS_ELEMENT_CONFIG_ENABLED} =\n\tconfigConstants;\n\nlet globalMetricsLevel = parseInt(getConfigItem(METRICS_LEVEL));\nlet globalMetricsLevelIsInteger = Number.isInteger(globalMetricsLevel);\nlet globalMetricTypes = getConfigItem(METRICS_TYPES);\nlet globalIsTelemetryEnabled = getConfigItem(TELEMETRY_MARKING_ENABLED);\nlet globalElementMetricsConfigEnabled = getConfigItem(METRICS_ELEMENT_CONFIG_ENABLED);\n\nlet resolvedLevels = {};\nconst isMetricTypeValid = level => {\n\tif (resolvedLevels[level]) return true;\n\n\tconst isValid = Number.isInteger(level) && level >= 0 && level <= 5;\n\n\tif (isValid) resolvedLevels[level] = true;\n\n\treturn isValid;\n};\n\nconst observer = (path, value) => {\n\tresolvedLevels = {};\n\n\tswitch (path) {\n\t\tcase METRICS_LEVEL:\n\t\t\tglobalMetricsLevel = value;\n\t\t\tglobalMetricsLevelIsInteger = Number.isInteger(globalMetricsLevel);\n\t\t\tbreak;\n\t\tcase METRICS_TYPES:\n\t\t\tglobalMetricTypes = value;\n\t\t\tbreak;\n\t\tcase TELEMETRY_MARKING_ENABLED:\n\t\t\tglobalIsTelemetryEnabled = value;\n\t\t\tbreak;\n\t\tcase METRICS_ELEMENT_CONFIG_ENABLED:\n\t\t\tglobalElementMetricsConfigEnabled = value;\n\t\t\tbreak;\n\t}\n};\n\nobserveConfigItem(METRICS_LEVEL, observer);\nobserveConfigItem(METRICS_TYPES, observer);\nobserveConfigItem(TELEMETRY_MARKING_ENABLED, observer);\nobserveConfigItem(METRICS_ELEMENT_CONFIG_ENABLED, observer);\n\nexport default function shouldMark(context, metricType) {\n\tif (globalIsTelemetryEnabled === false) return false;\n\n\t// non-bootstrapped components don't have enough\n\t// data to send a valid mark\n\tif (!context.ready) return false;\n\n\tif (globalElementMetricsConfigEnabled && Array.isArray(context.nowMetricTypes))\n\t\treturn context.nowMetricTypes.includes(metricType);\n\n\tif (Array.isArray(globalMetricTypes)) return globalMetricTypes.includes(metricType);\n\n\tconst {level = -1} = levels[metricType] || {};\n\n\tif (!isMetricTypeValid(level)) return false;\n\n\tif (globalElementMetricsConfigEnabled && Number.isInteger(context.nowMetricsLevel))\n\t\treturn level >= context.nowMetricsLevel;\n\n\treturn globalMetricsLevelIsInteger && level >= globalMetricsLevel;\n}\n","export default new Set();\n","import isObject from './isObject';\nimport isElement from './isElement';\nimport {LIB_NAME} from './constants';\n\nexport default function validateMarkArguments(context, interactionId, event, options, type) {\n\tif (process.env.NODE_ENV === 'development') {\n\t\tif (!isObject(context) && !isElement(context))\n\t\t\tconsole.error(`${LIB_NAME} mark() arguments[0] context must be an object.`); // eslint-disable-line no-console\n\t\tif (typeof interactionId !== 'string')\n\t\t\tconsole.error(`${LIB_NAME} mark() arguments[1] interactionId must be a string.`); // eslint-disable-line no-console\n\t\tif (typeof event !== 'string')\n\t\t\tconsole.error(`${LIB_NAME} mark() arguments[2] event must be a string.`); // eslint-disable-line no-console\n\t\tif (!isObject(options))\n\t\t\tconsole.error(`${LIB_NAME} mark() arguments[3] options must be an object.`); // eslint-disable-line no-console\n\t\tif (typeof type !== 'string')\n\t\t\tconsole.error(`${LIB_NAME} mark() arguments[4] type must be a string.`); // eslint-disable-line no-console\n\t}\n}\n","import levels from './levels';\nimport resolveContext from './resolveContext';\nimport * as uiAnalyticsConsumer from '@servicenow/ui-analytics-consumer';\nimport augment from './augment';\nimport {getConfigItem, configConstants} from '@servicenow/ui-config';\nimport {defer, whenIdle} from '@servicenow/ui-utils';\nimport marks from './marks';\nimport {increment as incrementCount} from './counters';\nimport shouldMark from './shouldMark';\nimport {types} from './constants';\nimport observers from './observers';\nimport validateMarkArguments from './validateMarkArguments';\n\nconst {track} = uiAnalyticsConsumer;\nconst {\n\tMETRICS_OBSERVER_INTERVAL,\n\tMETRICS_USE_WINDOW_PERFORMANCE,\n\tMETRICS_MARK_PRUNING_INTERVAL,\n\tMETRICS_MARK_EXPIRATION,\n\tMETRICS_PRUNE_MARKS\n} = configConstants;\nlet timeoutId;\nconst latest = [];\nconst MARK_PRUNING_INTERVAL = getConfigItem(METRICS_MARK_PRUNING_INTERVAL);\nconst MARK_EXPIRATION = getConfigItem(METRICS_MARK_EXPIRATION);\nconst PRUNE_MARKS = getConfigItem(METRICS_PRUNE_MARKS);\n\nlet {performance} = window;\nif (!getConfigItem(METRICS_USE_WINDOW_PERFORMANCE)) {\n\ttry {\n\t\tperformance = window.top.performance; // eslint-disable-line prefer-destructuring\n\t} catch (e) {\n\t\t/* catch if !window.top */\n\t}\n}\n\nconst callObservers = () => {\n\tif (observers.size) {\n\t\tclearTimeout(timeoutId);\n\t\ttimeoutId = defer(() => {\n\t\t\twhenIdle(() => {\n\t\t\t\tconst latestSlice = latest.splice(0);\n\t\t\t\tif (latestSlice.length) observers.forEach(observer => observer([...latestSlice]));\n\t\t\t});\n\t\t}, getConfigItem(METRICS_OBSERVER_INTERVAL));\n\t}\n};\n\nconst unresolvedResourceMarks = [];\n\nconst isMatch = (mark, resource) => {\n\tif (isMarkBatchedRequest(mark) && isResourceBatchApi(resource)) return true;\n\n\tif (resource.name.includes(mark?.options?.path)) return true;\n\n\treturn false;\n};\n\nconst isResourceBatchApi = resource => resource.name.includes('/api/now/v1/batch');\nconst isMarkBatchedRequest = mark => mark?.options?.batch;\n\n// not currently supported in component unit testing environment\nif (window.PerformanceObserver) {\n\tconst observer = new PerformanceObserver(list => {\n\t\tconst resources = list.getEntries().sort((a, b) => {\n\t\t\tif (a.startTime < b.startTime) return -1;\n\t\t\tif (a.startTime > b.startTime) return 1;\n\n\t\t\treturn 0;\n\t\t});\n\n\t\tfor (let m = 0; m < unresolvedResourceMarks.length; m++) {\n\t\t\tconst mark = unresolvedResourceMarks[m];\n\n\t\t\tfor (let e = 0; e < resources.length; e++) {\n\t\t\t\tconst resource = resources[e];\n\n\t\t\t\tif (resource.startTime > mark.markTime && isMatch(mark, resource)) {\n\t\t\t\t\tmark.options.resource = resource.toJSON();\n\t\t\t\t\tunresolvedResourceMarks.splice(m, 1);\n\t\t\t\t\tm -= 1;\n\t\t\t\t\tlatest.push(mark);\n\t\t\t\t\tcallObservers();\n\t\t\t\t\tif (!isMarkBatchedRequest(mark)) resources.splice(e, 1);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tobserver.observe({\n\t\tentryTypes: ['resource']\n\t});\n}\n\nif (PRUNE_MARKS && MARK_PRUNING_INTERVAL > 0) {\n\tsetInterval(() => {\n\t\tconst now = performance.now();\n\n\t\tfor (let i = 0; i < unresolvedResourceMarks.length; i++) {\n\t\t\tif (now - unresolvedResourceMarks[i].markTime >= MARK_EXPIRATION) {\n\t\t\t\tif (process.env.NODE_ENV !== 'production') {\n\t\t\t\t\tconst count = unresolvedResourceMarks.length - i;\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`@servicenow/ui-metrics Pruning ${count} unresolved resource mark${\n\t\t\t\t\t\t\tcount > 1 ? 's' : ''\n\t\t\t\t\t\t}.`\n\t\t\t\t\t); // eslint-disable-line no-console\n\t\t\t\t}\n\t\t\t\tunresolvedResourceMarks.splice(i);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tfor (let i = 0; i < marks.length; i++) {\n\t\t\tif (now - marks[i].markTime >= MARK_EXPIRATION) {\n\t\t\t\tif (process.env.NODE_ENV !== 'production') {\n\t\t\t\t\tconst count = marks.length - i;\n\t\t\t\t\tconsole.info(\n\t\t\t\t\t\t`@servicenow/ui-metrics Pruning ${marks.length - i} expired mark${\n\t\t\t\t\t\t\tcount > 1 ? 's' : ''\n\t\t\t\t\t\t}.`\n\t\t\t\t\t); // eslint-disable-line no-console\n\t\t\t\t}\n\t\t\t\tmarks.splice(i);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}, MARK_PRUNING_INTERVAL);\n}\n\n/**\n * Marks a Seismic friendly performance marker\n * @function mark\n * @example\n * import {mark} from '@servicenow/ui-metrics';\n *\n * actionHandlers: {\n * \t\t[COMPONENT_TREE_RENDERED]({host, action: {meta}}) {\n *\t\t\tif (hasFetched && !loading && !interactive) {\n *\n * \t\t\t\t// Mark a custom defined metric and flip interactive\n * \t\t\t\t// Initial interactive state is false\n *\t\t\t\tmark(host, getInteractionId(meta), metrics.HERO_INTERACTIVE);\n *\t\t\t\tupdateState({\n *\t\t\t\t\tshouldRender: false,\n *\t\t\t\t\tpath: 'interactive',\n *\t\t\t\t\tvalue: true,\n *\t\t\t\t\toperation: 'set'\n *\t\t\t\t});\n *\t\t\t}\n *\t\t}\n * }\n *\n * @param {Object} context - (Optional) Context object to attach mark to\n * @param {String} interactionId - The id of the action that trigger the mark. Helps track client transactions during the interaction\n * @param {String} event - The metric type you are marking (custom metrics must be defined first).\n * @param {Object} options - (Optional) Typically this is the label or type of the mark.  Labels should be `:` delimited.\n * @param {String} type - (Optional) The category of metric.  Defaults to `performance`.  Other common options are `usage` || `both`.\n */\nexport default function mark(\n\tcontext = {},\n\tinteractionId,\n\tevent,\n\toptions = {},\n\ttype = 'performance'\n) {\n\tconst resolvedContext = resolveContext(context);\n\tconst {componentName, componentId, parentComponentId} = resolvedContext;\n\tincrementCount(event, {componentName, componentId, parentComponentId});\n\tif (!shouldMark(resolvedContext, event)) return;\n\n\tvalidateMarkArguments(resolvedContext, interactionId, event, options, type);\n\tconst mark = {\n\t\tcomponentName,\n\t\tcomponentId,\n\t\tparentComponentId,\n\t\tmarkTime: performance.now(),\n\t\tinteractionId,\n\t\tevent,\n\t\toptions,\n\t\ttype\n\t};\n\tconst augmentedMark = augment(mark);\n\n\tif (event === types.HTTP || event === types.GQL) {\n\t\tunresolvedResourceMarks.push(augmentedMark);\n\t\taugmentedMark.options.resource = {\n\t\t\tunresolved: true\n\t\t};\n\t}\n\n\tif (type === 'performance' || type === 'all') {\n\t\tconst {histogram} = levels[event];\n\t\thistogram(event?.value || event, augmentedMark);\n\t}\n\tif (type === 'usage' || type === 'all') {\n\t\ttrack(event, {attributes: augmentedMark});\n\t}\n\n\tmarks.push(augmentedMark);\n\n\tif (observers.size && !augmentedMark?.options?.resource?.unresolved) {\n\t\tlatest.push(augmentedMark);\n\t\tcallObservers();\n\t}\n}\n","import marks from './marks';\n\nexport default function getMarks() {\n\treturn [...marks];\n}\n","import marks from './marks';\n\nexport default function clearMarks() {\n\tmarks.length = 0;\n}\n","import observers from './observers';\n\nexport default function observe(observer) {\n\tobservers.add(observer);\n\treturn () => observers.delete(observer);\n}\n","import levels from './levels';\n\nconst getMetricTypes = () => ({...levels});\n\nexport default getMetricTypes;\n","import augmenters from './augmenters';\n\nexport default function addMarkAugmenter(augmenter) {\n\tif (typeof augmenter !== 'function') return () => {};\n\n\taugmenters.add(augmenter);\n\treturn () => augmenters.delete(augmenter);\n}\n","import {timingMetricTypes, timings} from './constants';\nimport {clearDeferMetrics, getDeferMetrics, logDuration} from '@servicenow/ui-utils';\nimport {isPerfMetricsEnabled} from './metrics';\n\nlet debounceMetrics = {};\n//Have to do this to avoid circular dependency between utils and metrics packages\nlet deferMetrics = getDeferMetrics();\n\nexport const clearTimingMetrics = () => {\n\tdebounceMetrics = {};\n\tclearDeferMetrics();\n\tdeferMetrics = getDeferMetrics();\n};\n\nexport const logTimingMetrics = (type, duration = 0, componentName) => {\n\tif (!isPerfMetricsEnabled()) return;\n\tswitch (type) {\n\t\tcase timingMetricTypes.DEFER:\n\t\t\tlogDuration(deferMetrics, duration, componentName);\n\t\t\tbreak;\n\t\tcase timingMetricTypes.DEBOUNCE:\n\t\t\tlogDuration(debounceMetrics, duration, componentName);\n\t\t\tbreak;\n\t}\n};\n\nexport function getCountersHistogram() {\n\treturn {\n\t\t[timingMetricTypes.DEFER]: getHistogram(deferMetrics),\n\t\t[timingMetricTypes.DEBOUNCE]: getHistogram(debounceMetrics)\n\t};\n}\n\nfunction getHistogram(metrics) {\n\tconst histogram = {\n\t\t[timings.LOWER_BOUNDARY]: {},\n\t\t[timings.MIDDLE]: {},\n\t\t[timings.UPPER_BOUNDARY]: {}\n\t};\n\tObject.keys(metrics).forEach(componentName => {\n\t\tconst delayTimeArray = metrics[componentName] || [];\n\t\tdelayTimeArray.forEach(delayTime => {\n\t\t\tif (delayTime <= 50) {\n\t\t\t\thistogram[timings.LOWER_BOUNDARY][componentName] =\n\t\t\t\t\t(histogram[timings.LOWER_BOUNDARY][componentName]\n\t\t\t\t\t\t? histogram[timings.LOWER_BOUNDARY][componentName]\n\t\t\t\t\t\t: 0) + 1;\n\t\t\t} else if (delayTime > 100) {\n\t\t\t\thistogram[timings.UPPER_BOUNDARY][componentName] =\n\t\t\t\t\t(histogram[timings.UPPER_BOUNDARY][componentName]\n\t\t\t\t\t\t? histogram[timings.UPPER_BOUNDARY][componentName]\n\t\t\t\t\t\t: 0) + 1;\n\t\t\t} else {\n\t\t\t\thistogram[timings.MIDDLE][componentName] =\n\t\t\t\t\t(histogram[timings.MIDDLE][componentName]\n\t\t\t\t\t\t? histogram[timings.MIDDLE][componentName]\n\t\t\t\t\t\t: 0) + 1;\n\t\t\t}\n\t\t});\n\t});\n\treturn histogram;\n}\n","import {getCountersHistogram, clearTimingMetrics} from './timingMetrics';\n\nlet perfMetricsEnabled = false;\n\nexport const collectMetrics = (options = {}) => {\n\tconst {shouldClear = false, shouldDisable = false} = options;\n\n\t// Disable metric collection if needed\n\tif (shouldDisable) perfMetricsEnabled = false;\n\n\t// Collect metrics\n\tconst counters = getCounters();\n\n\t// Clear metric collection objects if needed\n\tif (shouldClear) clearPerfMetrics();\n\treturn {counters};\n};\n\nconst getCounters = () => {\n\treturn getCountersHistogram();\n};\n\nexport const enable = () => {\n\tperfMetricsEnabled = true;\n};\n\nexport const isPerfMetricsEnabled = () => {\n\treturn perfMetricsEnabled;\n};\n\nexport const clearPerfMetrics = () => {\n\tclearTimingMetrics();\n};\n","import {applyInteractionId, mark, types as metrics, getInteractionId} from '@servicenow/ui-metrics';\nimport {errorTypes, locations, NOW_ID_PROP} from './constants';\nimport {allLogTypes as logTypes} from './logHandler';\nimport {findKey} from '@servicenow/ui-utils';\nconst notifiedHosts = new Set();\n\n/**\n * Wrap the execution of code with a try catch and dispatch the error\n * @function sandbox\n * @private\n * @example\n * import {sandbox, errorTypes, locations} from '@servicenow/ui-internal'\n *\n * sandbox(\n *   onChange,\n *   {\n *     args: [value, previousValue, dispatch],\n *     dispatch,\n *     host,\n *     location: locations.LIFECYCLE,\n *     details: {name: 'onChange', propertyName},\n *     errorType: errorTypes.COMPONENT_ERROR_THROWN\n *   }\n * )\n *\n * @param {Function} fn - arbitrary function to execute\n * @param {Object} options - The sandbox options\n * @param {Array} [options.args] - Arguments to pass into the fn.\n * @param {Object} [options.dispatch] - Dispatch function, required.\n * @param {string} [options.location] - Enum of acceptable locations, import {locations} from '@servicenow/ui-internal', required.\n * @param {Object} [options.host] - The host most closely related to the executing code.\n * @param {Object} [options.details] - Object to store arbitrary data\n * @param {string} [options.errorType] - Type of action to dispatch on error caught. Default is COMPONENT_ERROR_THROWN\n * @param {Object} [options.metadata] - Metadata to be passed to the dispatch function\n * @param {function} [options.log] - Logger to log the error\n * @returns {any} Value returned from the function\n */\nfunction sandbox(fn, options = {}) {\n\tconst {args = []} = options;\n\ttry {\n\t\tconst value = fn(...args);\n\t\treturn value;\n\t} catch (error) {\n\t\tnotify(error, options);\n\t}\n}\n\nexport function notify(\n\terror,\n\t{\n\t\tdispatch,\n\t\thost,\n\t\tlocation,\n\t\tdetails = {},\n\t\terrorType = errorTypes.COMPONENT_ERROR_THROWN,\n\t\tmetadata = {},\n\t\tlog\n\t}\n) {\n\tconst tagName = host.tagName && host.tagName.toLowerCase();\n\tconst componentId = host[NOW_ID_PROP];\n\tconst errorActionType = findKey(errorTypes, val => val === errorType);\n\tapplyInteractionId(metadata);\n\tconst interactionId = getInteractionId(metadata);\n\tmark(host, interactionId, metrics.ERROR, {location});\n\n\t// This if statement prevents a recursive loop when an error is thrown within the COMPONENT_ERROR_THROWN effect\n\tif (!isRecursive({location, details})) {\n\t\tconst hostIdentifier = [\n\t\t\ttagName,\n\t\t\tcomponentId,\n\t\t\terrorType,\n\t\t\tlocation,\n\t\t\tObject.keys(details).length > 10\n\t\t\t\t? Object.keys(details).length\n\t\t\t\t: Object.entries(details).flat()\n\t\t]\n\t\t\t.filter(Boolean)\n\t\t\t.join('-');\n\t\tif (!notifiedHosts.has(hostIdentifier)) {\n\t\t\tnotifiedHosts.add(hostIdentifier);\n\t\t\tdispatch(errorType, {host, location, details, error}, {internal: true, ...metadata}, true);\n\t\t\tsetTimeout(() => notifiedHosts.delete(hostIdentifier), 0); // Clean notifiedHosts after the next tick\n\t\t}\n\t}\n\n\tif (log) {\n\t\tlog(\n\t\t\t`An Error occured in <${tagName} component-id=\"${componentId}\"/>. ${errorActionType} action type is dispatched with error details.`,\n\t\t\t{error, level: logTypes.ERROR, host, origin: 'sandbox'}\n\t\t);\n\t}\n}\n\n// Note: Ideally we would want to remove this as we already have more generic check\n// using hostIdentifier & notifiedHosts to prevent recursive calls.\n//TODO: Revisit this function and remove if not needed\nfunction isRecursive({location, details}) {\n\tif (location === locations.EFFECT && details.actionType === errorTypes.COMPONENT_ERROR_THROWN)\n\t\treturn true;\n\n\treturn false;\n}\n\nexport default sandbox;\n","const x = 2147483648;\nconst baseId =\n\tMath.floor(Math.random() * x).toString(36) +\n\tMath.abs(Math.floor(Math.random() * x) ^ Date.now()).toString(36);\n\nlet count = 0;\nexport default function guid() {\n\tcount = count + 1;\n\treturn `${baseId}-${count}`;\n}\n","import callAsync from './callAsync';\n\n/**\n * Creates a react-like ref that prohibits access to the actual element.\n */\nexport default function createAriaRef() {\n\tconst subscriptionMap = new Map();\n\tconst childAriaRefToPath = new WeakMap();\n\tlet __current;\n\tlet __parent;\n\n\tconst ref = {\n\t\tisAriaRef: true,\n\t\tsetCurrent(value) {\n\t\t\t__current = value;\n\t\t\tcallAsync(() => {\n\t\t\t\tsubscriptionMap.forEach(attributeToCallback => {\n\t\t\t\t\tfor (const attribute in attributeToCallback) attributeToCallback[attribute](this);\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tsetParentAriaRef(parentAriaRef) {\n\t\t\t__parent = parentAriaRef;\n\t\t},\n\t\tgetParentAriaRef() {\n\t\t\treturn __parent;\n\t\t},\n\t\tisSet() {\n\t\t\treturn !!__current;\n\t\t},\n\t\tsetId(id) {\n\t\t\t__current.id = id;\n\t\t},\n\t\tgetAttribute(name) {\n\t\t\treturn __current.getAttribute(name);\n\t\t},\n\t\tgetRootNode() {\n\t\t\treturn __current.getRootNode();\n\t\t},\n\t\tcloneNode(deep) {\n\t\t\treturn __current.cloneNode(deep);\n\t\t},\n\t\tsetChildQuerySelector(childAriaRef, path) {\n\t\t\tchildAriaRefToPath.set(childAriaRef, path);\n\t\t},\n\t\tgetChildQuerySelector(childAriaRef) {\n\t\t\treturn childAriaRefToPath.get(childAriaRef);\n\t\t},\n\t\tcontains(node) {\n\t\t\tif (__current) return __current.contains(node);\n\n\t\t\treturn false;\n\t\t},\n\t\tsubscribe({element, attribute}, cb) {\n\t\t\tlet attributeToCallback = subscriptionMap.get(element);\n\t\t\tif (attributeToCallback) {\n\t\t\t\tconst oldCb = attributeToCallback[attribute];\n\t\t\t\tif (oldCb) oldCb(null);\n\t\t\t} else {\n\t\t\t\tattributeToCallback = {};\n\t\t\t\tsubscriptionMap.set(element, attributeToCallback);\n\t\t\t}\n\n\t\t\tattributeToCallback[attribute] = cb;\n\t\t\tcb(this);\n\t\t},\n\t\tunsubscribe({element, attribute}) {\n\t\t\tconst attributeToCallback = subscriptionMap.get(element);\n\t\t\tif (attributeToCallback) {\n\t\t\t\tconst cb = attributeToCallback[attribute];\n\n\t\t\t\tif (cb) cb(null);\n\n\t\t\t\tdelete attributeToCallback[attribute];\n\t\t\t\tif (Object.keys(attributeToCallback).length === 0) subscriptionMap.delete(element);\n\t\t\t}\n\t\t}\n\t};\n\n\tObject.seal(ref);\n\n\treturn ref;\n}\n","import {CREATE_REF_SYMBOL} from '../constants';\n\nexport default function isRef(ref) {\n\treturn ref && ref[CREATE_REF_SYMBOL] ? true : false;\n}\n","import {\n\tCREATE_REF_SYMBOL,\n\tCREATE_REF_SUBSCRIBE_SYMBOL,\n\tCREATE_REF_COMP_PROPS_SUBSCRIPTIONS_SYMBOL\n} from '../constants';\n/**\n * Creates a react-like ref.\n * @method createRef\n * @returns {{current: null}}\n */\nexport default function createRef() {\n\tlet current = null;\n\tconst subscriptions = new Map();\n\tconst ref = {\n\t\t[CREATE_REF_SYMBOL]: true,\n\t\tset current(val) {\n\t\t\tif (current !== val) {\n\t\t\t\tcurrent = val;\n\t\t\t\tfor (const [component, props] of subscriptions) {\n\t\t\t\t\tfor (const name of props) component[name] = val;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tget current() {\n\t\t\treturn current;\n\t\t},\n\t\t[CREATE_REF_SUBSCRIBE_SYMBOL](component, propertyName) {\n\t\t\tsubscriptions.set(component, (subscriptions.get(component) || new Set()).add(propertyName));\n\t\t\treturn () => {\n\t\t\t\tconst propList = subscriptions.get(component);\n\t\t\t\tpropList?.delete(propertyName);\n\t\t\t\tpropList?.size === 0 && subscriptions.delete(component);\n\t\t\t};\n\t\t},\n\t\t[CREATE_REF_COMP_PROPS_SUBSCRIPTIONS_SYMBOL](component) {\n\t\t\tconst compSubscriptions = subscriptions.get(component);\n\t\t\treturn compSubscriptions ? [...compSubscriptions] : [];\n\t\t}\n\t};\n\tObject.seal(ref);\n\treturn ref;\n}\n","import {CREATE_REF_SUBSCRIBE_SYMBOL} from '../constants';\n\nexport default function subscribeToRef(ref, component, propertyName) {\n\treturn ref && ref[CREATE_REF_SUBSCRIBE_SYMBOL](component, propertyName);\n}\n","const registry = new WeakMap();\nconst networkActionsEmptyForElCallbacks = [];\nlet globalCount = 0;\n\nexport function getPendingNetworkActionCount() {\n\treturn globalCount;\n}\n\nexport function pendingNetworkActionCountForHost(host) {\n\treturn registry.has(host) ? registry.get(host).size : 0;\n}\n\nexport function addPendingNetworkActionForHost(pendingNetworkAction, host) {\n\tif (!registry.has(host)) registry.set(host, new Set());\n\tregistry.get(host).add(pendingNetworkAction);\n\tglobalCount++;\n}\n\nexport function removePendingNetworkActionForHost(pendingNetworkAction, host) {\n\tif (!registry.has(host)) return;\n\tif (!registry.get(host).delete(pendingNetworkAction)) return;\n\tglobalCount--;\n\tconst len = networkActionsEmptyForElCallbacks.length;\n\tfor (let i = 0; i < len; i++) networkActionsEmptyForElCallbacks[i](host);\n}\n\nexport function clearPendingNetworkActionsForHost(host) {\n\tif (!registry.has(host)) return;\n\tconst networkActions = registry.get(host);\n\tglobalCount -= networkActions.size;\n\tnetworkActions.clear();\n}\n\nexport function addPendingNetworkActionForHostCb(fn) {\n\tnetworkActionsEmptyForElCallbacks.push(fn);\n}\n\nexport function getHostPendingNetworkActionCount(host) {\n\treturn (registry.has(host) && registry.get(host).size) || 0;\n}\n","import {SPAN_KIND_CLIENT, SPAN_LEVEL_FINE} from './constants';\n\nexport default function getSpanOptions(host, level = SPAN_LEVEL_FINE) {\n\treturn {\n\t\tattributes: {\n\t\t\ttagName: host.tagName?.toLowerCase(),\n\t\t\tcomponentId: host.nowId,\n\t\t\t'seismic.level': level,\n\t\t\tkind: SPAN_KIND_CLIENT\n\t\t}\n\t};\n}\n","import {PACKAGE_JSON_VERSION} from './constants';\n\nlet componentRegistry = {};\nconst stats = {\n\tconstructedByTagName: {},\n\tdefinedTagNames: [],\n\tdeferredByTagName: {}\n};\n\nexport const defineRegistry = registry => {\n\tcomponentRegistry = registry;\n\tstats.constructedByTagName = {};\n\tstats.definedTagNames = [];\n\tstats.deferredByTagName = {};\n};\n\nexport const get = () => {\n\tconst countByTagName = {};\n\tfor (const k in componentRegistry) {\n\t\tconst tagName = componentRegistry[k].tagName.toLowerCase();\n\t\tif (!countByTagName[tagName]) countByTagName[tagName] = 0;\n\n\t\tcountByTagName[tagName]++; // eslint-disable-line no-plusplus\n\t}\n\n\tlet totalConstructed = 0;\n\tfor (const k in stats.constructedByTagName) {\n\t\ttotalConstructed += stats.constructedByTagName[k];\n\t}\n\n\tconst unusedTagNames = [];\n\tfor (let i = 0; i < stats.definedTagNames.length; i++) {\n\t\tconst tagName = stats.definedTagNames[i];\n\t\tif (!stats.constructedByTagName[tagName]) {\n\t\t\tunusedTagNames.push(tagName);\n\t\t}\n\t}\n\n\treturn {\n\t\tversion: PACKAGE_JSON_VERSION,\n\t\tdefinitions: {\n\t\t\ttotal: stats.definedTagNames.length,\n\t\t\tunusedTagNames,\n\t\t\ttagNames: [...stats.definedTagNames]\n\t\t},\n\t\tconstructed: {\n\t\t\ttotal: totalConstructed,\n\t\t\tcountByTagName: stats.constructedByTagName\n\t\t},\n\t\tconnected: {\n\t\t\ttotal: Object.keys(componentRegistry).length,\n\t\t\tcountByTagName,\n\t\t\tdeferredByTagName: stats.deferredByTagName,\n\t\t\tnodes: {...componentRegistry}\n\t\t}\n\t};\n};\n\nexport const set = (statName, tagName) => {\n\tswitch (statName) {\n\t\tcase 'constructed':\n\t\t\tstats.constructedByTagName[tagName] = stats.constructedByTagName[tagName] || 0;\n\t\t\tstats.constructedByTagName[tagName]++; // eslint-disable-line no-plusplus\n\t\t\tbreak;\n\t\tcase 'defined':\n\t\t\tstats.definedTagNames.push(tagName);\n\t\t\tbreak;\n\t\tcase 'defer':\n\t\t\tstats.deferredByTagName[tagName] = stats.deferredByTagName[tagName] || 0;\n\t\t\tstats.deferredByTagName[tagName]++; // eslint-disable-line no-plusplus\n\t\t\tbreak;\n\t\tcase 'undefer':\n\t\t\tstats.deferredByTagName[tagName] = stats.deferredByTagName[tagName] || 0;\n\t\t\tif (stats.deferredByTagName[tagName]) stats.deferredByTagName[tagName]--; // eslint-disable-line no-plusplus\n\t\t\tbreak;\n\t}\n};\n","import {SPAN_ATTR_TASK_DEDUPED} from '../constants';\n\n/**\n * Maintains task insert order but (when dedupe==true) will skip earlier tasks\n * if there's another task for the same element enqueued later\n */\nexport default class Queue {\n\tconstructor(dedupe, doNotDedup = [], whenQueueIsEmptyForElementCb) {\n\t\tthis._els = new WeakMap();\n\t\tthis._tasks = [];\n\t\tthis._dedupe = dedupe;\n\t\tthis._doNotDedup = doNotDedup;\n\t\tthis._whenQueueIsEmptyForElementCb = whenQueueIsEmptyForElementCb;\n\t}\n\n\tpush(task) {\n\t\tconst {el} = task.meta;\n\t\tthis._els.set(el, this.sizeForElement(el) + 1);\n\t\tthis._tasks.push(task);\n\t}\n\n\t// this value may be a little misleading because it doesn't account for\n\t// possible task duplicates\n\tget length() {\n\t\treturn this._tasks.length;\n\t}\n\n\tsizeForElement(el) {\n\t\treturn this._els.get(el) || 0;\n\t}\n\n\tshift() {\n\t\twhile (this._tasks.length) {\n\t\t\tconst task = this._tasks.shift();\n\t\t\tconst {el} = task.meta;\n\t\t\tconst existingCount = this._els.get(el);\n\t\t\tif (existingCount === 1) {\n\t\t\t\tthis._els.delete(el);\n\t\t\t\tif (this._whenQueueIsEmptyForElementCb) this._whenQueueIsEmptyForElementCb(el);\n\t\t\t} else {\n\t\t\t\tthis._els.set(el, existingCount - 1);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\texistingCount === 1 ||\n\t\t\t\t!this._dedupe ||\n\t\t\t\tthis._doNotDedup.indexOf(task.type) !== -1 ||\n\t\t\t\t!el.isConnected\n\t\t\t)\n\t\t\t\treturn task;\n\t\t\telse {\n\t\t\t\tif (task.meta?.span) {\n\t\t\t\t\ttask.meta.span.addEvent(SPAN_ATTR_TASK_DEDUPED, {\n\t\t\t\t\t\ttype: task.type,\n\t\t\t\t\t\tqueueSize: this._tasks.length\n\t\t\t\t\t});\n\t\t\t\t\ttask.meta.span.end();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import {mark} from '@servicenow/ui-metrics';\n\nexport default function metrics(meta, type, taskType, priority, queue) {\n\tconst {interactionId, el} = meta;\n\tmark(el, interactionId, type, {type: taskType, priority, queueLength: queue.length});\n}\n","import {defer, requestIdleCallbackPollyfill, raf, isThrottled} from '@servicenow/ui-internal';\nimport {getConfigItem, configConstants} from '@servicenow/ui-config';\nimport {types as schedulerTypes} from '@servicenow/ui-metrics';\nimport Queue from './queue';\nimport metrics from './metrics';\nimport {\n\tSPAN_ATTR_TASK_COMPLETED,\n\tSPAN_ATTR_TASK_SCHEDULED,\n\tSPAN_ATTR_TASK_STARTED\n} from '../constants';\n\nconst {ENABLE_SCHEDULER_STATS, SCHEDULER_RAF_TIMEOUT} = configConstants;\nconst enableSchedulerStats = getConfigItem(ENABLE_SCHEDULER_STATS);\nconst COMPONENT_RENDER = 'COMPONENT_RENDER';\nconst STATE_SET = 'STATE_SET';\nconst ACTION_HANDLER = 'ACTION_HANDLER';\nconst LEGACY_LIFECYCLE_FN = 'LEGACY_LIFECYCLE_FN';\nconst IMMEDIATE = 'IMMEDIATE';\nconst DEFER_IDLE = 'DEFER_IDLE';\nconst REFLECT_PROPERTIES = 'REFLECT_PROPERTIES';\nconst DISPATCH = 'DISPATCH';\nconst CLEANUP = 'CLEANUP';\nconst PROPERTY_SET = 'PROPERTY_SET';\nconst DEFER_HELPER_EXECUTION = 'DEFER_HELPER_EXECUTION';\nconst WHEN_COMPONENT_IS_IDLE = 'WHEN_COMPONENT_IS_IDLE';\nconst WHEN_ALL_COMPONENTS_IDLE = 'WHEN_ALL_COMPONENTS_IDLE';\nconst constants = {\n\tCOMPONENT_RENDER,\n\tSTATE_SET,\n\tACTION_HANDLER,\n\tLEGACY_LIFECYCLE_FN,\n\tIMMEDIATE,\n\tDEFER_IDLE,\n\tREFLECT_PROPERTIES,\n\tDISPATCH,\n\tCLEANUP,\n\tPROPERTY_SET,\n\tDEFER_HELPER_EXECUTION,\n\tWHEN_COMPONENT_IS_IDLE,\n\tWHEN_ALL_COMPONENTS_IDLE\n};\n\nconst P0 = 'PRIORITY_0';\nconst P0_5 = 'PRIORITY_0_5';\nconst P1 = 'PRIORITY_1';\nconst P2 = 'PRIORITY_2';\nconst P3 = 'PRIORITY_3';\nconst p0_5Queue = new Queue(false, []);\nconst p1Queue = new Queue(true, [], whenQueueIsEmptyForElement);\nconst p2Queue = new Queue(false, [], whenQueueIsEmptyForElement);\nconst p3Queue = new Queue(true, [WHEN_COMPONENT_IS_IDLE, WHEN_ALL_COMPONENTS_IDLE]);\nconst queueEmptyForElCallbacks = [];\nlet stats = {};\n\nconst types = {\n\t[IMMEDIATE]: {priority: P0},\n\t[DEFER_HELPER_EXECUTION]: {priority: P0_5},\n\t[COMPONENT_RENDER]: {priority: P1},\n\t[STATE_SET]: {priority: P2},\n\t[PROPERTY_SET]: {priority: P2},\n\t[ACTION_HANDLER]: {priority: P2},\n\t[LEGACY_LIFECYCLE_FN]: {priority: P2},\n\t[DISPATCH]: {priority: P2},\n\t[DEFER_IDLE]: {priority: P3},\n\t[REFLECT_PROPERTIES]: {priority: P3},\n\t[WHEN_COMPONENT_IS_IDLE]: {priority: P3},\n\t[WHEN_ALL_COMPONENTS_IDLE]: {priority: P3}\n};\n\nconst idleTimeout = process.env.UNSAFE_SEISMIC_TASK_TIMEOUT ? 100 : -1;\n\nlet highPriorityPending = false;\nlet mediumPriorityPending = false;\nlet lowPriorityPending = false;\n\nconst getSchedulerStats = () =>\n\tObject.entries(stats)\n\t\t.sort(([priority1], [priority2]) => priority1.localeCompare(priority2))\n\t\t.map(\n\t\t\t([\n\t\t\t\tpriority,\n\t\t\t\t{\n\t\t\t\t\tmaxQueueDepth,\n\t\t\t\t\ttotalQueued,\n\t\t\t\t\ttotalQueueTime,\n\t\t\t\t\tmaxQueueTime,\n\t\t\t\t\ttotalExecutions,\n\t\t\t\t\ttotalExecutionTime,\n\t\t\t\t\tmaxExecutionTime\n\t\t\t\t}\n\t\t\t]) => ({\n\t\t\t\tpriority,\n\t\t\t\tinQueue: {\n\t\t\t\t\t[P0]: 0,\n\t\t\t\t\t[P0_5]: p0_5Queue.length,\n\t\t\t\t\t[P1]: p1Queue.length,\n\t\t\t\t\t[P2]: p2Queue.length,\n\t\t\t\t\t[P3]: p3Queue.length\n\t\t\t\t}[priority],\n\t\t\t\tmaxQueueDepth,\n\t\t\t\ttotalQueued,\n\t\t\t\taverageQueueTime: totalQueueTime / totalQueued,\n\t\t\t\tmaxQueueTime,\n\t\t\t\ttotalExecutions,\n\t\t\t\taverageExecutionTime: totalExecutionTime / totalExecutions,\n\t\t\t\tmaxExecutionTime\n\t\t\t})\n\t\t);\nconst resetSchedulerStats = () => {\n\tstats = {};\n};\nglobalThis.nowUiFramework = globalThis.nowUiFramework || {};\nglobalThis.nowUiFramework.__getSchedulerStats = getSchedulerStats;\nglobalThis.nowUiFramework.__resetSchedulerStats = resetSchedulerStats;\n\nconst getDefaultStats = () => ({\n\tmaxQueueDepth: 0,\n\ttotalQueued: 0,\n\ttotalQueueTime: 0,\n\tmaxQueueTime: 0,\n\ttotalExecutions: 0,\n\ttotalExecutionTime: 0,\n\tmaxExecutionTime: 0\n});\n\nconst trackTaskScheduled = (task, priority, queue) => {\n\tif (!enableSchedulerStats) return;\n\tstats[priority] = stats[priority] || getDefaultStats();\n\ttask.scheduled = performance.now();\n\tstats[priority].totalQueued++;\n\tconst queueSize = queue ? queue.length : 0;\n\tif (queueSize > stats[priority].maxQueueDepth) stats[priority].maxQueueDepth = queueSize;\n};\n\nconst trackTaskStart = (task, priority) => {\n\tif (!enableSchedulerStats) return;\n\tstats[priority] = stats[priority] || getDefaultStats();\n\ttask.started = performance.now();\n\tconst queueTime = task.started - task.scheduled;\n\tstats[priority].totalQueueTime += queueTime;\n\tif (queueTime > stats[priority].maxQueueTime) stats[priority].maxQueueTime = queueTime;\n};\n\nconst trackTaskCompleted = (task, priority) => {\n\tif (!enableSchedulerStats) return;\n\tstats[priority] = stats[priority] || getDefaultStats();\n\tconst executionTime = performance.now() - task.started;\n\tstats[priority].totalExecutionTime += executionTime;\n\tstats[priority].totalExecutions++;\n\tif (executionTime > stats[priority].maxExecutionTime)\n\t\tstats[priority].maxExecutionTime = executionTime;\n};\n\nfunction schedule(task) {\n\tconst {type, fn, meta = {}} = task;\n\tif (!fn) {\n\t\tconst error = new Error('a fn is required for scheduling a task');\n\t\tif (meta.span) {\n\t\t\tmeta.span.recordException(error);\n\t\t}\n\t\tthrow error;\n\t}\n\tif (!type) {\n\t\tconst error = new Error('a type is required for scheduling a task');\n\t\tif (meta.span) {\n\t\t\tmeta.span.recordException(error);\n\t\t}\n\t\tthrow error;\n\t}\n\n\tconst {\n\t\t[type]: {priority = P2}\n\t} = types;\n\n\tswitch (priority) {\n\t\tcase P0:\n\t\t\tmetrics(meta, schedulerTypes.SCHEDULE, type, 'P0', []);\n\t\t\tif (meta.span) {\n\t\t\t\tmeta.span.addEvent(SPAN_ATTR_TASK_SCHEDULED, {type, priority: 'P0', queueSize: 0});\n\t\t\t\tmeta.span.addEvent(SPAN_ATTR_TASK_STARTED, {type, priority: 'P0', queueSize: 0});\n\t\t\t}\n\t\t\ttrackTaskScheduled(task, P0);\n\t\t\ttrackTaskStart(task, priority);\n\t\t\tfn(meta);\n\t\t\tif (meta.span) {\n\t\t\t\tmeta.span.addEvent(SPAN_ATTR_TASK_COMPLETED, {\n\t\t\t\t\ttype,\n\t\t\t\t\tpriority: 'P0',\n\t\t\t\t\tqueueSize: 0\n\t\t\t\t});\n\t\t\t}\n\t\t\ttrackTaskCompleted(task, priority);\n\t\t\tbreak;\n\t\tcase P0_5:\n\t\t\tmetrics(meta, schedulerTypes.SCHEDULE, type, 'P0_5', p0_5Queue);\n\t\t\tif (meta.span) {\n\t\t\t\tmeta.span.addEvent(SPAN_ATTR_TASK_SCHEDULED, {\n\t\t\t\t\ttype,\n\t\t\t\t\tpriority: 'P0_5',\n\t\t\t\t\tqueueSize: p0_5Queue.length\n\t\t\t\t});\n\t\t\t}\n\t\t\tp0_5Queue.push(task);\n\t\t\ttrackTaskScheduled(task, priority, p0_5Queue);\n\t\t\trunDeferredTask();\n\t\t\tbreak;\n\t\tcase P1:\n\t\t\tmetrics(meta, schedulerTypes.SCHEDULE, type, 'P1', p1Queue);\n\t\t\tif (meta.span) {\n\t\t\t\tmeta.span.addEvent(SPAN_ATTR_TASK_SCHEDULED, {\n\t\t\t\t\ttype,\n\t\t\t\t\tpriority: 'P1',\n\t\t\t\t\tqueueSize: p1Queue.length\n\t\t\t\t});\n\t\t\t}\n\t\t\tp1Queue.push(task);\n\t\t\ttrackTaskScheduled(task, priority, p1Queue);\n\t\t\trunHighPriorityTasks();\n\t\t\tbreak;\n\t\tcase P2:\n\t\t\tmetrics(meta, schedulerTypes.SCHEDULE, type, 'P2', p2Queue);\n\t\t\tif (meta.span) {\n\t\t\t\tmeta.span.addEvent(SPAN_ATTR_TASK_SCHEDULED, {\n\t\t\t\t\ttype,\n\t\t\t\t\tpriority: 'P2',\n\t\t\t\t\tqueueSize: p2Queue.length\n\t\t\t\t});\n\t\t\t}\n\t\t\tp2Queue.push(task);\n\t\t\ttrackTaskScheduled(task, priority, p2Queue);\n\t\t\trunMediumPriorityTasks();\n\t\t\tbreak;\n\t\tcase P3:\n\t\t\tmetrics(meta, schedulerTypes.SCHEDULE, type, 'P3', p3Queue);\n\t\t\tif (meta.span) {\n\t\t\t\tmeta.span.addEvent(SPAN_ATTR_TASK_SCHEDULED, {\n\t\t\t\t\ttype,\n\t\t\t\t\tpriority: 'P3',\n\t\t\t\t\tqueueSize: p3Queue.length\n\t\t\t\t});\n\t\t\t}\n\t\t\tp3Queue.push(task);\n\t\t\ttrackTaskScheduled(task, priority, p3Queue);\n\t\t\trunLowPriorityTasks();\n\t\t\tbreak;\n\t}\n}\n\nlet isRendering = false;\nconst requestAnimationFrameTimeout = getConfigItem(SCHEDULER_RAF_TIMEOUT);\n\nfunction runDeferredTask() {\n\tdefer(() => {\n\t\tconst task = p0_5Queue.shift();\n\t\tif (task) {\n\t\t\tmetrics(task.meta, schedulerTypes.EXECUTE, task.type, 'P0_5', p0_5Queue);\n\t\t\ttrackTaskStart(task, P0_5);\n\t\t\tif (task.meta.span) {\n\t\t\t\ttask.meta.span.addEvent(SPAN_ATTR_TASK_STARTED, {\n\t\t\t\t\ttype: task.type,\n\t\t\t\t\tpriority: 'P0_5',\n\t\t\t\t\tqueueSize: p0_5Queue.length\n\t\t\t\t});\n\t\t\t}\n\t\t\ttask.fn(task.meta);\n\t\t\tif (task.meta.span) {\n\t\t\t\ttask.meta.span.addEvent(SPAN_ATTR_TASK_COMPLETED, {\n\t\t\t\t\ttype: task.type,\n\t\t\t\t\tpriority: 'P0_5',\n\t\t\t\t\tqueueSize: p0_5Queue.length\n\t\t\t\t});\n\t\t\t}\n\t\t\ttrackTaskCompleted(task, P0_5);\n\t\t}\n\t}, 0);\n}\n\nfunction runHighPriorityTasks() {\n\tif (highPriorityPending) return;\n\n\thighPriorityPending = true;\n\tisRendering = true;\n\tconst requestAnimationFrameTimeoutId = defer(() => {\n\t\tflushIdleQueues();\n\t\tisRendering = false;\n\t}, requestAnimationFrameTimeout);\n\traf(() => {\n\t\tclearTimeout(requestAnimationFrameTimeoutId);\n\t\tlet task;\n\t\tconst start = Date.now();\n\t\twhile ((task = p1Queue.shift())) {\n\t\t\tmetrics(task.meta, schedulerTypes.EXECUTE, task.type, 'P1', p1Queue);\n\t\t\ttrackTaskStart(task, P1);\n\t\t\tif (task.meta.span) {\n\t\t\t\ttask.meta.span.addEvent(SPAN_ATTR_TASK_STARTED, {\n\t\t\t\t\ttype: task.type,\n\t\t\t\t\tpriority: 'P1',\n\t\t\t\t\tqueueSize: p1Queue.length\n\t\t\t\t});\n\t\t\t}\n\t\t\ttask.fn(task.meta);\n\t\t\tif (task.meta.span) {\n\t\t\t\ttask.meta.span.addEvent(SPAN_ATTR_TASK_COMPLETED, {\n\t\t\t\t\ttype: task.type,\n\t\t\t\t\tpriority: 'P1',\n\t\t\t\t\tqueueSize: p1Queue.length\n\t\t\t\t});\n\t\t\t}\n\t\t\ttrackTaskCompleted(task, P1);\n\t\t\tif (Date.now() - start >= 100) break;\n\t\t}\n\n\t\tisRendering = false;\n\t\thighPriorityPending = false;\n\t\tif (p1Queue.length) runHighPriorityTasks();\n\n\t\tif (p2Queue.length) runMediumPriorityTasks();\n\n\t\tif (p3Queue.length) runLowPriorityTasks();\n\t});\n}\n\nfunction runMediumPriorityTasks() {\n\tif (mediumPriorityPending) return;\n\tif (isRendering) return;\n\n\tmediumPriorityPending = true;\n\trequestIdleCallbackPollyfill(\n\t\tdeadline => {\n\t\t\tmediumPriorityPending = false;\n\t\t\tlet task;\n\n\t\t\twhile (deadline.timeRemaining() > 1 && (task = p2Queue.shift())) {\n\t\t\t\tmetrics(task.meta, schedulerTypes.EXECUTE, task.type, 'P2', p2Queue);\n\t\t\t\ttrackTaskStart(task, P2);\n\t\t\t\tif (task.meta.span) {\n\t\t\t\t\ttask.meta.span.addEvent(SPAN_ATTR_TASK_STARTED, {\n\t\t\t\t\t\ttype: task.type,\n\t\t\t\t\t\tpriority: 'P2',\n\t\t\t\t\t\tqueueSize: p2Queue.length\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\ttask.fn(task.meta);\n\t\t\t\tif (task.meta.span) {\n\t\t\t\t\ttask.meta.span.addEvent(SPAN_ATTR_TASK_COMPLETED, {\n\t\t\t\t\t\ttype: task.type,\n\t\t\t\t\t\tpriority: 'P2',\n\t\t\t\t\t\tqueueSize: p2Queue.length\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\ttrackTaskCompleted(task, P2);\n\t\t\t}\n\n\t\t\tif (p2Queue.length) runMediumPriorityTasks();\n\n\t\t\tif (p3Queue.length) runLowPriorityTasks();\n\t\t},\n\t\t{timeout: idleTimeout}\n\t);\n}\n\nfunction runLowPriorityTasks() {\n\tif (mediumPriorityPending) return;\n\n\tif (lowPriorityPending) return;\n\n\tif (isRendering) return;\n\n\tlowPriorityPending = true;\n\trequestIdleCallbackPollyfill(\n\t\tdeadline => {\n\t\t\tlet task;\n\t\t\twhile (deadline.timeRemaining() > 1 && (task = p3Queue.shift())) {\n\t\t\t\tmetrics(task.meta, schedulerTypes.EXECUTE, task.type, 'P3', p3Queue);\n\t\t\t\ttrackTaskStart(task, P3);\n\t\t\t\tif (task.meta.span) {\n\t\t\t\t\ttask.meta.span.addEvent(SPAN_ATTR_TASK_STARTED, {\n\t\t\t\t\t\ttype: task.type,\n\t\t\t\t\t\tpriority: 'P3',\n\t\t\t\t\t\tqueueSize: p3Queue.length\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\ttask.fn(task.meta);\n\t\t\t\tif (task.meta.span) {\n\t\t\t\t\ttask.meta.span.addEvent(SPAN_ATTR_TASK_COMPLETED, {\n\t\t\t\t\t\ttype: task.type,\n\t\t\t\t\t\tpriority: 'P3',\n\t\t\t\t\t\tqueueSize: p3Queue.length\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\ttrackTaskCompleted(task, P3);\n\t\t\t}\n\n\t\t\tlowPriorityPending = false;\n\t\t\tif (p3Queue.length) runLowPriorityTasks();\n\t\t},\n\t\t{timeout: idleTimeout}\n\t);\n}\n\nfunction flushIdleQueues() {\n\tlet task;\n\twhile ((task = p0_5Queue.shift())) {\n\t\tif (task.meta.span) {\n\t\t\ttask.meta.span.addEvent(SPAN_ATTR_TASK_STARTED, {\n\t\t\t\ttype: task.type,\n\t\t\t\tpriority: 'P0_5',\n\t\t\t\tqueueSize: p0_5Queue.length\n\t\t\t});\n\t\t}\n\t\ttask.fn(task.meta);\n\t\tif (task.meta.span) {\n\t\t\ttask.meta.span.addEvent(SPAN_ATTR_TASK_COMPLETED, {\n\t\t\t\ttype: task.type,\n\t\t\t\tpriority: 'P0_5',\n\t\t\t\tqueueSize: p0_5Queue.length\n\t\t\t});\n\t\t}\n\t}\n\twhile ((task = p1Queue.shift())) {\n\t\tif (task.meta.span) {\n\t\t\ttask.meta.span.addEvent(SPAN_ATTR_TASK_STARTED, {\n\t\t\t\ttype: task.type,\n\t\t\t\tpriority: 'P1',\n\t\t\t\tqueueSize: p1Queue.length\n\t\t\t});\n\t\t}\n\t\ttask.fn(task.meta);\n\t\tif (task.meta.span) {\n\t\t\ttask.meta.span.addEvent(SPAN_ATTR_TASK_COMPLETED, {\n\t\t\t\ttype: task.type,\n\t\t\t\tpriority: 'P1',\n\t\t\t\tqueueSize: p1Queue.length\n\t\t\t});\n\t\t}\n\t}\n\thighPriorityPending = false;\n\twhile ((task = p2Queue.shift())) {\n\t\tif (task.meta.span) {\n\t\t\ttask.meta.span.addEvent(SPAN_ATTR_TASK_STARTED, {\n\t\t\t\ttype: task.type,\n\t\t\t\tpriority: 'P2',\n\t\t\t\tqueueSize: p2Queue.length\n\t\t\t});\n\t\t}\n\t\ttask.fn(task.meta);\n\t\tif (task.meta.span) {\n\t\t\ttask.meta.span.addEvent(SPAN_ATTR_TASK_COMPLETED, {\n\t\t\t\ttype: task.type,\n\t\t\t\tpriority: 'P2',\n\t\t\t\tqueueSize: p2Queue.length\n\t\t\t});\n\t\t}\n\t}\n\twhile ((task = p3Queue.shift())) {\n\t\tif (task.meta.span) {\n\t\t\ttask.meta.span.addEvent(SPAN_ATTR_TASK_STARTED, {\n\t\t\t\ttype: task.type,\n\t\t\t\tpriority: 'P3',\n\t\t\t\tqueueSize: p3Queue.length\n\t\t\t});\n\t\t}\n\t\ttask.fn(task.meta);\n\t\tif (task.meta.span) {\n\t\t\ttask.meta.span.addEvent(SPAN_ATTR_TASK_COMPLETED, {\n\t\t\t\ttype: task.type,\n\t\t\t\tpriority: 'P3',\n\t\t\t\tqueueSize: p3Queue.length\n\t\t\t});\n\t\t}\n\t}\n}\n\nfunction isQueueFlushEnabled() {\n\treturn (\n\t\tprocess.env.UNSAFE_SEISMIC_EMIT_CUSTOM_EVENT || window.nowUiFramework.queueFlushEnabled === true\n\t);\n}\n\nlet flushing = false;\n// eslint-disable-next-line no-inner-declarations\nfunction flushQueues() {\n\tflushing = true;\n\tlet task;\n\n\twhile ((task = p0_5Queue.shift())) task.fn(task.meta);\n\twhile ((task = p1Queue.shift())) task.fn(task.meta);\n\twhile ((task = p2Queue.shift())) task.fn(task.meta);\n\twhile ((task = p3Queue.shift())) task.fn(task.meta);\n\n\tdefer(() => {\n\t\tif (p0_5Queue.length || p1Queue.length || p2Queue.length || p3Queue.length)\n\t\t\treturn flushQueues();\n\n\t\tflushing = false;\n\t\tconst event = new CustomEvent('SEISMIC_QUEUE_FLUSHED', {composed: true, bubbles: true});\n\t\treturn document.dispatchEvent(event);\n\t}, 0);\n}\n\ndocument.addEventListener('FLUSH_SEISMIC_QUEUE', () => {\n\tif (!flushing && isQueueFlushEnabled()) flushQueues();\n});\n\ndocument.addEventListener(\n\t'visibilitychange',\n\t() => {\n\t\tif (isThrottled()) flushIdleQueues();\n\t},\n\tfalse\n);\n\nfunction countHighPriorityTasks(element) {\n\treturn p1Queue.sizeForElement(element);\n}\n\nfunction countAllHighPriorityTasks() {\n\treturn p1Queue.length;\n}\n\nfunction countAllMediumPriorityTasks() {\n\treturn p2Queue.length;\n}\n\nfunction countMediumPriorityTasks(element) {\n\treturn p2Queue.sizeForElement(element);\n}\n\nfunction addQueueEmptyForElCb(fn) {\n\tqueueEmptyForElCallbacks.push(fn);\n}\n\nfunction whenQueueIsEmptyForElement(el) {\n\tconst len = queueEmptyForElCallbacks.length;\n\tfor (let i = 0; i < len; i++) queueEmptyForElCallbacks[i](el);\n}\n\nexport {\n\tschedule,\n\tconstants as types,\n\tcountHighPriorityTasks,\n\tcountMediumPriorityTasks,\n\taddQueueEmptyForElCb,\n\tcountAllHighPriorityTasks,\n\tcountAllMediumPriorityTasks,\n\tgetSchedulerStats,\n\tresetSchedulerStats\n};\n","import {createLogger} from '@servicenow/ui-internal';\n\nexport default createLogger({\n\tmodule: '@servicenow/ui-core'\n});\n","import {\n\tschedule,\n\ttypes,\n\tcountHighPriorityTasks,\n\tcountMediumPriorityTasks,\n\tcountAllHighPriorityTasks,\n\tcountAllMediumPriorityTasks\n} from './scheduler';\nimport log from './log';\nimport {\n\tgetHostPendingNetworkActionCount,\n\tgetPendingNetworkActionCount\n} from '@servicenow/ui-internal';\nimport {getConfigItem, configConstants} from '@servicenow/ui-config';\n\nconst {\n\tWHEN_COMPONENT_IS_IDLE_TIMEOUT,\n\tWHEN_COMPONENT_IS_IDLE_THROTTLE,\n\tWHEN_COMPONENT_IS_IDLE_MIN_INTERVAL\n} = configConstants;\nconst timeout = getConfigItem(WHEN_COMPONENT_IS_IDLE_TIMEOUT);\nconst throttle = getConfigItem(WHEN_COMPONENT_IS_IDLE_THROTTLE);\nconst interval = getConfigItem(WHEN_COMPONENT_IS_IDLE_MIN_INTERVAL);\nconst {WHEN_COMPONENT_IS_IDLE, WHEN_ALL_COMPONENTS_IDLE} = types;\n\nconst check = el => {\n\treturn new Promise(resolve => {\n\t\tschedule({\n\t\t\tfn() {\n\t\t\t\tresolve(\n\t\t\t\t\tgetHostPendingNetworkActionCount(el) +\n\t\t\t\t\t\tcountHighPriorityTasks(el) +\n\t\t\t\t\t\tcountMediumPriorityTasks(el)\n\t\t\t\t);\n\t\t\t},\n\t\t\ttype: WHEN_COMPONENT_IS_IDLE,\n\t\t\tmeta: {el, interactionId: 'componentIdleCheck'}\n\t\t});\n\t});\n};\n\nconst pause = () =>\n\tnew Promise(resolve => {\n\t\tsetTimeout(() => resolve(), throttle);\n\t});\n\nconst checkAll = () => {\n\treturn new Promise(resolve => {\n\t\tschedule({\n\t\t\tfn() {\n\t\t\t\tresolve(\n\t\t\t\t\tgetPendingNetworkActionCount() +\n\t\t\t\t\t\tcountAllMediumPriorityTasks() +\n\t\t\t\t\t\tcountAllHighPriorityTasks()\n\t\t\t\t);\n\t\t\t},\n\t\t\ttype: WHEN_ALL_COMPONENTS_IDLE,\n\t\t\tmeta: {el: {}, interactionId: 'allComponentsIdleCheck'}\n\t\t});\n\t});\n};\n\nexport function whenAllComponentsIdle(payload = {}) {\n\treturn new Promise(resolve => {\n\t\tschedule({\n\t\t\tasync fn() {\n\t\t\t\tlet busy = true;\n\t\t\t\tlet didPause = false;\n\t\t\t\tconst {withTimeOutInfo = false} = payload;\n\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\tbusy = false;\n\t\t\t\t\tresolve(withTimeOutInfo ? {didPause, timedOut: true} : didPause);\n\t\t\t\t}, timeout);\n\n\t\t\t\twhile (busy) {\n\t\t\t\t\tbusy = await checkAll();\n\t\t\t\t\tif (busy) {\n\t\t\t\t\t\tdidPause = true;\n\t\t\t\t\t\tawait pause();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tclearTimeout(timeoutId);\n\t\t\t\tresolve(withTimeOutInfo ? {didPause, timedOut: false} : didPause);\n\t\t\t},\n\t\t\ttype: WHEN_ALL_COMPONENTS_IDLE,\n\t\t\tmeta: {el: {}, interactionId: 'whenAllComponentsIdle'}\n\t\t});\n\t});\n}\n\nexport default function whenComponentIsIdle(el) {\n\treturn new Promise(resolve => {\n\t\tschedule({\n\t\t\tasync fn() {\n\t\t\t\tlet busy = true;\n\t\t\t\tconst timeoutId = setTimeout(() => {\n\t\t\t\t\tlog('whenComponentIsIdle timed out.', {\n\t\t\t\t\t\thost: el,\n\t\t\t\t\t\torigin: 'whenComponentIsIdle'\n\t\t\t\t\t});\n\t\t\t\t\tbusy = false;\n\t\t\t\t\tresolve(el);\n\t\t\t\t}, timeout);\n\n\t\t\t\twhile (busy) {\n\t\t\t\t\tconst start = Date.now();\n\t\t\t\t\tbusy = await check(el);\n\t\t\t\t\tconst end = Date.now();\n\t\t\t\t\t// throttle in case of network activity, i.e. something is pending, but component is otherwise idle\n\t\t\t\t\t// if not there will be numerous unnecessary checks while waiting for network request to complete\n\t\t\t\t\tif (busy && end - start < interval) await pause();\n\t\t\t\t}\n\n\t\t\t\tclearTimeout(timeoutId);\n\t\t\t\tresolve(el);\n\t\t\t},\n\t\t\ttype: WHEN_COMPONENT_IS_IDLE,\n\t\t\tmeta: {el, interactionId: 'whenComponentIsIdle'}\n\t\t});\n\t});\n}\n","import {getConfigItem, configConstants} from '@servicenow/ui-config';\nimport Ajv from 'ajv';\n\nconst {VALIDATE_SCHEMAS} = configConstants;\nconst validateSchemas = getConfigItem(VALIDATE_SCHEMAS);\n\nlet ajv;\nif (validateSchemas) {\n\tajv = new Ajv();\n\tajv.addKeyword('fn', {\n\t\tvalidate: function validateFn(schema, data) {\n\t\t\tif (data instanceof Function) return true;\n\n\t\t\tif (data === undefined || data === null) return true;\n\n\t\t\tvalidateFn.errors = [\n\t\t\t\t{\n\t\t\t\t\tmessage: 'should be a function',\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tlevel: 'error'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t];\n\t\t\treturn false;\n\t\t}\n\t});\n\tajv.addKeyword('deprecated', {\n\t\tvalidate: function validateDeprecation(schema) {\n\t\t\tif (!schema) return true;\n\n\t\t\tconst message = typeof schema === 'boolean' ? 'has been deprecated' : schema;\n\t\t\tvalidateDeprecation.errors = [\n\t\t\t\t{\n\t\t\t\t\tmessage,\n\t\t\t\t\tparams: {\n\t\t\t\t\t\tlevel: 'warn'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t];\n\n\t\t\treturn false;\n\t\t}\n\t});\n} else {\n\tajv = {compile: () => () => true};\n}\n\nexport default ajv;\n","import {toLower} from '@servicenow/ui-internal';\n\n/**\n * Returns a string representing the host element, i.e. `<sn-component component-id=\"123\" />`\n * @private\n * @param {host} host\n * @returns {string}\n */\nfunction getComponentName(host) {\n\treturn `<${toLower(host.tagName)} component-id=\"${host.getAttribute('component-id')}\" />`;\n}\n\nexport default getComponentName;\n","import {createLogger, memoize} from '@servicenow/ui-internal';\n\nconst logger = createLogger({\n\tmodule: '@servicenow/ui-core'\n});\n\n// Prevent the same validation error message from being printed more than once\nexport default memoize(logger, {profileName: 'ui-core logger'});\n","import log from '../logValidationError';\n\nfunction getPath(pathPrefix, dataPath) {\n\tif (!pathPrefix && !dataPath) return '';\n\n\tif (!pathPrefix && dataPath.startsWith('.')) return `${dataPath.substr(1)} `;\n\n\treturn `${pathPrefix}${dataPath} `;\n}\n\n/**\n * Run a validator against a value to determine its validity. If it is not valid, log an error.\n * @private\n * @param {Function} validator The validator built from one of the methods in ./build\n * @param {any} value The value to run the schema validation against\n * @param {Object} options\n * @param {string} options.pathPrefix Name of the value being validated. Optional\n * @param {string} options.errorPrefix Prefix for the error message\n * @returns {boolean} Whether the value passed validation\n */\nfunction validateSchema(\n\tvalidator,\n\tvalue,\n\t{pathPrefix = '', errorPrefix = '', shouldLog = true} = {}\n) {\n\tconst isValid = validator(value);\n\tif (!isValid) {\n\t\t// If there are errors, only report the first one\n\t\tconst [{dataPath, message, params: {level = 'error'} = {}}] = validator.errors;\n\n\t\tconst path = getPath(pathPrefix, dataPath);\n\t\tconst errorMessage = `${path}${message}`;\n\n\t\tif (shouldLog) log(`${errorPrefix}${errorMessage}`, {level, origin: 'validateSchema'});\n\t}\n\treturn isValid;\n}\n\nexport default validateSchema;\n","import ajv from '../ajv';\nimport getComponentName from '../getComponentName';\nimport validateSchema from '../validate/validateSchema';\n\n/**\n * Build the validator for the action payload schema\n * @private\n * @param {*} payloadSchema The schema provided by the user in config.actions[key].schema\n * @returns {Function(value, host)} The function to validate the action's payload\n */\nfunction buildActionPayloadValidator(payloadSchema) {\n\tif (process.env.NODE_ENV !== 'production') {\n\t\tlet validate;\n\n\t\ttry {\n\t\t\tvalidate = ajv.compile(payloadSchema);\n\t\t} catch (e) {\n\t\t\tconsole.error(e); // eslint-disable-line no-console\n\t\t\treturn () => false;\n\t\t}\n\n\t\treturn function validateActionPayload(value, host) {\n\t\t\tconst component = getComponentName(host);\n\n\t\t\treturn validateSchema(validate, value, {\n\t\t\t\tpathPrefix: 'payload',\n\t\t\t\terrorPrefix: `Action payload for ${component}: `\n\t\t\t});\n\t\t};\n\t}\n\n\treturn () => true;\n}\n\nexport default buildActionPayloadValidator;\n","import ajv from '../ajv';\nimport getComponentName from '../getComponentName';\nimport validateSchema from '../validate/validateSchema';\n\n/**\n * Build the validator for the properties of a component\n * @private\n * @param {*} propertyDefinitions The definitions of properties passed into createCustomElement's config.properties\n * @returns {Function(properties, host)} The function to validate the component's properties\n */\nfunction buildPropertiesValidator(propertyDefinitions) {\n\tif (process.env.NODE_ENV !== 'production') {\n\t\tconst baseSchema = {\n\t\t\ttype: 'object',\n\t\t\tproperties: {},\n\t\t\trequired: [],\n\t\t\tdependencies: {}\n\t\t};\n\n\t\tfor (const propertyName in propertyDefinitions) {\n\t\t\tconst {schema, required, dependencies} = propertyDefinitions[propertyName];\n\t\t\tif (schema) baseSchema.properties[propertyName] = schema;\n\t\t\tif (required) baseSchema.required.push(propertyName);\n\t\t\tif (dependencies) baseSchema.dependencies[propertyName] = dependencies;\n\t\t}\n\n\t\tlet validate;\n\t\ttry {\n\t\t\tvalidate = ajv.compile(baseSchema);\n\t\t} catch (e) {\n\t\t\tconsole.error(e); // eslint-disable-line no-console\n\t\t\treturn () => false;\n\t\t}\n\n\t\treturn function validateProperties(properties, host) {\n\t\t\tconst component = getComponentName(host);\n\t\t\treturn validateSchema(validate, properties, {errorPrefix: `Property for ${component}: `});\n\t\t};\n\t}\n\n\treturn () => true;\n}\n\nexport default buildPropertiesValidator;\n","import {VARIABLES} from '../symbols';\n\nexport default function getHostVariables(host) {\n\tif (!host) return null;\n\n\treturn host[VARIABLES];\n}\n","import {sandbox, locations} from '@servicenow/ui-internal';\nimport getHostVariables from '../getHostVariables';\nimport {DISPATCH} from '../../symbols';\nimport log from '../../log';\n\nconst {INTERCEPTOR} = locations;\n\nfunction sandboxInterceptor(effectInterceptor) {\n\tconst {fn, type, position} = effectInterceptor;\n\treturn {\n\t\t...effectInterceptor,\n\t\tfn: function sandboxedInterceptor(context) {\n\t\t\tconst {\n\t\t\t\tcoeffects: {host}\n\t\t\t} = context;\n\t\t\tif (type === 'effect')\n\t\t\t\t// don't need to wrap seismic defined interceptors\n\t\t\t\treturn fn(context);\n\n\t\t\tconst hostVariables = getHostVariables(host);\n\t\t\treturn sandbox(fn, {\n\t\t\t\targs: [context],\n\t\t\t\tlocation: INTERCEPTOR,\n\t\t\t\thost,\n\t\t\t\tdetails: {\n\t\t\t\t\ttype,\n\t\t\t\t\tposition\n\t\t\t\t},\n\t\t\t\tdispatch: hostVariables[DISPATCH],\n\t\t\t\tlog\n\t\t\t});\n\t\t}\n\t};\n}\n\nfunction forEachInterceptor(interceptors, target, map) {\n\tmap.set(target, interceptors.map(sandboxInterceptor));\n}\n\nexport function createInterceptors(actionHandlers) {\n\tconst actionHandlerInterceptors = {};\n\n\tfor (const k in actionHandlers) {\n\t\tactionHandlerInterceptors[k] = new Map();\n\t\tconst {length: handlerCount} = actionHandlers[k];\n\t\tfor (let i = 0; i < handlerCount; i++) {\n\t\t\tconst {\n\t\t\t\tinterceptors: {before, after},\n\t\t\t\targs,\n\t\t\t\teffect,\n\t\t\t\thandlers = [],\n\t\t\t\ttarget = 'host',\n\t\t\t\tbehaviorOptions,\n\t\t\t\tcapture,\n\t\t\t\teventHandler,\n\t\t\t\tmodifier,\n\t\t\t\tdescendantOnly\n\t\t\t} = actionHandlers[k][i];\n\t\t\tlet combinedInterceptors = actionHandlerInterceptors[k].has(target)\n\t\t\t\t? actionHandlerInterceptors[k].get(target)\n\t\t\t\t: [];\n\n\t\t\tconst effectInterceptor = effect\n\t\t\t\t? {\n\t\t\t\t\t\tfn: function createEffectHandlerInterceptor(context) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t...context,\n\t\t\t\t\t\t\t\teffects: [\n\t\t\t\t\t\t\t\t\t...context.effects,\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\teffect,\n\t\t\t\t\t\t\t\t\t\targs: [...args, context.coeffects],\n\t\t\t\t\t\t\t\t\t\tmodifier,\n\t\t\t\t\t\t\t\t\t\toptions: behaviorOptions,\n\t\t\t\t\t\t\t\t\t\tdescendantOnly\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttype: 'effect',\n\t\t\t\t\t\tcapture,\n\t\t\t\t\t\teventHandler\n\t\t\t\t  }\n\t\t\t\t: null;\n\n\t\t\tconst handlerInterceptors = handlers.map(handler => ({\n\t\t\t\tfn: function createHandlersInterceptor(context) {\n\t\t\t\t\tconst {effect, args = []} = handler;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...context,\n\t\t\t\t\t\teffects: [\n\t\t\t\t\t\t\t...context.effects,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\teffect,\n\t\t\t\t\t\t\t\targs: [...args, context.coeffects],\n\t\t\t\t\t\t\t\tmodifier,\n\t\t\t\t\t\t\t\toptions: behaviorOptions,\n\t\t\t\t\t\t\t\tdescendantOnly\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\ttype: 'effect',\n\t\t\t\tcapture,\n\t\t\t\teventHandler\n\t\t\t}));\n\n\t\t\tcombinedInterceptors = [\n\t\t\t\t...combinedInterceptors,\n\t\t\t\t...before,\n\t\t\t\t...(effectInterceptor ? [effectInterceptor] : []),\n\t\t\t\t...handlerInterceptors,\n\t\t\t\t...after\n\t\t\t];\n\t\t\tactionHandlerInterceptors[k].set(target, combinedInterceptors);\n\t\t}\n\n\t\tactionHandlerInterceptors[k].forEach(forEachInterceptor);\n\t}\n\n\treturn actionHandlerInterceptors;\n}\n","const TAKE_LATEST = 'takeLatest';\n\nexport default function normalizeModifiers(modifiers, modifier) {\n\treturn Object.keys(modifier).length ? modifier : modifiers.length ? {name: TAKE_LATEST} : {};\n}\n","import normalizeModifiers from './normalizeModifiers';\nimport log from '../../log';\n\nfunction typeInterceptor(fn, type, position) {\n\treturn {fn, type, position};\n}\n\nfunction mapInterceptors(interceptors) {\n\tconst mapped = {before: [], after: []};\n\tconst {length: interceptorCount} = interceptors;\n\tfor (let i = 0; i < interceptorCount; i++) {\n\t\tconst interceptor = interceptors[i];\n\t\tconst {before, after} = interceptor;\n\t\tif (!before && !after) {\n\t\t\tmapped.before.push(typeInterceptor(interceptor));\n\t\t\tcontinue;\n\t\t}\n\t\tif (before) mapped.before.push(typeInterceptor(before, 'before', mapped.before.length));\n\t\tif (after) mapped.after.unshift(typeInterceptor(after, 'after', mapped.after.length));\n\t}\n\n\treturn mapped;\n}\n\nfunction normalizeHandlers(handlers, tagName) {\n\tif (handlers.length) {\n\t\tlog(`Please update action handler definition in <${tagName}>`, {\n\t\t\ttagName,\n\t\t\torigin: 'normalizeHandlers',\n\t\t\tdocs: 'https://developer.servicenow.com/dev.do#!/guide/orlando/now-experience/ui-framework/now-experience-ui-framework-101/action-handlers'\n\t\t});\n\t}\n\n\treturn handlers.map(handler =>\n\t\ttypeof handler === 'function'\n\t\t\t? {\n\t\t\t\t\teffect: handler,\n\t\t\t\t\targs: []\n\t\t\t  }\n\t\t\t: {\n\t\t\t\t\t...handler,\n\t\t\t\t\teffect: handler.effect || handler.fn,\n\t\t\t\t\targs: handler.args || []\n\t\t\t  }\n\t);\n}\n\nexport function normalizeActionHandler(actionHandler, tagName) {\n\tconst {\n\t\thandlers = [],\n\t\targs = [],\n\t\tinterceptors = [],\n\t\tstopPropagation,\n\t\tprivate: isPrivate,\n\t\ttarget,\n\t\tmodifiers = [],\n\t\tmodifier = {},\n\t\tcapture = false,\n\t\teventHandler = false,\n\t\tdescendantOnly = false\n\t} = actionHandler;\n\n\tif (typeof actionHandler === 'function') {\n\t\treturn {\n\t\t\tstopPropagation,\n\t\t\teffect: actionHandler,\n\t\t\thandlers: [],\n\t\t\targs,\n\t\t\tinterceptors: mapInterceptors(interceptors),\n\t\t\ttarget,\n\t\t\tmodifier: normalizeModifiers(modifiers, modifier),\n\t\t\tcapture,\n\t\t\teventHandler,\n\t\t\tdescendantOnly\n\t\t};\n\t}\n\n\tfunction effectDelegate(...args) {\n\t\t// Effect delegate function to enable stubbing in tests\n\t\treturn actionHandler.effect(...args);\n\t}\n\n\treturn {\n\t\tstopPropagation: stopPropagation || isPrivate,\n\t\teffect: typeof actionHandler.effect === 'function' ? effectDelegate : actionHandler.effect,\n\t\thandlers: normalizeHandlers(handlers, tagName),\n\t\targs,\n\t\tinterceptors: mapInterceptors(interceptors),\n\t\ttarget,\n\t\tmodifier: normalizeModifiers(modifiers, modifier),\n\t\tcapture,\n\t\teventHandler,\n\t\tdescendantOnly\n\t};\n}\n","import {APPEND_TO_PAYLOAD_PROP_NAME} from '../../constants';\n\nexport function appendToPayload(el, payload) {\n\tconst appendToPayload = el[APPEND_TO_PAYLOAD_PROP_NAME];\n\tif (!appendToPayload) return payload;\n\n\treturn {...payload, ...appendToPayload};\n}\n","import log from '../log';\nimport {allLogTypes as logTypes} from '@servicenow/ui-internal';\n\nfunction isAlphaNumeric(str) {\n\treturn /^[a-z]+[a-z0-9]*$/i.test(str);\n}\n\nfunction assertValidPropertyNames(properties) {\n\tif (process.env.NODE_ENV === 'development') {\n\t\tconst {length: propertiesCount} = properties;\n\t\tfor (let i = 0; i < propertiesCount; i++) {\n\t\t\tconst property = properties[i];\n\t\t\tif (isAlphaNumeric(property) === false) {\n\t\t\t\tlog(`Invalid property name ${property}`, {\n\t\t\t\t\tlevel: logTypes.ERROR,\n\t\t\t\t\torigin: 'assertValidPropertyNames'\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport default assertValidPropertyNames;\n","const shouldReturnEmptyString = (schema = {}) =>\n\tschema.type === 'string' ||\n\t(Array.isArray(schema.type) && schema.type.indexOf('string') !== -1) ||\n\t(schema.oneOf && schema.oneOf.find(({type}) => type === 'string'));\n\n/**\n * @private\n * @param {*} value\n * @param {*} defaultValue\n * @returns resolved safe string value\n */\nconst fetchSafeStringValue = (value, defaultValue) => {\n\tif (value || defaultValue === undefined) return value;\n\n\treturn defaultValue;\n};\n\n/**\n * @private\n * @param {*} propertyDefinition\n * @param {*} values\n * @param {*} defaultValue\n * @returns resolved value\n **/\nconst resolveValue = (propertyDefinition, values, defaultValue) => {\n\tconst {length: valueCount} = values;\n\tvar hasSchema = propertyDefinition?.schema;\n\n\tfor (let i = 0; i < valueCount; i++) {\n\t\tconst value = values[i];\n\t\tif (typeof value === 'string') {\n\t\t\tif (!hasSchema) return fetchSafeStringValue(value, defaultValue);\n\t\t\telse if (\n\t\t\t\tvalue.length ||\n\t\t\t\t(propertyDefinition.schema && shouldReturnEmptyString(propertyDefinition.schema))\n\t\t\t)\n\t\t\t\treturn value;\n\t\t} else {\n\t\t\tif (value !== undefined && !propertyDefinition.readOnly) return value;\n\t\t}\n\t}\n\n\treturn defaultValue;\n};\n\nexport default function resolveProperties(\n\tstate = {properties: {}},\n\tpropertyDefinitions,\n\tinstanceProperties = {}\n) {\n\tconst resolvedProperties = {};\n\n\tfor (const k in propertyDefinitions) {\n\t\tresolvedProperties[k] = resolveValue(\n\t\t\tpropertyDefinitions[k],\n\t\t\t[instanceProperties[k], state.properties[k]],\n\t\t\tpropertyDefinitions[k].default\n\t\t);\n\t}\n\n\treturn resolvedProperties;\n}\n","export const ARIA_PREFIX = 'aria';\nexport const ATTR_PREFIX = 'attr';\nexport const DATA_PREFIX = 'data';\nexport const HOOK_PREFIX = 'hook';\nexport const EVENT_PREFIX = 'on';\n\nexport const MODULES = [\n\t'hook',\n\t'ref',\n\t'now-aria-ref',\n\t'on',\n\t'style',\n\t'class',\n\t'attrs',\n\t'props',\n\t'dataset'\n];\n\nexport const ACRONYM_PROPS = ['innerHTML', 'outerHTML'];\nexport const DEPRECATED_HTML_ACRONYM_PROPS = ['innerHTML', 'outerHTML'];\nexport const DEPRECATED_HTML_ACRONYM_PROPS_MAP = {\n\tinnerHTML: 'dangerouslySetInnerHTML',\n\touterHTML: 'dangerouslySetOuterHTML'\n};\nexport const DANGEROUS_HTML_ACRONYM_PROPS_MAP = {\n\tdangerouslySetInnerHTML: 'innerHTML',\n\tdangerouslySetOuterHTML: 'outerHTML'\n};\n\nexport const APPEND_TO_PAYLOAD = 'append-to-payload';\nexport const APPEND_TO_META = 'append-to-meta';\n\nexport const BASE_ATTRIBUTES = [\n\t'path',\n\t'context',\n\t'context-modifier',\n\t'key',\n\t'alt',\n\t'async',\n\t'autocomplete',\n\t'autofocus',\n\t'autoplay',\n\t'capture',\n\t'checked',\n\t'default',\n\t'defer',\n\t'disabled',\n\t'draggable',\n\t'dropzone',\n\t'hidden',\n\t'href',\n\t'hreflang',\n\t'http-equiv',\n\t'icon',\n\t'id',\n\t'is',\n\t'maxlength',\n\t'minlength',\n\t'media',\n\t'method',\n\t'multiple',\n\t'name',\n\t'placeholder',\n\t'readonly',\n\t'rel',\n\t'required',\n\t'reversed',\n\t'role',\n\t'rows',\n\t'rowspan',\n\t'selected',\n\t'slot',\n\t'src',\n\t'tabindex',\n\t'target',\n\t'title',\n\t'type',\n\t'value'\n];\n\nexport const CUSTOM_ELEMENT_ATTRIBUTES = [\n\t...BASE_ATTRIBUTES,\n\t'component-id',\n\t'listen-to',\n\t'dangerouslySetInnerHTML',\n\t'dangerouslySetOuterHTML',\n\t'suppressContentEditableWarning',\n\t'suppressHydrationWarning'\n];\n\nexport const NON_CUSTOM_ELEMENT_ATTRIBUTES = [\n\t...BASE_ATTRIBUTES,\n\t'accept',\n\t'accept-charset',\n\t'accesskey',\n\t'action',\n\t'align',\n\t'allow',\n\t'autocapitalize',\n\t'background',\n\t'bgcolor',\n\t'border',\n\t'buffered',\n\t'challenge',\n\t'charset',\n\t'cite',\n\t'code',\n\t'codebase',\n\t'color',\n\t'cols',\n\t'colspan',\n\t'content',\n\t'contenteditable',\n\t'contextmenu',\n\t'controls',\n\t'coords',\n\t'crossorigin',\n\t'datetime',\n\t'decoding',\n\t'dir',\n\t'dirname',\n\t'download',\n\t'enctype',\n\t'for',\n\t'form',\n\t'formaction',\n\t'formenctype',\n\t'formmethod',\n\t'formnovalidate',\n\t'formtarget',\n\t'headers',\n\t'height',\n\t'high',\n\t'integrity',\n\t'intrinsicsize',\n\t'inputmode',\n\t'ismap',\n\t'itemprop',\n\t'keytype',\n\t'kind',\n\t'label',\n\t'lang',\n\t'language',\n\t'list',\n\t'loop',\n\t'low',\n\t'manifest',\n\t'max',\n\t'min',\n\t'muted',\n\t'novalidate',\n\t'open',\n\t'optimum',\n\t'pattern',\n\t'ping',\n\t'poster',\n\t'preload',\n\t'radiogroup',\n\t'referrerpolicy',\n\t'sandbox',\n\t'scope',\n\t'scoped',\n\t'shape',\n\t'size',\n\t'sizes',\n\t'span',\n\t'spellcheck',\n\t'srcdoc',\n\t'srclang',\n\t'srcset',\n\t'start',\n\t'step',\n\t'summary',\n\t'translate',\n\t'usemap',\n\t'width',\n\t'wrap'\n];\n","import {getConfigItem, configConstants} from '@servicenow/ui-config';\nimport {createInteractionId, mark, types as metrics} from '@servicenow/ui-metrics';\nimport {\n\tsandbox,\n\tlocations,\n\tcamelCase,\n\tmemoize,\n\tallLogTypes as logTypes\n} from '@servicenow/ui-internal';\nimport {\n\tMODULES,\n\tARIA_PREFIX,\n\tATTR_PREFIX,\n\tDATA_PREFIX,\n\tHOOK_PREFIX,\n\tEVENT_PREFIX,\n\tCUSTOM_ELEMENT_ATTRIBUTES,\n\tNON_CUSTOM_ELEMENT_ATTRIBUTES,\n\tACRONYM_PROPS,\n\tDEPRECATED_HTML_ACRONYM_PROPS,\n\tDANGEROUS_HTML_ACRONYM_PROPS_MAP,\n\tDEPRECATED_HTML_ACRONYM_PROPS_MAP\n} from '../constants';\nimport log from '../log';\nimport {INTERACTION_ID} from '../symbols';\n\nconst {MEMOIZE_SNABBDOM_PROP_PARTS} = configConstants;\nconst shouldMemoizePropParts = getConfigItem(MEMOIZE_SNABBDOM_PROP_PARTS);\n\nconst isNil = value => value === null || value === undefined;\n\n// TODO: investigate the benifit and drawbacks of memoizing this.  This does make it faster but at the cost of memory.\nconst memoizedCamelCase = memoize(camelCase, {profileName: 'snabbdom-camelCase'});\nconst isCustomElement = tag => tag.indexOf('-') > 0;\nconst memoizedIsCustomElement = memoize(isCustomElement, {profileName: 'snabbdom-isCustomElement'});\n\nfunction convertToLoadedEvent(value) {\n\tconst [fn, ...args] = value;\n\treturn (event, vnode) => {\n\t\tfn.apply(vnode, [...args, event, vnode]);\n\t};\n}\n\nconst getPropKeyParts = key => {\n\tconst index = key.indexOf('-');\n\tconst prefix = index > 0 ? key.substring(0, index) : null;\n\tconst name =\n\t\tprefix === ATTR_PREFIX || DATA_PREFIX || HOOK_PREFIX || EVENT_PREFIX\n\t\t\t? key.slice(index + 1)\n\t\t\t: key;\n\n\treturn {index, prefix, name};\n};\n\nconst memoizedGetPropKeyParts = shouldMemoizePropParts\n\t? memoize(getPropKeyParts, {profileName: 'snabbdom-getPropKeyParts'})\n\t: getPropKeyParts;\n\n/**\n * Move props into the proper module fields so they can properly be handled by modules registered with snabbdom.\n * @private\n * @method formatProps\n * @param tagName element name\n * @param {object} props Properties to format by prefixes\n * @returns {{hook: {}, ref: {}, now-aria-ref: {}, on: {}, style: {}, class: {}, attrs: {}, props: {}, dataset: {}}}\n */\nexport default function formatProps(tagName, props) {\n\tconst result = {\n\t\thook: {},\n\t\tref: null,\n\t\t'now-aria-ref': null,\n\t\ton: {},\n\t\tstyle: {},\n\t\tclass: {},\n\t\tattrs: {},\n\t\tprops: {}\n\t};\n\n\tconst isCustomTag = memoizedIsCustomElement(tagName);\n\n\t// this is the fastest way to iterate over an object's keys:\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst keys = Object.keys(props);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key = keys[i];\n\t\tconst value = props[key];\n\t\tif (key === 'key') {\n\t\t\tresult.key = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst {index: keyIndex, prefix, name: keyName} = memoizedGetPropKeyParts(key);\n\t\tif (keyIndex > 0) {\n\t\t\tif (prefix === ATTR_PREFIX) {\n\t\t\t\tresult.attrs[keyName] = isNil(value) ? false : value;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (prefix === ARIA_PREFIX) {\n\t\t\t\tresult.attrs[key] = isNil(value) ? false : value;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (prefix === DATA_PREFIX) {\n\t\t\t\t// Perf: Defer defining dataset on the resulting vnode as snabbdom will\n\t\t\t\t// otherwise do un-necessary reading from the DOM in the dataset module.\n\t\t\t\tif (!result.dataset) result.dataset = {};\n\n\t\t\t\tresult.dataset[keyName] = value;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (prefix === HOOK_PREFIX && typeof value === 'function') {\n\t\t\t\tconst name = keyName;\n\n\t\t\t\tresult.hook[name] = (vnode, ...rest) => {\n\t\t\t\t\tconst host = vnode.elm && vnode.elm.getRootNode().host;\n\n\t\t\t\t\tif (!host) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\treturn value(vnode, ...rest);\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tlog(`An Error occured while executing hook-${name}`, {\n\t\t\t\t\t\t\t\terror: e,\n\t\t\t\t\t\t\t\tlevel: logTypes.ERROR,\n\t\t\t\t\t\t\t\torigin: 'formatProps'\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn sandbox(\n\t\t\t\t\t\t(host, vnode, ...rest) => {\n\t\t\t\t\t\t\tconst interactionId = host[INTERACTION_ID] || createInteractionId();\n\t\t\t\t\t\t\tmark(host, interactionId, metrics.HOOK_START, {name, tagName: vnode.elm.tagName});\n\t\t\t\t\t\t\tvalue(vnode, ...rest);\n\t\t\t\t\t\t\tmark(host, interactionId, metrics.HOOK_END, {name, tagName: vnode.elm.tagName});\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\targs: [host, vnode, ...rest],\n\t\t\t\t\t\t\tdispatch: host.helpers,\n\t\t\t\t\t\t\thost,\n\t\t\t\t\t\t\tlocation: locations.VIEW,\n\t\t\t\t\t\t\tdetails: {name},\n\t\t\t\t\t\t\tlog\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t};\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Backwards compatibility for snabbdom's `loaded event` feature:\n\t\t\t//\n\t\t\t//   on-click={[function handler() {}, a, b]}\n\t\t\t//\n\t\t\t// would automatically bind `a` and `b` as the first args to the handler:\n\t\t\t//\n\t\t\t//   handler(a, b, event, vnode);\n\t\t\t//\n\t\t\t// This was supported in snabbdom@0.7 but removed in snabbdom@2.0\n\t\t\t// https://github.com/snabbdom/snabbdom/pull/804\n\t\t\tif (\n\t\t\t\tprefix === EVENT_PREFIX &&\n\t\t\t\tArray.isArray(value) &&\n\t\t\t\ttypeof value[0] === 'function' &&\n\t\t\t\tvalue.length > 1\n\t\t\t) {\n\t\t\t\tresult.on[keyName] = convertToLoadedEvent(value);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (MODULES.includes(prefix)) {\n\t\t\t\tresult[prefix][keyName] = value;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (MODULES.includes(key)) {\n\t\t\tresult[key] = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isCustomTag) {\n\t\t\tif (CUSTOM_ELEMENT_ATTRIBUTES.includes(key)) {\n\t\t\t\tresult.attrs[key] = isNil(value) ? false : value;\n\t\t\t\tif (!result.key && key === 'component-id') result.key = value;\n\t\t\t}\n\t\t\tif (process.env.NODE_ENV !== 'production') {\n\t\t\t\tconst lowerKey = memoizedCamelCase(key).toLowerCase();\n\t\t\t\tif (\n\t\t\t\t\tNON_CUSTOM_ELEMENT_ATTRIBUTES.includes(lowerKey) &&\n\t\t\t\t\t!NON_CUSTOM_ELEMENT_ATTRIBUTES.includes(key)\n\t\t\t\t) {\n\t\t\t\t\tlog(\n\t\t\t\t\t\t`For tag <${tagName}>: the property '${key}' matches the standard HTML5 attribute '${lowerKey}'. Please use standard HTML attributes & avoid props matching standard HTML attributes`,\n\t\t\t\t\t\t{level: logTypes.WARN, tagName}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (NON_CUSTOM_ELEMENT_ATTRIBUTES.includes(key))\n\t\t\t\tresult.attrs[key] = isNil(value) ? false : value;\n\t\t}\n\n\t\tif (ACRONYM_PROPS.includes(key)) {\n\t\t\tif (DEPRECATED_HTML_ACRONYM_PROPS.includes(key)) {\n\t\t\t\tlog(`${key} deprecated, replace with ${DEPRECATED_HTML_ACRONYM_PROPS_MAP[key]}.`, {\n\t\t\t\t\tlevel: logTypes.WARN,\n\t\t\t\t\torigin: 'formatProps'\n\t\t\t\t});\n\t\t\t}\n\t\t\tresult.props[key] = value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (\n\t\t\tDANGEROUS_HTML_ACRONYM_PROPS_MAP[key] &&\n\t\t\ttypeof value === 'object' &&\n\t\t\tvalue.__html !== undefined\n\t\t) {\n\t\t\tresult.props[DANGEROUS_HTML_ACRONYM_PROPS_MAP[key]] = value.__html;\n\t\t\tdelete result.attrs[key];\n\t\t\tcontinue;\n\t\t}\n\n\t\tresult.props[memoizedCamelCase(key)] = value;\n\t}\n\n\treturn result;\n}\n","/**\n * Formats children to be rendered by snabbdom\n * - recursively flatten + compact arrays\n * - filter out boolean/Symbol values (snabbdom throws on these)\n */\n\nfunction recurse(arr, result) {\n\tconst {length} = arr;\n\tfor (let i = 0; i < length; i++) {\n\t\tconst item = arr[i];\n\t\tif (Array.isArray(item)) recurse(item, result);\n\t\telse if (\n\t\t\ttypeof item !== 'boolean' &&\n\t\t\ttypeof item !== 'symbol' &&\n\t\t\titem !== null &&\n\t\t\titem !== undefined\n\t\t)\n\t\t\tresult.push(item);\n\t}\n\n\treturn result;\n}\n\nexport default function formatChildren(arr) {\n\treturn recurse(arr, []);\n}\n","// this is required for envs that don't support arr.flat, i.e., JSDOM\n// babel polyfill doesn't package flat polyfill\nexport default function flat(arr) {\n\tif (arr.flat) return arr.flat(Infinity);\n\n\treturn arr.reduce(function reducer(acc, val) {\n\t\tif (Array.isArray(val)) val.reduce(reducer, acc);\n\t\telse acc.push(val);\n\t\treturn acc;\n\t}, []);\n}\n",null,null,null,null,null,null,null,null,"/**\n * Assigns or executes a ref.\n * @private\n * @param vnode\n */\nconst getRef = vnode => {\n\tconst ref = vnode.data.ref; // eslint-disable-line prefer-destructuring\n\n\tif (ref && typeof ref === 'function') ref(vnode.elm);\n\telse if (ref && typeof ref === 'object') ref.current = vnode.elm;\n};\n\nexport default {\n\tcreate: (oldVnode, vnode) => getRef(vnode),\n\tupdate: (oldVnode, vnode) => getRef(vnode),\n\tdestroy: vnode => getRef(vnode)\n};\n","// This is a modified version of the snabbdom props module. Unlike the upstream\n// module, this implementation does set removed properties to `undefined`\nconst updateProps = (oldVnode, vnode) => {\n\tlet {\n\t\tdata: {props: oldProps}\n\t} = oldVnode;\n\tlet {\n\t\tdata: {props},\n\t\t// eslint-disable-next-line prefer-const\n\t\telm\n\t} = vnode;\n\n\tif (!oldProps && !props) return;\n\n\tif (oldProps === props) return;\n\n\toldProps = oldProps || {};\n\tprops = props || {};\n\n\tfor (const key in oldProps) {\n\t\tif (!props.hasOwnProperty(key)) elm[key] = key === 'className' ? '' : undefined;\n\t}\n\n\tfor (const key in props) {\n\t\tconst cur = props[key];\n\t\tconst old = oldProps[key];\n\t\tif (old !== cur && (key !== 'value' || elm[key] !== cur)) elm[key] = cur;\n\t}\n};\n\nexport default {\n\tcreate: updateProps,\n\tupdate: updateProps\n};\n","import {\n\tNOW_SKIP_RENDER_UNTIL_PRESENT_ATTR,\n\tNOW_ID_ATTRIBUTE,\n\tCOMPONENT_ID_ATTRIBUTE,\n\tRESOLVED_PROPS_ATTRIBUTE\n} from '@servicenow/ui-internal';\n\nconst xlinkNS = 'http://www.w3.org/1999/xlink';\nconst xmlNS = 'http://www.w3.org/XML/1998/namespace';\nconst colonChar = 58;\nconst xChar = 120;\n\nconst ATTRIBUTES_TO_PERSIST = [\n\tNOW_SKIP_RENDER_UNTIL_PRESENT_ATTR,\n\tNOW_ID_ATTRIBUTE,\n\tCOMPONENT_ID_ATTRIBUTE,\n\tRESOLVED_PROPS_ATTRIBUTE\n];\n\n// This is a modified version of the snabbdom attributes module, which never removes\n// NOW_SKIP_RENDER_UNTIL_PRESENT_ATTR attribute during the patch.\nfunction updateAttrs(oldVnode, vnode) {\n\tlet {\n\t\tdata: {attrs: oldAttrs}\n\t} = oldVnode;\n\tlet {\n\t\tdata: {attrs},\n\t\t// eslint-disable-next-line prefer-const\n\t\telm\n\t} = vnode;\n\n\tif (!oldAttrs && !attrs) return;\n\n\tif (oldAttrs === attrs) return;\n\n\toldAttrs = oldAttrs || {};\n\tattrs = attrs || {};\n\n\tfor (const key in attrs) {\n\t\tconst cur = attrs[key];\n\t\tconst old = oldAttrs[key];\n\t\tif (old !== cur) {\n\t\t\tif (cur === true) {\n\t\t\t\telm.setAttribute(key, '');\n\t\t\t} else if (cur === false) {\n\t\t\t\telm.removeAttribute(key);\n\t\t\t} else {\n\t\t\t\tif (key.charCodeAt(0) !== xChar) {\n\t\t\t\t\telm.setAttribute(key, cur);\n\t\t\t\t} else if (key.charCodeAt(3) === colonChar) {\n\t\t\t\t\t// Assume xml namespace\n\t\t\t\t\telm.setAttributeNS(xmlNS, key, cur);\n\t\t\t\t} else if (key.charCodeAt(5) === colonChar) {\n\t\t\t\t\t// Assume xlink namespace\n\t\t\t\t\telm.setAttributeNS(xlinkNS, key, cur);\n\t\t\t\t} else {\n\t\t\t\t\telm.setAttribute(key, cur);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor (const key in oldAttrs) {\n\t\t/**\n\t\t * Avoid removing NOW_SKIP_RENDER_UNTIL_PRESENT_ATTR during vdom patch/hydration,\n\t\t * because it could be removed before it is consumed by the component. For example:\n\t\t * <component-a>\n\t\t *  #shadow-root\n\t\t *  <component-b now-skip-render-until-present=\"foo,bar\">\n\t\t *  </component-b>\n\t\t * </component-a>\n\t\t * If we don't persist this attribute, when component-a is hydrated, it will be removed\n\t\t * before component-b consumes it.\n\t\t *\n\t\t * Avoid removing now-id and component-id during vdom patch/hydration.\n\t\t * Take the above example again, when we hydrate component-a, the component-b already has\n\t\t * component-id and now-id set on it by component-b's setComponentId(). So the initial\n\t\t * component-b's vnode in component-a's vdom tree will have these attributes. But the\n\t\t * component-a's vdom tree generated by the seismic view function doesn't have these attributes,\n\t\t * causing the trash of those two attributes during the patch process.\n\t\t */\n\t\tif (ATTRIBUTES_TO_PERSIST.includes(key)) continue;\n\t\tif (!(key in attrs)) {\n\t\t\telm.removeAttribute(key);\n\t\t}\n\t}\n}\nexport default {create: updateAttrs, update: updateAttrs};\n","// TODO (webpack v5): drop the `build/package/` part of these import paths.\n// Snabbdom>=1 uses the package.json#exports field that webpack v4 doesn't know\n// about\n//\n// https://github.com/webpack/webpack/issues/9509\n// https://webpack.js.org/guides/package-exports/\nimport {init} from 'snabbdom/build/package/init';\nimport {classModule} from 'snabbdom/build/package/modules/class';\nimport {styleModule} from 'snabbdom/build/package/modules/style';\nimport {eventListenersModule} from 'snabbdom/build/package/modules/eventlisteners';\nimport {datasetModule} from 'snabbdom/build/package/modules/dataset';\nimport {denyUnlessSigned} from 'snabbdom-signature';\nimport {ref, props, attributes} from '../modules';\n\nconst patch = init([\n\tprops,\n\tclassModule,\n\tstyleModule,\n\teventListenersModule,\n\tattributes,\n\tdatasetModule,\n\tref,\n\tdenyUnlessSigned\n]);\n\nexport default patch;\n","import {APPEND_TO_PAYLOAD} from '../constants';\nimport log from '../log';\n\nexport default function validateProps(props) {\n\tif (!props[APPEND_TO_PAYLOAD]) return props;\n\n\tconst {[APPEND_TO_PAYLOAD]: appendToPayload, ...nonAppendProps} = props;\n\tif (appendToPayload && typeof appendToPayload !== 'object') {\n\t\tlog(`Expected ${APPEND_TO_PAYLOAD} property to be an Object. Found ${appendToPayload}`, {\n\t\t\torigin: 'validateProps'\n\t\t});\n\t\treturn nonAppendProps;\n\t}\n\n\treturn props;\n}\n","import {vnode} from 'snabbdom/build/package/vnode';\nimport {eventListenersModule} from 'snabbdom/build/package/modules/eventlisteners';\nimport {styleModule} from 'snabbdom/build/package/modules/style';\nimport {classModule} from 'snabbdom/build/package/modules/class';\nimport {datasetModule} from 'snabbdom/build/package/modules/dataset';\nimport {props, ref, attributes} from '../modules';\nimport patch from './patch';\n\nconst TAG_PLACEHOLDER = 'sn-ssr-placeholder';\n\nconst emptyNode = vnode('', {}, [], undefined, undefined);\nconst modules = [\n\tprops,\n\tattributes,\n\tclassModule,\n\tstyleModule,\n\teventListenersModule,\n\tdatasetModule,\n\tref\n];\n\nexport function hydrate(oldVnode, vnode) {\n\t// placeholder is temporary element,\n\t// eventually updated with intended content when available\n\tif (oldVnode?.sel === TAG_PLACEHOLDER) {\n\t\tpatch(oldVnode, vnode);\n\t\treturn {error: null};\n\t}\n\n\tif (vnode.sel && oldVnode.sel !== vnode.sel) {\n\t\treturn {error: {server: oldVnode.sel, client: vnode.sel}};\n\t}\n\tif (vnode.text && oldVnode.text !== vnode.text) {\n\t\treturn {error: {server: `\"${oldVnode.text}\"`, client: `\"${vnode.text}\"`}};\n\t}\n\tif (vnode.children) {\n\t\tif (oldVnode.children.length !== vnode.children.length) {\n\t\t\treturn {\n\t\t\t\terror: {\n\t\t\t\t\tserver: `${oldVnode.children.length} children`,\n\t\t\t\t\tclient: `${vnode.children.length} children`\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\tfor (let i = 0; i < oldVnode.children.length; i++) {\n\t\t\tconst {error} = hydrate(oldVnode.children[i], vnode.children[i]);\n\t\t\tif (error) {\n\t\t\t\treturn {error};\n\t\t\t}\n\t\t}\n\t}\n\n\tvnode.elm = oldVnode.elm;\n\tif (vnode.data?.hook?.init) {\n\t\tvnode.data.hook.init(vnode);\n\t}\n\tif (vnode.data?.hook?.create) {\n\t\tvnode.data.hook.create(emptyNode, vnode);\n\t}\n\tif (vnode.data?.hook?.insert) {\n\t\tvnode.data.hook.insert(vnode);\n\t}\n\tif (vnode.data) {\n\t\tmodules.forEach(module => module.create(oldVnode, vnode));\n\t}\n\n\treturn {error: null};\n}\n",null,"import {vnode} from 'snabbdom/build/package/vnode';\nimport {htmlDomApi} from 'snabbdom/build/package/htmldomapi';\nimport {NOW_EXCLUDED_FROM_HYDRATION_ATTR} from '@servicenow/ui-internal';\n\n/**\n * This is a modified version of the snabbdom toVNode() to convert server-side rendered nodes to vnodes.\n * - it builds \"sel\" field only from the tagName of the element node,\n *   rather than a combination of selector, id, and class\n * - it assigns the class attribute value to the \"className\" property\n * - it skips the node if it has the NOW_EXCLUDED_FROM_HYDRATION_ATTR attribute\n */\n\nexport function toVNodeFromServerSideRenderedNode(node, domApi) {\n\tconst api = domApi !== undefined ? domApi : htmlDomApi;\n\tlet text;\n\tif (api.isElement(node)) {\n\t\tconst sel = api.tagName(node).toLowerCase();\n\t\tconst attrs = {};\n\t\tconst children = [];\n\t\tlet name;\n\t\tconst elmAttrs = node.attributes;\n\t\tconst elmChildren = node.childNodes;\n\t\tconst props = {};\n\t\tfor (let i = 0, n = elmAttrs.length; i < n; i++) {\n\t\t\tname = elmAttrs[i].nodeName;\n\t\t\tif (name === 'class') {\n\t\t\t\tprops.className = elmAttrs[i].nodeValue;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t/**\n\t\t\t * exclude the node from the vdom tree during hydration if it has non-falsy NOW_EXCLUDED_FROM_HYDRATION_ATTR attribute\n\t\t\t * SSR may render nodes which are not managed by the virtual DOM, for example:\n\t\t\t * <sn-canvas-screen>\n\t\t\t *   #shadow-root\n\t\t\t *   <screen-action-transformer-12345>\n\t\t\t *       <macroponent-abcdef>\n\t\t\t *       </macroponent-abcdef>\n\t\t\t *   </screen-action-transformer-12345>\n\t\t\t * </sn-canvas-screen>\n\t\t\t * The screen action transformer and macroponent are not rendered by the view function of sn-canvas-screen.\n\t\t\t * Instead, they are manually inserted with DOM manipulation. If we convert them into vnodes during hydration,\n\t\t\t * they will be trashed in the snabbdom patch process because the new vdom tree does not contain them.\n\t\t\t * To solve this issue, we add NOW_EXCLUDED_FROM_HYDRATION_ATTR attribute to the nodes that will\n\t\t\t * be excluded from the vdom tree so snabbdom has no visibility of them and thus won't trash them.\n\t\t\t */\n\t\t\tif (name === NOW_EXCLUDED_FROM_HYDRATION_ATTR && elmAttrs[i].nodeValue !== 'false') {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tattrs[name] = elmAttrs[i].nodeValue;\n\t\t}\n\t\tfor (let i = 0, n = elmChildren.length; i < n; i++) {\n\t\t\tconst childVNode = toVNodeFromServerSideRenderedNode(elmChildren[i], domApi);\n\t\t\t// skip the nullified child node if it has non-falsy NOW_EXCLUDED_FROM_HYDRATION_ATTR attribute\n\t\t\tif (childVNode) {\n\t\t\t\tchildren.push(childVNode);\n\t\t\t}\n\t\t}\n\t\treturn vnode(sel, {attrs, props}, children, undefined, node);\n\t} else if (api.isText(node)) {\n\t\ttext = api.getTextContent(node);\n\t\treturn vnode(undefined, undefined, undefined, text, node);\n\t} else if (api.isComment(node)) {\n\t\ttext = api.getTextContent(node);\n\t\treturn vnode('!', {}, [], text, node);\n\t}\n\treturn vnode('', {}, [], undefined, node);\n}\n","// TODO (webpack v5): drop the `build/package/` part of these import paths.\n// Snabbdom>=1 uses the package.json#exports field that webpack v4 doesn't know\n// about\n//\n// https://github.com/webpack/webpack/issues/9509\n// https://webpack.js.org/guides/package-exports/\nimport {toVNode} from 'snabbdom/build/package/tovnode';\nimport {toVNodeFromServerSideRenderedNode} from './utils/toVNodeFromServerSideRenderedNode';\nimport {sign} from 'snabbdom-signature';\n\n/**\n * Creates an element for the virtual DOM from an existing DOM node\n * @method createElementFromNode\n * @param {Node} node DOM node to convert\n * @returns {VNode} The vnode to use in the virtual DOM\n */\nexport default function createElementFromNode(node) {\n\tconst vnode = sign(toVNode(node));\n\tfixNamespace(vnode); // fixes issue with missing namespace for svgs: https://github.com/snabbdom/snabbdom/issues/388\n\treturn vnode;\n}\n\n/**\n * Create a vdom tree from an existing DOM node which has been server-side rendered\n * @method createElementFromServerSideRenderedNode\n * @param {Node} node DOM node to convert\n * @returns {VNode} The vnode to use in the virtual DOM\n */\nexport function createElementFromServerSideRenderedNode(node) {\n\tconst vnode = toVNodeFromServerSideRenderedNode(node);\n\tif (\n\t\tnode instanceof DocumentFragment &&\n\t\tvnode.children.length === 0 &&\n\t\tnode.childNodes.length > 0\n\t) {\n\t\t// snabbdom still doesn't handle DocumentFragment correctly\n\t\t// so we need to manually add the children\n\t\tconst {length: childrenCount} = node.childNodes;\n\t\tfor (let i = 0; i < childrenCount; i++) {\n\t\t\tconst childVNode = toVNodeFromServerSideRenderedNode(node.childNodes[i]);\n\t\t\t// skip the nullified child node if it has non-falsy NOW_EXCLUDED_FROM_HYDRATION_ATTR attribute\n\t\t\tif (childVNode) {\n\t\t\t\tvnode.children.push(childVNode);\n\t\t\t}\n\t\t}\n\t}\n\tconst signedVnode = sign(vnode);\n\tfixNamespace(signedVnode); // fixes issue with missing namespace for svgs: https://github.com/snabbdom/snabbdom/issues/388\n\treturn signedVnode;\n}\n\nconst fixNamespace = (vnode, xmlns = vnode.data && vnode.data.attrs && vnode.data.attrs.xmlns) => {\n\tconst {children, data} = vnode;\n\n\tif (data && !data.ns && xmlns) data.ns = xmlns;\n\n\tif (children) {\n\t\tconst {length: childrenCount} = children;\n\t\tfor (let i = 0; i < childrenCount; i++) fixNamespace(children[i], xmlns);\n\t}\n};\n","import {\n\tcreateInteractionId,\n\tsetInteractionId,\n\tmark,\n\ttypes as metrics\n} from '@servicenow/ui-metrics';\nimport {\n\terrorTypes,\n\tlocations,\n\ttoLower,\n\tallLogTypes as logTypes,\n\tACTIVE_SPAN,\n\tVARIABLES,\n\tEXISTING_SHADOW_ROOT_ON_CREATE\n} from '@servicenow/ui-internal';\nimport {patch, hydrate} from './utils';\nimport {VNODE, INTERACTION_ID} from './symbols';\nimport createElementFromNode, {\n\tcreateElementFromServerSideRenderedNode\n} from './createElementFromNode';\nimport log from './log';\n\nconst noop = () => null;\n\nconst helperNoop = Object.assign(noop, {\n\tdispatch: noop,\n\tupdateState: noop,\n\tupdateProperties: noop\n});\n\n/**\n * Renders a view using Snabbdom\n * @method render\n * @param {HTMLElement} element Element to append rendered view to\n * @param {Function} handler Render function\n * @param {Object} [props = {}] Optional properties object\n * @param {Object } [helpers] Optional object containing helpful functions, such as dispatch, updateState, and updateProperties\n * @param {Function} [helpers.dispatch] Optional function for dispatching actions\n * @param {Function} [helpers.updateState] Optional function for updating component state\n * @param {Function} [helpers.updateProperties] Optional function for updating component properties\n * @param {String} [interactionId] Optional identifier used by ui-metrics for instrumentation\n * @returns {VNode}\n */\nexport default function onStateChange(\n\telement,\n\thandler,\n\tprops = {},\n\thelpers = helperNoop,\n\tinteractionId = createInteractionId(),\n\tspan\n) {\n\t// The renderer is sometimes used to render DOM to native elements, typically in test fixtures\n\t// or example code.  Since we're not in a shadowRoot, we're not in a framework element, we\n\t// shouldn't mark as context is not complete, e.g. componentId, componentName, etc are missing\n\t// from `element.host`.\n\tconst isShadowRoot = element instanceof ShadowRoot;\n\tconst getHostVariables = () => element?.host?.[VARIABLES];\n\n\ttry {\n\t\tconst result = handler(props, helpers);\n\t\tconst serverSideRendered = getHostVariables()?.[EXISTING_SHADOW_ROOT_ON_CREATE];\n\t\tconst prev =\n\t\t\telement[VNODE] ||\n\t\t\t(serverSideRendered\n\t\t\t\t? createElementFromServerSideRenderedNode(element)\n\t\t\t\t: createElementFromNode(element));\n\t\tconst styles = [];\n\t\tconst {children} = prev;\n\t\tconst {length: childrenCount} = children;\n\t\tfor (let i = 0; i < childrenCount; i++) {\n\t\t\tconst child = children[i];\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\ttypeof child.sel === 'string' &&\n\t\t\t\t(child.sel.startsWith('style') || child.sel.startsWith('link'))\n\t\t\t)\n\t\t\t\tstyles.push(child);\n\t\t}\n\n\t\tconst next = {\n\t\t\t...prev,\n\t\t\tchildren: [].concat(result, styles)\n\t\t};\n\n\t\tconst {host = {}} = element;\n\t\thost[INTERACTION_ID] = interactionId; // eslint-disable-line no-param-reassign\n\t\tif (span) host[ACTIVE_SPAN] = span; // eslint-disable-line no-param-reassign\n\t\tif (isShadowRoot) mark(host, interactionId, metrics.PATCH_START, {location: locations.VIEW});\n\n\t\tif (isShadowRoot) mark(host, interactionId, metrics.PATCH_END, {location: locations.VIEW});\n\n\t\tlet resultVnode = element[VNODE];\n\t\tif (!element[VNODE] && result && serverSideRendered) {\n\t\t\tconst {error} = hydrate(prev, next);\n\t\t\tif (!error) {\n\t\t\t\tresultVnode = next;\n\t\t\t} else {\n\t\t\t\tconst tagName = toLower(host.tagName);\n\t\t\t\tconst componentId = host.getAttribute('component-id');\n\n\t\t\t\tlog(\n\t\t\t\t\t`Error occurred while hydrating <${tagName} component-id=\"${componentId}\"/>. Mismatch between server rendered: ${error.server} and client rendered: ${error.client}. Falling back to patching the DOM.`,\n\t\t\t\t\t{origin: 'hydrate'}\n\t\t\t\t);\n\t\t\t\tresultVnode = patch(prev, {\n\t\t\t\t\t...prev,\n\t\t\t\t\tchildren: []\n\t\t\t\t});\n\t\t\t\tresultVnode = patch(resultVnode, next);\n\t\t\t}\n\t\t} else {\n\t\t\tresultVnode = patch(prev, next);\n\t\t}\n\n\t\telement[VNODE] = resultVnode; // eslint-disable-line no-param-reassign\n\t\tdelete host[INTERACTION_ID]; // eslint-disable-line no-param-reassign\n\t\tqueueMicrotask(() => {\n\t\t\tdelete host[ACTIVE_SPAN]; // eslint-disable-line no-param-reassign\n\t\t});\n\t\treturn resultVnode;\n\t} catch (e) {\n\t\tconst {host = {}} = element;\n\t\tconst metadata = setInteractionId({internal: true}, interactionId);\n\n\t\tif (isShadowRoot) mark(host, interactionId, metrics.ERROR, {location: locations.VIEW});\n\n\t\thelpers.dispatch(\n\t\t\terrorTypes.COMPONENT_ERROR_THROWN,\n\t\t\t{\n\t\t\t\thost,\n\t\t\t\tlocation: locations.VIEW,\n\t\t\t\terror: e,\n\t\t\t\tdetails: {boundaryError: true}\n\t\t\t},\n\t\t\tmetadata,\n\t\t\ttrue\n\t\t);\n\n\t\tconst tagName = toLower(host.tagName);\n\t\tconst componentId = host.getAttribute('component-id');\n\n\t\tlog(\n\t\t\t`An Error occurred in <${tagName} component-id=\"${componentId}\"/>. COMPONENT_ERROR_THROWN action type is dispatched with error details.`,\n\t\t\t{error: e, level: logTypes.ERROR, host, origin: 'onStateChange'}\n\t\t);\n\n\t\treturn createElementFromNode(element);\n\t}\n}\n","import {patch} from './utils';\nimport {VNODE} from './symbols';\n\n/**\n * Patches an empty tree to a container so we run hooks and cleanup\n * @param {HTMLElement} element Element being disconnected\n * @param {Function} [dispatch] function contextualized to the element\n * @param {Function} [next] function to call after disconnect\n */\nexport default function onDisconnect(element, dispatch, next = () => null) {\n\tconst prev = element[VNODE];\n\n\tconst styles = [];\n\tconst {children} = prev;\n\tconst {length: childrenCount} = children;\n\tfor (let i = 0; i < childrenCount; i++) {\n\t\tconst child = children[i];\n\t\tif (\n\t\t\tchild &&\n\t\t\ttypeof child.sel === 'string' &&\n\t\t\t(child.sel.startsWith('style') || child.sel.startsWith('link'))\n\t\t)\n\t\t\tstyles.push(child);\n\t}\n\n\tconst nextEl = {\n\t\t...prev,\n\t\tchildren: styles\n\t};\n\n\tpatch(prev, nextEl, {disconnect: true});\n\n\tdelete element[VNODE]; // eslint-disable-line no-param-reassign\n\tnext();\n}\n",null,"// TODO (webpack v5): drop the `build/package/` part of these import paths.\n// Snabbdom>=1 uses the package.json#exports field that webpack v4 doesn't know\n// about\n//\n// https://github.com/webpack/webpack/issues/9509\n// https://webpack.js.org/guides/package-exports/\nimport {signingH} from 'snabbdom-signature';\nimport {h as unsignedH} from 'snabbdom/build/package/h';\nimport {formatProps, validateProps, flat, formatChildren} from './utils';\n\nconst signedH = signingH(unsignedH);\n\n/**\n * Creates an element for the virtual DOM\n * @method createElement\n * @param {(string|function)} tag Name of the tag or a functional component\n * @param {object} [props] Properties\n * @param {object} [children] Child nodes\n * @returns {*}\n */\nexport default function createElement(tag, props, ...children) {\n\tif (typeof tag === 'function') return tag(props || {}, flat(children));\n\n\treturn signedH(\n\t\ttag,\n\t\tprops ? formatProps(tag, validateProps(props)) : {},\n\t\tformatChildren(children)\n\t);\n}\n","// @jsx createElement\nimport createElement from './createElement'; // eslint-disable-line no-unused-vars\n\nfunction insertChildern(children, name) {\n\tif (!children) return null;\n\n\tif (children && !name) return children;\n\n\tconst slotted = [];\n\tconst {length: childrenCount} = children;\n\tfor (let i = 0; i < childrenCount; i++) {\n\t\tconst child = children[i];\n\t\tif (name === (child.data && child.data.props && child.data.props.slot)) slotted.push(child);\n\t}\n\n\treturn slotted;\n}\n\n/**\n * Creates a slot using snabbdom\n * @method createSlot\n * @param children\n * @param name\n * @returns {*}\n */\nexport default function createSlot(children, name) {\n\treturn <slot name={name}>{insertChildern(children, name)}</slot>;\n}\n","import createElementFromNode from './createElementFromNode';\nimport {allLogTypes as logTypes} from '@servicenow/ui-internal';\nimport log from './log';\n\n/**\n * Creates an element for the virtual DOM from a string of HTML. WARNING: This method does not\n * sanitize the HTML string passed to it. If you use this method you may be vulnerable to\n * XSS attacks if you do not take the right precautions.\n *\n * @method createElementFromString\n * @param {String} html String of html to parse and convert to a vnode\n * @returns {VNode} The vnode to use in the virtual DOM\n */\nexport default function createElementFromString(html) {\n\tlog(\n\t\t'createElementFromString has been deprecated. Please use dangerouslyCreateElementFromString and make sure you are taking the necessary precautions to prevent XSS attacks',\n\t\t{level: logTypes.ERROR, origin: 'createElementFromString'}\n\t);\n\n\tif (!document || !document.createElement) return;\n\n\tconst element = document.createElement('div');\n\telement.innerHTML = html;\n\treturn createElementFromNode(element.firstChild);\n}\n","import createElementFromNode from './createElementFromNode';\n\n/**\n * Creates an element for the virtual DOM from a string of HTML. WARNING: This method does not\n * sanitize the HTML string passed to it. If you use this method you may be vulnerable to\n * XSS attacks if you do not take the right precautions.\n *\n * @method dangerouslyCreateElementFromString\n * @param {String} html String of html to parse and convert to a vnode\n * @returns {VNode} The vnode to use in the virtual DOM\n */\nexport default function dangerouslyCreateElementFromString(html) {\n\tif (!document || !document.createElement) return;\n\n\tconst element = document.createElement('div');\n\telement.innerHTML = html;\n\treturn createElementFromNode(element.firstChild);\n}\n","/**\n * Helper component for returning an array of vnodes from a view function\n *\n * @example\n * import {Fragment} from '@servicenow/ui-renderer-snabbdom';\n *\n * function view(state, dispatch) {\n *     return (\n *         <Fragment>\n *             <div>Foo</div>\n *             <div>Bar</div>\n *             <div>Baz</div>\n *         </Fragment>\n *     );\n * }\n *\n * @method Fragment\n * @param props\n * @param children\n * @returns {*}\n */\nexport default function Fragment(props, children) {\n\treturn children;\n}\n","import renderer from '@servicenow/ui-renderer-default';\n\nexport const DEFAULT_RENDERER = {\n\ttype: renderer,\n\ttransformState: state => state,\n\tview: () => null\n};\n","import {DEFAULT_RENDERER} from '../defaults';\nimport {get} from '@servicenow/ui-internal';\n\nexport default function resolveRenderer(config = {}) {\n\tconst type = get(config, 'renderer.type', config.type || DEFAULT_RENDERER.type);\n\tconst coeffects = get(config, 'renderer.coeffects', null);\n\tconst transformProps = get(\n\t\tconfig,\n\t\t'renderer.transformProps',\n\t\tconfig.transformProps || DEFAULT_RENDERER.transformState\n\t);\n\tconst transformState = get(\n\t\tconfig,\n\t\t'renderer.transformState',\n\t\tconfig.transformState || transformProps\n\t);\n\tconst view = get(config, 'renderer.view', config.view || DEFAULT_RENDERER.view);\n\n\treturn {\n\t\ttype,\n\t\ttransformState,\n\t\tview,\n\t\tcoeffects\n\t};\n}\n","import {memoize, kebabCase} from '@servicenow/ui-internal';\n\nexport default memoize(\n\tfunction toAttributeName(propName) {\n\t\treturn kebabCase(propName);\n\t},\n\t{profileName: 'toAttributeName'}\n);\n","import {PROPERTY_SELECTOR_SIGIL} from '../constants';\n\n/**\n * Create a function for mapping a provider compoent id, property selector, to a consumer component id, property name and path\n * Sample mapping Obj\n * mappings: {\n * \tproviderComponent@providerProp: {\n * \t\tselectorId@selectorProp: 'pathValue'\n * \t}\n * }\n * @function createAddMapping\n * @private\n * @param {Object} mappings\n * @returns {function} - A function for adding a mapping\n */\nexport default function createAddMapping(mappings) {\n\t/**\n\t * @function addMapping\n\t * @private\n\t * @param {Object} providerDetail - A object that will contain providerId, providerPropName, providerPropPath\n\t * @param {Object} consumerDetail - A object that will contain consumerId, consumerPropName\n\t */\n\treturn function addMapping(providerDetail, consumerDetail) {\n\t\tconst {providerId, providerPropName, providerPropPath} = providerDetail;\n\t\tconst {consumerId, consumerPropName} = consumerDetail;\n\t\tconst providerKey = `${providerId}${PROPERTY_SELECTOR_SIGIL}${providerPropName}`;\n\t\tconst consumerKey = `${consumerId}${PROPERTY_SELECTOR_SIGIL}${consumerPropName}`;\n\n\t\tif (!mappings[providerKey]) mappings[providerKey] = {}; // eslint-disable-line no-param-reassign\n\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tmappings[providerKey][consumerKey] = providerPropPath;\n\t};\n}\n","import {PROPERTY_SELECTOR_SIGIL} from '../constants';\n/**\n * Create a function removing mapped components by component id and optionally property name\n * @function createRemoveMappings\n * @private\n *\n * @param {Object} mappings - A object that will contain mappings\n * @returns {function} - A function for removing mapped components by component id and optionally property name\n */\nexport default mappings =>\n\tfunction removeMappings(elementId, propertyName) {\n\t\tif (elementId && propertyName) {\n\t\t\tfor (const key in mappings) {\n\t\t\t\tconst selectorKey = mappings[key][`${elementId}${PROPERTY_SELECTOR_SIGIL}${propertyName}`];\n\t\t\t\tif (selectorKey === '' || selectorKey)\n\t\t\t\t\tdelete mappings[key][`${elementId}${PROPERTY_SELECTOR_SIGIL}${propertyName}`]; // eslint-disable-line no-param-reassign\n\n\t\t\t\tif (Object.keys(mappings[key]).length === 0) delete mappings[key]; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t}\n\n\t\tif (elementId && !propertyName) {\n\t\t\tfor (const key in mappings) {\n\t\t\t\tfor (const subKey in mappings[key]) {\n\t\t\t\t\tconst componentId = subKey.split(PROPERTY_SELECTOR_SIGIL)[0];\n\t\t\t\t\tif (componentId === elementId) delete mappings[key][subKey]; // eslint-disable-line no-param-reassign\n\t\t\t\t}\n\n\t\t\t\tif (Object.keys(mappings[key]).length === 0) delete mappings[key]; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t}\n\t};\n","import getHostVariables from '../utils/getHostVariables';\nimport {PROPERTY_DEFS} from '../symbols';\n\nexport default function isSelectableProperty(componentRegistry, id, name) {\n\tconst el = componentRegistry[id];\n\tconst hostVariables = getHostVariables(el);\n\tif (el) {\n\t\tconst propertyDefs = hostVariables[PROPERTY_DEFS];\n\n\t\treturn (propertyDefs[name] && propertyDefs[name].selectable) || false;\n\t}\n\n\treturn false;\n}\n","import {PROPERTY_SELECTOR_SIGIL} from '../constants';\nimport isSelectableProperty from './isSelectableProperty';\n/**\n * Create a function for getting components affected by a property name and source component id\n * @function createGetAffected\n * @private\n *\n * @param {Object} mappings - A object that will contain mappings\n * @returns {function} - A function for getting components affected by a property name and source component id\n */\nexport default mappings =>\n\tfunction getAffected(propertyName, providerId, componentRegistry, includeSource = true) {\n\t\tconst sourceAffected = includeSource\n\t\t\t? {[`${providerId}${PROPERTY_SELECTOR_SIGIL}${propertyName}`]: ''}\n\t\t\t: {};\n\t\tlet componentsAffected = {\n\t\t\t...mappings[`${providerId}${PROPERTY_SELECTOR_SIGIL}${propertyName}`]\n\t\t};\n\n\t\tif (!Object.keys(componentsAffected).length) return sourceAffected;\n\n\t\tif (!isSelectableProperty(componentRegistry, providerId, propertyName)) return sourceAffected;\n\n\t\t(function getAffectedSelectorChain(componentMap) {\n\t\t\tfor (const selectorMap in componentMap) {\n\t\t\t\tif (mappings[selectorMap]) {\n\t\t\t\t\tcomponentsAffected = {\n\t\t\t\t\t\t...componentsAffected,\n\t\t\t\t\t\t...mappings[selectorMap]\n\t\t\t\t\t};\n\t\t\t\t\tgetAffectedSelectorChain(mappings[selectorMap]);\n\t\t\t\t}\n\t\t\t}\n\t\t})(componentsAffected);\n\n\t\treturn {\n\t\t\t...sourceAffected,\n\t\t\t...componentsAffected\n\t\t};\n\t};\n","import {PROPERTY_SELECTOR_SIGIL} from '../constants';\n\n// TODO: this should be refactored to remove some redundancy with creatGetAffected\nexport default mappings =>\n\tfunction getComponentAffected(propertyName, providerId) {\n\t\tlet componentsAffected = {\n\t\t\t...mappings[`${providerId}${PROPERTY_SELECTOR_SIGIL}${propertyName}`]\n\t\t};\n\n\t\tif (!Object.keys(componentsAffected).length) return componentsAffected;\n\n\t\t(function getAffectedSelectorChain(componentMap) {\n\t\t\tfor (const selectorMap in componentMap) {\n\t\t\t\tif (mappings[selectorMap]) {\n\t\t\t\t\tcomponentsAffected = {\n\t\t\t\t\t\t...componentsAffected,\n\t\t\t\t\t\t...mappings[selectorMap]\n\t\t\t\t\t};\n\t\t\t\t\tgetAffectedSelectorChain(mappings[selectorMap]);\n\t\t\t\t}\n\t\t\t}\n\t\t})(componentsAffected);\n\n\t\treturn componentsAffected;\n\t};\n","/**\n * Create a function to update the existing map with a providerDetail key and its resolved value\n * Sample mapping Obj\n * mappings: {\n * \tproviderComponent{\n * \t\tproviderProp: resolvedValue\n * \t\t}\n * }\n * @param resolvedMappings\n * @returns {(function(*, *): void)}\n */\nexport default function createAddResolvedPropertyMapping(resolvedMappings) {\n\treturn function addResolvedPropertyMapping(providerDetail, resolvedValue) {\n\t\tconst {providerId, providerPropName} = providerDetail;\n\t\tif (!resolvedMappings.has(providerId)) resolvedMappings.set(providerId, new Map());\n\t\tresolvedMappings.get(providerId).set(providerPropName, resolvedValue);\n\t};\n}\n","export default function createAddSelectablePropertyMapping(resolvedMappings) {\n\treturn function (consumerDetail, resolvedValue) {\n\t\tconst {consumerId, consumerPropName} = consumerDetail;\n\t\tif (!resolvedMappings.has(consumerId)) resolvedMappings.set(consumerId, new Map());\n\t\tresolvedMappings.get(consumerId).set(consumerPropName, resolvedValue);\n\t};\n}\n","import {PROPERTY_SELECTOR_SIGIL} from '../constants';\n\nexport default resolvedMappings =>\n\tfunction resolvedMappingHasKey(key) {\n\t\tconst [componentId, componentPropName] = key.split(PROPERTY_SELECTOR_SIGIL);\n\t\tif (!resolvedMappings.has(componentId)) return false;\n\n\t\treturn resolvedMappings.get(componentId).has(componentPropName);\n\t};\n","import {PROPERTY_SELECTOR_SIGIL} from '../constants';\n\nexport default resolvedMappings =>\n\tfunction getResolvedPropertyValue(key) {\n\t\tconst [componentId, componentPropName] = key.split(PROPERTY_SELECTOR_SIGIL);\n\t\tif (!resolvedMappings.has(componentId)) return;\n\t\treturn resolvedMappings.get(componentId).get(componentPropName);\n\t};\n","import {PROPERTY_SELECTOR_SIGIL} from '../constants';\nimport {isEqual} from '@servicenow/ui-utils';\n\n/**\n * function to remove the entry from the resolvedSelectedPropertyMapping\n * 1. remove the entry if found\n * 2. If the entry to be deleted has impacted consumer components, those impacted ones will be cleared too\n * @param resolvedMappings\n * @param selectedMappings\n * @returns {(function(*, *, *): void)}\n */\nexport default (resolvedMappings, selectedMappings) =>\n\tfunction removeResolvedPropertyMapping(providerId, providerPropName, newValue) {\n\t\tif (!providerId) return;\n\t\tif (!resolvedMappings.has(providerId)) return;\n\n\t\tif (providerPropName) {\n\t\t\tconst existingResolvedProviderMapping = resolvedMappings.get(providerId);\n\t\t\tif (!existingResolvedProviderMapping.has(providerPropName)) return;\n\t\t\tif (!isEqual(newValue, existingResolvedProviderMapping.get(providerPropName))) {\n\t\t\t\texistingResolvedProviderMapping.delete(providerPropName);\n\t\t\t\tif (existingResolvedProviderMapping.size === 0) resolvedMappings.delete(providerId);\n\t\t\t\tdeleteImpactedMapping(selectedMappings, providerId, providerPropName, resolvedMappings);\n\t\t\t}\n\t\t} else {\n\t\t\tresolvedMappings.get(providerId).forEach((value, propName) => {\n\t\t\t\tdeleteImpactedMapping(selectedMappings, providerId, propName, resolvedMappings);\n\t\t\t});\n\t\t\tresolvedMappings.delete(providerId);\n\t\t}\n\t};\n\n// need to clear cached values for selectable consumer values down the chain\nfunction deleteImpactedMapping(selectedMappings, providerId, providerPropName, resolvedMappings) {\n\tconst selectorKey = `${providerId}${PROPERTY_SELECTOR_SIGIL}${providerPropName}`;\n\tconst impactedMappings = selectedMappings[selectorKey];\n\tif (!impactedMappings) return;\n\n\tfor (const impactedMappingKey in impactedMappings) {\n\t\tconst [componentId, componentPropName] = impactedMappingKey.split(PROPERTY_SELECTOR_SIGIL);\n\t\tconst existingResolvedEntry = resolvedMappings.get(componentId);\n\t\tif (existingResolvedEntry && existingResolvedEntry.has(componentPropName)) {\n\t\t\texistingResolvedEntry.delete(componentPropName);\n\t\t\tif (existingResolvedEntry.size === 0) resolvedMappings.delete(componentId);\n\n\t\t\tdeleteImpactedMapping(selectedMappings, componentId, componentPropName, resolvedMappings);\n\t\t}\n\t}\n}\n","import {PROPERTY_SELECTOR_SIGIL} from '../constants';\n\n/**\n * Create a function to add to resolvedPropertyMappings with a key and its resolved value\n * The key should look like this: providerComponent@providerProp\n * @param resolvedMappings\n * @returns {(function(*, *): void)}\n */\nexport default function createAddResolvedPropertyMappingWithKey(resolvedMappings) {\n\treturn function (key, resolvedValue) {\n\t\tconst [componentId, componentPropName] = key.split(PROPERTY_SELECTOR_SIGIL);\n\t\tif (!resolvedMappings.has(componentId)) resolvedMappings.set(componentId, new Map());\n\t\tresolvedMappings.get(componentId).set(componentPropName, resolvedValue);\n\t};\n}\n","import {getSelectorParts, isSelectableProperty, isSelector} from './';\n\nfunction resolveSelectorChain(id, name, path, propertyResolver, componentRegistry) {\n\tconst property = propertyResolver(componentRegistry, id, name, path);\n\tif (property && property[0] === '@') {\n\t\tconst [id, name, path] = getSelectorParts(property);\n\t\treturn resolveSelectorChain(id, name, path, propertyResolver, componentRegistry);\n\t}\n\n\treturn property;\n}\n\n/**\n * Returns property selector parts for a single property\n * @function resolveSelectedProperty\n * @private\n *\n * @param {Object} componentRegistry - Component registry\n * @param {function} propertyResolver - Returns the value for a property\n * @param {Object} property - property to be resolved\n * @param {Object} propertyDef - property definition from the config\n * @returns {Object} - The  resolved property\n */\nexport default function resolveSelectedProperty(\n\tcomponentRegistry,\n\tpropertyResolver,\n\tproperty,\n\tpropertyDef\n) {\n\tconst [id, name, path] = getSelectorParts(property);\n\n\tif (!id || !name) return property;\n\n\tconst defaultValue = propertyDef && propertyDef.default;\n\tif (!isSelectableProperty(componentRegistry, id, name))\n\t\treturn !isSelector(defaultValue) ? defaultValue : undefined;\n\n\tconst resolvedValue = resolveSelectorChain(id, name, path, propertyResolver, componentRegistry);\n\tif (resolvedValue !== undefined) return resolvedValue;\n\n\treturn !isSelector(defaultValue) ? defaultValue : undefined;\n}\n","import {resolveSelectedProperty} from './index';\nimport {selectablePropertyResolver} from '../utils';\n\nexport default function resolveProviderSelectedProperty(\n\tpropertyValue,\n\tproviderPropPath,\n\tcomponentRegistry,\n\tpropertyDef\n) {\n\tif (providerPropPath) {\n\t\treturn resolveSelectedProperty(\n\t\t\tcomponentRegistry,\n\t\t\tselectablePropertyResolver,\n\t\t\tpropertyValue.substring(0, propertyValue.length - providerPropPath.length),\n\t\t\tpropertyDef\n\t\t);\n\t}\n\treturn resolveSelectedProperty(\n\t\tcomponentRegistry,\n\t\tselectablePropertyResolver,\n\t\tpropertyValue,\n\t\tpropertyDef\n\t);\n}\n","import {get} from '@servicenow/ui-internal';\nimport {isSelector} from '../property-selectors';\n\n/**\n * Utility function to get resolved value with a path\n * @param resolvedValue\n * @param path\n * @returns {*}\n */\nexport default function getResolvedValue(resolvedValue, path, propertyDef) {\n\tif (resolvedValue && path) {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tresolvedValue = get(resolvedValue, path);\n\t}\n\n\tif (\n\t\tresolvedValue === undefined &&\n\t\tpropertyDef?.default !== undefined &&\n\t\t!isSelector(propertyDef?.default)\n\t) {\n\t\treturn propertyDef.default;\n\t}\n\n\treturn resolvedValue;\n}\n","import {getSelectorParts} from '../property-selectors';\nimport {getHostVariables, isComputedProperty} from './index';\nimport {PROPERTY_DEFS} from '../symbols';\n\n/**\n * Util function to determine if a resolved selected property should be added to the mapping\n * If provider's property is computed, it always needs to be recalculated at runtime\n * So returns false\n * @param propValue\n * @param componentRegistry\n * @returns {boolean}\n */\nexport default function shouldAddToResolvedPropertyMapping(propValue, componentRegistry) {\n\tconst [id, name] = getSelectorParts(propValue);\n\tconst component = componentRegistry[id];\n\tif (!component) return false;\n\n\treturn !isComputedProperty(name, getHostVariables(component)?.[PROPERTY_DEFS]);\n}\n","import {\n\taddResolvedPropertyMappingWithKey,\n\tgetResolvedProperty,\n\tresolveMappingHasKey\n} from './index';\nimport resolveProviderSelectedProperty from './resolveProviderSelectedProperty';\nimport getResolvedValue from '../utils/getResolvedValue';\nimport shouldAddToResolvedPropertyMapping from '../utils/shouldAddToResolvedPropertyMapping';\nimport {set, get} from '@servicenow/ui-internal';\n\n/**\n * Returns property selector parts for a set of properties\n * @function resolveSelectedProperties\n * @private\n *\n * @param {Object} componentRegistry - Component registry\n * @param {function} propertyResolver - Returns the value for a property\n * @param {Object} properties - A set of properties to be resolved\n * @param {Object} propertiesDef - property definition from the config\n * @param {Object} propWithSelector - A variable from the component\n * @returns {Object} - A set of resolved properties\n */\nexport default function resolveSelectedProperties(\n\tcomponentRegistry,\n\tpropertyResolver,\n\tproperties,\n\tpropertiesDef = {},\n\tpropWithSelector\n) {\n\tif (Object.entries(propWithSelector).length === 0) {\n\t\treturn properties;\n\t}\n\n\tconst resolved = {...properties};\n\tfor (const propName in propWithSelector) {\n\t\tconst [id, path] = propWithSelector[propName];\n\t\tconst hasBeenResolved = resolveMappingHasKey(id);\n\n\t\tif (hasBeenResolved) {\n\t\t\tconst resolvedValueObj = getResolvedProperty(id);\n\t\t\tset(resolved, propName, getResolvedValue(resolvedValueObj, path, propertiesDef[propName]));\n\t\t} else {\n\t\t\tconst propDef = propertiesDef[propName];\n\t\t\tconst propertyValue = get(properties, propName);\n\t\t\tconst resolvedValue = resolveProviderSelectedProperty(\n\t\t\t\tpropertyValue,\n\t\t\t\tpath,\n\t\t\t\tcomponentRegistry,\n\t\t\t\tpropDef\n\t\t\t);\n\t\t\tset(resolved, propName, getResolvedValue(resolvedValue, path, propertiesDef[propName]));\n\t\t\tif (shouldAddToResolvedPropertyMapping(propertyValue, componentRegistry))\n\t\t\t\taddResolvedPropertyMappingWithKey(id, resolvedValue);\n\t\t}\n\t}\n\n\treturn resolved;\n}\n","import {memoize} from '@servicenow/ui-internal';\n\nconst getParts = memoize(\n\tvalue => {\n\t\tconst slashIndex = value.indexOf('/');\n\n\t\tif (slashIndex === -1) return [];\n\n\t\tconst [delimeter, pathSplitIndex] = getDelimeterDetail(value);\n\n\t\treturn [\n\t\t\tvalue.substring(1, slashIndex),\n\t\t\tvalue.substring(\n\t\t\t\tslashIndex + 1,\n\t\t\t\tpathSplitIndex === -1\n\t\t\t\t\t? value.length\n\t\t\t\t\t: delimeter === '.'\n\t\t\t\t\t? pathSplitIndex\n\t\t\t\t\t: pathSplitIndex + 1\n\t\t\t),\n\t\t\tpathSplitIndex !== -1 ? value.substring(pathSplitIndex + 1) : ''\n\t\t];\n\t},\n\t{profileName: 'getParts'}\n);\n\nconst getDelimeterDetail = selector => {\n\tconst {length: selectorLength} = selector;\n\tfor (let i = 0; i < selectorLength; i++) {\n\t\tconst value = selector.charAt(i);\n\t\tif (value === '.') return [value, i];\n\t\tif (value === '[') return [value, i - 1];\n\t}\n\n\treturn ['', -1];\n};\n\n/**\n * Returns property selector parts, id and property name\n * @function getSelectorParts\n * @private\n *\n * @param {Object} mappings - A object that will contain mappings\n * @returns {Array} - Property selector parts, id, property name and path\n */\nexport default function getSelectorParts(value) {\n\tif (typeof value !== 'string') return [];\n\tif (value[0] !== '@') return [];\n\n\treturn getParts(value);\n}\n","import {memoize} from '@servicenow/ui-internal';\n\nconst hasSeperator = memoize(value => value.indexOf('/') > 0, {profileName: 'hasSeperator'});\n\nexport default function isSelector(value) {\n\treturn typeof value === 'string' && value[0] === '@' && hasSeperator(value);\n}\n","import isSelector from './isSelector';\nimport {getSelectorParts} from './index';\nimport {PROPERTY_SELECTOR_SIGIL} from '../constants';\n\n/**\n * function to update an object of selectedProperties\n * example obj:\n * resolvedSelectedPropertyMapKey = providerComponentId@PropName\n * {\n *     propertyName: [resolvedSelectedPropertyMapKey, pathValue]\n * }\n * @param {string} propertyName\n * @param {string} propertyValue\n * @param {object} selectedProperties\n */\nexport default function updatePropertiesWithSelector(\n\tpropertyName,\n\tpropertyValue,\n\tselectedProperties\n) {\n\tif (!isSelector(propertyValue)) return;\n\n\tconst [id, name, path] = getSelectorParts(propertyValue);\n\tconst key = `${id}${PROPERTY_SELECTOR_SIGIL}${name}`;\n\tselectedProperties[propertyName] = [key, path];\n}\n","import {memoize} from '@servicenow/ui-internal';\nimport log from '../log';\n\n/**\n * Returns parts for nested selectable properties\n * @function getPartsForNestedSelectableProps\n * @private\n *\n * @param {string} value - The value to be split\n * @returns {Array} - The parts of the value, first element is the root prop name,\n * the second element is path within the object that has the selectable prop\n */\nexport default memoize(\n\tvalue => {\n\t\tconst dotIndex = value.indexOf('.');\n\n\t\tif (dotIndex === -1) {\n\t\t\tlog(`Invalid nested selectable property name: ${value}`, {\n\t\t\t\torigin: 'get_parts_for_nested_selectable_props'\n\t\t\t});\n\t\t\treturn [];\n\t\t}\n\n\t\tconst path = value.substring(dotIndex + 1);\n\n\t\tif (!path) {\n\t\t\tlog(`Invalid nested selectable property name: ${value}`, {\n\t\t\t\torigin: 'get_parts_for_nested_selectable_props'\n\t\t\t});\n\t\t\treturn [];\n\t\t}\n\n\t\treturn [value.substring(0, dotIndex), path];\n\t},\n\t{profileName: 'getPartsForNestedSelectableProps'}\n);\n","import updatePropertiesWithSelector from './updatePropertiesWithSelector';\nimport {updateSelectedPropertyMappings, updateResolvedSelectedPropertyMappings} from '../utils';\n\nexport default function applyUpdatesForSelectableProps({\n\tname,\n\tvalue,\n\tpropertiesWithSelector,\n\tcomponentId,\n\tpropertyDetails,\n\tcomponentRegistry,\n\tnormalizedConfigForProp\n}) {\n\tupdatePropertiesWithSelector(name, value, propertiesWithSelector);\n\tupdateSelectedPropertyMappings(value, name, componentId);\n\tupdateResolvedSelectedPropertyMappings(\n\t\tpropertyDetails,\n\t\tname,\n\t\tcomponentId,\n\t\tcomponentRegistry,\n\t\tnormalizedConfigForProp,\n\t\tpropertiesWithSelector\n\t);\n}\n","import {selectablePropertyResolver} from '../utils';\nimport resolveSelectedProperty from './resolveSelectedProperty';\n\nexport default function createUnstableResolvePropertySelectorValue(componentRegistry) {\n\treturn function unstableResolvePropertySelectorValue(propertySelector) {\n\t\treturn resolveSelectedProperty(\n\t\t\tcomponentRegistry,\n\t\t\tselectablePropertyResolver,\n\t\t\tpropertySelector,\n\t\t\t{}\n\t\t);\n\t};\n}\n","import {COMPONENT_ID} from '../symbols';\nimport {updateSelectedPropertyMappings, getHostVariables} from '../utils';\n\nexport default function unstableAddRenderOnPropertySelectorValueChange(host, propertySelector) {\n\tconst hostVariables = getHostVariables(host);\n\tupdateSelectedPropertyMappings(propertySelector, propertySelector, hostVariables[COMPONENT_ID]);\n}\n","import {getHostVariables} from '../utils';\nimport {COMPONENT_ID} from '../symbols';\nimport {removeMappings} from '../property-selectors';\n\nexport default function unstableRemoveRenderOnPropertySelectorValueChange(host, propertySelector) {\n\tconst hostVariables = getHostVariables(host);\n\tremoveMappings(hostVariables[COMPONENT_ID], propertySelector);\n}\n","import createAddMapping from './createAddMapping';\nimport createRemoveMappings from './createRemoveMappings';\nimport createGetAffected from './createGetAffected';\nimport createGetComponentAffected from './createGetComponentAffected';\nimport createAddResolvedPropertyMapping from './createAddResolvedPropertyMapping';\nimport createAddSelectablePropertyMapping from './createAddSelectablePropertyMapping';\nimport resolvedMappingHasKey from './resolvedMappingHasKey';\nimport getResolvedPropertyValue from './getResolvedPropertyValue';\nimport createRemoveResolvedPropertyMapping from './createRemoveResolvedPropertyMapping';\nimport createAddResolvedPropertyMappingWithKey from './createAddResolvedPropertyMappingWithKey';\n\nconst mappings = {};\nconst resolvedPropertyMappings = new Map();\n\nexport const addMapping = createAddMapping(mappings);\nexport const removeMappings = createRemoveMappings(mappings);\nexport const getAffected = createGetAffected(mappings);\nexport const getComponentAffected = createGetComponentAffected(mappings);\nexport const addResolvedPropertyMapping =\n\tcreateAddResolvedPropertyMapping(resolvedPropertyMappings);\nexport const removeResolvedMapping = createRemoveResolvedPropertyMapping(\n\tresolvedPropertyMappings,\n\tmappings\n);\nexport const addResolvedPropertyMappingWithKey =\n\tcreateAddResolvedPropertyMappingWithKey(resolvedPropertyMappings);\nexport const addSelectableResolvedPropertyMapping =\n\tcreateAddSelectablePropertyMapping(resolvedPropertyMappings);\nexport const resolveMappingHasKey = resolvedMappingHasKey(resolvedPropertyMappings);\nexport const getResolvedProperty = getResolvedPropertyValue(resolvedPropertyMappings);\nexport {default as resolveSelectedProperty} from './resolveSelectedProperty';\nexport {default as resolveSelectedProperties} from './resolveSelectedProperties';\nexport {default as getSelectorParts} from './getSelectorParts';\nexport {default as isSelectableProperty} from './isSelectableProperty';\nexport {default as isSelector} from './isSelector';\nexport {default as updatePropertiesWithSelector} from './updatePropertiesWithSelector';\nexport {default as getPartsForNestedSelectableProps} from './getPartsForNestedSelectableProps';\nexport {default as applyUpdatesForSelectableProps} from './applyUpdatesForSelectableProps';\n\n// Unstable APIs\nexport {default as createUnstableResolvePropertySelectorValue} from './createUnstableResolvePropertySelectorValue';\nexport {default as unstableAddRenderOnPropertySelectorValueChange} from './unstableAddRenderOnPropertySelectorValueChange';\nexport {default as unstableRemoveRenderOnPropertySelectorValueChange} from './unstableRemoveRenderOnPropertySelectorValueChange';\n","import {toString, get} from '@servicenow/ui-internal';\nimport toAttributeName from './toAttributeName';\nimport {isSelector} from '../property-selectors';\n\nexport default function getInitialPropertyValue(el, key, propertyDefs = {}) {\n\tif (propertyDefs[key] && propertyDefs[key].readOnly) return propertyDefs[key].default;\n\n\tconst property = el[key];\n\tconst attr = toAttributeName(key);\n\tconst unstablePreserveEmptyStr =\n\t\t(propertyDefs[key] && propertyDefs[key].unstablePreserveEmptyStr) || false;\n\n\tif (key !== 'style' && el.hasAttribute(attr) && !isSelector(property)) {\n\t\tlet value = el.getAttribute(attr);\n\t\t// instead of directly using the attribute value as the property intial value,\n\t\t// attrToInitPropTransformer allows transforming the attribute value to the property initial value\n\t\t// so property value can adopt a better data structure rather than just the string literal.\n\t\tif (propertyDefs[key] && propertyDefs[key].attrToInitPropTransformer) {\n\t\t\tvalue = propertyDefs[key].attrToInitPropTransformer({attributeValue: value});\n\t\t}\n\t\tconst preserve =\n\t\t\tunstablePreserveEmptyStr || get(propertyDefs, `[${key}].schema.type`) === 'string';\n\n\t\treturn value || (preserve ? value : true);\n\t}\n\n\t// property.toString() will return [object CSSStyleDeclaration] if the style property is a true style property\n\t// vs. a style object (key, value) that is passed via JSX in the view layer\n\treturn key === 'style'\n\t\t? toString(property) === '[object Object]'\n\t\t\t? property\n\t\t\t: undefined\n\t\t: property;\n}\n","export default function filterPropertyDefinitions(properties, fn) {\n\tconst filteredPropertyDefs = {};\n\tif (!properties) return filteredPropertyDefs;\n\n\tconst keys = Object.keys(properties);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst k = keys[i];\n\t\tconst value = properties[k];\n\t\tif (fn(value)) filteredPropertyDefs[k] = value;\n\t}\n\n\treturn filteredPropertyDefs;\n}\n","import {toLower} from '@servicenow/ui-internal';\nimport {SEISMIC_HOIST_TAG_NAME} from '../constants';\n\nconst doc = window.document;\nconst styleFragments = {};\n\nexport function removeStyleFragmentFromCache(tagName) {\n\tdelete styleFragments[tagName.toUpperCase()];\n}\n\n/**\n * @function\n * @param {String} [style]\n * @param {Array.<String>} [stylesheetsContent]\n * @param {String} [tagName]\n * @returns {HTMLElement}\n */\nexport default function createStyleFragment(style, stylesheetsContent, tagName) {\n\tconst cachedStyleFragment = styleFragments[tagName];\n\tif (cachedStyleFragment) return cachedStyleFragment.content.cloneNode(true);\n\n\tlet styleFragment;\n\tconst externalStylesFragment = document.head.querySelector(`#now-${toLower(tagName)}-styles`);\n\tif (externalStylesFragment) {\n\t\tstyleFragment = mergeStylesheets(externalStylesFragment, stylesheetsContent);\n\t} else {\n\t\tlet styles = '';\n\t\tstyleFragment = doc.createElement('template');\n\n\t\tif (style) styles += style;\n\n\t\tif (stylesheetsContent) styles += stylesheetsContent;\n\n\t\tstyleFragment.innerHTML = `<style type=\"text/css\">${styles}</style>`;\n\t}\n\n\tif (tagName !== SEISMIC_HOIST_TAG_NAME) styleFragments[tagName] = styleFragment;\n\n\treturn styleFragment.content.cloneNode(true);\n}\n\nfunction mergeStylesheets(externalStylesFragment, stylesheetsContent) {\n\tif (!stylesheetsContent) return externalStylesFragment;\n\n\t// this case should be rare, if ever; ideally we should deprecate support for config.stylesheets\n\tconst externalStylesEl = externalStylesFragment.content.cloneNode(true).children[0];\n\texternalStylesEl.textContent = `${stylesheetsContent}\\n${externalStylesEl.textContent}`;\n\tconst mergedStyleFragment = doc.createElement('template');\n\tmergedStyleFragment.content.appendChild(externalStylesEl);\n\n\treturn mergedStyleFragment;\n}\n","export default [];\n","import reflectQueue from './reflectQueue';\nexport default function isReflecting(name) {\n\tconst {length: reflectCount} = reflectQueue;\n\tfor (let i = 0; i < reflectCount; i++) {\n\t\tif (name === reflectQueue[i]) return name;\n\t}\n}\n","import reflectQueue from './reflectQueue';\n\nexport default function clearReflection(name) {\n\tlet index = reflectQueue.indexOf(name);\n\twhile (index !== -1) {\n\t\treflectQueue.splice(index, 1);\n\t\tindex = reflectQueue.indexOf(name);\n\t}\n\n\treturn reflectQueue;\n}\n","export default function isComputedProperty(name, definitions) {\n\treturn definitions[name] && definitions[name].computed;\n}\n","import {memoize, camelCase} from '@servicenow/ui-internal';\n\nexport default memoize(\n\tfunction toPropertyName(attrName) {\n\t\treturn camelCase(attrName);\n\t},\n\t{profileName: 'toPropertyName'}\n);\n","export default function isReadOnlyProperty(name, definitions) {\n\treturn definitions[name] && definitions[name].readOnly;\n}\n","import isReadOnlyProperty from './isReadOnlyProperty';\nimport toPropertyName from './toPropertyName';\nimport isComputedProperty from './isComputedProperty';\nimport {memoize} from '@servicenow/ui-internal';\n\nconst shouldSetMemoized = memoize(\n\tfunction shouldSetAttribute(tagName, name, defs) {\n\t\tconst readOnly = isReadOnlyProperty(toPropertyName(name), defs);\n\t\tconst computedProperty = isComputedProperty(toPropertyName(name), defs);\n\n\t\treturn !readOnly && !computedProperty;\n\t},\n\t{profileName: 'shouldSetAttribute'}\n);\n\nexport default function shouldSetAttribute(tagName, isReflecting, name, defs = {}) {\n\treturn isReflecting || shouldSetMemoized(tagName, name, defs);\n}\n","import isReadOnlyProperty from './isReadOnlyProperty';\nimport toPropertyName from './toPropertyName';\nimport isComputedProperty from './isComputedProperty';\nimport {memoize} from '@servicenow/ui-internal';\n\nexport default memoize(\n\tfunction shouldSetProperty(tagName, name, defs = {}, setReadOnly = false) {\n\t\tconst propertyName = toPropertyName(name);\n\t\tconst readOnly = isReadOnlyProperty(propertyName, defs);\n\t\tconst computedProperty = isComputedProperty(propertyName, defs);\n\n\t\treturn (!readOnly || (readOnly && setReadOnly)) && !computedProperty;\n\t},\n\t{\n\t\tcreateCacheKey: (tagName, name, defs, setReadOnly) => `${tagName}|${name}|${setReadOnly}`,\n\t\tprofileName: 'shouldSetProperty'\n\t}\n);\n","const beforeNextTick = Promise.resolve().then.bind(Promise.resolve());\nexport default beforeNextTick;\n","import {mark, types as metrics} from '@servicenow/ui-metrics';\n\nconst performanceApiExists =\n\tperformance &&\n\ttypeof performance.mark === 'function' &&\n\ttypeof performance.measure === 'function';\nlet {__ENABLE_NOW_UI_PERFORMANCE__} = window;\nlet uiPerfEnabled =\n\tprocess.env.NODE_ENV === 'performance' ||\n\tprocess.env.NODE_ENV === 'test' ||\n\t__ENABLE_NOW_UI_PERFORMANCE__;\n\ntry {\n\tdelete window.__ENABLE_NOW_UI_PERFORMANCE__;\n\n\tObject.defineProperty(window, '__ENABLE_NOW_UI_PERFORMANCE__', {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn __ENABLE_NOW_UI_PERFORMANCE__;\n\t\t},\n\t\tset(value) {\n\t\t\t__ENABLE_NOW_UI_PERFORMANCE__ = value;\n\t\t\tuiPerfEnabled =\n\t\t\t\tprocess.env.NODE_ENV === 'performance' || process.env.NODE_ENV === 'test' || value;\n\t\t}\n\t});\n} catch (e) {\n\t// fail silently\n}\n\nexport default function measure(fn, host, marker, interactionId, options) {\n\tif (!performanceApiExists) return fn();\n\n\tmark(host, interactionId, metrics.RENDER_START, options);\n\n\tlet startMarker;\n\tif (uiPerfEnabled) {\n\t\tstartMarker = `${marker}-start`;\n\t\tperformance.mark(startMarker);\n\t}\n\tfn();\n\tmark(host, interactionId, metrics.RENDER_END, options);\n\tif (uiPerfEnabled) performance.measure(marker, startMarker);\n}\n","import getHostVariables from './getHostVariables';\nimport {PROPS} from '../symbols';\nimport {get} from '@servicenow/ui-internal';\n\nexport default function selectablePropertyResolver(componentRegistry, id, name, path) {\n\tconst el = componentRegistry[id];\n\tif (el) {\n\t\tconst hostVariables = getHostVariables(el);\n\t\tconst property = hostVariables[PROPS][name];\n\t\tif (path) {\n\t\t\treturn property && property[0] === '@'\n\t\t\t\t? path[0] === '['\n\t\t\t\t\t? `${property}${path}`\n\t\t\t\t\t: `${property}.${path}`\n\t\t\t\t: get(property, path);\n\t\t}\n\n\t\treturn property;\n\t}\n\n\treturn undefined;\n}\n","import {setInteractionId} from '@servicenow/ui-metrics';\nimport {CONDITIONAL_DISPATCH} from '../symbols';\nimport {COMPONENT_PROPERTY_CHANGED} from '../constants';\nimport {get} from '@servicenow/ui-internal';\nimport getHostVariables from './getHostVariables';\n\nexport default function triggerPropertyChangeAction(\n\tel,\n\tpropertyDetail,\n\taffectedPropDetail,\n\tinteractionId,\n\tactiveSpan = null\n) {\n\tconst {propName: name, path} = affectedPropDetail;\n\tlet {previousValue, value} = propertyDetail;\n\tif (path) {\n\t\tpreviousValue = get(previousValue, path);\n\t\tvalue = get(value, path);\n\t}\n\tconst hostVariables = getHostVariables(el);\n\thostVariables[CONDITIONAL_DISPATCH](\n\t\tCOMPONENT_PROPERTY_CHANGED,\n\t\t{\n\t\t\tname,\n\t\t\tpreviousValue,\n\t\t\tvalue,\n\t\t\thost: el\n\t\t},\n\t\tsetInteractionId(\n\t\t\t{\n\t\t\t\tinternal: true,\n\t\t\t\tspan: activeSpan\n\t\t\t},\n\t\t\tinteractionId\n\t\t)\n\t);\n}\n","import {memoize} from '@servicenow/ui-internal';\nimport {NOW_METRIC_TYPES_PROP, NOW_METRICS_LEVEL_PROP, NOW_LOGGING_LEVELS_PROP} from '../constants';\n\nconst skipRenderPropsList = [\n\tNOW_METRIC_TYPES_PROP,\n\tNOW_METRICS_LEVEL_PROP,\n\tNOW_LOGGING_LEVELS_PROP\n];\n\nexport const isPropToSkipRender = memoize(\n\t(_tagName, propName, propDef) =>\n\t\tskipRenderPropsList.includes(propName) || propDef?.shouldRenderWhenSet === false,\n\t{\n\t\tcreateCacheKey: (tagName, propName) => `${tagName}|${propName}`,\n\t\tprofileName: `isPropToSkipRender`\n\t}\n);\n","import triggerPropertyChangeAction from './triggerPropertyChangeAction';\nimport {\n\tHOIST_APPEND_TO_PROP,\n\tHOIST_ATTR,\n\tNOW_HOIST_APPEND_TO_PROP,\n\tNOW_HOIST_PREPEND_TO_PROP,\n\tNOW_HOIST_PROP,\n\tPROPERTY_SELECTOR_SIGIL\n} from '../constants';\nimport {HOIST_CHANGED, HOIST_PARENT_CHANGED, PROPERTY_DEFS, RENDER, VARIABLES} from '../symbols';\nimport log from '../log';\nimport {isPropToSkipRender} from './isPropToSkipRender';\n\nexport default function triggerComponentUpdates(\n\tcomponentRegistry,\n\taffected,\n\tpropertyDetails,\n\tinteractionId,\n\tlabel,\n\toptions = {}\n) {\n\tconst {value} = propertyDetails;\n\tconst renderList = [];\n\tfor (const id in affected) {\n\t\tconst [elementId, propName] = id.split(PROPERTY_SELECTOR_SIGIL);\n\t\tconst el = componentRegistry[elementId];\n\t\trenderList.push({\n\t\t\telementId,\n\t\t\ttagName: el?.tagName,\n\t\t\tpropName,\n\t\t\tpropDef: el?.[VARIABLES]?.[PROPERTY_DEFS]?.[propName]\n\t\t});\n\n\t\tif (el && propName) {\n\t\t\ttriggerPropertyChangeAction(\n\t\t\t\tel,\n\t\t\t\tpropertyDetails,\n\t\t\t\t{propName, path: affected[id]},\n\t\t\t\tinteractionId,\n\t\t\t\toptions.activeSpan\n\t\t\t);\n\n\t\t\tif (propName === NOW_HOIST_PROP || propName === HOIST_ATTR) el[HOIST_CHANGED](value);\n\n\t\t\tif (\n\t\t\t\tpropName === HOIST_APPEND_TO_PROP ||\n\t\t\t\tpropName === NOW_HOIST_APPEND_TO_PROP ||\n\t\t\t\tpropName === NOW_HOIST_PREPEND_TO_PROP\n\t\t\t)\n\t\t\t\tel[HOIST_PARENT_CHANGED](propName);\n\t\t}\n\t}\n\n\tfor (let i = 0; i < renderList.length; i++) {\n\t\tconst {elementId, tagName, propName, propDef} = renderList[i];\n\t\tif (componentRegistry[elementId]) {\n\t\t\tif (!isPropToSkipRender(tagName, propName, propDef))\n\t\t\t\tcomponentRegistry[elementId][RENDER](interactionId, label, {\n\t\t\t\t\tpropName,\n\t\t\t\t\tvalue,\n\t\t\t\t\tactiveSpan: options.activeSpan\n\t\t\t\t});\n\t\t} else {\n\t\t\tlog(\n\t\t\t\t`Component with id \"${elementId}\" could not be re-rendered from a change in property \"${propName}\" because the component is disconnected or not known.`,\n\t\t\t\t{\n\t\t\t\t\tcomponentId: elementId,\n\t\t\t\t\torigin: 'triggerComponentUpdates'\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n}\n","import {addMapping, getSelectorParts, removeMappings} from '../property-selectors';\n\nexport default function updateSelectedPropertyMappings(\n\tpropertyValue,\n\tconsumerPropName,\n\tconsumerId,\n\tshouldRemove = true\n) {\n\tconst [providerId, providerPropName, providerPropPath] = getSelectorParts(propertyValue);\n\n\tif (shouldRemove) removeMappings(consumerId, consumerPropName);\n\n\tif (providerId && providerPropName)\n\t\taddMapping({providerId, providerPropName, providerPropPath}, {consumerId, consumerPropName});\n}\n","export default function quickEquals(newValue, oldValue) {\n\tif (newValue === oldValue) {\n\t\treturn true;\n\t}\n\n\t// If its a primitive and doesnt match we should bail out before going further\n\tif (isPrimitiveOrNull(newValue) || isPrimitiveOrNull(oldValue)) return false;\n\n\t// Trying to rule out anything that might cause false positive for typeof === object later on\n\tif (!supportedType(newValue)) return false;\n\tif (!supportedType(oldValue)) return false;\n\n\tif (!quickEqualsType(newValue, oldValue)) return false;\n\tif (quickEqualsEmptyValue(oldValue, newValue)) return true;\n\n\tif (Array.isArray(newValue)) {\n\t\tconst {length: newValueLength} = newValue;\n\t\tconst {length: oldValueLength} = oldValue;\n\t\tif (newValueLength !== oldValueLength) return false;\n\t\tif (newValueLength > 10) return false;\n\t\tif (newValueLength < 1) return false;\n\n\t\tfor (let i = 0; i < newValueLength; i++) {\n\t\t\tif (!isPrimitiveOrNull(newValue[i]) || !isPrimitiveOrNull(oldValue[i])) {\n\t\t\t\treturn false;\n\t\t\t} else if (newValue[i] !== oldValue[i]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\treturn true;\n\t} else if (typeof newValue === 'object') {\n\t\tconst keys = Object.keys(newValue);\n\t\tconst {length: newKeyLength} = keys;\n\t\tconst {length: oldKeyLength} = Object.keys(oldValue);\n\n\t\tif (newKeyLength !== oldKeyLength) return false;\n\t\tif (newKeyLength > 6) return false;\n\t\tfor (let key in keys) {\n\t\t\tkey = keys[key];\n\t\t\tif (isPrimitive(newValue[key]) && isPrimitive(oldValue[key])) {\n\t\t\t\tif (newValue[key] !== oldValue[key]) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t} else if (isUndefinedOrNull(newValue[key]) || isUndefinedOrNull(oldValue[key])) {\n\t\t\t\treturn false;\n\t\t\t} else if (\n\t\t\t\tObject.keys(newValue[key]).length === 2 &&\n\t\t\t\tObject.keys(oldValue[key]).length === 2\n\t\t\t) {\n\t\t\t\tconst currentKeys = Object.keys(newValue[key]);\n\t\t\t\tconst current1 = newValue[key][currentKeys[0]];\n\t\t\t\tconst current2 = newValue[key][currentKeys[1]];\n\t\t\t\tconst old1 = oldValue[key][currentKeys[0]];\n\t\t\t\tconst old2 = oldValue[key][currentKeys[1]];\n\t\t\t\tif (\n\t\t\t\t\t!isPrimitiveOrNull(current1) ||\n\t\t\t\t\t!isPrimitiveOrNull(current2) ||\n\t\t\t\t\t!isPrimitiveOrNull(old1) ||\n\t\t\t\t\t!isPrimitiveOrNull(old2)\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t} else if (current1 !== old1 || current2 !== old2) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nexport function supportedType(value) {\n\tif (value instanceof Set) {\n\t\treturn false;\n\t} else if (value instanceof Map) {\n\t\treturn false;\n\t} else if (typeof value === 'function') {\n\t\treturn false;\n\t} else if (Object.getOwnPropertySymbols(value).length > 0) {\n\t\treturn false;\n\t} else if (value instanceof HTMLElement) {\n\t\treturn false;\n\t} else if (value instanceof DOMRect) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\nfunction isPrimitiveOrNull(value) {\n\treturn isPrimitive(value) || isUndefinedOrNull(value);\n}\n\nfunction isPrimitive(value) {\n\tconst type = typeof value;\n\tif (type === 'object' || type === 'function') return false;\n\n\tif (type === 'string') return true;\n\tif (type === 'bigint') return true;\n\tif (type === 'boolean') return true;\n\tif (type === 'number') return true;\n\tif (type === 'symbol') return true;\n\treturn false;\n}\n\nfunction isUndefinedOrNull(value) {\n\treturn value === null || value === undefined;\n}\n\nconst quickEqualsType = (newValue, oldValue) => {\n\tif (typeof newValue !== typeof oldValue) return false;\n\telse if (Array.isArray(newValue) !== Array.isArray(oldValue)) return false;\n\treturn true;\n};\n\nconst quickEqualsEmptyValue = (newValue, oldValue) => {\n\tif (Object.keys(newValue).length == 0 && Object.keys(oldValue).length == 0) return true;\n\treturn false;\n};\n","import {set} from '@servicenow/ui-utils';\n\n/**\n * Utility function to update resolved value with a path\n */\nexport default function updateResolvedValue(alreadyResolvedValue, path, newValue) {\n\tif (!path) return newValue;\n\t//deals with scenario when selected property has a path, e.g. arrayProp[1], objProp.foo\n\tconst updatedValue = alreadyResolvedValue;\n\tset(updatedValue, path, newValue);\n\treturn updatedValue;\n}\n","import {\n\taddResolvedPropertyMapping,\n\taddSelectableResolvedPropertyMapping,\n\tgetResolvedProperty,\n\tgetSelectorParts,\n\tremoveResolvedMapping\n} from '../property-selectors';\nimport {getHostVariables} from './index';\nimport {PROPERTY_DEFS} from '../symbols';\nimport resolveProviderSelectedProperty from '../property-selectors/resolveProviderSelectedProperty';\nimport shouldAddToResolvedPropertyMapping from './shouldAddToResolvedPropertyMapping';\nimport quickEquals from './helpers/quickEquals';\nimport getResolvedValue from './getResolvedValue';\nimport updateResolvedValue from './updateResolvedValue';\n\n/**\n * function to update resolvedSelectedPropertyMapping so that we don't need to re-resolve the same property if found\n\n * @param propertyDetails\n * @param consumerPropName\n * @param consumerId\n * @param componentRegistry\n * @param propertyDef\n * @param propertiesWithSelector\n */\nexport default function updateResolvedSelectedPropertyMappings(\n\tpropertyDetails,\n\tconsumerPropName,\n\tconsumerId,\n\tcomponentRegistry = {},\n\tpropertyDef = {},\n\tpropertiesWithSelector = {}\n) {\n\tconst {previousValue, value} = propertyDetails;\n\tconst [previousProviderId, previousProviderPropName, previousProviderPath] =\n\t\tgetSelectorParts(previousValue);\n\tconst [providerId, providerPropName, providerPropPath] = getSelectorParts(value);\n\tif (previousProviderId && previousProviderPropName) {\n\t\tif (!shouldAddToResolvedPropertyMapping(previousValue, componentRegistry)) return;\n\t\t//when the property value has been resolved and added to the mapping\n\t\t//if the new value is different, need to update the mapping accordingly\n\t\tconst [id] = propertiesWithSelector[consumerPropName];\n\t\tconst alreadyResolvedValue = getResolvedProperty(id);\n\t\tif (\n\t\t\talreadyResolvedValue &&\n\t\t\t!quickEquals(getResolvedValue(alreadyResolvedValue, previousProviderPath, propertyDef), value)\n\t\t) {\n\t\t\tconst newValue = updateResolvedValue(alreadyResolvedValue, previousProviderPath, value);\n\t\t\tremoveResolvedMapping(previousProviderId, previousProviderPropName, newValue);\n\t\t\taddResolvedPropertyMapping(\n\t\t\t\t{providerId: previousProviderId, providerPropName: previousProviderPropName},\n\t\t\t\tnewValue\n\t\t\t);\n\t\t}\n\t} else if (providerId && providerPropName) {\n\t\tif (!shouldAddToResolvedPropertyMapping(value, componentRegistry)) return;\n\n\t\tconst resolvedValue = resolveProviderSelectedProperty(\n\t\t\tvalue,\n\t\t\tproviderPropPath,\n\t\t\tcomponentRegistry,\n\t\t\tpropertyDef\n\t\t);\n\t\tremoveResolvedMapping(providerId, providerPropName, resolvedValue);\n\t\taddResolvedPropertyMapping({providerId, providerPropName}, resolvedValue);\n\t} else if (consumerId && consumerPropName) {\n\t\t// when providerId & providerPropName is empty, it means that consumer itself is a provider when it's selectable\n\t\tconst consumerComponent = componentRegistry[consumerId];\n\t\tif (!consumerComponent) return;\n\n\t\tconst consumerPropDef = getHostVariables(consumerComponent)[PROPERTY_DEFS];\n\t\tif (consumerPropDef[consumerPropName]?.selectable) {\n\t\t\tremoveResolvedMapping(consumerId, consumerPropName, value);\n\t\t\taddSelectableResolvedPropertyMapping({consumerId, consumerPropName}, value);\n\t\t}\n\t}\n}\n","import beforeNextTick from './beforeNextTick';\n\nconst defaultLifecycleFn = (node, dispatch, next) => next();\nconst defaultAsyncLifecycleFn = (node, dispatch, next) =>\n\tbeforeNextTick(() => defaultLifecycleFn(node, dispatch, next));\n\nexport default function createLifecycleFunctions(\n\trendererOnConnect,\n\trendererOnDisconnect,\n\tshouldRunAsync\n) {\n\tif (shouldRunAsync && !rendererOnConnect) {\n\t\t// only the legacy react renderer should match this case\n\t\treturn {\n\t\t\tonConnect: defaultAsyncLifecycleFn,\n\t\t\tonDisconnect: rendererOnDisconnect || defaultLifecycleFn\n\t\t};\n\t}\n\n\treturn {\n\t\tonConnect: rendererOnConnect || defaultAsyncLifecycleFn,\n\t\tonDisconnect: rendererOnDisconnect || defaultLifecycleFn\n\t};\n}\n","import {NOW_UI_EVENT} from '../constants';\n\nexport function emitNowUiEvent(type, detail) {\n\tif (!window.__ENABLE_NOW_UI_EVENT__) return;\n\tconst event = new CustomEvent(NOW_UI_EVENT, {\n\t\tcomposed: true,\n\t\tbubbles: true,\n\t\tdetail: {\n\t\t\ttype,\n\t\t\t...detail\n\t\t}\n\t});\n\tdocument.dispatchEvent(event);\n}\n","import {toPropertyName} from '../utils';\n\nexport default function camelCaseProperties(state) {\n\tfor (const k in state.properties) {\n\t\tconst newKey = toPropertyName(k);\n\t\tif (newKey !== k) {\n\t\t\tstate.properties[newKey] = state.properties[k];\n\t\t\tdelete state.properties[k];\n\t\t}\n\t}\n\treturn state;\n}\n","/**\n * Unescape reserved characters and seismic\n * Currently, only @ is reserved, we can expand this later if needed\n *\n * @private\n * @param state\n * @param container\n * @returns Object - State\n */\nexport default function unescapeReservedCharacters(state) {\n\tfor (const k in state.properties) {\n\t\tconst value = state.properties[k];\n\t\tif (typeof value === 'string' && (value.startsWith('\\\\@') || value.startsWith('\\\\\\\\@'))) {\n\t\t\tstate.properties[k] = value.slice(1);\n\t\t}\n\t}\n\treturn state;\n}\n","import {GET_RESOLVED_PROPERTY} from '../symbols';\nimport {HOIST_ATTR, NOW_HOIST_PROP, NOW_HOIST_ATTR} from '../constants';\n\nexport default function isHoisted(host) {\n\treturn (\n\t\thost[GET_RESOLVED_PROPERTY](HOIST_ATTR) ||\n\t\thost[GET_RESOLVED_PROPERTY](NOW_HOIST_PROP) ||\n\t\thost.hasAttribute(NOW_HOIST_ATTR) ||\n\t\thost.hasAttribute(HOIST_ATTR)\n\t);\n}\n","import {ROOT_NODE} from '../symbols';\n\nexport function getHoistTarget(hostVariables) {\n\treturn hostVariables[ROOT_NODE].host;\n}\n","import getHostVariables from './getHostVariables';\nimport {COMPONENT_ID} from '../symbols';\nimport {SEISMIC_HOIST_TAG_NAME} from '../constants';\n\nexport default function getRootNode(node) {\n\tconst rootNode = node.getRootNode();\n\n\tif (rootNode.host && rootNode.host.tagName === SEISMIC_HOIST_TAG_NAME)\n\t\treturn rootNode.host.sourceElement;\n\n\tif (rootNode !== document) return rootNode.host;\n\n\tif (node.assignedSlot) return getRootNode(node.assignedSlot);\n\n\tlet {parentNode} = node;\n\twhile (parentNode !== document.body) {\n\t\tconst parentVariables = getHostVariables(parentNode);\n\n\t\tif (parentVariables && parentVariables[COMPONENT_ID]) return parentNode;\n\n\t\tparentNode = parentNode.parentNode; // eslint-disable-line prefer-destructuring\n\t}\n\n\treturn null;\n}\n","import {isPlainObject} from '@servicenow/ui-internal';\nimport log from '../log';\n\nexport function normalizeActionMeta(meta, {host}) {\n\tlet normalizedMeta = meta;\n\tif (!isPlainObject(meta)) {\n\t\tnormalizedMeta = {...meta};\n\t\tif (process.env.NODE_ENV !== 'production') {\n\t\t\tlog(\n\t\t\t\t`While dispatching an action, Expected meta to be an Object but found ${meta}. This will result in inconsistent behavior when passing meta to an action handler`,\n\t\t\t\t{\n\t\t\t\t\thost,\n\t\t\t\t\torigin: 'normalizeActionMeta'\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n\n\treturn normalizedMeta;\n}\n","import {HELPERS_DEFER} from '../../constants';\nimport {schedule, types} from '../../scheduler';\nconst {DEFER_HELPER_EXECUTION} = types;\n\n// the origin event handler for an action is ran as a microtask because it has to wait to see if\n// preventDefault has been called by an ancestor. because of this back-to-back dispatches\n// triggered from a user event such as a click can cause stale state or properties in helper\n// callbacks (or just event handlers) in the view. so far this is only replicable programmtically\n// doing something like btn.click(); btn.click(); where these clicks dispatch an action that then updates\n// state or properties in an effect hander and the dispatch callback in the view relies on state\n// or properties. eventually this use case needs to be accounted for in the scheduler design.\nexport default function deferHelperExecution(executionTiming, fn, meta) {\n\treturn executionTiming === HELPERS_DEFER\n\t\t? schedule({fn, type: DEFER_HELPER_EXECUTION, meta})\n\t\t: fn();\n}\n","export default class ConsoleLogExporter {\n    constructor() { }\n    extractInfo(log) {\n        return {\n            time: new Date(log.timestamp),\n            timestamp: log.timestamp,\n            attributes: log.attributes,\n            traceId: log.context?.traceId,\n            spanId: log.context?.spanId,\n        };\n    }\n    export(logs) {\n        logs.forEach((log) => {\n            console[log.level](`[SNUiLogger]: ${log.message}`, this.extractInfo(log));\n        });\n    }\n}\n","/**\n * Logs has a specific schema. All of the values in a Log object are primitive,\n * except context and attributes, which are objects, where keys map to primitive types.\n * This will ensure no reference is carried over.\n * @param logs array of Log's\n * @returns deep copied array of Log's\n */\nexport const fastDeepCopy = (logs) => logs.map(log => ({\n    ...log,\n    attributes: log.attributes && { ...log.attributes },\n    context: log.context && { ...log.context },\n}));\nexport const getCurrentTime = () => performance.timeOrigin + performance.now();\n","import ConsoleLogExporter from \"./exporter/consoleLogExporter\";\nimport { fastDeepCopy } from './utils';\nexport default class LogQueue {\n    _queue;\n    _backedLogs = [];\n    _logLevel; // TODO: for what?\n    _cleanUpTimeInterval;\n    _collectTimeInterval;\n    _queueLocked = false;\n    _collectIntervalId;\n    _cleanupIntervalId;\n    _exporter;\n    subscribers = new Set();\n    constructor(options = {}) {\n        const { logLevel = 'debug', cleanUpTimeInterval = 60000, collectTimeInterval = 5000, exporter = new ConsoleLogExporter(), } = options;\n        this._logLevel = logLevel;\n        this._cleanUpTimeInterval = cleanUpTimeInterval;\n        this._collectTimeInterval = collectTimeInterval;\n        this._exporter = exporter;\n        this._queue = [];\n        this.startLogInterval();\n        this.startCleanupInterval();\n    }\n    /**\n     * Start the log collection interval.\n     * This will notify subscribers with the current log queue.\n     */\n    startLogInterval() {\n        try {\n            this._collectIntervalId = window.setInterval(async () => {\n                this._exporter.export(this._queue);\n                this.notifySubscribers().catch(e => console.error('Something went wrong while notifying subscribers: ', e));\n            }, this._collectTimeInterval);\n        }\n        catch (e) {\n            console.error('Something went wrong while setting up log interval: ', e);\n        }\n    }\n    /**\n     * Start the log cleanup interval.\n     * This will clear the log queue if logs were not emitted within the time interval.\n     */\n    startCleanupInterval() {\n        try {\n            this._cleanupIntervalId = window.setInterval(() => this.clear(), this._cleanUpTimeInterval);\n        }\n        catch (e) {\n            console.error('Something went wrong while setting up log cleanup interval: ', e);\n        }\n    }\n    /**\n     * No more logs will be send to the subscribers.\n     */\n    stopLogInterval() {\n        window.clearInterval(this._collectIntervalId);\n    }\n    /**\n     * Stop clearing the log queue.\n     */\n    stopCleanupInterval() {\n        window.clearInterval(this._cleanupIntervalId);\n    }\n    lock() {\n        this._queueLocked = true;\n    }\n    unlock() {\n        this._queueLocked = false;\n        this._queue = this._queue.concat(fastDeepCopy(this._backedLogs));\n        this._backedLogs = [];\n    }\n    /**\n     * Push to the log queue. If queue is locked, push to backed logs queue.\n     * @param log\n     * @returns void\n     */\n    push(log) {\n        if (this._queueLocked) {\n            this._backedLogs.push(log);\n            return;\n        }\n        this._queue.push(log);\n    }\n    /**\n     * Clear the log queue. If queue is locked, clears backed up logs queue.\n     * @returns true if queue was cleared, false if queue was locked and cleared backed logs\n     */\n    clear() {\n        if (this._queueLocked) {\n            console.info('Log queue is currently locked. Queueing cleanup.');\n            this._backedLogs = []; // TODO: is this worth it?\n            return false;\n        }\n        this._queue = [];\n        return true;\n    }\n    forceFlush() {\n        this._queue = [];\n    }\n    /**\n     * @returns deep copied array of Log's\n     */\n    getLogs() {\n        return fastDeepCopy(this._queue);\n    }\n    set logLevel(level) {\n        this._logLevel = level;\n    }\n    get logLevel() {\n        return this._logLevel;\n    }\n    /**\n     * Subscribe to log collection.\n     * @param callback function to call when logs are emitted\n     * @returns function that can be called to unsubscribe from log collection\n     */\n    subscribe(callback) {\n        this.subscribers.add(callback);\n        return () => this.subscribers.delete(callback);\n    }\n    async notifySubscribers() {\n        // don't allow any more logs to be pushed to main queue while we're emitting\n        this.lock();\n        const logsToEmit = fastDeepCopy(this._queue);\n        this.forceFlush();\n        this.unlock();\n        this.subscribers.forEach(notify => notify(logsToEmit));\n    }\n}\n","import { getCurrentTime } from \"./utils\";\nexport default class Logger {\n    name;\n    loggerProvider;\n    context = { traceId: '', spanId: '' };\n    constructor(name, loggerProvider) {\n        this.name = name;\n        this.loggerProvider = loggerProvider;\n    }\n    _emit(log) {\n        this.loggerProvider.push(log);\n    }\n    emit(message, options) {\n        this._emit({\n            loggerName: this.name,\n            message,\n            timestamp: getCurrentTime(),\n            attributes: options.attributes,\n            level: options.level,\n        });\n    }\n    info(message, attributes = {}) {\n        this._emit({\n            loggerName: this.name,\n            message,\n            timestamp: getCurrentTime(),\n            attributes,\n            level: 'info',\n        });\n    }\n    debug(message, attributes = {}) {\n        this._emit({\n            loggerName: this.name,\n            message,\n            timestamp: getCurrentTime(),\n            attributes,\n            level: 'debug',\n        });\n    }\n    warn(message, attributes = {}) {\n        this._emit({\n            loggerName: this.name,\n            message,\n            timestamp: getCurrentTime(),\n            attributes,\n            level: 'warn',\n        });\n    }\n    error(message, attributes = {}) {\n        this._emit({\n            loggerName: this.name,\n            message,\n            timestamp: getCurrentTime(),\n            attributes,\n            level: 'error',\n        });\n    }\n    set logContext(context) {\n        this.context = context;\n        this.loggerProvider.context = context;\n    }\n    get logContext() {\n        return this.context;\n    }\n}\n","import LogQueue from '../logQueue';\nimport Logger from '../logger';\nexport default class LoggerProvider {\n    _logLevel;\n    _logQueue;\n    _context;\n    loggers = new Map();\n    _isLoggingEnabled = true;\n    constructor(options = {}) {\n        const { logLevel = 'debug', cleanUpTimeInterval = 60000, collectTimeInterval = 5000, context, // TODO: do we need initial value? this is going to be dynamic,\n        exporter, } = options;\n        this._logLevel = logLevel;\n        this._context = context || { traceId: '', spanId: '' };\n        this._logQueue = new LogQueue({\n            cleanUpTimeInterval,\n            collectTimeInterval,\n            exporter,\n        });\n    }\n    push(log) {\n        if (!this._isLoggingEnabled)\n            return;\n        log.context = this._context;\n        this._logQueue.push(log);\n    }\n    clear() {\n        this._logQueue.clear();\n    }\n    set logLevel(level) {\n        this._logLevel = level;\n    }\n    get logLevel() {\n        return this._logLevel;\n    }\n    getLogger(name) {\n        let logger = this.loggers.get(name);\n        if (!logger) {\n            logger = new Logger(name, this);\n            this.loggers.set(name, logger);\n        }\n        return logger;\n    }\n    set context(context) {\n        this._context = context;\n    }\n    get context() {\n        return this._context;\n    }\n    enableLogging() {\n        this._isLoggingEnabled = true;\n        this._logQueue.startLogInterval();\n        this._logQueue.startCleanupInterval();\n    }\n    disableLogging() {\n        this._isLoggingEnabled = false;\n        this._logQueue.stopLogInterval();\n        this._logQueue.stopCleanupInterval();\n    }\n    get isLoggingEnabled() {\n        return this._isLoggingEnabled;\n    }\n    get logQueue() {\n        return this._logQueue;\n    }\n    subscribe(callback) {\n        return this._logQueue.subscribe(callback);\n    }\n}\n","export default class NoOpLoggerProvider {\n    constructor() { }\n    printErrorMessage() {\n        console.error('LoggerProvider has not been initialized yet. Please ensure you are on a seismic compatible page, and you have logging enabled');\n    }\n    push() {\n        this.printErrorMessage();\n    }\n    clear() {\n        this.printErrorMessage();\n    }\n    set logLevel(_) {\n        this.printErrorMessage();\n    }\n    get logLevel() {\n        this.printErrorMessage();\n        return '';\n    }\n    getLogger() {\n        this.printErrorMessage();\n    }\n    set context(_) {\n        this.printErrorMessage();\n    }\n    get context() {\n        this.printErrorMessage();\n        return {};\n    }\n    enableLogging() {\n        this.printErrorMessage();\n    }\n    disableLogging() {\n        this.printErrorMessage();\n    }\n    subscribe() {\n        this.printErrorMessage();\n        return () => { };\n    }\n}\n","import { NoOpLoggerProvider } from './loggerProvider';\n/**\n * LoggerSubscriber is a class that enables subscribing to logs from the LoggerProvider.\n * This subscriber is used in Web environments only.\n *\n * @example\n * const subscriber = new LoggerSubscriber();\n * subscriber.subscribe((logs) => {\n * \tconsole.log(logs);\n * });\n */\nexport default class LoggerSubscriber {\n    loggerProvider;\n    constructor() {\n        this.loggerProvider = window.snUiLoggerProvider ?? new NoOpLoggerProvider();\n    }\n    /**\n     * Receive logs from the LoggerProvider.\n     * @param callback A function that will be called when logs are emitted.\n     * @return A function that can be called to unsubscribe from the LoggerProvider.\n     */\n    subscribe(callback) {\n        return this.loggerProvider.subscribe(callback);\n    }\n}\n","import {getConfigItem, configConstants, observeConfigItem} from '@servicenow/ui-config';\nimport {createInteractionId} from '@servicenow/ui-metrics';\nimport deferHelperExecution from './deferHelperExecution';\nimport {LoggerProvider} from '@devsnc/sn-ui-logger';\n\nglobalThis.nowUiFramework = globalThis.nowUiFramework || {};\nconst {LOGGING_ENABLED, LOGGING_LEVELS} = configConstants;\nconst globalLoggerProvider = getLoggerProvider();\nif (!getConfigItem(LOGGING_ENABLED)) globalLoggerProvider.disableLogging();\n\nconst loggerFunctions = globalThis.nowUiFrameworkLogs.logTypes;\nconst observer = (path, value) => {\n\tswitch (path) {\n\t\tcase LOGGING_ENABLED:\n\t\t\tif (value) globalLoggerProvider.enableLogging();\n\t\t\telse globalLoggerProvider.disableLogging();\n\t\t\tbreak;\n\t\tcase LOGGING_LEVELS:\n\t\t\tglobalLoggerProvider.logLevel = value;\n\t\t\tbreak;\n\t}\n};\n\nobserveConfigItem(LOGGING_ENABLED, observer);\nobserveConfigItem(LOGGING_LEVELS, observer);\n\nexport function getLoggerProvider() {\n\tconst globalLoggerProvider = globalThis.nowUiFramework.snUiLoggerProvider;\n\tif (globalLoggerProvider) {\n\t\treturn globalLoggerProvider;\n\t}\n\n\tconst {LOGGING_LEVELS, LOGS_OBSERVER_INTERVAL, LOGS_CLEANUP_INTERVAL, LOG_EXPORTER} =\n\t\tconfigConstants;\n\n\tglobalThis.nowUiFramework.snUiLoggerProvider = new LoggerProvider({\n\t\tcollectTimeInterval: getConfigItem(LOGS_OBSERVER_INTERVAL),\n\t\tcleanupTimeInterval: getConfigItem(LOGS_CLEANUP_INTERVAL),\n\t\tlogLevel: getConfigItem(LOGGING_LEVELS),\n\t\texporter: getConfigItem(LOG_EXPORTER)\n\t});\n\treturn globalThis.nowUiFramework.snUiLoggerProvider;\n}\n\nexport function getComponentLogger(host) {\n\tconst logger = {};\n\n\tconst globalLoggerProvider = globalThis.nowUiFramework.snUiLoggerProvider;\n\tif (!globalLoggerProvider) return logger;\n\n\treturn globalLoggerProvider.getLogger(host.tagName.toLowerCase());\n}\n\nexport function setLogContext({traceId = createInteractionId(), spanId}) {\n\tconst globalLoggerProvider = globalThis.nowUiFramework.snUiLoggerProvider;\n\tif (globalLoggerProvider) globalLoggerProvider.context = {traceId, spanId};\n}\n\nexport default function createComponentLogger(host, executionTiming) {\n\tconst logger = {};\n\tloggerFunctions.forEach(loggerFn => {\n\t\tlogger[loggerFn] = function logFn(...args) {\n\t\t\tdeferHelperExecution(\n\t\t\t\texecutionTiming,\n\t\t\t\t() => {\n\t\t\t\t\tconst loggerClass = getComponentLogger(host);\n\t\t\t\t\tif (loggerClass[loggerFn] && typeof loggerClass[loggerFn] === 'function')\n\t\t\t\t\t\tloggerClass[loggerFn](...args);\n\t\t\t\t\telse if (loggerClass?.info) loggerClass.info(...args);\n\t\t\t\t},\n\t\t\t\t{el: host}\n\t\t\t);\n\t\t};\n\t});\n\treturn logger;\n}\n","import {createInteractionId, applyInteractionId} from '@servicenow/ui-metrics';\nimport {normalizeActionMeta} from './normalizeActionMeta';\nimport {setLogContext} from './helpers/createComponentLogger';\n\nfunction applyMetricsToDispatch(dispatch) {\n\treturn (type, payload, meta = {}, error) => {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tmeta = normalizeActionMeta(meta, {});\n\t\tapplyInteractionId(meta);\n\t\treturn dispatch(type, payload, meta, error);\n\t};\n}\n\nfunction applyMetricsToLogger(logger, traceId, spanId) {\n\tsetLogContext({traceId, spanId});\n\treturn logger;\n}\n\nexport default function applyMetrics(helpers, spanId, interactionId = createInteractionId()) {\n\tconst withMetrics = typeof helpers === 'function' ? applyMetricsToDispatch(helpers) : {};\n\n\tif (helpers.updateState)\n\t\twithMetrics.updateState = (...args) => helpers.updateState(...args, {interactionId});\n\n\tif (helpers.updateContext)\n\t\twithMetrics.updateContext = (...args) => helpers.updateContext(...args, {interactionId});\n\n\tif (helpers.updateProperties)\n\t\twithMetrics.updateProperties = (...args) => helpers.updateProperties(...args, {interactionId});\n\n\tif (helpers.dispatch) withMetrics.dispatch = applyMetricsToDispatch(helpers.dispatch);\n\n\tif (helpers.logger)\n\t\twithMetrics.logger = applyMetricsToLogger(helpers.logger, interactionId, spanId);\n\n\treturn withMetrics;\n}\n","import {memoize} from '@servicenow/ui-internal';\nimport {PROPERTY_DEFS} from '../symbols';\nimport filterPropertyDefinitions from './filterPropertyDefinitions';\nimport getHostVariables from './getHostVariables';\n\nconst filterComputedProperties = memoize(\n\thost => {\n\t\tconst hostVariables = getHostVariables(host);\n\t\treturn filterPropertyDefinitions(hostVariables[PROPERTY_DEFS], d => d.computed);\n\t},\n\t{createCacheKey: host => host.tagName, profileName: 'filterComputedProperties'}\n);\n\nexport default filterComputedProperties;\n","import {sandbox, locations} from '@servicenow/ui-internal';\nimport log from '../log';\n\nexport default function computeProperty(name, propertyDefinition, {state, host}) {\n\treturn sandbox(propertyDefinition.computed, {\n\t\targs: [state],\n\t\tdispatch: host.helpers,\n\t\thost,\n\t\tlocation: locations.PROPERTY,\n\t\tdetails: {compute: true, name},\n\t\tlog\n\t});\n}\n","import getHostVariables from './getHostVariables';\nimport {ANCESTOR_ROOT_NODE} from '../symbols';\nimport {ACTIVE_SPAN} from '@servicenow/ui-internal';\n\nexport function getActiveSpan(host) {\n\tif (!host) return;\n\tconst hostVariables = getHostVariables(host);\n\tif (!hostVariables[ANCESTOR_ROOT_NODE]) return;\n\treturn hostVariables[ANCESTOR_ROOT_NODE][ACTIVE_SPAN];\n}\n","// TODO: account for p2.computed relying on p1.computed; use getters???\nimport {UPDATE_AFFECTED_COMPONENTS, PROPS} from '../symbols';\nimport filterComputedProperties from './filterComputedProperties';\nimport computeProperty from './computeProperty';\nimport quickEquals from './helpers/quickEquals';\nimport {getActiveSpan} from '../utils/activeSpan';\n\nexport default function resolveComputedProperties(state, host, hostVariables, interactionId) {\n\tconst computed = filterComputedProperties(host);\n\tstate.properties = state.properties || {};\n\n\tfor (const k in computed) {\n\t\tconst previousValue = hostVariables[PROPS][k];\n\n\t\tstate.properties[k] = computeProperty(k, computed[k], {state, host});\n\t\thostVariables[PROPS][k] = state.properties[k]; // eslint-disable-line no-param-reassign\n\n\t\tif (!quickEquals(state.properties[k], previousValue)) {\n\t\t\thost[UPDATE_AFFECTED_COMPONENTS]({\n\t\t\t\tname: k,\n\t\t\t\tpropertyDetails: {\n\t\t\t\t\tpreviousValue,\n\t\t\t\t\tvalue: state.properties[k]\n\t\t\t\t},\n\t\t\t\tinteractionId,\n\t\t\t\tincludeSource: false,\n\t\t\t\tactiveSpan: getActiveSpan(host)\n\t\t\t});\n\t\t}\n\t}\n\n\treturn state;\n}\n","import filterComputedProperties from './filterComputedProperties';\nimport computeProperty from './computeProperty';\n\nexport default function computeProperties(state, host) {\n\tconst computed = filterComputedProperties(host);\n\n\tfor (const k in computed) state.properties[k] = computeProperty(k, computed[k], {state, host});\n\n\treturn state;\n}\n","import {getConfigItem, configConstants} from '@servicenow/ui-config';\nimport {INTERSECTION_TRIGGERED} from '../symbols';\nconst {INTERSECT_ROOT_MARGIN} = configConstants;\nfunction intersection(entries) {\n\tentries.forEach(entry => {\n\t\tif (entry.isIntersecting) {\n\t\t\tentry.target[INTERSECTION_TRIGGERED]();\n\t\t\tobserver.unobserve(entry.target);\n\t\t}\n\t});\n}\n\n// The distance away from the viewport when a component should render\nconst VIEWPORT_INTERSECTION_MARGIN = getConfigItem(INTERSECT_ROOT_MARGIN);\nconst options = {rootMargin: VIEWPORT_INTERSECTION_MARGIN};\n\nlet observer;\nif (!window.IntersectionObserver) observer = {observe() {}, unobserve() {}};\nelse observer = new IntersectionObserver(intersection, options);\n\nexport default observer;\n","import getHostVariables from './getHostVariables';\nimport {ROOT_NODE} from '../symbols';\n\nexport default function applyIntersectStyles(el, config, options) {\n\tconst {width, height} = options;\n\n\tif (!width && !height) return;\n\n\tconst hostVariables = getHostVariables(el);\n\tconst rootNode = hostVariables[ROOT_NODE];\n\n\tconst styles = `:host {${width ? `width: ${width};` : ''}${height ? `height: ${height};` : ''}}`;\n\n\treturn applyWithTag(rootNode, styles);\n}\n\nfunction applyWithTag(rootNode, styles) {\n\tconst styleElement = window.document.createElement('style');\n\tstyleElement.type = 'text/css';\n\tstyleElement.innerHTML = styles;\n\trootNode.appendChild(styleElement);\n\n\treturn () => {\n\t\tif (styleElement.parentNode === rootNode) {\n\t\t\trootNode.removeChild(styleElement);\n\t\t}\n\t};\n}\n","export function assign(target, source) {\n\tif (target && typeof target === 'object') Object.assign(target, source);\n}\n","export function merge(target, source) {\n\tfor (const k in source) {\n\t\tif (target[k] === undefined) target[k] = source[k]; // eslint-disable-line no-param-reassign\n\t\tif (typeof target[k] === 'object' && typeof source[k] === 'object') merge(target[k], source[k]);\n\t\telse target[k] = source[k]; // eslint-disable-line no-param-reassign\n\t}\n}\n","import {get as _get, set as _set} from '@servicenow/ui-internal';\nimport {assign as _assign} from './assign';\nimport {merge as _merge} from './merge';\n\nfunction operateAtPath(operationFn, obj, path, value) {\n\tif (!path) return operationFn(obj, value);\n\n\tconst location = _get(obj, path);\n\tif (location === undefined || typeof location !== 'object') return _set(obj, path, value);\n\n\treturn operationFn(location, value);\n}\n\n// Object\nexport const set = (obj, {path, value}) => _set(obj, path, value);\nexport const assign = (obj, {path, value}) => operateAtPath(_assign, obj, path, value);\nexport const merge = (obj, {path, value}) => operateAtPath(_merge, obj, path, value);\n\n// Array\nexport const pop = (obj, {path}) => _get(obj, path).pop();\nexport const push = (obj, {path, value}) => _get(obj, path).push(value);\nexport const shift = (obj, {path}) => _get(obj, path).shift();\nexport const unshift = (obj, {path, value}) => _get(obj, path).unshift(value);\nexport const splice = (obj, {path, start = 0, deleteCount = 0, addItems = []}) =>\n\t_get(obj, path).splice(start, deleteCount, ...addItems);\nexport const concat = (obj, {path, value}) => {\n\tconst arr = _get(obj, path);\n\treturn arr.push.apply(arr, value); // eslint-disable-line prefer-spread\n};\n\nexport const declarativeOperations = {\n\tSET: 'set',\n\tASSIGN: 'assign',\n\tMERGE: 'merge',\n\tPOP: 'pop',\n\tPUSH: 'push',\n\tSHIFT: 'shift',\n\tUNSHIFT: 'unshift',\n\tSPLICE: 'splice',\n\tCONCAT: 'concat'\n};\n\n// TODO: Map / Set / Date\n","import {getConfigItem, configConstants} from '@servicenow/ui-config';\n\nconst {PAGE_OPT_OUT_PROPERTY_DEEP_COMPARE, PAGE_OPT_OUT_STATE_DEEP_COMPARE} = configConstants;\nconst propertyOptOutPages = (getConfigItem(PAGE_OPT_OUT_PROPERTY_DEEP_COMPARE) || '').split(',');\nconst stateOptOutPages = (getConfigItem(PAGE_OPT_OUT_STATE_DEEP_COMPARE) || '').split(',');\n\nexport default function shouldOptOutOfDeepCompareForPage(type) {\n\tconst pages = type === 'property' ? propertyOptOutPages : stateOptOutPages;\n\treturn pages.find(page => window.location.href.includes(page));\n}\n","import {requestIdleCallback} from '@servicenow/ui-utils';\nimport log from '../log';\n\nconst styleSheetsContent = {};\nconst PREFIX = 'SEISMIC_STYLES';\n\nconst get = (version, tagName) => {\n\tlet contents = styleSheetsContent[tagName];\n\tif (contents) return contents;\n\n\ttry {\n\t\tconst errorText = `<title>Error</title>`;\n\t\tcontents = localStorage.getItem(`${PREFIX}_${tagName}${version}`);\n\t\tif (contents.includes(errorText)) contents = '';\n\t} catch (e) {\n\t\tlog(`The stylesheets content for the tag, ${tagName}, could not be retrieved.`);\n\t}\n\n\treturn contents;\n};\n\nconst set = (version, tagName, contents) => {\n\ttry {\n\t\tstyleSheetsContent[tagName] = contents;\n\t\trequestIdleCallback(() => {\n\t\t\tlocalStorage.setItem(`${PREFIX}_${tagName}${version}`, contents);\n\t\t});\n\t} catch (e) {\n\t\tlog(`The stylesheets content for the custom element, ${name}, could not be cached.`);\n\t}\n};\n\nexport default {set, get};\n","const styleSheetsRequestCache = new Map();\n\nexport default {\n\thas: key => styleSheetsRequestCache.has(key),\n\tget: key => styleSheetsRequestCache.get(key),\n\tset: (key, value) => styleSheetsRequestCache.set(key, value),\n\tclear: () => styleSheetsRequestCache.clear()\n};\n","import styleSheetsRequestCache from './styleSheetsRequestCache';\n\nexport default async function resolveStylesheetsContent(stylesheets) {\n\ttry {\n\t\tconst errorText = `<title>Error</title>`;\n\t\tconst responses = await Promise.all(\n\t\t\tstylesheets.map(stylesheet => {\n\t\t\t\tif (styleSheetsRequestCache.has(stylesheet)) {\n\t\t\t\t\treturn styleSheetsRequestCache.get(stylesheet);\n\t\t\t\t}\n\t\t\t\tconst request = fetch(stylesheet);\n\t\t\t\tstyleSheetsRequestCache.set(stylesheet, request);\n\t\t\t\treturn request;\n\t\t\t})\n\t\t);\n\t\tlet text = await Promise.all(\n\t\t\tresponses.map(response => (response.clone ? response.clone() : response).text())\n\t\t);\n\t\ttext = text.filter(t => !t.includes(errorText));\n\t\treturn text.join(' ');\n\t} catch (e) {\n\t\treturn '';\n\t}\n}\n","import {memoize, pendingNetworkActionCountForHost} from '@servicenow/ui-internal';\nimport {createInteractionId, mark, types as metrics} from '@servicenow/ui-metrics';\nimport {getSelectorParts, getAffected} from '../property-selectors';\nimport {PROPERTY_SELECTOR_SIGIL, COMPONENT_INTERACTIVE} from '../constants';\nimport {\n\tCHILDREN_TO_BE_INTERACTIVE,\n\tANCESTOR_ROOT_NODE,\n\tCOMPONENT_ID,\n\tPROPS,\n\tINTERACTIVE_TIMESTAMP,\n\tSELECTABLE_PROPERTIES,\n\tCONDITIONAL_DISPATCH\n} from '../symbols';\nimport getHostVariables from './getHostVariables';\nimport {countHighPriorityTasks, countMediumPriorityTasks} from '../scheduler';\n\nconst isProvider = memoize(\n\tel => {\n\t\tconst variables = getHostVariables(el);\n\t\treturn variables[SELECTABLE_PROPERTIES] && variables[SELECTABLE_PROPERTIES].length;\n\t},\n\t{createCacheKey: el => el.tagName, profileName: 'isProvider'}\n);\n\nconst areProvidersInteractive = (el, componentRegistry) => {\n\tconst variables = getHostVariables(el);\n\tconst properties = variables[PROPS];\n\n\tfor (const k in properties) {\n\t\tconst value = properties[k];\n\t\tconst [id] = getSelectorParts(value);\n\t\tif (id) {\n\t\t\tconst providerEl = componentRegistry[id];\n\t\t\tif (providerEl) {\n\t\t\t\tconst providerVariables = getHostVariables(providerEl);\n\t\t\t\tif (providerVariables && !providerVariables[INTERACTIVE_TIMESTAMP]) return false;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n};\n\nconst notifySubscribers = (el, componentRegistry) => {\n\tconst variables = getHostVariables(el);\n\tconst selectabledProperties = variables[SELECTABLE_PROPERTIES];\n\tconst selectabledPropertiesLength = (selectabledProperties && selectabledProperties.length) || 0;\n\n\tfor (let i = 0; i < selectabledPropertiesLength; i++) {\n\t\tconst propertyName = selectabledProperties[i];\n\t\tconst affectedComponents = getAffected(\n\t\t\tpropertyName,\n\t\t\tvariables[COMPONENT_ID],\n\t\t\tcomponentRegistry,\n\t\t\tfalse\n\t\t);\n\n\t\tfor (const id in affectedComponents) {\n\t\t\tconst [componentId] = id.split(PROPERTY_SELECTOR_SIGIL);\n\t\t\tconst subscriberEl = componentRegistry[componentId];\n\t\t\tif (subscriberEl) markComponentInteractive(subscriberEl, componentRegistry);\n\t\t}\n\t}\n};\n\nexport default function markComponentInteractive(el, componentRegistry) {\n\tconst variables = getHostVariables(el);\n\tif (!variables || variables[INTERACTIVE_TIMESTAMP]) return;\n\n\tif (countHighPriorityTasks(el)) return false;\n\tif (countMediumPriorityTasks(el)) return false;\n\tif (pendingNetworkActionCountForHost(el)) return false;\n\n\tconst childrenToBeInteractive = variables[CHILDREN_TO_BE_INTERACTIVE];\n\tif (!childrenToBeInteractive) return false;\n\n\tfor (const k in childrenToBeInteractive) return false;\n\n\tconst providersInteractive = areProvidersInteractive(el, componentRegistry);\n\tif (!providersInteractive) return false;\n\n\tconst interactiveTimestamp = performance.now();\n\tvariables[INTERACTIVE_TIMESTAMP] = interactiveTimestamp;\n\tmark(el, createInteractionId(), metrics.INTERACTIVE, {});\n\tvariables[CONDITIONAL_DISPATCH](\n\t\tCOMPONENT_INTERACTIVE,\n\t\t{host: el, interactiveTimestamp},\n\t\t{internal: true}\n\t);\n\n\tconst parentEl = variables[ANCESTOR_ROOT_NODE];\n\tif (parentEl) {\n\t\tconst parentVariables = getHostVariables(parentEl);\n\t\tdelete parentVariables[CHILDREN_TO_BE_INTERACTIVE][variables[COMPONENT_ID]];\n\t\tmarkComponentInteractive(parentEl, componentRegistry);\n\t}\n\n\tif (isProvider(el)) notifySubscribers(el, componentRegistry);\n}\n","import log from '../log';\nimport {CONTEXT_VIEW_KEY} from '../symbols';\n\nexport default function createOnStateChangeArgs(\n\tuseCoeffectsLikeObjectInView,\n\tcomponentId,\n\tstate,\n\tcontext,\n\thelpers,\n\thost\n) {\n\tif (useCoeffectsLikeObjectInView) {\n\t\tconst {properties} = state;\n\t\tconst stateSansProperties = {...state};\n\t\tdelete stateSansProperties.properties;\n\n\t\treturn [{state: stateSansProperties, properties, context, ...helpers, host}, undefined];\n\t}\n\n\tlet contextKey = 'context';\n\tif (state.context) {\n\t\tcontextKey = CONTEXT_VIEW_KEY;\n\t\tconst message =\n\t\t\t'A \"context\" property key already exists in the view derived state object. The context value was assigned to a symbol.' +\n\t\t\t' The symbol constant, \"contextViewKey\", can imported from @servicenow/ui-core.';\n\t\tlog(message, {host, origin: 'createOnStateChangeArgs'});\n\t}\n\n\treturn [{componentId, ...state, [contextKey]: context}, helpers];\n}\n","import getHostVariables from './getHostVariables';\nimport {ANCESTOR_ROOT_NODE} from '../symbols';\n\nexport default function getAncestorNode(host) {\n\treturn getHostVariables(host)[ANCESTOR_ROOT_NODE];\n}\n","const updateCustomElementResolvers = {};\nconst updateCustomElementObservers = {};\n// eslint-disable-next-line prefer-destructuring\nconst HMR_ENABLED = process.env.HMR_ENABLED;\n\nexport function addUpdateCustomElementObserver(tagName, observer) {\n\tif (HMR_ENABLED) {\n\t\tconst observers = (updateCustomElementObservers[tagName] =\n\t\t\tupdateCustomElementObservers[tagName] || new Set());\n\t\tobservers.add(observer);\n\t\treturn () => observers.delete(observer);\n\t}\n}\n\nexport function setUpdateConfigResolver(tagName, resolver) {\n\tif (HMR_ENABLED) {\n\t\tupdateCustomElementResolvers[tagName] = resolver;\n\t}\n}\n\nlet unstableUpdateCustomElement;\nif (HMR_ENABLED) {\n\tunstableUpdateCustomElement = (tagName, config = {}, meta = {}) => {\n\t\tif (!updateCustomElementResolvers[tagName]) {\n\t\t\treturn {\n\t\t\t\taccept: false,\n\t\t\t\treason: `unknown tag \"${tagName}\"`\n\t\t\t};\n\t\t}\n\t\tconst {supportedConfigKeys, modifiedConfig} = updateCustomElementResolvers[tagName](\n\t\t\tconfig,\n\t\t\tmeta\n\t\t);\n\t\tconst modifiedConfigKeys = Object.keys(modifiedConfig);\n\t\tif (modifiedConfigKeys.length === 0) {\n\t\t\treturn {\n\t\t\t\taccept: true,\n\t\t\t\treason: 'nothing updated'\n\t\t\t};\n\t\t}\n\t\tconst unsupportedConfigKeys = modifiedConfigKeys.filter(\n\t\t\tkey => !supportedConfigKeys.includes(key)\n\t\t);\n\t\tif (unsupportedConfigKeys.length > 0) {\n\t\t\treturn {\n\t\t\t\taccept: false,\n\t\t\t\treason: `unsupported config: [${unsupportedConfigKeys.join(', ')}]`\n\t\t\t};\n\t\t}\n\t\tfor (const observer of updateCustomElementObservers[tagName]) {\n\t\t\tobserver(modifiedConfig);\n\t\t}\n\t\treturn {\n\t\t\taccept: true,\n\t\t\treason: `updated config: [${modifiedConfigKeys.join(', ')}]`\n\t\t};\n\t};\n}\n\nlet unstableRemoveUpdateForTag;\nif (process.env.NODE_ENV === 'test') {\n\tunstableRemoveUpdateForTag = tagName => {\n\t\tdelete updateCustomElementResolvers[tagName];\n\t\tdelete updateCustomElementObservers[tagName];\n\t};\n}\n\nexport {unstableUpdateCustomElement, unstableRemoveUpdateForTag};\n","import {SPAN_KIND_CLIENT, SPAN_LEVEL_FINE} from '../constants';\n\nexport default function getSpanOptions(host, level = SPAN_LEVEL_FINE) {\n\treturn {\n\t\tattributes: {\n\t\t\ttagName: host.tagName?.toLowerCase(),\n\t\t\tcomponentId: host.nowId,\n\t\t\t'seismic.level': level,\n\t\t\tkind: SPAN_KIND_CLIENT\n\t\t}\n\t};\n}\n","import {createTraceId} from '@servicenow/ui-metrics';\nimport getHostVariables from './getHostVariables';\nimport {ANCESTOR_ROOT_NODE, PREVIOUS_TRACE_ID} from '../symbols';\n\nexport default function resolveParentTraceId(host) {\n\tconst variables = getHostVariables(host);\n\n\tif (variables[ANCESTOR_ROOT_NODE]) {\n\t\tconst parentVariables = getHostVariables(variables[ANCESTOR_ROOT_NODE]);\n\t\tconst traceId = parentVariables[PREVIOUS_TRACE_ID];\n\t\tif (traceId) {\n\t\t\tvariables[PREVIOUS_TRACE_ID] = traceId;\n\t\t\treturn traceId;\n\t\t}\n\t}\n\n\tconst traceId = createTraceId();\n\tif (traceId) {\n\t\tvariables[PREVIOUS_TRACE_ID] = traceId;\n\t}\n\treturn traceId;\n}\n","import {getHostVariables} from '../../utils';\nimport {COMPONENT_NAME_PROP, COMPONENT_NAME_ATTR} from '../../constants';\nimport {PROPS} from '../../symbols';\n\nexport function getComponentName(el) {\n\tconst hostVariables = getHostVariables(el);\n\treturn hostVariables[PROPS] && hostVariables[PROPS].hasOwnProperty(COMPONENT_NAME_PROP)\n\t\t? hostVariables[PROPS][COMPONENT_NAME_PROP]\n\t\t: el[COMPONENT_NAME_PROP] || el.getAttribute(COMPONENT_NAME_ATTR);\n}\n","import {guid} from '@servicenow/ui-internal';\nimport {getComponentName} from './getComponentName';\nimport {COMPONENT_ID, ROOT_NODE} from '../../symbols';\nimport {SEISMIC_HOIST_TAG_NAME, APPEND_TO_META_PROP_NAME} from '../../constants';\n\nexport function createMetaData(host, actionMeta, hostVariables) {\n\tconst componentName = getComponentName(host) || actionMeta.componentName;\n\tconst id = hostVariables[COMPONENT_ID];\n\tconst appendToMeta = actionMeta.retargeted ? actionMeta.appended : host[APPEND_TO_META_PROP_NAME];\n\n\treturn {\n\t\t...actionMeta,\n\t\t...(appendToMeta !== undefined ? {appended: appendToMeta} : {}),\n\t\thoistHost:\n\t\t\thostVariables[ROOT_NODE].host.tagName === SEISMIC_HOIST_TAG_NAME\n\t\t\t\t? hostVariables[ROOT_NODE].host\n\t\t\t\t: undefined,\n\t\tcomponentName,\n\t\tid,\n\t\tactionId: guid()\n\t};\n}\n","import {PROPERTIES_SET} from '../../constants';\n\nexport function isPropertyUpdate(type) {\n\treturn type === PROPERTIES_SET;\n}\n","import {CONFIG} from '../../symbols';\nimport log from '../../log';\n\nexport function validateActionPayload(host, type, payload, hostVariables) {\n\tconst {[type]: {validate} = {}} = hostVariables[CONFIG].actions;\n\n\tif (\n\t\t(process.env.NODE_ENV !== 'production' && payload && typeof payload !== 'object') ||\n\t\tArray.isArray(payload)\n\t) {\n\t\tlog(\n\t\t\t`Expected payload of ${type} to be an Object but found ${payload}. This will result in inconsistent behavior when combined with behavior options or appendToPayload.`,\n\t\t\t{host, origin: 'validateActionPayload'}\n\t\t);\n\t}\n\n\tif (typeof validate === 'function') validate(payload, host);\n}\n","import {\n\tSTORE_UPDATED,\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_RENDERED,\n\tCOMPONENT_DOM_READY,\n\tSET_INITIAL_STATE,\n\tNOW_UI_EVENT,\n\tPROPERTIES_SET,\n\tDISPATCH_EVENT,\n\tCOMPONENT_PROPERTY_UPDATE_REQUESTED,\n\tCOMPONENT_RENDER_REQUESTED\n} from '../../constants';\n\nconst internalActionTypes = [\n\tPROPERTIES_SET,\n\tDISPATCH_EVENT,\n\tSTORE_UPDATED,\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_RENDERED,\n\tCOMPONENT_DOM_READY,\n\tSET_INITIAL_STATE,\n\tNOW_UI_EVENT,\n\t'SEISMIC_COMPONENT_ERROR_THROWN',\n\tCOMPONENT_PROPERTY_UPDATE_REQUESTED,\n\tCOMPONENT_RENDER_REQUESTED\n];\n\n// TODO: memoize\nexport function isInternalActionType(type, internal = false) {\n\treturn internalActionTypes.includes(type) && !internal;\n}\n","// TODO: move to const internalActionTypes.NAME\nimport {\n\tSTORE_UPDATED,\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_RENDERED,\n\tCOMPONENT_DOM_READY,\n\tSET_INITIAL_STATE,\n\tNOW_UI_EVENT,\n\tPROPERTIES_SET,\n\tDISPATCH_EVENT,\n\tCOMPONENT_PROPERTY_UPDATE_REQUESTED,\n\tCOMPONENT_RENDER_REQUESTED\n} from '../../constants';\n\nconst internalActionTypes = {\n\tPROPERTIES_SET,\n\tDISPATCH_EVENT,\n\tSTORE_UPDATED,\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_RENDERED,\n\tCOMPONENT_DOM_READY,\n\tSET_INITIAL_STATE,\n\tNOW_UI_EVENT,\n\tCOMPONENT_ERROR_THROWN: 'SEISMIC_COMPONENT_ERROR_THROWN',\n\tCOMPONENT_PROPERTY_UPDATE_REQUESTED,\n\tCOMPONENT_RENDER_REQUESTED\n};\n\n// TODO: memoize\nexport function getInternalActionName(type) {\n\tfor (const k in internalActionTypes) {\n\t\tif (internalActionTypes[k] === type) return k;\n\t}\n}\n","import {locations} from '@servicenow/ui-internal';\nimport {getHostVariables} from '../../utils';\nimport {createMetaData} from './createMetaData';\nimport {appendToPayload} from './appendToPayload';\nimport {COMPONENT_ID} from '../../symbols';\n\nexport function createEventActionDetails(actionType, host, event, capture, eventHandler) {\n\tconst {detail = {}} = event;\n\tconst {\n\t\ttype = actionType,\n\t\tpayload = eventHandler ? appendToPayload(host, {event, host}) : undefined,\n\t\terror = null,\n\t\tmeta = createMetaData(\n\t\t\thost,\n\t\t\t{\n\t\t\t\teventHandler,\n\t\t\t\tcapture,\n\t\t\t\teffectType: locations.EVENT,\n\t\t\t\tevent,\n\t\t\t\thost,\n\t\t\t\tget path() {\n\t\t\t\t\treturn event\n\t\t\t\t\t\t.composedPath()\n\t\t\t\t\t\t.map(el => {\n\t\t\t\t\t\t\tconst hostVariables = getHostVariables(el);\n\t\t\t\t\t\t\treturn hostVariables && hostVariables[COMPONENT_ID];\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.filter(componentId => componentId);\n\t\t\t\t}\n\t\t\t},\n\t\t\tgetHostVariables(host)\n\t\t)\n\t} = detail;\n\n\treturn {type, payload, error, meta};\n}\n","import {getInteractionId, setInteractionId} from '@servicenow/ui-metrics';\nimport {\n\tCOMPONENT_DISCONNECTED,\n\tSCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED\n} from '../../constants';\nimport {HELPERS_SCHEDULED, HELPERS_IMMEDIATE} from '../../symbols';\nimport {normalizeActionMeta, getHostVariables} from '../../utils';\n\nconst attachTraceContext = (span, meta) => {\n\tif (!meta.span && span) {\n\t\tmeta.span = span;\n\t}\n};\n// this is done so that we don't break anyone dispatching from a disconnect\n// function or action handler; people are relying on this to unsubscribe from\n// AMB and other types of clean up. the AMB effect should be changed into a\n// behavior that has a COMPONENT_DISCONNECTED handler, so that people don't\n// have to manually clean up or rely on this broken functionality.\nexport function wrapDispatch(host, action) {\n\tconst hostVariables = getHostVariables(host);\n\tconst interactionId = getInteractionId(action.meta);\n\tconst span = action.meta.actionSpan || action.meta.span;\n\tconst helpers = action.meta[SCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED]\n\t\t? hostVariables[HELPERS_IMMEDIATE]\n\t\t: hostVariables[HELPERS_SCHEDULED];\n\tconst {\n\t\tupdateState: originalUpdateState,\n\t\tupdateProperties: originalUpdateProperties,\n\t\tupdateContext: originalUpdateContext,\n\t\tdispatch: originalDispatch,\n\t\tlogger\n\t} = helpers;\n\tconst updateState = (...args) => originalUpdateState(...args, {interactionId, span});\n\tconst updateProperties = (...args) => originalUpdateProperties(...args, {interactionId, span});\n\tconst updateContext = (...args) => originalUpdateContext(...args, {interactionId, span});\n\tlet dispatch;\n\n\tif (\n\t\taction.type !== COMPONENT_DISCONNECTED &&\n\t\t!action.meta[SCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED]\n\t) {\n\t\tdispatch = (type, payload, meta = {}, error) => {\n\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\tmeta = normalizeActionMeta(meta, {host});\n\t\t\tattachTraceContext(span, meta);\n\t\t\tmeta.parentActionId = action.meta.actionId;\n\t\t\tsetInteractionId(meta, interactionId);\n\t\t\treturn originalDispatch(type, payload, meta, error);\n\t\t};\n\t} else {\n\t\tdispatch = (type, payload, meta = {}, error) => {\n\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\tmeta = normalizeActionMeta(meta, {host});\n\t\t\tsetInteractionId(meta, interactionId);\n\t\t\tattachTraceContext(span, meta);\n\t\t\tmeta.parentActionId = action.meta.actionId;\n\t\t\tmeta[SCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED] = true; // eslint-disable-line no-param-reassign\n\t\t\treturn originalDispatch(type, payload, meta, error);\n\t\t};\n\t}\n\n\tdispatch.updateState = updateState;\n\tdispatch.updateProperties = updateProperties;\n\tdispatch.updateContext = updateContext;\n\tdispatch.logger = logger;\n\n\treturn {\n\t\tupdateState,\n\t\tupdateProperties,\n\t\tupdateContext,\n\t\tdispatch,\n\t\tlogger\n\t};\n}\n","export default function isStoreUpdate(actionType) {\n\treturn actionType === 'STORE_UPDATED';\n}\n","import {TARGETED_ACTION_TYPES} from '../../symbols';\n\nexport function hasActionHandlerForType(hostVariables, type) {\n\treturn hostVariables[TARGETED_ACTION_TYPES].some(actionType => actionType === type);\n}\n","import {SEISMIC_HOIST_TAG_NAME} from '../../constants';\n\nexport function wasActionDispatchedByDescendant(composedPath, host) {\n\t/*\n\t\taction was dispatched from within hook or event handlers in view\n\n\t\tview(state, {dispatch}) {\n\t\t\treturn (\n\t\t\t\t<div>\n\t\t\t\t\t<p on-click={() => dispatch('SN-BUTTON#BUTTON_CLICKED', {})}>I am a paragraph. Click me.</p>\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t */\n\tif (!composedPath.length) return true;\n\n\tlet slotted = false;\n\tfor (let i = 0; i < composedPath.length; i++) {\n\t\tconst el = composedPath[i];\n\t\tif (el.tagName === 'SLOT') slotted = true;\n\n\t\tif (el.host) {\n\t\t\t/*\n\t\t\t\tif the first shadowRoot encountered belongs to the host and a slot is not in the path\n\t\t\t\te.g., button dispatches and component that owns view should handle\n\n\t\t\t\tview() {\n\t\t\t\t\treturn <p><sn-button></sn-button></p>;\n\t\t\t\t}\n\t\t\t */\n\t\t\tif (el.host === host || el.host.tagName === SEISMIC_HOIST_TAG_NAME)\n\t\t\t\treturn slotted ? false : true;\n\n\t\t\t/*\n\t\t\t\tif content is slotted and first shadowRoot encountered does not belong to the host\n\t\t\t\te.g., button dispatches and component that owns view should handle\n\n\t\t\t\tview() {\n\t\t\t\t\treturn <slotted-child><sn-button></sn-button></slotted-child>;\n\t\t\t\t},\n\t\t\t */\n\t\t\treturn slotted ? true : false;\n\t\t}\n\t}\n}\n","import {createEventActionDetails} from './utils';\nimport {CONFIG, HOIST_COMPOSED_PATH} from '../symbols';\nimport {SEISMIC_HOIST_TAG_NAME, PROPAGATION_STOPPED, DEFAULT_PREVENTED} from '../constants';\nimport {getHostVariables, emitNowUiEvent} from '../utils';\n\nconst allowedPropertyUpdates = ['payload', 'error', 'meta'];\n\nexport function getPath(meta, host) {\n\tif (meta.event.path) return meta.event.path;\n\n\tconst path = [];\n\tlet el = host;\n\tlet parentNode = el.parentNode || el.host;\n\twhile (parentNode) {\n\t\tpath.push(el);\n\t\tel = parentNode;\n\t\tparentNode = el.parentNode || el.host;\n\t}\n\n\treturn [...path, document, window];\n}\n\nexport function getComposedPath(meta, host) {\n\tconst hoistComposedPath = meta[HOIST_COMPOSED_PATH];\n\n\tif (!hoistComposedPath) return meta.event.composedPath();\n\n\tconst composedPath = [];\n\tfor (let i = 0; i < hoistComposedPath.length; i++) {\n\t\tconst el = hoistComposedPath[i];\n\t\tif (el.tagName === SEISMIC_HOIST_TAG_NAME) break;\n\n\t\tcomposedPath.push(el);\n\t}\n\n\treturn [...composedPath, ...getPath(meta, host)];\n}\n\nexport function addActionHandler(\n\ttargetEl,\n\ttargetSelector,\n\thost,\n\ttype,\n\tcapture,\n\teventHandler,\n\thandler\n) {\n\tconst hostVariables = getHostVariables(host);\n\tconst listener = event => {\n\t\tconst config = hostVariables[CONFIG];\n\t\tconst detail = createEventActionDetails(type, host, event, capture, eventHandler);\n\t\tconst emitPropagationStopped = () => {\n\t\t\temitNowUiEvent(PROPAGATION_STOPPED, {host, action: detail});\n\t\t};\n\t\thandler(\n\t\t\ttargetEl,\n\t\t\ttargetSelector,\n\t\t\thost,\n\t\t\ttype,\n\t\t\tnew Proxy(\n\t\t\t\t{\n\t\t\t\t\t...detail,\n\t\t\t\t\tstopPropagation() {\n\t\t\t\t\t\temitPropagationStopped();\n\t\t\t\t\t\treturn event.stopPropagation();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tget(action, key) {\n\t\t\t\t\t\tconst {payload, meta} = action;\n\t\t\t\t\t\tif (key === 'defaultPrevented') {\n\t\t\t\t\t\t\treturn payload && payload.event\n\t\t\t\t\t\t\t\t? payload.event.defaultPrevented\n\t\t\t\t\t\t\t\t: event.defaultPrevented;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (key === 'preventDefault') {\n\t\t\t\t\t\t\treturn function preventDefault() {\n\t\t\t\t\t\t\t\temitNowUiEvent(DEFAULT_PREVENTED, {host, action});\n\t\t\t\t\t\t\t\treturn payload && payload.event\n\t\t\t\t\t\t\t\t\t? payload.event.preventDefault()\n\t\t\t\t\t\t\t\t\t: event.preventDefault();\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (key === 'composedPath') return () => getComposedPath(meta, host);\n\n\t\t\t\t\t\treturn action[key];\n\t\t\t\t\t},\n\t\t\t\t\tset(action, key, value) {\n\t\t\t\t\t\tif (allowedPropertyUpdates.includes(key)) {\n\t\t\t\t\t\t\taction[key] = value; // eslint-disable-line no-param-reassign\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t)\n\t\t);\n\n\t\tif (config && config.shouldStopPropagation[type]) {\n\t\t\temitPropagationStopped();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t};\n\n\ttargetEl.addEventListener(type, listener, capture);\n\treturn function removeActionHandler() {\n\t\ttargetEl.removeEventListener(type, listener, capture);\n\t};\n}\n","const consumerCache = {};\n\nexport const addConsumer = (key, host) => {\n\tif (!consumerCache[key]) {\n\t\tconsumerCache[key] = new Set();\n\t\treturn consumerCache[key].add(host);\n\t} else if (consumerCache[key].has(host)) {\n\t\treturn;\n\t}\n\n\tconsumerCache[key].add(host);\n};\n\nexport const removeConsumer = host => {\n\tReflect.ownKeys(consumerCache).forEach(k => {\n\t\tif (consumerCache[k].has(host)) {\n\t\t\tconsumerCache[k].delete(host);\n\t\t}\n\t});\n};\n\nexport const getConsumers = key => {\n\treturn (consumerCache[key] && consumerCache[key].values()) || new Set().values();\n};\n\nexport const removeConsumersForContextKey = key => {\n\tif (consumerCache[key]) consumerCache[key].clear();\n};\n\nexport const removeAllConsumers = () => {\n\tReflect.ownKeys(consumerCache).forEach(k => {\n\t\tdelete consumerCache[k];\n\t});\n};\n","import {CONTEXT_RESOLVED_VALUE} from '../symbols';\nimport log from '../log';\n\nconst contexts = new Map();\nconst getContext = contextKey => {\n\tif (contexts.has(contextKey)) {\n\t\tconst context = contexts.get(contextKey) || {};\n\t\tconst resolvedValue = context[CONTEXT_RESOLVED_VALUE];\n\t\tif (resolvedValue !== undefined) {\n\t\t\treturn resolvedValue;\n\t\t} else if (context.default !== undefined) {\n\t\t\treturn context.default;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nconst setContext = (contextKey, value) => {\n\tif (contexts.has(contextKey)) {\n\t\tcontexts.get(contextKey)[CONTEXT_RESOLVED_VALUE] = value;\n\t} else {\n\t\tif (process.env.NODE_ENV !== 'production') {\n\t\t\tlog(\n\t\t\t\t`The context \"${contextKey?.toString()}\" could not be accessed. Context must be defined using the \"createContext\" function. \"createContext\" can imported from @servicenow/ui-core.`,\n\t\t\t\t{\n\t\t\t\t\torigin: 'context'\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n};\n\nexport default contexts;\nexport {getContext, setContext};\n","import ajv from '../ajv';\n\nconst noop = () => true;\n\n/**\n * Build the validator for a context\n * @private\n * @param {*} propertyDefinitions The definitions of properties passed into createCustomElement's config.properties\n * @returns {Function(properties, host)} The function to validate the component's properties\n */\nfunction buildContextValidator(schema) {\n\tif (!schema) return noop;\n\n\tif (process.env.NODE_ENV !== 'production') {\n\t\tlet validate;\n\t\ttry {\n\t\t\tvalidate = ajv.compile(schema);\n\t\t} catch (e) {\n\t\t\tconsole.error(e); // eslint-disable-line no-console\n\t\t\treturn () => false;\n\t\t}\n\n\t\treturn validate;\n\t}\n\n\treturn noop;\n}\n\nexport default buildContextValidator;\n","import contexts from './contexts';\nimport buildContextValidator from '../utils/schema/build/buildContextValidator';\nimport {guid} from '@servicenow/ui-internal';\n\nexport const prefix = guid();\n\nexport default function createContext(name, definition = {}) {\n\tconst key = Symbol(`${prefix}_${name}`);\n\tcontexts.set(key, {...definition, validate: buildContextValidator(definition.schema)});\n\treturn key;\n}\n","import {memoize} from '@servicenow/ui-internal';\nimport log from '../log';\nimport {addConsumer} from './consumers';\nimport {prefix} from './createContext';\nimport {getContext} from './contexts';\n\nconst shouldNotResolveContext = memoize(key => !key.toString().includes(prefix), {\n\tprofileName: 'shouldNotResolveContext'\n});\n\nexport default function createContextProxy(host) {\n\treturn new Proxy(\n\t\t{},\n\t\t{\n\t\t\tget(target, prop) {\n\t\t\t\tif (shouldNotResolveContext(prop)) {\n\t\t\t\t\tif (process.env.NODE_ENV !== 'production') {\n\t\t\t\t\t\tlog(\n\t\t\t\t\t\t\t`The context ${prop.toString()} could not be accessed. Context must be defined using the \"createContext\" function. \"createContext\" can imported from @servicenow/ui-core.`,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\thost: this,\n\t\t\t\t\t\t\t\torigin: 'createContextProxy'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn target[prop];\n\t\t\t\t}\n\n\t\t\t\taddConsumer(prop, host);\n\t\t\t\treturn getContext(prop);\n\t\t\t},\n\t\t\tset(target, prop) {\n\t\t\t\tif (process.env.NODE_ENV !== 'production') {\n\t\t\t\t\tlog(`Cannot set context value ${prop.toString()}. updateContext must be used.`, {\n\t\t\t\t\t\thost: this,\n\t\t\t\t\t\torigin: 'createContextProxy'\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t);\n}\n","import {STATE} from '../symbols';\nimport {getHostVariables} from '../utils';\nimport {wrapDispatch} from './utils';\nimport createContextProxy from '../context/createContextProxy';\n\nexport function createContext(host, action) {\n\tconst properties = host.getResolvedProperties();\n\tconst hostVariables = getHostVariables(host);\n\n\treturn {\n\t\tcoeffects: {\n\t\t\tstate: {...hostVariables[STATE], properties: host.getProperties()},\n\t\t\tcontext: createContextProxy(host),\n\t\t\tproperties,\n\t\t\thost,\n\t\t\taction,\n\t\t\t...wrapDispatch(host, action)\n\t\t},\n\t\teffects: []\n\t};\n}\n","// WeakMap: host -> WeakMap: effectFn -> {actionType: value}\nexport default new WeakMap();\n","import {allLogTypes as logTypes, defer} from '@servicenow/ui-internal';\nimport hostMap from './hostMap';\nimport log from '../../log';\nimport {timingMetricTypes, logTimingMetrics} from '@servicenow/ui-metrics';\n\nfunction createDebounce(fn, {delay = 0, maxWait, collate = false}, host, ctx, runEffectFn) {\n\tlet debounceVariables = getDebounceVariables();\n\tconst validMaxWait = Number.isInteger(maxWait);\n\tconst shouldCollate = collate === true;\n\tconst tDelay = !Number.isInteger(delay) ? 0 : delay;\n\tconst tMaxWait = validMaxWait ? maxWait : 0;\n\n\tconst componentName = host?.tagName;\n\tlogTimingMetrics(timingMetricTypes.DEBOUNCE, tDelay, componentName);\n\n\tif (validMaxWait && tMaxWait < tDelay) {\n\t\tlog(\n\t\t\t'For the debounce modifier configurations, the property maxWait should be greater than the property delay.',\n\t\t\t{level: logTypes.WARN, host, origin: 'debounce'}\n\t\t);\n\t}\n\n\tconst finishDebounce = fn => {\n\t\tinvokeFn(shouldCollate, debounceVariables, runEffectFn, fn, ctx);\n\t\tdebounceVariables = getDebounceVariables();\n\t};\n\n\tconst collateData = coeffects => {\n\t\tconst {\n\t\t\taction: {payload = {}}\n\t\t} = coeffects;\n\t\tdebounceVariables.collated.push({action: {payload}});\n\t};\n\n\treturn function debouncedEffect(...args) {\n\t\tclearTimeout(debounceVariables.delayId);\n\t\tdebounceVariables.lastArgs = args;\n\t\tdebounceVariables.saveEventProps();\n\t\tif (shouldCollate) collateData(args[args.length - 1]);\n\t\tdebounceVariables.delayId = defer(() => finishDebounce(fn), tDelay);\n\t\tif (validMaxWait && tMaxWait && !debounceVariables.maxWaitId)\n\t\t\tdebounceVariables.maxWaitId = defer(() => finishDebounce(fn), tMaxWait);\n\t};\n}\n\nconst invokeFn = (accumulate, debounceVariables, runEffectFn, fn, ctx) => {\n\tdebounceVariables.retrieveEventProps();\n\tconst {collated, lastArgs} = debounceVariables;\n\tclearTimers(debounceVariables);\n\tif (accumulate && lastArgs && lastArgs.length > 0) {\n\t\tconst coeffects = lastArgs[lastArgs.length - 1];\n\t\tcoeffects.collated = collated;\n\t}\n\n\t// defensive check for defer when throttled\n\t// nextTick not cancellable so lastArgs can be null from previous invocation\n\tif (lastArgs) runEffectFn(fn, lastArgs, ctx);\n};\n\nconst clearTimers = ({delayId, maxWaitId}) => {\n\tclearTimeout(delayId);\n\tclearTimeout(maxWaitId);\n};\n\nconst getDebounceVariables = () => ({\n\tdelayId: null,\n\tmaxWaitId: null,\n\tlastArgs: null,\n\tcollated: [],\n\tevent: {\n\t\teventPath: [],\n\t\tcurrentTarget: null\n\t},\n\tsaveEventProps() {\n\t\tif (!this.lastArgs || this.lastArgs.length === 0) return;\n\t\tconst coeffects = this.lastArgs[this.lastArgs.length - 1];\n\t\tconst event = coeffects.action?.payload.event;\n\t\tthis.event.eventPath = event?.composedPath();\n\t\tthis.event.currentTarget = event?.currentTarget;\n\t},\n\tretrieveEventProps() {\n\t\tif (!this.lastArgs || this.lastArgs.length === 0) return;\n\t\tconst coeffects = this.lastArgs[this.lastArgs.length - 1];\n\t\tconst event = coeffects.action?.payload.event;\n\t\tif (typeof event === 'undefined') return;\n\t\tevent.composedPath = () => this.event.eventPath;\n\t\tObject.defineProperty(event, 'currentTarget', {\n\t\t\tvalue: this.event.currentTarget,\n\t\t\twritable: false\n\t\t});\n\t}\n});\n\n/**\n * Debounce modifier for effect functions\n *\n * @param host\n * @param actionType\n * @param effectFn\n * @param modifier\n */\nexport default function debounce(host, actionType, effectFn, modifier, ctx, runEffectFn) {\n\tif (!hostMap.has(host)) hostMap.set(host, new WeakMap());\n\n\tconst effectMap = hostMap.get(host);\n\n\tif (!effectMap.has(effectFn)) effectMap.set(effectFn, {});\n\n\tconst actionMappings = effectMap.get(effectFn);\n\tif (!actionMappings[actionType])\n\t\tactionMappings[actionType] = createDebounce(effectFn, modifier, host, ctx, runEffectFn);\n\n\treturn actionMappings[actionType];\n}\n","import hostMap from './hostMap';\n\nfunction createCancelable(fn) {\n\treturn function cancelableEffect(...args) {\n\t\treturn fn(...args);\n\t};\n}\n\n/**\n * Take the latest effect and cancel any previously started effect fns\n *\n * Currently only supports generator fns\n *\n * @param host\n * @param actionType\n * @param effectFn\n * @returns {R|*}\n */\nexport default function takeLatest(host, actionType, effectFn) {\n\tif (!hostMap.has(host)) hostMap.set(host, new WeakMap());\n\n\tconst effectMap = hostMap.get(host);\n\n\tif (!effectMap.has(effectFn)) effectMap.set(effectFn, {});\n\n\tconst actionMappings = effectMap.get(effectFn);\n\tif (actionMappings[actionType]) actionMappings[actionType].cancelled = true;\n\n\tactionMappings[actionType] = createCancelable(effectFn);\n\n\treturn actionMappings[actionType];\n}\n","import hostMap from './hostMap';\nimport {defer} from '@servicenow/ui-internal';\n\nfunction createThrottle(fn, {limit = 0}, ctx, runEffectFn) {\n\tlet free = true;\n\treturn function throttledEffect(...args) {\n\t\tif (!free) return;\n\n\t\tfree = false;\n\t\trunEffectFn(fn, args, ctx);\n\t\tdefer(() => {\n\t\t\tfree = true;\n\t\t}, limit);\n\t};\n}\n\n/**\n * Throttle modifier for effect functions\n *\n * @param host\n * @param actionType\n * @param effectFn\n * @param modifier\n */\nexport default function throttle(host, actionType, effectFn, modifier, ctx, runEffectFn) {\n\tif (!hostMap.has(host)) hostMap.set(host, new WeakMap());\n\n\tconst effectMap = hostMap.get(host);\n\n\tif (!effectMap.has(effectFn)) effectMap.set(effectFn, {});\n\n\tconst actionMappings = effectMap.get(effectFn);\n\tif (!actionMappings[actionType])\n\t\tactionMappings[actionType] = createThrottle(effectFn, modifier, ctx, runEffectFn);\n\n\treturn actionMappings[actionType];\n}\n","/**\n * Parse target element from coeffects\n *\n * @param coeffects\n */\nexport default function getTargetElement(coeffects) {\n\tif (\n\t\tcoeffects &&\n\t\tcoeffects.action &&\n\t\tcoeffects.action.payload &&\n\t\tcoeffects.action.payload.event &&\n\t\tcoeffects.action.payload.event.target\n\t)\n\t\treturn coeffects.action.payload.event.target;\n\n\treturn coeffects.host;\n}\n","export const DEBOUNCE = 'debounce';\nexport const TAKE_LATEST = 'takeLatest';\nexport const THROTTLE = 'throttle';\n","import {mark, types as metrics} from '@servicenow/ui-metrics';\n\n/**\n * Runs effect function (includes async and generator functions)\n *\n * @param fn\n * @param args\n * @returns {Promise}\n */\nexport default function runEffect(fn, args, {host, interactionId, type}) {\n\tmark(host, interactionId, metrics.EFFECT_START, {type});\n\tconst generator = fn(...args);\n\n\tif (!generator || !generator.next) {\n\t\tmark(host, interactionId, metrics.EFFECT_END, {type});\n\t\treturn Promise.resolve(generator);\n\t}\n\n\tfunction runner(verb, arg) {\n\t\tif (fn.cancelled) {\n\t\t\tmark(host, interactionId, metrics.EFFECT_END, {type});\n\t\t\treturn Promise.resolve(generator.return());\n\t\t}\n\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = generator[verb](arg);\n\t\t} catch (err) {\n\t\t\tmark(host, interactionId, metrics.EFFECT_END, {type});\n\t\t\treturn Promise.reject(err);\n\t\t}\n\n\t\tif (result.done) {\n\t\t\tmark(host, interactionId, metrics.EFFECT_END, {type});\n\t\t\treturn Promise.resolve(result.value);\n\t\t}\n\n\t\tmark(host, interactionId, metrics.EFFECT_END, {type});\n\t\treturn Promise.resolve(result.value).then(onResolved, onRejected);\n\t}\n\n\tconst onResolved = runner.bind(runner, 'next');\n\tconst onRejected = runner.bind(runner, 'throw');\n\treturn onResolved();\n}\n","import {\n\tdebounce,\n\ttakeLatest,\n\tthrottle,\n\tgetTargetElement,\n\thostMap,\n\tmodifierTypes\n} from './modifiers';\nimport runEffect from './runEffect';\n\nexport default function effectRunner(effect, ctx, ...args) {\n\tconst {effect: effectFn, modifier = {}} = effect;\n\tconst coeffects = args[args.length - 1];\n\tif (!coeffects) return runEffect(effectFn, args, ctx);\n\n\tconst targetElement = getTargetElement(coeffects);\n\tswitch (modifier.name) {\n\t\tcase modifierTypes.DEBOUNCE:\n\t\t\treturn debounce(\n\t\t\t\ttargetElement,\n\t\t\t\tcoeffects.action.type,\n\t\t\t\teffectFn,\n\t\t\t\tmodifier,\n\t\t\t\tctx,\n\t\t\t\trunEffect\n\t\t\t)(...args);\n\t\tcase modifierTypes.TAKE_LATEST:\n\t\t\treturn runEffect(takeLatest(targetElement, coeffects.action.type, effectFn), args, ctx).then(\n\t\t\t\t() => {\n\t\t\t\t\tdelete hostMap.get(targetElement).get(effectFn)[coeffects.action.type];\n\t\t\t\t}\n\t\t\t);\n\t\tcase modifierTypes.THROTTLE:\n\t\t\treturn throttle(\n\t\t\t\ttargetElement,\n\t\t\t\tcoeffects.action.type,\n\t\t\t\teffectFn,\n\t\t\t\tmodifier,\n\t\t\t\tctx,\n\t\t\t\trunEffect\n\t\t\t)(...args);\n\t\tdefault:\n\t\t\treturn runEffect(effectFn, args, ctx);\n\t}\n}\n","import {getInteractionId} from '@servicenow/ui-metrics';\nimport {dispatchError, locations} from '@servicenow/ui-internal';\nimport log from '../log';\nimport {effectRunner} from '../effects';\n\nfunction sandboxEffect(effect, dispatch, action, host) {\n\tconst {\n\t\ttype: actionType,\n\t\tmeta: {effectType = ''},\n\t\tpayload = {}\n\t} = action;\n\tlet location = '';\n\tlet details = {};\n\n\tif (effectType === locations.EVENT) {\n\t\tconst {event} = payload;\n\t\tconst {type} = event;\n\t\tlocation = locations.EVENT;\n\t\tdetails = {type, event};\n\t} else {\n\t\tlocation = locations.EFFECT;\n\t\tdetails = {actionType};\n\t}\n\n\treturn function sandboxedEffect(...args) {\n\t\ttry {\n\t\t\t// there can be multiple handlers for a given action type defined\n\t\t\t// by multiple behaviors; we only want to apply the options specific\n\t\t\t// to the effects for a single behavior, type, and effect combination\n\t\t\tconst {options} = effect;\n\t\t\tif (options) {\n\t\t\t\tconst {payload, meta} = args[args.length - 1].action;\n\n\t\t\t\tif (meta.options === null || meta.options === undefined) meta.options = options;\n\n\t\t\t\tif (payload === null || payload === undefined) {\n\t\t\t\t\targs[args.length - 1].action.payload = {options}; // eslint-disable-line no-param-reassign\n\t\t\t\t} else if (typeof payload === 'object') {\n\t\t\t\t\t// TODO: payload.options could have be applied from a previous behavior\n\t\t\t\t\t// or it could be part of the payload dispatched; not sure what to log\n\t\t\t\t\t// or how to properly handle this scenario. if options were part of the metadata\n\t\t\t\t\t// instead it would solved the problem.\n\t\t\t\t\t// if (typeof payload.options === 'object')\n\t\t\t\t\tpayload.options = options;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst transactionCtx = {\n\t\t\t\tinteractionId: getInteractionId(action.meta),\n\t\t\t\thost,\n\t\t\t\ttype: action.type\n\t\t\t};\n\t\t\teffectRunner(effect, transactionCtx, ...args);\n\t\t} catch (error) {\n\t\t\tdispatchError(error, {\n\t\t\t\tdispatch,\n\t\t\t\thost,\n\t\t\t\tlocation,\n\t\t\t\tdetails,\n\t\t\t\tmetadata: {internal: true, span: action.meta ? action.meta.span : null},\n\t\t\t\tlog\n\t\t\t});\n\t\t}\n\t};\n}\n\nexport {sandboxEffect};\n","import {getHostVariables} from '../utils';\nimport {HELPERS_IMMEDIATE, HOIST_COMPOSED_PATH, INTERNAL_HOST_DISPATCH} from '../symbols';\n\nexport function onActionHoisted(targetEl, targetSelector, host, actionType, action = {}) {\n\tconst {type, payload, meta, error} = action;\n\tconst hostVariables = getHostVariables(host);\n\n\t// stop this event from propagating, since we'll turn around and redispatch\n\t// from the original host\n\tif (meta.event) meta.event.stopPropagation();\n\n\thostVariables[HELPERS_IMMEDIATE].dispatch(\n\t\ttype,\n\t\tpayload,\n\t\t{\n\t\t\t...meta,\n\t\t\tretargeted: true,\n\t\t\t[HOIST_COMPOSED_PATH]: meta.event.composedPath(),\n\t\t\t[INTERNAL_HOST_DISPATCH]: true\n\t\t},\n\t\terror\n\t);\n}\n","import * as uiAnalyticsConsumer from '@servicenow/ui-analytics-consumer';\nimport {applyInteractionId} from '@servicenow/ui-metrics';\nimport {beforeNextTick, emitNowUiEvent, getSpanOptions} from '../utils';\nimport {createContext} from './createContext';\nimport {\n\tCOMPONENT_ID,\n\tCONFIG,\n\tDISPATCH,\n\tRETARGETED_ACTION_TYPES,\n\tBOOTSTRAPPED_HANDLED,\n\tCONNECTED_HANDLED\n} from '../symbols';\nimport {sandboxEffect} from './sandboxEffect';\nimport {\n\tACTION_HANDLED,\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_DISCONNECTED,\n\tSEISMIC_HOIST_TAG_NAME,\n\tCOMPONENT_PROPERTY_UPDATE_REQUESTED,\n\tCOMPONENT_RENDER_REQUESTED,\n\tCOMPONENT_TREE_RENDERED,\n\tCOMPONENT_RENDERED,\n\tCOMPONENT_DOM_READY,\n\tCOMPONENT_DOM_TREE_READY,\n\tSPAN_KIND_CLIENT,\n\tSPAN_ATTR_DISPATCH_ACTION_TYPE,\n\tSPAN_ATTR_COMPONENT_EVENT_DEFAULT_PREVENTED,\n\tSPAN_ATTR_COMPONENT_EVENT_PROPAGATION_STOPPED,\n\tSPAN_LIFECYCLE_EVENTS,\n\tSPAN_FOR_ACTION_HANDLED\n} from '../constants';\nimport {normalizeActionHandler} from '../utils/config/normalizeActionHandler';\nimport getHostVariables from '../utils/getHostVariables';\nimport {addActionHandler} from './customEventActionHandler';\nimport {onActionHoisted} from './onActionHoisted';\nimport {wasActionDispatchedByDescendant} from './utils';\nconst {trace, isValidTraceId} = uiAnalyticsConsumer;\n// defer the execution of the origin handler to support preventDefault\nfunction runEffects(fn, isOrigin) {\n\treturn isOrigin ? beforeNextTick(() => fn()) : fn();\n}\n\nexport function onAction(targetEl, targetSelector, host, actionType, action = {}) {\n\tconst hostVariables = getHostVariables(host);\n\tconst {type = actionType, meta = {path: [], eventHandler: false}} = action;\n\tconst {path, eventHandler, event, capture} = meta;\n\tconst [origin] = path;\n\tconst isOrigin = hostVariables[COMPONENT_ID] === origin;\n\n\tif (eventHandler)\n\t\t// interaction ids aren't applied to native events dispacthed by the browser\n\t\tapplyInteractionId(meta);\n\n\tconst isImmediate = [\n\t\tCOMPONENT_DISCONNECTED,\n\t\tCOMPONENT_DOM_READY,\n\t\tCOMPONENT_DOM_TREE_READY,\n\t\tCOMPONENT_TREE_RENDERED,\n\t\tCOMPONENT_RENDERED,\n\t\tCOMPONENT_RENDER_REQUESTED,\n\t\tCOMPONENT_PROPERTY_UPDATE_REQUESTED\n\t].includes(actionType);\n\n\tif (event && !eventHandler) {\n\t\tconst hoistElm = event.composedPath().find(elem => elem.tagName === SEISMIC_HOIST_TAG_NAME);\n\t\tconst hoistElmVariables = getHostVariables(hoistElm);\n\t\tif (\n\t\t\thoistElm &&\n\t\t\thoistElmVariables &&\n\t\t\t!hoistElmVariables[RETARGETED_ACTION_TYPES].some(actionType => actionType === type)\n\t\t) {\n\t\t\taddActionHandler(\n\t\t\t\thoistElm,\n\t\t\t\ttargetSelector,\n\t\t\t\thoistElm.sourceElement,\n\t\t\t\ttype,\n\t\t\t\tcapture,\n\t\t\t\teventHandler,\n\t\t\t\tonActionHoisted\n\t\t\t);\n\t\t\thoistElmVariables[RETARGETED_ACTION_TYPES] = [\n\t\t\t\t...hoistElmVariables[RETARGETED_ACTION_TYPES],\n\t\t\t\ttype\n\t\t\t];\n\t\t}\n\t}\n\n\trunEffects(() => {\n\t\tconst startTime = performance.now();\n\t\tconst interceptors =\n\t\t\thostVariables[CONFIG].interceptors[type] &&\n\t\t\thostVariables[CONFIG].interceptors[type].has(targetSelector)\n\t\t\t\t? hostVariables[CONFIG].interceptors[type].get(targetSelector)\n\t\t\t\t: null;\n\n\t\tif (!interceptors || !interceptors.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst onActionSpan = trace(SPAN_FOR_ACTION_HANDLED, {\n\t\t\t...getSpanOptions(host),\n\t\t\ttraceId: action.meta.span && action.meta.span.traceId,\n\t\t\tkind: SPAN_KIND_CLIENT,\n\t\t\tparentSpan: action.meta.span\n\t\t});\n\t\tonActionSpan.setAttribute(SPAN_ATTR_DISPATCH_ACTION_TYPE, SPAN_LIFECYCLE_EVENTS[type] || type);\n\n\t\tconst {length: interceptorCount} = interceptors;\n\t\tif ((isOrigin && action.defaultPrevented) || (!isOrigin && action.propagationStopped)) {\n\t\t\tif (isOrigin) {\n\t\t\t\tonActionSpan.setAttribute(SPAN_ATTR_COMPONENT_EVENT_DEFAULT_PREVENTED, true);\n\t\t\t} else {\n\t\t\t\tonActionSpan.setAttribute(SPAN_ATTR_COMPONENT_EVENT_PROPAGATION_STOPPED, true);\n\t\t\t}\n\t\t\tonActionSpan.end();\n\t\t\treturn;\n\t\t}\n\n\t\tif (actionType === COMPONENT_BOOTSTRAPPED) hostVariables[BOOTSTRAPPED_HANDLED] = true; // eslint-disable-line no-param-reassign\n\t\tif (actionType === COMPONENT_CONNECTED) hostVariables[CONNECTED_HANDLED] = true; // eslint-disable-line no-param-reassign\n\t\tif (isValidTraceId(onActionSpan.traceId)) action.meta.actionSpan = onActionSpan;\n\n\t\tconst context = createContext(host, action);\n\t\tlet ctx = context;\n\t\tfor (let i = 0; i < interceptorCount; i++) {\n\t\t\tconst interceptor = interceptors[i];\n\t\t\tctx = interceptor.fn(ctx) || ctx;\n\t\t}\n\n\t\tconst {effects} = ctx;\n\t\tconst {length: effectCount} = effects;\n\t\tfor (let i = 0; i < effectCount; i++) {\n\t\t\tconst effect = effects[i];\n\t\t\tif (typeof effect === 'function') {\n\t\t\t\tconst normalizedEffect = normalizeActionHandler(effect, host.tagName.toLowerCase());\n\t\t\t\tsandboxEffect(\n\t\t\t\t\tnormalizedEffect,\n\t\t\t\t\thostVariables[DISPATCH],\n\t\t\t\t\taction,\n\t\t\t\t\thost\n\t\t\t\t)(...normalizedEffect.args);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (!effect.descendantOnly || wasActionDispatchedByDescendant(action.composedPath(), host))\n\t\t\t\tsandboxEffect(effect, hostVariables[DISPATCH], action, host)(...effect.args);\n\t\t}\n\t\tonActionSpan.end();\n\t\tconst endTime = performance.now();\n\t\temitNowUiEvent(ACTION_HANDLED, {\n\t\t\thost,\n\t\t\taction,\n\t\t\ttargetSelector,\n\t\t\tinterceptors,\n\t\t\tcontext: ctx,\n\t\t\tduration: endTime - startTime\n\t\t});\n\t}, isOrigin && !eventHandler && !isImmediate);\n}\n","import {getHostVariables} from '../../utils';\nimport {addActionHandler} from '../customEventActionHandler';\nimport {onAction} from '../onAction';\nimport {COMPONENT_ACTION_DISPATCHED} from '../../constants';\nimport {\n\tRUNTIME_ACTION_HANDLERS,\n\tTARGETED_ACTION_TYPES,\n\tANCESTOR_ROOT_NODE,\n\tCONFIG,\n\tACTION_HANDLERS,\n\tPRESENTATIONAL\n} from '../../symbols';\n\nconst shouldApplyActionHandler = (hostVariables, type) =>\n\t!hostVariables[PRESENTATIONAL] &&\n\t!hostVariables[RUNTIME_ACTION_HANDLERS].includes(type) &&\n\thostVariables[TARGETED_ACTION_TYPES].includes(COMPONENT_ACTION_DISPATCHED);\n\nconst createActionHandler = (host, hostVariables, type) => {\n\thostVariables[RUNTIME_ACTION_HANDLERS].push(type);\n\n\tif (\n\t\thostVariables[CONFIG].interceptors[type] &&\n\t\thostVariables[CONFIG].interceptors[type].has('host')\n\t) {\n\t\tconst interceptors = [\n\t\t\t...hostVariables[CONFIG].interceptors[type].get('host'),\n\t\t\t...hostVariables[CONFIG].interceptors[COMPONENT_ACTION_DISPATCHED].get('host')\n\t\t];\n\t\thostVariables[CONFIG].interceptors[type].set('host', interceptors);\n\t\treturn;\n\t}\n\n\thostVariables[CONFIG].interceptors[type] =\n\t\thostVariables[CONFIG].interceptors[COMPONENT_ACTION_DISPATCHED]; // eslint-disable-line no-param-reassign\n\tconst removeActionHandler = addActionHandler(host, 'host', host, type, false, false, onAction);\n\thostVariables[ACTION_HANDLERS].push(removeActionHandler);\n\thostVariables[TARGETED_ACTION_TYPES] = [...hostVariables[TARGETED_ACTION_TYPES], type]; // eslint-disable-line no-param-reassign\n};\n\nexport function applyRuntimeActionHandlers(host, type) {\n\tlet parent = host;\n\tlet parentVariables = getHostVariables(parent);\n\n\twhile (parent) {\n\t\tif (shouldApplyActionHandler(parentVariables, type))\n\t\t\tcreateActionHandler(parent, parentVariables, type);\n\n\t\tparent = parentVariables[ANCESTOR_ROOT_NODE];\n\t\tparentVariables = getHostVariables(parent);\n\t}\n}\n","import {\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_MODE_DETACH,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tNOW_MODE_PROP\n} from '../../constants';\n\nexport function skipForDetachedComponent(host, type, payload) {\n\tif (host[NOW_MODE_PROP] !== COMPONENT_MODE_DETACH) return false;\n\tconst allowedLifeCycleActions = [\n\t\tCOMPONENT_CONNECTED,\n\t\tCOMPONENT_BOOTSTRAPPED,\n\t\tCOMPONENT_DISCONNECTED\n\t];\n\tif (allowedLifeCycleActions.includes(type)) return false;\n\tif (type !== COMPONENT_PROPERTY_CHANGED) return true;\n\treturn payload.name !== NOW_MODE_PROP;\n}\n","import {normalizeActionHandler} from './normalizeActionHandler';\nimport {sandbox, locations} from '@servicenow/ui-internal';\nimport log from '../../log';\n\nconst {LIFECYCLE} = locations;\nimport {\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tPROPERTIES_SET_LIFECYCLE,\n\tON_CONNECT_LIFECYCLE,\n\tON_DISCONNECT_LIFECYCLE,\n\tON_BOOTSTRAP_LIFECYCLE\n} from '../../constants';\nimport getHostVariables from '../getHostVariables';\nimport {HELPERS_SCHEDULED} from '../../symbols';\nimport {wrapDispatch} from '../../actions/utils';\n\nconst lifeCycleFnsToHandlerMap = {\n\t[COMPONENT_CONNECTED]: {lifecycle: ON_CONNECT_LIFECYCLE, display: 'COMPONENT_CONNECTED'},\n\t[COMPONENT_DISCONNECTED]: {lifecycle: ON_DISCONNECT_LIFECYCLE, display: 'COMPONENT_DISCONNECTED'},\n\t[COMPONENT_BOOTSTRAPPED]: {lifecycle: ON_BOOTSTRAP_LIFECYCLE, display: 'COMPONENT_BOOTSTRAPPED'},\n\t[COMPONENT_PROPERTY_CHANGED]: {\n\t\tlifecycle: PROPERTIES_SET_LIFECYCLE,\n\t\tdisplay: 'COMPONENT_PROPERTY_CHANGED'\n\t}\n};\n\nfunction createOnPropertyChangeHandler(config, def) {\n\tconst {properties} = config;\n\tconst onPropertiesSet = config[def.lifecycle];\n\tconst fns = {};\n\tfor (const k in properties) {\n\t\tconst {onChange} = properties[k];\n\t\tif (typeof onChange === 'function') fns[k] = onChange;\n\t}\n\n\tif (!Object.keys(fns).length && !onPropertiesSet) return;\n\n\treturn function onPropertyChange({\n\t\tdispatch,\n\t\taction: {\n\t\t\tpayload: {host, name, previousValue, value}\n\t\t}\n\t}) {\n\t\tconst hostVariables = getHostVariables(host);\n\n\t\tif (onPropertiesSet) {\n\t\t\tsandbox(onPropertiesSet, {\n\t\t\t\targs: [host, hostVariables[HELPERS_SCHEDULED]],\n\t\t\t\tdispatch,\n\t\t\t\thost,\n\t\t\t\tlocation: LIFECYCLE,\n\t\t\t\tdetails: {name: def.lifecycle},\n\t\t\t\tlog\n\t\t\t});\n\t\t}\n\n\t\tconst fn = fns[name];\n\t\tif (fn) {\n\t\t\tsandbox(fn, {\n\t\t\t\targs: [value, previousValue, hostVariables[HELPERS_SCHEDULED]],\n\t\t\t\tdispatch,\n\t\t\t\thost,\n\t\t\t\tlocation: LIFECYCLE,\n\t\t\t\tdetails: {name: def.lifecycle},\n\t\t\t\tlog\n\t\t\t});\n\t\t}\n\t};\n}\n\nexport function lifeCycleFnsToHandlers(configs, tagName) {\n\tconst actionHandlers = {};\n\tfor (const k in lifeCycleFnsToHandlerMap) {\n\t\tconst def = lifeCycleFnsToHandlerMap[k];\n\t\tconst {length: configsCount} = configs;\n\t\tconst actionType = k;\n\t\tactionHandlers[actionType] = [];\n\n\t\tfor (let i = 0; i < configsCount; i++) {\n\t\t\tconst config = configs[i];\n\t\t\tif (actionType === COMPONENT_PROPERTY_CHANGED) {\n\t\t\t\tconst onPropertyChangeEffect = createOnPropertyChangeHandler(config, def);\n\t\t\t\tif (onPropertyChangeEffect) {\n\t\t\t\t\tactionHandlers[actionType].push(\n\t\t\t\t\t\tnormalizeActionHandler(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\teffect: onPropertyChangeEffect,\n\t\t\t\t\t\t\t\ttype: 'effect'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttagName\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst fn = config[def.lifecycle];\n\t\t\t\tif (typeof fn === 'function') {\n\t\t\t\t\tactionHandlers[actionType].push(\n\t\t\t\t\t\tnormalizeActionHandler(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\teffect({\n\t\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\t\taction,\n\t\t\t\t\t\t\t\t\taction: {\n\t\t\t\t\t\t\t\t\t\tpayload: {host}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}) {\n\t\t\t\t\t\t\t\t\tconst wrappedDispatch = wrapDispatch(host, action);\n\t\t\t\t\t\t\t\t\tconst helpers = wrappedDispatch.dispatch;\n\t\t\t\t\t\t\t\t\tObject.assign(helpers, wrappedDispatch);\n\n\t\t\t\t\t\t\t\t\tsandbox(fn, {\n\t\t\t\t\t\t\t\t\t\targs: config.options ? [host, helpers, config.options] : [host, helpers],\n\t\t\t\t\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\t\t\t\t\thost,\n\t\t\t\t\t\t\t\t\t\tlocation: LIFECYCLE,\n\t\t\t\t\t\t\t\t\t\tdetails: {name: def.lifecycle},\n\t\t\t\t\t\t\t\t\t\tlog\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\ttype: 'effect'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\ttagName\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn actionHandlers;\n}\n","export function mergeBehaviorActionHandlers(behaviors, actionHandlers) {\n\tconst mergedActionHandlers = {...actionHandlers};\n\tconst {length: behaviorsCount} = behaviors;\n\tfor (let i = 0; i < behaviorsCount; i++) {\n\t\tconst {\n\t\t\tbehavior: {actionHandlers: behaviorActionHandlers, options}\n\t\t} = behaviors[i];\n\t\tfor (const k in behaviorActionHandlers) {\n\t\t\tconst behaviorActionHandler = {...behaviorActionHandlers[k], behaviorOptions: options};\n\t\t\tif (mergedActionHandlers[k]) mergedActionHandlers[k].push(behaviorActionHandler);\n\t\t\telse mergedActionHandlers[k] = [behaviorActionHandler];\n\t\t}\n\t}\n\n\treturn mergedActionHandlers;\n}\n","import log from '../../log';\n\n// this code executes before an instance is created. @servicenow/ui-internal/sandbox currently relies on host and dispatch.\n// refactoring @servicenow/ui-internal/sandbox to support this single use case - all other user code is executed after an\n// instance is created - didn't seem worth it. Even if we move to a lazy configuration initialization in the constructor\n// dispatch won't be created until connectedCallback is executed.\nfunction sandbox(fn, options, message) {\n\ttry {\n\t\treturn fn(options);\n\t} catch (error) {\n\t\tlog(message, {origin: 'sandbox', host: options ? options.host : null});\n\t\treturn {};\n\t}\n}\n\nexport function mergeBehaviorInitialState(\n\tbehaviors,\n\tcomponentInitialState,\n\tcomponentSetInitialState,\n\ttagName\n) {\n\tconst behaviorState = {};\n\tconst {length: behaviorsCount} = behaviors;\n\n\tfor (let i = 0; i < behaviorsCount; i++) {\n\t\tconst {\n\t\t\tname,\n\t\t\toptions,\n\t\t\tbehavior: {initialState: behaviorInitialState, options: behaviorOptions}\n\t\t} = behaviors[i];\n\t\tbehaviorState[name] =\n\t\t\ttypeof behaviorInitialState === 'function'\n\t\t\t\t? sandbox(\n\t\t\t\t\t\tbehaviorInitialState,\n\t\t\t\t\t\toptions || behaviorOptions,\n\t\t\t\t\t\t`The initialState function for the ${name} behavior threw an error when defining <${tagName} />`\n\t\t\t\t  )\n\t\t\t\t: behaviorInitialState;\n\t}\n\n\tfunction setInitialState({host, properties, context}) {\n\t\tconst behaviorStateDynamic = behaviorState;\n\t\tfor (let i = 0; i < behaviorsCount; i++) {\n\t\t\tconst {\n\t\t\t\tname,\n\t\t\t\toptions,\n\t\t\t\tbehavior: {setInitialState: behaviorSetInitialState, options: behaviorOptions}\n\t\t\t} = behaviors[i];\n\n\t\t\tif (typeof behaviorSetInitialState === 'function') {\n\t\t\t\tbehaviorStateDynamic[name] = {\n\t\t\t\t\t...behaviorState[name],\n\t\t\t\t\t...sandbox(\n\t\t\t\t\t\tbehaviorSetInitialState,\n\t\t\t\t\t\t{host, properties, context, options: options || behaviorOptions},\n\t\t\t\t\t\t`The setInitialState function for the ${name} behavior threw an error when defining <${tagName} />`\n\t\t\t\t\t)\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\t...(Object.keys(behaviorStateDynamic).length ? {behaviors: behaviorStateDynamic} : {}),\n\t\t\t...(typeof componentSetInitialState === 'function' &&\n\t\t\t\tsandbox(\n\t\t\t\t\tcomponentSetInitialState,\n\t\t\t\t\t{host, properties, context},\n\t\t\t\t\t`The setInitialState function for ${tagName} threw an error`\n\t\t\t\t))\n\t\t};\n\t}\n\n\tconst initialState = {\n\t\t...(Object.keys(behaviorState).length ? {behaviors: behaviorState} : {}),\n\t\t...componentInitialState\n\t};\n\n\treturn {\n\t\tinitialState,\n\t\tsetInitialState\n\t};\n}\n","import {memoize, NOW_SKIP_RENDER_UNTIL_PRESENT, NOW_DEFER_HYDRATION} from '@servicenow/ui-internal';\nimport toPropertyName from '../toPropertyName';\nimport {\n\tCOMPONENT_NAME_ATTR,\n\tHOIST_ATTR,\n\tHOIST_APPEND_TO_ATTR,\n\tDEFER_ATTRIBUTE,\n\tNOW_HOIST_PROP,\n\tNOW_HOIST_APPEND_TO_PROP,\n\tNOW_HOIST_PREPEND_TO_PROP,\n\tNOW_ID_PROP,\n\tNOW_MODE_PROP,\n\tNOW_COMPONENT_NAME_PROP,\n\tNOW_ENABLE_PROPERTY_SETTING_PREVENTION_PROP,\n\tNOW_METRIC_TYPES_PROP,\n\tNOW_METRICS_LEVEL_PROP,\n\tNOW_LOGGING_LEVELS_PROP,\n\tNOW_PLACEHOLDER_HEIGHT_PROP,\n\tNOW_PLACEHOLDER_WIDTH_PROP,\n\tNOW_PRIORITY_PROP,\n\tPRIORITY_LEVEL_LOW,\n\tPRIORITY_LEVEL_MEDIUM,\n\tNOW_AVOID_RENDER_PROP,\n\tNOW_NESTED_SELECTABLE_PROPS\n} from '../../constants';\nimport log from '../../log';\n\nexport const mergeBehaviorProperties = memoize(mergeBehaviorPropertiesInner, {\n\tprofileName: 'mergeBehaviorProperties',\n\tcreateCacheKey: (b, p, t) => t\n});\n\nfunction mergeBehaviorPropertiesInner(behaviors, properties, tagName) {\n\tconst mergedProperties = {};\n\tconst {length: behaviorsCount} = behaviors;\n\tconst behaviorNames = {};\n\n\tfor (const k in properties) mergedProperties[k] = properties[k];\n\n\tfor (let i = 0; i < behaviorsCount; i++) {\n\t\tconst {\n\t\t\tname,\n\t\t\tbehavior: {properties: behaviorProperties}\n\t\t} = behaviors[i];\n\t\tfor (const k in behaviorProperties) {\n\t\t\tif (mergedProperties[k]) {\n\t\t\t\tlog(`Behavior ${name} overwrote property ${k} for ${tagName}.`, {\n\t\t\t\t\ttagName,\n\t\t\t\t\torigin: 'mergeBehaviorProperties'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tmergedProperties[k] = behaviorProperties[k];\n\t\t\tbehaviorNames[k] = name;\n\t\t}\n\t}\n\n\treturn {\n\t\t...mergedProperties,\n\t\t[toPropertyName(DEFER_ATTRIBUTE)]: {},\n\t\t[toPropertyName(HOIST_ATTR)]: {\n\t\t\t...(mergedProperties[toPropertyName(HOIST_ATTR)] || {}),\n\t\t\treflect: true\n\t\t},\n\t\t[toPropertyName(HOIST_APPEND_TO_ATTR)]: {\n\t\t\t...(mergedProperties[toPropertyName(HOIST_APPEND_TO_ATTR)] || {}),\n\t\t\treflect: true\n\t\t},\n\t\t[toPropertyName(COMPONENT_NAME_ATTR)]: {reflect: true}, // @temporary add component-name\n\t\t[NOW_HOIST_PROP]: {...(mergedProperties[NOW_HOIST_PROP] || {}), reflect: true},\n\t\t[NOW_HOIST_APPEND_TO_PROP]: {\n\t\t\t...(mergedProperties[NOW_HOIST_APPEND_TO_PROP] || {}),\n\t\t\treflect: true\n\t\t},\n\t\t[NOW_HOIST_PREPEND_TO_PROP]: {\n\t\t\t...(mergedProperties[NOW_HOIST_PREPEND_TO_PROP] || {}),\n\t\t\treflect: true\n\t\t},\n\t\t[NOW_PLACEHOLDER_HEIGHT_PROP]: {\n\t\t\t...(mergedProperties[NOW_PLACEHOLDER_HEIGHT_PROP] || {}),\n\t\t\tschema: {type: 'string'}\n\t\t},\n\t\t[NOW_PLACEHOLDER_WIDTH_PROP]: {\n\t\t\t...(mergedProperties[NOW_PLACEHOLDER_WIDTH_PROP] || {}),\n\t\t\tschema: {type: 'string'}\n\t\t},\n\t\t[NOW_ID_PROP]: {},\n\t\t[NOW_MODE_PROP]: {},\n\t\t[NOW_COMPONENT_NAME_PROP]: {},\n\t\t[NOW_ENABLE_PROPERTY_SETTING_PREVENTION_PROP]: {},\n\t\t[NOW_LOGGING_LEVELS_PROP]: {\n\t\t\t...(mergedProperties[NOW_LOGGING_LEVELS_PROP] || []),\n\t\t\tschema: {type: ['array', 'boolean'], items: {type: 'string'}}\n\t\t},\n\t\t[NOW_METRIC_TYPES_PROP]: {\n\t\t\t...(mergedProperties[NOW_METRIC_TYPES_PROP] || {}),\n\t\t\tschema: {type: 'array', items: {type: 'string'}}\n\t\t},\n\t\t[NOW_METRICS_LEVEL_PROP]: {\n\t\t\t...(mergedProperties[NOW_METRICS_LEVEL_PROP] || {}),\n\t\t\tschema: {type: 'integer', minimum: 0, maximum: 5}\n\t\t},\n\t\t[NOW_PRIORITY_PROP]: {\n\t\t\t...(mergedProperties[NOW_PRIORITY_PROP] || {}),\n\t\t\tschema: {type: 'string', enum: [PRIORITY_LEVEL_LOW, PRIORITY_LEVEL_MEDIUM]}\n\t\t},\n\t\t[NOW_AVOID_RENDER_PROP]: {\n\t\t\t...(mergedProperties[NOW_AVOID_RENDER_PROP] || {default: false}),\n\t\t\tschema: {type: 'boolean'}\n\t\t},\n\t\t[NOW_SKIP_RENDER_UNTIL_PRESENT]: {\n\t\t\tattrToInitPropTransformer({attributeValue}) {\n\t\t\t\tif (attributeValue && typeof attributeValue === 'string') {\n\t\t\t\t\treturn attributeValue.split(',') || [];\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t},\n\t\t\tschema: {type: ['array'], items: {type: 'string'}}\n\t\t},\n\t\t[NOW_NESTED_SELECTABLE_PROPS]: {\n\t\t\t...(mergedProperties[NOW_NESTED_SELECTABLE_PROPS] || {}),\n\t\t\tschema: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {type: 'string'}\n\t\t\t}\n\t\t},\n\t\t[NOW_DEFER_HYDRATION]: {}\n\t};\n}\n","export function mergeLifeCycleActionHandlers(lifecycleActionHandlers, componentActionHandlers) {\n\tconst mergedActionHandlers = {};\n\n\tfor (const k in componentActionHandlers) {\n\t\tmergedActionHandlers[k] = mergedActionHandlers[k] || [];\n\t\tmergedActionHandlers[k].push(componentActionHandlers[k]);\n\t}\n\n\tfor (const k in lifecycleActionHandlers) {\n\t\tconst actionHandlers = lifecycleActionHandlers[k] || [];\n\t\tmergedActionHandlers[k] = mergedActionHandlers[k] || [];\n\t\tmergedActionHandlers[k] = [...mergedActionHandlers[k], ...actionHandlers];\n\t}\n\n\treturn mergedActionHandlers;\n}\n","import {normalizeActionHandler} from './normalizeActionHandler';\n\nexport function normalizeActionHandlers(actionHandlers, tagName) {\n\tconst normalizedActionHandlers = {};\n\n\tfor (const k in actionHandlers)\n\t\tnormalizedActionHandlers[k] = normalizeActionHandler(actionHandlers[k], tagName);\n\n\treturn normalizedActionHandlers;\n}\n","import {normalizeActionHandlers} from './normalizeActionHandlers';\nimport {memoize} from '@servicenow/ui-internal';\n\nexport const normalizeBehaviors = memoize(normalizeBehaviorsInner, {\n\tprofileName: 'normalizeBehaviors',\n\tcreateCacheKey: (b, t) => t\n});\n\nfunction normalizeBehaviorsInner(behaviors = [], tagName) {\n\tconst {length: behaviorsCount} = behaviors;\n\tconst normalizedBehaviors = [];\n\tfor (let i = 0; i < behaviorsCount; i++) {\n\t\tconst {behavior, options = {}} = behaviors[i] || {};\n\t\tconst resolvedBehavior = behavior || behaviors[i] || {};\n\t\tconst {name} = resolvedBehavior;\n\t\tconst {initialState = {}, actionHandlers, eventHandlers = [], actions} = resolvedBehavior;\n\n\t\tnormalizedBehaviors[i] = {\n\t\t\tbehavior: {\n\t\t\t\t...resolvedBehavior,\n\t\t\t\tactionHandlers: normalizeActionHandlers(actionHandlers, tagName),\n\t\t\t\tinitialState,\n\t\t\t\teventHandlers,\n\t\t\t\tactions,\n\t\t\t\toptions\n\t\t\t},\n\t\t\tname\n\t\t};\n\t}\n\n\treturn normalizedBehaviors;\n}\n","export function getStopPropagation(actionHandlers) {\n\tconst stopPropagation = {};\n\tfor (const k in actionHandlers) {\n\t\tif (actionHandlers[k].some(v => v.stopPropagation)) stopPropagation[k] = true;\n\t}\n\n\treturn stopPropagation;\n}\n","import {normalizeActionHandler} from './normalizeActionHandler';\n\n// TODO: this format should be deprecated in paris\nexport function mergeActions(actionHandlers, actions, tagName) {\n\tfor (const k in actions) {\n\t\tconst {\n\t\t\thandlers = [],\n\t\t\teffect: actionEffect,\n\t\t\targs: actionArgs,\n\t\t\tinterceptors: actionInterceptors,\n\t\t\tprivate: isPrivate\n\t\t} = actions[k];\n\t\tconst {length: handlersCount} = handlers;\n\n\t\tactionHandlers[k] = actionHandlers[k] || []; // eslint-disable-line no-param-reassign\n\t\tfor (let i = 0; i < handlersCount; i++) {\n\t\t\tconst handler = handlers[i];\n\t\t\tconst {effect} = handler;\n\t\t\tconst {fn, args = []} = effect || handler;\n\t\t\tif (typeof fn === 'function') {\n\t\t\t\tconst {interceptors} = handler;\n\t\t\t\tactionHandlers[k].push(\n\t\t\t\t\tnormalizeActionHandler({effect: fn, args, interceptors, private: isPrivate}, tagName)\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tactionHandlers[k].push(normalizeActionHandler({...handler, private: isPrivate}, tagName));\n\t\t\t}\n\t\t}\n\n\t\tif ((handlersCount === 0 && isPrivate) || actionEffect || actionInterceptors) {\n\t\t\tactionHandlers[k].push(\n\t\t\t\tnormalizeActionHandler(\n\t\t\t\t\t{\n\t\t\t\t\t\teffect: actionEffect || (() => ({})),\n\t\t\t\t\t\tinterceptors: actionInterceptors,\n\t\t\t\t\t\targs: actionArgs,\n\t\t\t\t\t\tprivate: isPrivate\n\t\t\t\t\t},\n\t\t\t\t\ttagName\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}\n\n\treturn actionHandlers;\n}\n","import {normalizeActionHandler} from './normalizeActionHandler';\n\nexport function mergeEventActionHandlers(actionHandlers, eventHandlers, tagName) {\n\tconst {length: eventHandlerCount} = eventHandlers;\n\tfor (let i = 0; i < eventHandlerCount; i++) {\n\t\tconst {\n\t\t\tevents = [],\n\t\t\teffect,\n\t\t\tmodifiers = [],\n\t\t\tmodifier = {},\n\t\t\tinterceptors = [],\n\t\t\ttarget,\n\t\t\tcapture,\n\t\t\tbehaviorOptions\n\t\t} = eventHandlers[i];\n\t\tconst {length: eventsCount} = events;\n\t\tfor (let j = 0; j < eventsCount; j++) {\n\t\t\tconst eventName = events[j];\n\t\t\tactionHandlers[eventName] = actionHandlers[eventName] || []; // eslint-disable-line no-param-reassign\n\t\t\tconst normalizedActionHandler = {\n\t\t\t\t...normalizeActionHandler(\n\t\t\t\t\t{effect, modifiers, modifier, interceptors, target, capture, eventHandler: true},\n\t\t\t\t\ttagName\n\t\t\t\t),\n\t\t\t\t...(behaviorOptions && {behaviorOptions})\n\t\t\t};\n\t\t\tactionHandlers[eventName].push(normalizedActionHandler);\n\t\t}\n\t}\n\n\treturn actionHandlers;\n}\n","import {buildActionPayloadValidator} from '../schema';\n\nexport function applyPayloadValidators(actions) {\n\tfor (const k in actions) {\n\t\tconst action = actions[k];\n\t\tconst {schema} = action;\n\t\tif (schema) action.validate = buildActionPayloadValidator(schema);\n\t}\n\n\treturn actions;\n}\n","import log from '../../log';\n\nexport function mergeBehaviorActions(actions, behaviors, tagName) {\n\tconst mergedActions = {};\n\tconst {length: behaviorsCount} = behaviors;\n\tconst behaviorNames = {};\n\n\tfor (let i = 0; i < behaviorsCount; i++) {\n\t\tconst {\n\t\t\tname,\n\t\t\tbehavior: {actions: behaviorActions = {}}\n\t\t} = behaviors[i];\n\n\t\tfor (const k in behaviorActions) {\n\t\t\tif (mergedActions[k]) {\n\t\t\t\tlog(`Behavior ${name} overwrote action ${k} for ${tagName}.`, {\n\t\t\t\t\ttagName,\n\t\t\t\t\torigin: 'mergeBehaviorActions'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tmergedActions[k] = behaviorActions[k];\n\t\t\tbehaviorNames[k] = name;\n\t\t}\n\t}\n\n\tfor (const k in actions) {\n\t\tif (mergedActions[k]) {\n\t\t\tlog(\n\t\t\t\t`The component definition for ${tagName} overwrote action ${k} defined by the ${behaviorNames[k]} behavior.`,\n\t\t\t\t{tagName, origin: 'mergeBehaviorActions'}\n\t\t\t);\n\t\t}\n\n\t\tmergedActions[k] = actions[k];\n\t}\n\n\treturn mergedActions;\n}\n","import {\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_RENDERED,\n\tCOMPONENT_DOM_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_PROPERTY_UPDATE_REQUESTED,\n\tCOMPONENT_RENDER_REQUESTED,\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_TREE_RENDERED,\n\tCOMPONENT_STATE_UPDATED,\n\tCOMPONENT_INTERACTIVE\n} from '../../constants';\n\nconst actions = {\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_RENDERED,\n\tCOMPONENT_DOM_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_PROPERTY_UPDATE_REQUESTED,\n\tCOMPONENT_RENDER_REQUESTED,\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_TREE_RENDERED,\n\tCOMPONENT_STATE_UPDATED,\n\tCOMPONENT_INTERACTIVE\n};\n\nexport function getActionsToDispatch(interceptors) {\n\tconst shouldDispatch = {};\n\n\tfor (const k in actions) {\n\t\tconst type = actions[k];\n\t\tconst intercpetorsByType = interceptors[type];\n\t\tif (intercpetorsByType && intercpetorsByType.has('host')) shouldDispatch[type] = true;\n\t}\n\n\treturn shouldDispatch;\n}\n","export function normalizeBehaviorEventHandlers(normalizedBehaviors) {\n\tconst normalizedBehaviorEventHandlers = [];\n\tconst {length: numberOfBehaviors} = normalizedBehaviors;\n\tfor (let i = 0; i < numberOfBehaviors; i++) {\n\t\tconst {\n\t\t\tbehavior: {eventHandlers = [], options = {}}\n\t\t} = normalizedBehaviors[i];\n\t\tconst {length: numberOfEvents} = eventHandlers;\n\t\tfor (let k = 0; k < numberOfEvents; k++)\n\t\t\tnormalizedBehaviorEventHandlers.push({...eventHandlers[k], behaviorOptions: {...options}});\n\t}\n\n\treturn normalizedBehaviorEventHandlers;\n}\n","import {\n\tARIA_LIVE_ASSERTIVE,\n\tARIA_LIVE_POLITE,\n\tARIA_LIVE_RELEVANT,\n\tARIA_LIVE_TRIGGER_ADDITIONS,\n\tARIA_LIVE_TRIGGER_ALL,\n\tARIA_LIVE_TRIGGER_REMOVALS,\n\tARIA_LIVE_TRIGGER_TEXT\n} from '../constants';\nimport {getConfigItem, configConstants} from '@servicenow/ui-config';\nimport log from '../log';\nimport {allLogTypes as logTypes} from '@servicenow/ui-internal';\n\nexport const politeId = 'SEISMIC_ARIA_LIVE_REGION_POLITE';\nexport const assertiveId = 'SEISMIC_ARIA_LIVE_REGION_ASSERTIVE';\n\nconst validateTriggerTypes = triggers => {\n\t// triggers is a space-separated string of trigger types\n\t// check that the trigger type is one of the allowed values\n\tconst validTriggers = [\n\t\tARIA_LIVE_TRIGGER_ADDITIONS,\n\t\tARIA_LIVE_TRIGGER_REMOVALS,\n\t\tARIA_LIVE_TRIGGER_TEXT,\n\t\tARIA_LIVE_TRIGGER_ALL\n\t];\n\tconst triggerTypes = triggers.split(' ');\n\n\tlet validTriggerTypes = [];\n\tlet hasInvalidTrigger = false;\n\n\tfor (const trigger of triggerTypes) {\n\t\tif (validTriggers.includes(trigger)) {\n\t\t\tvalidTriggerTypes.push(trigger);\n\t\t} else {\n\t\t\thasInvalidTrigger = true;\n\t\t}\n\t}\n\n\tif (!validTriggerTypes.length || hasInvalidTrigger) {\n\t\treturn undefined;\n\t}\n\n\tif (\n\t\tvalidTriggerTypes.includes(ARIA_LIVE_TRIGGER_ALL) ||\n\t\t(validTriggerTypes.includes(ARIA_LIVE_TRIGGER_ADDITIONS) &&\n\t\t\tvalidTriggerTypes.includes(ARIA_LIVE_TRIGGER_REMOVALS) &&\n\t\t\tvalidTriggerTypes.includes(ARIA_LIVE_TRIGGER_TEXT))\n\t) {\n\t\treturn ARIA_LIVE_TRIGGER_ALL;\n\t}\n\treturn validTriggerTypes.join(' ');\n};\n\nconst applyAriaLiveRegionAttributes = (el, type, id, triggers) => {\n\tconst live = type === ARIA_LIVE_ASSERTIVE || type === ARIA_LIVE_POLITE ? type : ARIA_LIVE_POLITE;\n\tel.setAttribute('id', id || (type === ARIA_LIVE_ASSERTIVE ? assertiveId : politeId));\n\tel.setAttribute('aria-live', live);\n\tel.setAttribute('aria-atomic', true);\n\tif (triggers) {\n\t\tconst triggerTypes = validateTriggerTypes(triggers);\n\t\tif (triggerTypes) {\n\t\t\tel.setAttribute(ARIA_LIVE_RELEVANT, triggerTypes);\n\t\t}\n\t}\n\tapplyStyles(el);\n};\n\nconst applyStyles = el => {\n\tel.style.position = 'absolute';\n\tel.style.overflow = 'hidden';\n\tel.style.width = '1px';\n\tel.style.height = '0px';\n\tel.style.margin = 0;\n\tel.style.border = 'none';\n\tel.style.padding = 0;\n\tel.style.whiteSpace = 'nowrap';\n\tel.style.clip = 'rect(0 0 0 0)';\n\tel.style.clipPath = 'inset(50%)';\n};\n\nconst politeTimeout = getConfigItem(configConstants.ARIA_LIVE_POLITE_TIMEOUT);\nconst assertiveTimeout = getConfigItem(configConstants.ARIA_LIVE_ASSERTIVE_TIMEOUT);\n\nconst createAriaLiveRegionEl = (id, type, triggers) => {\n\tconst el = document.createElement('SPAN');\n\tapplyAriaLiveRegionAttributes(el, type, id, triggers);\n\tdocument.body.appendChild(el);\n\treturn el;\n};\n\nconst getAriaLiveRegionEl = (type, triggers) => {\n\tconst id = type === ARIA_LIVE_ASSERTIVE ? assertiveId : politeId;\n\treturn document.querySelector(`#${id}`) || createAriaLiveRegionEl(id, type, triggers);\n};\n\nconst upsertComponentLiveContentNode = ({\n\tariaLiveRegionEl,\n\thost,\n\ttextNode,\n\treplaceContent = false\n}) => {\n\tconst id = `${host.tagName}_${host.getAttribute('now-id')}`;\n\tconst curNode = ariaLiveRegionEl.querySelector(`#${id}`);\n\tif (curNode) {\n\t\tif (replaceContent) {\n\t\t\tcurNode.innerHTML = '';\n\t\t}\n\t\tcurNode.appendChild(textNode);\n\t\treturn curNode;\n\t} else {\n\t\tconst newNode = document.createElement('SPAN');\n\t\tnewNode.setAttribute('id', id);\n\t\tnewNode.appendChild(textNode);\n\t\tariaLiveRegionEl.appendChild(newNode);\n\t\treturn newNode;\n\t}\n};\nexport const actionHandler = {\n\tstopPropagation: true,\n\teffect({\n\t\thost,\n\t\taction: {\n\t\t\tpayload: {message, type = ARIA_LIVE_POLITE, replaceContent = false, triggers}\n\t\t}\n\t}) {\n\t\tif (type !== ARIA_LIVE_ASSERTIVE && type !== ARIA_LIVE_POLITE) {\n\t\t\tprocess.env.NODE_ENV !== 'production' &&\n\t\t\t\tlog(\n\t\t\t\t\t`\"ARIA_LIVE_REGION_UPDATE_REQUESTED\" was dispatched with action.type: ${type}. Only action.type of \"assertive\" or \"polite\" is allowed.`,\n\t\t\t\t\t{level: logTypes.WARN, host, origin: 'dispatch'}\n\t\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst ariaLiveRegionEl = getAriaLiveRegionEl(type, triggers);\n\t\tconst textNode = document.createTextNode(message);\n\t\tconst ariaLiveRegionCompNode = upsertComponentLiveContentNode({\n\t\t\tariaLiveRegionEl,\n\t\t\thost,\n\t\t\ttextNode,\n\t\t\treplaceContent\n\t\t});\n\t\tsetTimeout(\n\t\t\t() => {\n\t\t\t\tif (textNode.parentNode === ariaLiveRegionCompNode)\n\t\t\t\t\tariaLiveRegionCompNode.removeChild(textNode);\n\t\t\t},\n\t\t\ttype === ARIA_LIVE_ASSERTIVE ? assertiveTimeout : politeTimeout\n\t\t);\n\t}\n};\n","import {createInterceptors} from './createInterceptors';\nimport {lifeCycleFnsToHandlers} from './lifeCycleFnsToHandlers';\nimport {mergeBehaviorActionHandlers} from './mergeBehaviorActionHandlers';\nimport {mergeBehaviorInitialState} from './mergeBehaviorInitialState';\nimport {mergeBehaviorProperties} from './mergeBehaviorProperties';\nimport {mergeLifeCycleActionHandlers} from './mergeLifeCycleActionHandlers';\nimport {normalizeActionHandlers} from './normalizeActionHandlers';\nimport {normalizeActionHandler} from './normalizeActionHandler';\nimport {normalizeBehaviors} from './normalizeBehaviors';\nimport {getStopPropagation} from './getStopPropagation';\nimport {mergeActions} from './mergeActions';\nimport {mergeEventActionHandlers} from './mergeEventActionHandlers';\nimport {applyPayloadValidators} from './applyPayloadValidators';\nimport {mergeBehaviorActions} from './mergeBehaviorActions';\nimport {getActionsToDispatch} from './getActionsToDispatch';\nimport {normalizeBehaviorEventHandlers} from './normalizeBehaviorEventHandlers';\nimport {SHADOW_ROOT_MODE_OPEN, ARIA_LIVE_REGION_UPDATE_REQUESTED} from '../../constants';\nimport {actionHandler as ariaLiveRegionActionHandler} from '../../accessibility/ariaLiveRegion';\n\nexport function normalizeConfig(config) {\n\tconst {\n\t\teventHandlers: componentEventHandlers = [],\n\t\tactionHandlers = {},\n\t\tbehaviors = [],\n\t\tproperties = {},\n\t\tname,\n\t\tinitialState,\n\t\tsetInitialState,\n\t\tactions = {},\n\t\tshadowRootOptions: {mode: shadowRootMode = SHADOW_ROOT_MODE_OPEN} = {}\n\t} = config;\n\n\tconst normalizedBehaviors = normalizeBehaviors(behaviors, name);\n\tconst eventHandlers = [\n\t\t...componentEventHandlers,\n\t\t...normalizeBehaviorEventHandlers(normalizedBehaviors)\n\t];\n\tconst mergedActionHandlers = mergeEventActionHandlers(\n\t\tmergeBehaviorActionHandlers(\n\t\t\tnormalizedBehaviors,\n\t\t\tmergeActions(\n\t\t\t\tmergeLifeCycleActionHandlers(\n\t\t\t\t\tlifeCycleFnsToHandlers(\n\t\t\t\t\t\t[config, ...normalizedBehaviors.map(({behavior}) => behavior)],\n\t\t\t\t\t\tname\n\t\t\t\t\t),\n\t\t\t\t\tnormalizeActionHandlers(actionHandlers, name)\n\t\t\t\t),\n\t\t\t\tactions,\n\t\t\t\tname\n\t\t\t)\n\t\t),\n\t\teventHandlers,\n\t\tname\n\t);\n\n\tmergedActionHandlers[ARIA_LIVE_REGION_UPDATE_REQUESTED] = [\n\t\tnormalizeActionHandler(ariaLiveRegionActionHandler)\n\t];\n\n\tconst interceptors = createInterceptors(mergedActionHandlers);\n\tconst mergedInitialStates = mergeBehaviorInitialState(\n\t\tnormalizedBehaviors,\n\t\tinitialState,\n\t\tsetInitialState,\n\t\tname\n\t);\n\n\treturn {\n\t\tshouldDispatch: getActionsToDispatch(interceptors),\n\t\teventHandlers,\n\t\tshouldStopPropagation: getStopPropagation(mergedActionHandlers),\n\t\tactions: applyPayloadValidators(mergeBehaviorActions(actions, normalizedBehaviors, name)),\n\t\tactionTypes: {}, // TODO: add action data types for validation\n\t\tinitialState: mergedInitialStates.initialState,\n\t\tsetInitialState: mergedInitialStates.setInitialState,\n\t\tproperties: mergeBehaviorProperties(normalizedBehaviors, properties, name),\n\t\tinterceptors,\n\t\tbehaviors: normalizedBehaviors,\n\t\tshadowRootOptions: {\n\t\t\tmode: shadowRootMode\n\t\t}\n\t};\n}\n","import getComponentName from '../utils/schema/getComponentName';\nimport validateSchema from '../utils/schema/validate/validateSchema';\nimport contexts from './contexts';\nimport {isPlainObject} from '@servicenow/ui-utils';\n\nexport default function validateContext(context, host) {\n\tif (isPlainObject(context)) {\n\t\tconst contextKeys = Reflect.ownKeys(context);\n\t\tfor (let i = 0; i < contextKeys.length; i++) {\n\t\t\tconst k = contextKeys[i];\n\t\t\tif (contexts.has(k)) {\n\t\t\t\tconst {validate} = contexts.get(k);\n\t\t\t\tvalidateSchema(validate, context[k], {\n\t\t\t\t\terrorPrefix: `Context property for ${getComponentName(host)}: `\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n","import {PROPERTY_SELECTOR_SIGIL} from '../../constants';\n\nexport default function isValuePropertySelector(value) {\n\tif (typeof value !== 'string') return false;\n\n\treturn value.startsWith(PROPERTY_SELECTOR_SIGIL);\n}\n","import {isRef, subscribeToRef} from '@servicenow/ui-internal';\n\nconst refUnsubs = new Map();\nexport function parseRefProperty(host, name, value) {\n\tconst isReference = isRef(value);\n\tlet unsubs = refUnsubs.get(host);\n\tconst ref = unsubs?.get(name)?.ref;\n\n\tif (ref && (ref.current !== value || isReference)) {\n\t\tif (unsubs) {\n\t\t\tunsubs.get(name)?.fn();\n\t\t\tunsubs.delete(name);\n\t\t\tif (unsubs.size === 0) {\n\t\t\t\trefUnsubs.delete(host);\n\t\t\t\tunsubs = null;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (isReference) {\n\t\trefUnsubs.set(\n\t\t\thost,\n\t\t\t(unsubs || new Map()).set(name, {fn: subscribeToRef(value, host, name), ref: value})\n\t\t);\n\t\treturn value.current;\n\t}\n\treturn value;\n}\n\nexport function getUnsubscribe(host, propName) {\n\treturn refUnsubs.get(host)?.get(propName);\n}\n\nexport function getHostUnsubs(host) {\n\treturn refUnsubs.get(host);\n}\n","const types = ['number', 'integer', 'boolean', 'array', 'object', 'null'];\n\nexport default types;\n","import {toLower} from '@servicenow/ui-internal';\n\n/**\n * Parse the property value\n * @private\n *\n * @param {*} value The value of the property\n * @param {*} schemaType The type of the property defined in its schema\n */\nexport default function parse(value, schemaType, name, tagName) {\n\tif (schemaType === 'boolean' && value === '') return true;\n\n\ttry {\n\t\treturn JSON.parse(value);\n\t} catch (e) {\n\t\t// throw to take advantage of sandbox logging and dispatching\n\t\tthrow new Error(\n\t\t\t`Parsing failed for property ${name} on component ${toLower(\n\t\t\t\ttagName\n\t\t\t)}: expected to be type ${schemaType} but received string.`\n\t\t);\n\t}\n}\n","import {PARSE_PROP_CONF_KEY, PACKAGE_NAME} from '../../constants';\nimport isValuePropertySelector from './isValuePropertySelector';\nimport {\n\tsandbox,\n\tlocations,\n\ttoLower,\n\tkebabCase,\n\tallLogTypes as logTypes\n} from '@servicenow/ui-internal';\nimport log from '../../log';\nimport {parseRefProperty} from './refProperty';\nimport {default as validParseTypes} from './types';\nimport parse from './parse';\n\nexport default function parseProperty(name, value, def = {}, host, dispatch) {\n\tconst unstableParse = def[PARSE_PROP_CONF_KEY];\n\tconst schemaType = def.schema && def.schema.type;\n\tconst isValidParseType = validParseTypes.includes(schemaType);\n\tconst resolvedValue = def.resolveRef ? parseRefProperty(host, name, value) : value;\n\tconst shouldUnstableParse =\n\t\t(unstableParse || validParseTypes.includes(schemaType)) &&\n\t\t!isValuePropertySelector(resolvedValue) &&\n\t\ttypeof resolvedValue === 'string';\n\n\tif (shouldUnstableParse && isValidParseType && !host.hasAttribute(kebabCase(name))) {\n\t\tconst component = `<${toLower(host.tagName)} />`;\n\t\tlog(\n\t\t\t`For property ${name} on component ${component}: expected to be type ${schemaType} but received string. ${PACKAGE_NAME} will attempt to parse this value, but you should set this to the correct type.`,\n\t\t\t{level: logTypes.WARN, host, origin: 'parseProperty'}\n\t\t);\n\t}\n\n\treturn shouldUnstableParse\n\t\t? sandbox(parse, {\n\t\t\t\targs: [resolvedValue, schemaType, name, host.tagName],\n\t\t\t\thost,\n\t\t\t\tdispatch,\n\t\t\t\tlocation: locations.PROPERTY,\n\t\t\t\tdetails: {parse: true, name},\n\t\t\t\tlog\n\t\t  })\n\t\t: resolvedValue;\n}\n","import {PARSE_PROP_CONF_KEY, PACKAGE_NAME} from '../../constants';\nimport isValuePropertySelector from './isValuePropertySelector';\nimport {\n\tsandbox,\n\tlocations,\n\ttoLower,\n\tkebabCase,\n\tallLogTypes as logTypes\n} from '@servicenow/ui-internal';\nimport log from '../../log';\nimport {default as validParseTypes} from './types';\nimport {parseRefProperty} from './refProperty';\nimport parse from './parse';\n\n/**\n * Parse any property that is configured with `unstableParse: true`, or any property that has a\n * defined schema with a parseable type\n */\nexport default function parseProperties(properties, defs = {}, {host, dispatch}) {\n\tconst parsedProperties = {};\n\tfor (const k in properties) {\n\t\tconst value = properties[k];\n\t\tconst unstableParse = defs[k] && defs[k][PARSE_PROP_CONF_KEY];\n\n\t\tconst schemaType = defs[k] && defs[k].schema && defs[k].schema.type;\n\t\tconst isValidParseType = validParseTypes.includes(schemaType);\n\t\tconst resolvedValue = defs[k] && defs[k].resolveRef ? parseRefProperty(host, k, value) : value;\n\t\tconst shouldUnstableParse =\n\t\t\t(unstableParse || validParseTypes.includes(schemaType)) &&\n\t\t\t!isValuePropertySelector(resolvedValue) &&\n\t\t\ttypeof resolvedValue === 'string';\n\n\t\tif (shouldUnstableParse && isValidParseType && !host.hasAttribute(kebabCase(k))) {\n\t\t\tconst component = `<${toLower(host.tagName)} />`;\n\t\t\tlog(\n\t\t\t\t`For property ${k} on component ${component}: expected to be type ${schemaType} but received string. ${PACKAGE_NAME} will attempt to parse this value, but you should set this to the correct type.`,\n\t\t\t\t{level: logTypes.WARN, host, origin: 'parseProperties'}\n\t\t\t);\n\t\t}\n\n\t\tparsedProperties[k] = shouldUnstableParse\n\t\t\t? sandbox(parse, {\n\t\t\t\t\targs: [resolvedValue, schemaType, k, host.tagName],\n\t\t\t\t\thost,\n\t\t\t\t\tdispatch,\n\t\t\t\t\tlocation: locations.PROPERTY,\n\t\t\t\t\tdetails: {parse: true, name: k},\n\t\t\t\t\tlog\n\t\t\t  })\n\t\t\t: resolvedValue;\n\t}\n\n\treturn parsedProperties;\n}\n","import {getConfigItem, configConstants} from '@servicenow/ui-config';\nimport {memoize} from '@servicenow/ui-internal';\nimport {getInteractionId} from '@servicenow/ui-metrics';\nimport {\n\tDISPATCH_EVENT,\n\tSCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED,\n\tCOMPONENT_PROPERTY_UPDATE_REQUESTED\n} from '../constants';\nimport {COMPONENT_ID, PRESENTATIONAL} from '../symbols';\nimport {getHostVariables} from '../utils';\nimport {schedule, types} from '../scheduler';\nimport {applyRuntimeActionHandlers} from './utils';\n\nconst {ENABLE_ACTION_DISPATCHED_HANDLING} = configConstants;\nconst shouldApplyRuntimeActionHandlers = memoize(\n\t() => getConfigItem(ENABLE_ACTION_DISPATCHED_HANDLING) === true,\n\t{profileName: 'shouldApplyRuntimeActionHandlers'}\n);\n\nconst {DISPATCH, IMMEDIATE} = types;\n\nfunction addEventGetters(event) {\n\tObject.defineProperty(event, 'path', {\n\t\tget() {\n\t\t\treturn event.composedPath();\n\t\t}\n\t});\n\t// FIXME: is there a better, faster way than this?\n\tObject.defineProperties(event.detail.meta, {\n\t\tevent: {\n\t\t\tvalue: event,\n\t\t\tenumerable: true\n\t\t},\n\t\tpath: {\n\t\t\tget() {\n\t\t\t\treturn event\n\t\t\t\t\t.composedPath()\n\t\t\t\t\t.map(el => {\n\t\t\t\t\t\tconst variables = getHostVariables(el);\n\t\t\t\t\t\treturn variables && variables[COMPONENT_ID];\n\t\t\t\t\t})\n\t\t\t\t\t.filter(componentId => componentId);\n\t\t\t}\n\t\t}\n\t});\n\n\treturn event;\n}\n\nfunction dispatchLegacyEvent(host, detail) {\n\tconst event = new CustomEvent(DISPATCH_EVENT, {composed: true, bubbles: true, detail});\n\thost.dispatchEvent(addEventGetters(event));\n}\n\nexport function customEventDispatcher(host, {type, payload, meta, error}) {\n\tconst hostVariables = getHostVariables(host);\n\tconst presentational = hostVariables[PRESENTATIONAL];\n\n\tconst shouldBubble = meta.internal && type !== COMPONENT_PROPERTY_UPDATE_REQUESTED ? false : true;\n\tconst event = new CustomEvent(type, {\n\t\tcomposed: shouldBubble,\n\t\tbubbles: shouldBubble,\n\t\tcancelable: true,\n\t\tdetail: {\n\t\t\ttype,\n\t\t\tpayload,\n\t\t\terror,\n\t\t\tmeta\n\t\t}\n\t});\n\n\tschedule({\n\t\tfn() {\n\t\t\tif (process.env.UNSAFE_SEISMIC_EMIT_CUSTOM_EVENT) {\n\t\t\t\tdispatchLegacyEvent(host, {\n\t\t\t\t\ttype,\n\t\t\t\t\tpayload,\n\t\t\t\t\terror,\n\t\t\t\t\t// spread or Object.defineProperties fails because the meta reference is the same\n\t\t\t\t\tmeta: {...meta}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!presentational && shouldApplyRuntimeActionHandlers())\n\t\t\t\tapplyRuntimeActionHandlers(host, type);\n\t\t\treturn host.dispatchEvent(addEventGetters(event));\n\t\t},\n\t\tmeta: {el: host, interactionId: getInteractionId(meta), span: meta.span},\n\t\ttype: meta[SCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED]\n\t\t\t? IMMEDIATE\n\t\t\t: DISPATCH\n\t});\n\n\treturn event;\n}\n","import {normalizeActionHandler} from '../utils/config/normalizeActionHandler';\nimport {createInterceptors} from '../utils/config/createInterceptors';\nimport {ACTION_HANDLERS, TARGETED_ACTION_TYPES, CONFIG} from '../symbols';\nimport {addActionHandler} from './customEventActionHandler';\nimport {onAction} from './onAction';\n\nexport function addActionHandlerForUnknownType(host, type, hostVariables) {\n\tif (!(type in hostVariables[CONFIG].interceptors)) {\n\t\tconst actionHandler = normalizeActionHandler(() => {}, host.tagName);\n\n\t\tconst interceptors = createInterceptors({\n\t\t\t[type]: actionHandler\n\t\t});\n\n\t\thostVariables[CONFIG].interceptors = {...hostVariables[CONFIG].interceptors, ...interceptors}; // eslint-disable-line no-param-reassign\n\t}\n\n\tconst removeActionHandler = addActionHandler(host, null, host, type, false, false, onAction);\n\thostVariables[ACTION_HANDLERS].push(removeActionHandler);\n\thostVariables[TARGETED_ACTION_TYPES] = [...hostVariables[TARGETED_ACTION_TYPES], type]; // eslint-disable-line no-param-reassign\n}\n","import * as uiAnalyticsConsumer from '@servicenow/ui-analytics-consumer';\nimport {mark, getInteractionId, types as metrics} from '@servicenow/ui-metrics';\nimport {getHostInfo, allLogTypes as logTypes} from '@servicenow/ui-internal';\nimport {customEventDispatcher} from './customEventDispatcher';\nimport {\n\tcreateMetaData,\n\tappendToPayload,\n\tisPropertyUpdate,\n\tnormalizeActionMeta,\n\tvalidateActionPayload,\n\tisInternalActionType,\n\tgetInternalActionName,\n\tisStoreUpdate,\n\thasActionHandlerForType,\n\tskipForDetachedComponent\n} from './utils';\nimport {\n\tHELPERS_SCHEDULED,\n\tHELPERS_IMMEDIATE,\n\tPRESENTATIONAL,\n\tANCESTOR_PATH,\n\tINTERNAL_HOST_DISPATCH\n} from '../symbols';\nimport {emitNowUiEvent, getHostVariables, getSpanOptions} from '../utils';\nimport log from '../log';\nimport {\n\tACTION_DISPATCHED,\n\tSCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED,\n\tPROPERTIES_SET,\n\tDISPATCH_EVENT,\n\tSPAN_FOR_DISPATCH,\n\tSPAN_KIND_CLIENT,\n\tSPAN_ATTR_DISPATCH_ACTION_TYPE,\n\tSPAN_ATTR_DISPATCH_UNDEFINED,\n\tSPAN_ATTR_DISPATCH_FLAG_HOST_DISPATCH,\n\tSPAN_ATTR_SKIP_FOR_DETACHED_COMPONENT,\n\tSPAN_ATTR_STORE_UPDATE,\n\tSPAN_ATTR_DISPATCH_ACTION_INTERNAL_TYPE,\n\tSPAN_ATTR_LEVEL,\n\tSPAN_LEVEL_FINEST\n} from '../constants';\nimport {addActionHandlerForUnknownType} from './addActionHandlerForUnknownType';\nconst {trace, isValidTraceId} = uiAnalyticsConsumer;\nexport function createDispatcher(host, dispatcher = customEventDispatcher) {\n\tconst hostVariables = getHostVariables(host);\n\n\treturn function dispatch(type, payload = {}, meta = {}, error = null) {\n\t\tconst isExternalHostDispatch = meta[INTERNAL_HOST_DISPATCH] !== true;\n\t\tlet {span} = meta;\n\t\tif (isExternalHostDispatch) {\n\t\t\tspan = trace(SPAN_FOR_DISPATCH, {\n\t\t\t\t...getSpanOptions(host),\n\t\t\t\ttraceId: span && span.traceId,\n\t\t\t\tkind: SPAN_KIND_CLIENT,\n\t\t\t\t...(meta.span && isValidTraceId(meta.span.traceId) && {parentSpan: meta.span})\n\t\t\t});\n\t\t\tspan.setAttribute(SPAN_ATTR_DISPATCH_ACTION_TYPE, type);\n\t\t\tspan.setAttribute(SPAN_ATTR_DISPATCH_FLAG_HOST_DISPATCH, true);\n\t\t\tif (isValidTraceId(span.traceId)) meta.span = span;\n\t\t}\n\t\tif (type === undefined) {\n\t\t\tlog(\n\t\t\t\t`You are dispatching an action that is type: ${type}.  We will send undefined actions to the upside down place in the next release.`,\n\t\t\t\t{level: logTypes.WARN, host, origin: 'dispatch'}\n\t\t\t);\n\t\t\tif (span) {\n\t\t\t\tspan.setAttribute(SPAN_ATTR_DISPATCH_ACTION_TYPE, 'undefined');\n\t\t\t\tspan.setAttribute(SPAN_ATTR_DISPATCH_UNDEFINED, true);\n\t\t\t\tspan.setAttribute(SPAN_ATTR_LEVEL, SPAN_LEVEL_FINEST);\n\t\t\t}\n\t\t}\n\n\t\tif (skipForDetachedComponent(host, type, payload)) {\n\t\t\tif (span) {\n\t\t\t\tspan.setAttribute(SPAN_ATTR_SKIP_FOR_DETACHED_COMPONENT, true);\n\t\t\t\tspan.setAttribute(SPAN_ATTR_LEVEL, SPAN_LEVEL_FINEST);\n\t\t\t\tif (isExternalHostDispatch) {\n\t\t\t\t\tspan.end();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (isStoreUpdate(type)) {\n\t\t\thostVariables[HELPERS_SCHEDULED].updateState(payload, {\n\t\t\t\t[SCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED]: true,\n\t\t\t\tinteractionId: getInteractionId(meta)\n\t\t\t});\n\t\t\tif (span) {\n\t\t\t\tspan.setAttribute(SPAN_ATTR_STORE_UPDATE, true);\n\t\t\t\tif (isExternalHostDispatch) {\n\t\t\t\t\tspan.end();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn log(\n\t\t\t\t`${type} is a private action type and has been deprecated. Please use updateState.`,\n\t\t\t\t{host, origin: 'dispatch'}\n\t\t\t);\n\t\t}\n\n\t\tif (isInternalActionType(type, meta.internal)) {\n\t\t\tconst {tagName, componentId} = getHostInfo(host);\n\t\t\tlog(`${getInternalActionName(type)} cannot be dispatched as it is an internal action type`, {\n\t\t\t\ttagName,\n\t\t\t\tcomponentId,\n\t\t\t\thost,\n\t\t\t\torigin: 'dispatch'\n\t\t\t});\n\n\t\t\t// Only return if the type is not one of the following, in order to maintain backwards compatibility\n\t\t\tif (![PROPERTIES_SET, DISPATCH_EVENT].includes(type)) {\n\t\t\t\tif (span) {\n\t\t\t\t\tspan.setAttribute(SPAN_ATTR_DISPATCH_ACTION_INTERNAL_TYPE, true);\n\t\t\t\t\tspan.setAttribute(SPAN_ATTR_LEVEL, SPAN_LEVEL_FINEST);\n\t\t\t\t\tif (isExternalHostDispatch) {\n\t\t\t\t\t\tspan.end();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (isPropertyUpdate(type)) {\n\t\t\tif (span && isExternalHostDispatch) {\n\t\t\t\tspan.end();\n\t\t\t}\n\t\t\treturn hostVariables[HELPERS_IMMEDIATE].updateProperties(payload, {\n\t\t\t\tinteractionId: getInteractionId(meta)\n\t\t\t});\n\t\t}\n\n\t\tvalidateActionPayload(host, type, payload, hostVariables); // TODO: fix\n\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tmeta = normalizeActionMeta(meta, {host});\n\n\t\tconst action = {\n\t\t\ttype,\n\t\t\tpayload: meta.retargeted ? payload : appendToPayload(host, payload),\n\t\t\tmeta: createMetaData(host, meta, hostVariables),\n\t\t\terror\n\t\t};\n\n\t\temitNowUiEvent(ACTION_DISPATCHED, {\n\t\t\thost,\n\t\t\taction,\n\t\t\tancestorPath: hostVariables?.[ANCESTOR_PATH]?.map(ancestorElement => {\n\t\t\t\treturn {componentId: ancestorElement.nowId, componentName: ancestorElement.tagName};\n\t\t\t})\n\t\t});\n\n\t\tif (\n\t\t\t!hostVariables[PRESENTATIONAL] &&\n\t\t\t!meta.internal &&\n\t\t\t!hasActionHandlerForType(hostVariables, type)\n\t\t)\n\t\t\taddActionHandlerForUnknownType(host, type, hostVariables);\n\n\t\tmark(host, getInteractionId(action.meta), metrics.DISPATCH, {type});\n\t\tif (span && isExternalHostDispatch) {\n\t\t\tspan.end();\n\t\t}\n\t\treturn dispatcher(host, action);\n\t};\n}\n","import {applyInteractionId} from '@servicenow/ui-metrics';\nimport {CONFIG, DISPATCH, INTERNAL_HOST_DISPATCH, PRESENTATIONAL} from '../symbols';\nimport {emitNowUiEvent, getHostVariables, getSpanOptions} from '../utils';\nimport {\n\tACTION_DISPATCHED,\n\tSPAN_ATTR_DISPATCH_ACTION_TYPE,\n\tSPAN_FOR_DISPATCH,\n\tSPAN_KIND_CLIENT,\n\tSPAN_LIFECYCLE_EVENTS,\n\tSPAN_ATTR_CONDITIONAL\n} from '../constants';\nimport * as uiAnalyticsConsumer from '@servicenow/ui-analytics-consumer';\nconst {trace, isValidTraceId} = uiAnalyticsConsumer;\n\nexport function createConditionalDispatch(host) {\n\treturn function conditionalDispatch(type, payload, meta, error) {\n\t\tapplyInteractionId(meta);\n\t\tconst hostVariables = getHostVariables(host);\n\t\tconst shouldDispatch =\n\t\t\t!hostVariables[PRESENTATIONAL] && hostVariables[CONFIG].shouldDispatch[type];\n\t\tif (shouldDispatch) {\n\t\t\treturn dispatchWithLifecycleSpan({type, payload, meta, error, host});\n\t\t}\n\n\t\temitNowUiEvent(ACTION_DISPATCHED, {host, action: {type, payload, meta, error}});\n\t};\n}\n\nfunction dispatchWithLifecycleSpan(options) {\n\tconst {type, payload, meta, error, host} = options;\n\tconst hostVariables = getHostVariables(host);\n\tconst spanOptions = getSpanOptions(host);\n\n\tlet lifecycleSpan;\n\tconst parentSpan = meta.span;\n\tif (parentSpan && isValidTraceId(parentSpan.traceId)) {\n\t\tconst traceName = SPAN_LIFECYCLE_EVENTS[type];\n\t\tif (traceName) {\n\t\t\tlifecycleSpan = createLifecycleSpan(spanOptions, parentSpan, traceName);\n\t\t\tmeta.span = isValidTraceId(lifecycleSpan.traceId) && lifecycleSpan;\n\t\t}\n\t}\n\tmeta[INTERNAL_HOST_DISPATCH] = meta.internal === true;\n\tconst result = hostVariables[DISPATCH](type, payload, meta, error);\n\tif (lifecycleSpan) lifecycleSpan.end();\n\n\treturn result;\n}\n\nfunction createLifecycleSpan(spanOptions, parentSpan, traceName) {\n\tconst lifecycleSpan = trace(SPAN_FOR_DISPATCH, {\n\t\t...spanOptions,\n\t\ttraceId: parentSpan.traceId,\n\t\tkind: SPAN_KIND_CLIENT,\n\t\tparentSpan\n\t});\n\tlifecycleSpan.setAttribute(SPAN_ATTR_DISPATCH_ACTION_TYPE, traceName);\n\tlifecycleSpan.setAttribute(SPAN_ATTR_CONDITIONAL, true);\n\n\treturn lifecycleSpan;\n}\n","import {getHostVariables} from '../utils';\nimport {allLogTypes as logTypes} from '@servicenow/ui-internal';\n\nimport {onAction} from './onAction';\nimport {onActionHoisted} from './onActionHoisted';\nimport {addActionHandler} from './customEventActionHandler';\nimport {isHoisted, getHoistTarget} from './utils';\nimport {RETARGETED_ACTION_TYPES, TARGETED_ACTION_TYPES} from '../symbols';\nimport {SEISMIC_HOIST_TAG_NAME} from '../constants';\nimport log from '../log';\n\nfunction resolveCaptureHandlerMetaData(interceptors) {\n\tconst {length: interceptorCount} = interceptors;\n\tfor (let i = 0; i < interceptorCount; i++) {\n\t\tconst {capture, eventHandler} = interceptors[i];\n\t\tif (capture !== undefined && eventHandler !== undefined) return {capture, eventHandler};\n\t}\n\treturn {capture: false, eventHandler: false};\n}\n\nexport function addActionHandlers(host, actions) {\n\tconst handlers = [];\n\tconst hoisted = isHoisted(host);\n\tconst hostVariables = getHostVariables(host);\n\n\tif (actions[undefined]) {\n\t\tlog(\n\t\t\t'You are registering an action handler for a type that is: undefined.  We will send undefined actions to the upside down place in the next release.',\n\t\t\t{level: logTypes.WARN, host, origin: 'addActionHandlers'}\n\t\t);\n\t}\n\n\tfor (const k in actions) {\n\t\tactions[k].forEach(function forEachTarget(interceptors, targetSelector) {\n\t\t\tconst {capture, eventHandler} = resolveCaptureHandlerMetaData(interceptors);\n\t\t\tconst resolvedTarget =\n\t\t\t\ttargetSelector === 'host'\n\t\t\t\t\t? host\n\t\t\t\t\t: typeof targetSelector === 'string'\n\t\t\t\t\t? document.querySelector(targetSelector)\n\t\t\t\t\t: targetSelector;\n\n\t\t\tif (hoisted) {\n\t\t\t\tconst hoistElem = getHoistTarget(hostVariables);\n\t\t\t\tif (hoistElem.tagName === SEISMIC_HOIST_TAG_NAME) {\n\t\t\t\t\tconst hoistElemVariables = getHostVariables(hoistElem);\n\t\t\t\t\thandlers.push(\n\t\t\t\t\t\taddActionHandler(\n\t\t\t\t\t\t\thoistElem,\n\t\t\t\t\t\t\ttargetSelector,\n\t\t\t\t\t\t\thost,\n\t\t\t\t\t\t\tk,\n\t\t\t\t\t\t\tcapture,\n\t\t\t\t\t\t\teventHandler,\n\t\t\t\t\t\t\tonActionHoisted\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t\thoistElemVariables[RETARGETED_ACTION_TYPES] = [\n\t\t\t\t\t\t...hoistElemVariables[RETARGETED_ACTION_TYPES],\n\t\t\t\t\t\tk\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}\n\t\t\thandlers.push(\n\t\t\t\taddActionHandler(resolvedTarget, targetSelector, host, k, capture, eventHandler, onAction)\n\t\t\t);\n\t\t\thostVariables[TARGETED_ACTION_TYPES] = [...hostVariables[TARGETED_ACTION_TYPES], k]; // eslint-disable-line no-param-reassign\n\t\t});\n\t}\n\n\treturn handlers;\n}\n","export function removeActionHandlers(handlers) {\n\tconst {length: actionsHandlersCount} = handlers;\n\n\tfor (let i = 0; i < actionsHandlersCount; i++) handlers[i]();\n\n\treturn [];\n}\n",null,null,null,null,null,null,"import getHostVariables from '../getHostVariables';\nimport {STATE, CONTEXT} from '../../symbols';\n\nexport default function getStatePropsContext(host, interactionId) {\n\tconst hostVariables = getHostVariables(host);\n\tconst properties = host.getResolvedProperties(interactionId);\n\tconst state = hostVariables[STATE] || {};\n\tconst context = hostVariables[CONTEXT];\n\n\treturn {properties, state, context};\n}\n","const {\n\tdeclarativeOperations: {SET, ASSIGN, MERGE}\n} = operations;\nimport * as operations from '../operators/operations';\nimport getStatePropsContext from './getStatePropsContext';\nimport {get, isPlainObject} from '@servicenow/ui-internal';\n\nconst isEmptyStateUpdate = value => {\n\treturn (\n\t\t// (value instanceof Map && value.size === 0) ||\n\t\tisPlainObject(value) && Object.keys(value).length === 0\n\t);\n};\n\nfunction isPrimitive(value) {\n\tconst type = typeof value;\n\tif (type === 'object' || type === 'function') return false;\n\n\tif (type === 'string') return true;\n\tif (type === 'bigint') return true;\n\tif (type === 'boolean') return true;\n\tif (type === 'number') return true;\n\n\treturn false;\n}\n\nconst isPrimitiveOrNull = value => isPrimitive(value) || value === null;\n\nexport function isDeclarativeUpdate(update = {}) {\n\tconst {operation, path, value} = update;\n\treturn operation && (path || value);\n}\n\nexport function isValidOperation(operation) {\n\treturn operations[operation] !== undefined;\n}\n\nexport function isBatch(update) {\n\treturn Array.isArray(update) && update.every(u => isDeclarativeUpdate(u) || isUpdater(u));\n}\n\nexport function isUpdater(update) {\n\treturn typeof update === 'function';\n}\n\nexport function resolveUpdate(host, hostVariables, update, interactionId) {\n\tif (!isUpdater(update)) return update;\n\n\tconst statePropsContext = getStatePropsContext(host, interactionId);\n\treturn update(statePropsContext) || statePropsContext;\n}\n\nexport function isValidOptimisationOperation(operation) {\n\treturn operation && [SET, ASSIGN, MERGE].includes(operation);\n}\n\nexport function shouldUpdateState(currentState, update) {\n\tconst declarativeUpdate = !!isDeclarativeUpdate(update);\n\tconst {path = '', value, operation} = update;\n\tif (declarativeUpdate && operation !== SET && operation !== ASSIGN && operation !== MERGE)\n\t\treturn true;\n\n\tconst updateKeys = declarativeUpdate ? null : Object.keys(update);\n\tif (updateKeys === null || updateKeys.length === 1) {\n\t\tconst currentValue = declarativeUpdate ? get(currentState, path) : currentState[updateKeys[0]];\n\t\tconst nextValue = declarativeUpdate ? value : update[updateKeys[0]];\n\t\tif (\n\t\t\tisPrimitiveOrNull(nextValue) &&\n\t\t\tisPrimitiveOrNull(currentValue) &&\n\t\t\tnextValue === currentValue\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (isEmptyStateUpdate(nextValue) && isEmptyStateUpdate(currentValue)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (isPlainObject(currentValue) && isPlainObject(nextValue)) {\n\t\t\tconst nextValueKeys = Object.keys(nextValue);\n\t\t\tconst currentValueKeys = Object.keys(currentValue);\n\n\t\t\tif (nextValueKeys.length <= 2 && nextValueKeys.length === currentValueKeys.length) {\n\t\t\t\tconst currentValue1 = currentValue[nextValueKeys[0]];\n\t\t\t\tconst currentValue2 = currentValue[nextValueKeys[1]];\n\t\t\t\tconst nextValue1 = nextValue[nextValueKeys[0]];\n\t\t\t\tconst nextValue2 = nextValue[nextValueKeys[1]];\n\n\t\t\t\tif (\n\t\t\t\t\tdeclarativeUpdate &&\n\t\t\t\t\toperation === SET &&\n\t\t\t\t\t(nextValueKeys[0] !== currentValueKeys[0] || nextValueKeys[1] !== currentValueKeys[1])\n\t\t\t\t)\n\t\t\t\t\treturn true;\n\n\t\t\t\tif (\n\t\t\t\t\tisPrimitiveOrNull(nextValue1) &&\n\t\t\t\t\tisPrimitiveOrNull(currentValue1) &&\n\t\t\t\t\tnextValue1 === currentValue1 &&\n\t\t\t\t\tisPrimitiveOrNull(nextValue2) &&\n\t\t\t\t\tisPrimitiveOrNull(currentValue2) &&\n\t\t\t\t\tnextValue2 === currentValue2\n\t\t\t\t) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n}\n","import * as uiAnalyticsConsumer from '@servicenow/ui-analytics-consumer';\nimport {createInteractionId, mark, types as metrics} from '@servicenow/ui-metrics';\nimport {produce} from 'immer';\nimport {\n\tisDeclarativeUpdate,\n\tisValidOperation,\n\tisBatch,\n\tresolveUpdate,\n\tisValidOptimisationOperation,\n\tshouldUpdateState\n} from './utils';\nimport * as operations from '../operators/operations';\nimport getHostVariables from '../getHostVariables';\nimport {schedule, types} from '../../scheduler';\nimport deferHelperExecution from './deferHelperExecution';\nimport {STATE, RENDER, COMPONENT_ID, CONDITIONAL_DISPATCH, PROPS} from '../../symbols';\nimport {\n\tHELPERS_SCHEDULED,\n\tSCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED,\n\tSTATE_UPDATED,\n\tHELPERS_DEFER,\n\tCOMPONENT_STATE_UPDATED,\n\tNOW_AVOID_RENDER_PROP,\n\tSPAN_ATTR_DID_UPDATE,\n\tSPAN_ATTR_SHOULD_RENDER,\n\tSPAN_FOR_UPDATE_STATE,\n\tSPAN_KIND_CLIENT\n} from '../../constants';\nimport log from '../../log';\nimport {emitNowUiEvent, shouldOptOutOfDeepCompareForPage, getSpanOptions} from '../';\nimport {get, isSelectiveEqual} from '@servicenow/ui-internal';\nimport {getConfigItem, configConstants} from '@servicenow/ui-config';\n\nconst {ENABLE_DECLARATIVE_STATE_UPDATE_DEEP_COMPARE} = configConstants;\nlet optOutDeepCompare = shouldOptOutOfDeepCompareForPage('state');\nconst shouldDeepCompareValues = getConfigItem(ENABLE_DECLARATIVE_STATE_UPDATE_DEEP_COMPARE);\nconst {IMMEDIATE, STATE_SET} = types;\nconst {\n\tdeclarativeOperations: {ASSIGN}\n} = operations;\nconst {trace, isValidTraceId} = uiAnalyticsConsumer;\n\nwindow.addEventListener(\n\t'popstate',\n\t() => (optOutDeepCompare = shouldOptOutOfDeepCompareForPage('state'))\n);\n\nfunction handleStateUpdate(host, hostVariables, update, interactionId) {\n\tconst resolvedUpdate = resolveUpdate(host, hostVariables, update, interactionId);\n\tconst {\n\t\tshouldUpdate = true,\n\t\toperation = ASSIGN,\n\t\tpath = '',\n\t\tstart,\n\t\tdeleteCount,\n\t\taddItems,\n\t\tshouldRender = true,\n\t\tvalue\n\t} = resolvedUpdate;\n\n\tif (!shouldUpdate || !shouldUpdateState(hostVariables[STATE], resolvedUpdate))\n\t\treturn {didUpdate: false, shouldRender: false};\n\n\t// this an extremly naive implementation. it doesn't account\n\t// for operations like push or pop that you'd want to perform\n\t// before diffing the values\n\tif (shouldDeepCompareValues && !optOutDeepCompare && path && operation && value) {\n\t\tconst nextValue = value;\n\t\tconst currentValue = get(hostVariables[STATE], path);\n\t\tif (isSelectiveEqual(currentValue, nextValue)) return {didUpdate: false, shouldRender: false};\n\t}\n\n\tconst previousState = hostVariables[STATE];\n\tconst props = hostVariables[PROPS];\n\tconst avoidRender = props && props[NOW_AVOID_RENDER_PROP];\n\tif (avoidRender && isValidOptimisationOperation(operation)) {\n\t\ttry {\n\t\t\tconst target = isDeclarativeUpdate(resolvedUpdate) ? value : resolvedUpdate;\n\t\t\tconst source = path ? get(previousState, path) : previousState;\n\t\t\tif (isSelectiveEqual(source, target)) return {didUpdate: false, shouldRender: false};\n\t\t} catch (error) {\n\t\t\tlog('Error while performing same state re-render optimisation pre-validation', {\n\t\t\t\terror,\n\t\t\t\thost,\n\t\t\t\torigin: 'handleStateUpdate'\n\t\t\t});\n\t\t}\n\t}\n\n\tconst nextState = produce(hostVariables[STATE] || {}, draftState => {\n\t\tif (operation === 'replace') return value;\n\n\t\tif (!isValidOperation(operation)) {\n\t\t\tlog(`Invalid update state operation: ${operation}`, {host, origin: 'handleStateUpdate'});\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\toperations[operation](draftState, {\n\t\t\t\tpath,\n\t\t\t\tvalue: isDeclarativeUpdate(resolvedUpdate) ? value : resolvedUpdate,\n\t\t\t\tstart,\n\t\t\t\tdeleteCount,\n\t\t\t\taddItems: Array.isArray(addItems) ? addItems : []\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlog('Error while performing state update', {error, host, origin: 'handleStateUpdate'});\n\t\t}\n\t});\n\n\tif (nextState === previousState) return {didUpdate: false, shouldRender: false};\n\n\thostVariables[STATE] = nextState; // eslint-disable-line no-param-reassign\n\treturn {didUpdate: true, shouldRender};\n}\n\nfunction handleStateUpdateBatch(host, hostVariables, batch, interactionId) {\n\treturn batch.reduce(\n\t\t(acc, update) => {\n\t\t\tconst {shouldRender, didUpdate} = handleStateUpdate(\n\t\t\t\thost,\n\t\t\t\thostVariables,\n\t\t\t\tupdate,\n\t\t\t\tinteractionId\n\t\t\t);\n\n\t\t\tconst result = {...acc};\n\t\t\tif (didUpdate) result.didUpdate = true;\n\n\t\t\tif (shouldRender) result.shouldRender = true;\n\n\t\t\treturn result;\n\t\t},\n\t\t{didUpdate: false, shouldRender: false}\n\t);\n}\n\nconst resolveUpdateForMark = update => (typeof update === 'function' ? 'FUNCTION' : update);\nconst transformUpdateForMark = (update, isBatch) => {\n\tif (isBatch) return update.map(resolveUpdateForMark);\n\n\treturn resolveUpdateForMark(update);\n};\n\nexport default function createUpdateState(host, executionTiming) {\n\tconst hostVariables = getHostVariables(host);\n\n\treturn function updateState(update, options = {}) {\n\t\tconst interactionId = options.interactionId || createInteractionId();\n\t\tconst {span: activeSpan} = options;\n\t\tif (executionTiming === HELPERS_DEFER)\n\t\t\tmark(host, interactionId, metrics.DEFER, {deferred: metrics.UPDATE_STATE});\n\t\tconst meta = {el: host, interactionId};\n\t\tif (activeSpan && isValidTraceId(activeSpan.traceId)) meta.span = activeSpan;\n\t\tdeferHelperExecution(\n\t\t\texecutionTiming,\n\t\t\t() => {\n\t\t\t\t// TODO: Remove this immediate option for a better scheduling alternative\n\t\t\t\t// https://code.devsnc.com/gist/dylan-mozlowski/07bf0ab13b2c8a12f0cc6e59bf4cf911\n\t\t\t\tconst {\n\t\t\t\t\t[SCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED]:\n\t\t\t\t\t\toptionallyImmediate = false\n\t\t\t\t} = options;\n\t\t\t\tconst updateStateSpan = trace(SPAN_FOR_UPDATE_STATE, {\n\t\t\t\t\t...getSpanOptions(host),\n\t\t\t\t\ttraceId: meta.span && meta.span.traceId,\n\t\t\t\t\tkind: SPAN_KIND_CLIENT,\n\t\t\t\t\t...(meta.span && isValidTraceId(meta.span.traceId) && {parentSpan: meta.span})\n\t\t\t\t});\n\t\t\t\tschedule({\n\t\t\t\t\tfn() {\n\t\t\t\t\t\tconst resolvedUpdate = resolveUpdate(host, hostVariables, update, interactionId);\n\t\t\t\t\t\tconst shouldBatch = isBatch(resolvedUpdate);\n\n\t\t\t\t\t\tmark(host, interactionId, metrics.UPDATE_STATE, {\n\t\t\t\t\t\t\tupdate: transformUpdateForMark(resolvedUpdate, shouldBatch)\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tconst previousState = hostVariables[STATE];\n\t\t\t\t\t\tconst updateHandler = shouldBatch ? handleStateUpdateBatch : handleStateUpdate;\n\t\t\t\t\t\tconst {didUpdate, shouldRender} = updateHandler(\n\t\t\t\t\t\t\thost,\n\t\t\t\t\t\t\thostVariables,\n\t\t\t\t\t\t\tresolvedUpdate,\n\t\t\t\t\t\t\tinteractionId\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!didUpdate) {\n\t\t\t\t\t\t\tif (updateStateSpan) {\n\t\t\t\t\t\t\t\tupdateStateSpan.setAttribute(SPAN_ATTR_DID_UPDATE, false);\n\t\t\t\t\t\t\t\tupdateStateSpan.end();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\temitNowUiEvent(STATE_UPDATED, {\n\t\t\t\t\t\t\tcomponentId: hostVariables[COMPONENT_ID],\n\t\t\t\t\t\t\tpreviousState,\n\t\t\t\t\t\t\tnextState: hostVariables[STATE]\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tif (shouldRender) {\n\t\t\t\t\t\t\tif (updateStateSpan) updateStateSpan.setAttribute(SPAN_ATTR_SHOULD_RENDER, true);\n\t\t\t\t\t\t\thost[RENDER](interactionId, metrics.UPDATE_STATE, {\n\t\t\t\t\t\t\t\tupdate: transformUpdateForMark(resolvedUpdate, shouldBatch),\n\t\t\t\t\t\t\t\tactiveSpan: updateStateSpan\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (updateStateSpan) updateStateSpan.setAttribute(SPAN_ATTR_SHOULD_RENDER, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\thostVariables[CONDITIONAL_DISPATCH](\n\t\t\t\t\t\t\tCOMPONENT_STATE_UPDATED,\n\t\t\t\t\t\t\t{previousState, update},\n\t\t\t\t\t\t\t{internal: true, span: updateStateSpan}\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (updateStateSpan) updateStateSpan.end();\n\t\t\t\t\t},\n\t\t\t\t\tmeta: {...meta, span: updateStateSpan},\n\t\t\t\t\ttype: executionTiming !== HELPERS_SCHEDULED || optionallyImmediate ? IMMEDIATE : STATE_SET\n\t\t\t\t});\n\t\t\t},\n\t\t\tmeta\n\t\t);\n\t};\n}\n","import {getConsumers} from './consumers';\nimport {RENDER} from '../symbols';\nimport {types as metrics} from '@servicenow/ui-metrics';\n\nexport default function renderContextConsumers(ctxKey, interactionId, details) {\n\tconst consumers = getConsumers(ctxKey);\n\n\tfor (const consumer of consumers) {\n\t\tconsumer[RENDER](interactionId, metrics.UPDATE_CONTEXT, details);\n\t}\n}\n","import * as uiAnalyticsConsumer from '@servicenow/ui-analytics-consumer';\nimport getStatePropsContext from './getStatePropsContext';\nimport {createInteractionId, mark, types as metrics} from '@servicenow/ui-metrics';\nimport {produce} from 'immer';\nimport {isValidOperation, isBatch, isUpdater} from './utils';\nimport * as operations from '../operators/operations';\nimport getHostVariables from '../getHostVariables';\nimport {schedule, types} from '../../scheduler';\nimport deferHelperExecution from './deferHelperExecution';\nimport {\n\tHELPERS_SCHEDULED,\n\tSCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED,\n\tHELPERS_DEFER,\n\tSPAN_FOR_UPDATE_CONTEXT,\n\tSPAN_KIND_CLIENT,\n\tSPAN_ATTR_UPDATE_CONTEXT_SHOULD_BATCH,\n\tSPAN_ATTR_DID_UPDATE,\n\tSPAN_ATTR_SHOULD_RENDER\n} from '../../constants';\nimport log from '../../log';\nimport renderContextConsumers from '../../context/renderContextConsumers';\nimport {getContext, setContext} from '../../context/contexts';\nimport {getSpanOptions} from '../';\nconst {trace, isValidTraceId} = uiAnalyticsConsumer;\nconst {IMMEDIATE, STATE_SET} = types;\nconst {\n\tdeclarativeOperations: {ASSIGN}\n} = operations;\n\nconst resolveUpdate = (host, hostVariables, update, interactionId) => {\n\tif (!isUpdater(update)) return update;\n\n\tconst statePropsContext = getStatePropsContext(host, interactionId);\n\treturn update(statePropsContext);\n};\n\nfunction handleContextUpdate(host, hostVariables, update, interactionId) {\n\tconst resolvedUpdate = resolveUpdate(host, hostVariables, update, interactionId);\n\n\tif (!resolvedUpdate) return {didUpdate: false, shouldRender: false};\n\n\tconst {context: contextKey} = resolvedUpdate;\n\tconst previousContext = getContext(contextKey);\n\tconst {\n\t\tshouldUpdate = true,\n\t\toperation = previousContext !== null && typeof previousContext === 'object' ? ASSIGN : '',\n\t\tpath = '',\n\t\tstart,\n\t\tdeleteCount,\n\t\taddItems,\n\t\tshouldRender = true,\n\t\tvalue\n\t} = resolvedUpdate;\n\n\tif (!shouldUpdate) return {didUpdate: false, shouldRender: false};\n\n\tconst nextContext = produce(getContext(contextKey) || {}, draftState => {\n\t\tif (!operation) return value;\n\n\t\tif (!isValidOperation(operation)) {\n\t\t\tlog(`Invalid update context operation: ${operation}`, {host, origin: 'handleContextUpdate'});\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\toperations[operation](draftState, {\n\t\t\t\tpath,\n\t\t\t\tvalue,\n\t\t\t\tstart,\n\t\t\t\tdeleteCount,\n\t\t\t\taddItems: Array.isArray(addItems) ? addItems : []\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tlog('Error while performing context update', {error, host, origin: 'handleContextUpdate'});\n\t\t}\n\t});\n\n\tif (nextContext === previousContext) return {didUpdate: false, shouldRender: false};\n\n\tsetContext(contextKey, nextContext);\n\treturn {didUpdate: true, shouldRender};\n}\n\nfunction handleContextUpdateBatch(host, hostVariables, batch, interactionId) {\n\treturn batch.reduce(\n\t\t(acc, update) => {\n\t\t\tconst {shouldRender, didUpdate} = handleContextUpdate(\n\t\t\t\thost,\n\t\t\t\thostVariables,\n\t\t\t\tupdate,\n\t\t\t\tinteractionId\n\t\t\t);\n\n\t\t\tconst result = {...acc};\n\t\t\tif (didUpdate) result.didUpdate = true;\n\n\t\t\tif (shouldRender) result.shouldRender = true;\n\n\t\t\treturn result;\n\t\t},\n\t\t{didUpdate: false, shouldRender: false}\n\t);\n}\n\nconst resolveUpdateForMark = update => (update === 'function' ? 'FUNCTION' : update);\nconst transformUpdateForMark = (update, isBatch) => {\n\tif (isBatch) return update.map(resolveUpdateForMark);\n\n\treturn resolveUpdateForMark(update);\n};\n\nexport default function createUpdateContext(host, executionTiming) {\n\tconst hostVariables = getHostVariables(host);\n\n\treturn function updateContext(update, options = {}) {\n\t\tconst interactionId = options.interactionId || createInteractionId();\n\t\tconst activeSpan = options.span;\n\t\tif (executionTiming === HELPERS_DEFER)\n\t\t\tmark(host, interactionId, metrics.DEFER, {deferred: metrics.UPDATE_CONTEXT});\n\t\tconst meta = {el: host, interactionId, span: activeSpan};\n\t\tdeferHelperExecution(\n\t\t\texecutionTiming,\n\t\t\t() => {\n\t\t\t\t// TODO: Remove this immediate option for a better scheduling alternative\n\t\t\t\t// https://code.devsnc.com/gist/dylan-mozlowski/07bf0ab13b2c8a12f0cc6e59bf4cf911\n\t\t\t\tconst {\n\t\t\t\t\t[SCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED]:\n\t\t\t\t\t\toptionallyImmediate = false\n\t\t\t\t} = options;\n\t\t\t\tconst updateContextSpan = trace(SPAN_FOR_UPDATE_CONTEXT, {\n\t\t\t\t\t...getSpanOptions(host),\n\t\t\t\t\ttraceId: meta.span && meta.span.traceId,\n\t\t\t\t\tkind: SPAN_KIND_CLIENT,\n\t\t\t\t\t...(meta.span && isValidTraceId(meta.span.traceId) && {parentSpan: meta.span})\n\t\t\t\t});\n\t\t\t\tschedule({\n\t\t\t\t\tfn() {\n\t\t\t\t\t\tconst shouldBatch = isBatch(update);\n\t\t\t\t\t\tconst transformedUpdate = transformUpdateForMark(update, shouldBatch);\n\t\t\t\t\t\tmark(host, interactionId, metrics.UPDATE_CONTEXT, {\n\t\t\t\t\t\t\tupdate: transformedUpdate\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (updateContextSpan)\n\t\t\t\t\t\t\tupdateContextSpan.setAttribute(SPAN_ATTR_UPDATE_CONTEXT_SHOULD_BATCH, shouldBatch);\n\t\t\t\t\t\tconst updateHandler = shouldBatch ? handleContextUpdateBatch : handleContextUpdate;\n\t\t\t\t\t\tconst {didUpdate, shouldRender} = updateHandler(\n\t\t\t\t\t\t\thost,\n\t\t\t\t\t\t\thostVariables,\n\t\t\t\t\t\t\tupdate,\n\t\t\t\t\t\t\tinteractionId\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!didUpdate) {\n\t\t\t\t\t\t\tif (updateContextSpan) {\n\t\t\t\t\t\t\t\tupdateContextSpan.setAttribute(SPAN_ATTR_DID_UPDATE, false);\n\t\t\t\t\t\t\t\tupdateContextSpan.end();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (shouldRender) {\n\t\t\t\t\t\t\tconst contexts = shouldBatch ? update.map(({context}) => context) : [update.context];\n\t\t\t\t\t\t\tfor (let i = 0; i < contexts.length; i++) {\n\t\t\t\t\t\t\t\trenderContextConsumers(contexts[i], interactionId, {\n\t\t\t\t\t\t\t\t\tupdate: transformUpdateForMark(update, shouldBatch),\n\t\t\t\t\t\t\t\t\tactiveSpan: updateContextSpan\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (updateContextSpan) updateContextSpan.setAttribute(SPAN_ATTR_SHOULD_RENDER, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tupdateContextSpan && updateContextSpan.end();\n\t\t\t\t\t},\n\t\t\t\t\tmeta: {...meta, span: updateContextSpan},\n\t\t\t\t\ttype: executionTiming !== HELPERS_SCHEDULED || optionallyImmediate ? IMMEDIATE : STATE_SET\n\t\t\t\t});\n\t\t\t},\n\t\t\tmeta\n\t\t);\n\t};\n}\n","import * as uiAnalyticsConsumer from '@servicenow/ui-analytics-consumer';\nimport {mark, types as metrics} from '@servicenow/ui-metrics';\nimport log from '../../log';\nimport * as operations from '../operators/operations';\nimport {splitPath} from '@servicenow/ui-internal';\nimport {schedule, types} from '../../scheduler';\nimport {properties as parseProperties} from '../parse';\nimport getHostVariables from '../getHostVariables';\nimport getStatePropsContext from './getStatePropsContext';\nimport deferHelperExecution from './deferHelperExecution';\nimport {\n\tHELPERS_SCHEDULED as HELPERS_SCHEDULED_CONST,\n\tHELPERS_DEFER,\n\tSPAN_FOR_UPDATE_PROPERTIES,\n\tSPAN_ATTR_UPDATE_PROPERTIES_PROPNAME,\n\tSPAN_ATTR_UPDATE_PROPERTIES_PROPVALUE,\n\tSPAN_ATTR_UPDATE_PROPERTIES_SHOULD_UPDATE,\n\tSPAN_KIND_CLIENT\n} from '../../constants';\nimport {HELPERS_SCHEDULED, SET_PROPERTY, PROPS} from '../../symbols';\nimport quickEquals from './quickEquals';\nimport {getSpanOptions} from '../';\n\nconst {IMMEDIATE, PROPERTY_SET} = types;\nconst {\n\tdeclarativeOperations: {ASSIGN}\n} = operations;\nconst {trace, isValidTraceId} = uiAnalyticsConsumer;\n\nconst setProperties = (host, properties, propertyDefs, options) => {\n\tconst {interactionId, span: activeSpan} = options;\n\tconst hostVariables = getHostVariables(host);\n\tconst {dispatch} = hostVariables[HELPERS_SCHEDULED];\n\tconst parsedProperties = parseProperties(properties, propertyDefs, {host, dispatch});\n\tfor (const k in parsedProperties) {\n\t\t// for backwards compatibility an undefined must still be set on the instance\n\t\tif (!propertyDefs.hasOwnProperty(k)) {\n\t\t\thost[k] = parsedProperties[k]; // eslint-disable-line no-param-reassign\n\t\t\tif (process.env.NODE_ENV === 'development') {\n\t\t\t\tlog(\n\t\t\t\t\t`${host.tagName.toLowerCase()} is missing a property definition for \"${k}\".  Properties set with missing definitions will not be available to the view or action handlers.`,\n\t\t\t\t\t{host, origin: 'setProperties'}\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\t// FIXME: Not handling cases where component starts with no old props\n\t\t\tconst old = hostVariables[PROPS][k];\n\t\t\tconst current = parsedProperties[k];\n\t\t\tif (quickEquals(old, current)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (activeSpan) {\n\t\t\t\tactiveSpan.setAttribute(SPAN_ATTR_UPDATE_PROPERTIES_PROPNAME, k);\n\t\t\t\tif (typeof current !== 'object') {\n\t\t\t\t\tactiveSpan.setAttribute(SPAN_ATTR_UPDATE_PROPERTIES_PROPVALUE, current);\n\t\t\t\t}\n\t\t\t\thost[SET_PROPERTY](k, parsedProperties[k], true, {interactionId, span: activeSpan});\n\t\t\t}\n\t\t\t// eslint-disable-line no-param-reassign\n\t\t\telse host[SET_PROPERTY](k, parsedProperties[k], true, {interactionId}); // eslint-disable-line no-param-reassign\n\t\t}\n\t}\n};\n\nexport default function createUpdateProperties(host, propertyDefs, executionTiming) {\n\treturn function updateProperties(update, options = {}) {\n\t\tconst {interactionId, span: activeSpan} = options;\n\t\tif (executionTiming === HELPERS_DEFER) {\n\t\t\tmark(host, interactionId, metrics.DEFER, {deferred: metrics.UPDATE_PROPERTIES});\n\t\t}\n\n\t\tconst meta = {el: host, interactionId};\n\t\tif (activeSpan && isValidTraceId(activeSpan.traceId)) {\n\t\t\tmeta.span = activeSpan;\n\t\t}\n\n\t\tdeferHelperExecution(\n\t\t\texecutionTiming,\n\t\t\t() => {\n\t\t\t\tconst updatePropSpan = trace(SPAN_FOR_UPDATE_PROPERTIES, {\n\t\t\t\t\t...getSpanOptions(host),\n\t\t\t\t\ttraceId: meta.span && meta.span.traceId,\n\t\t\t\t\tkind: SPAN_KIND_CLIENT,\n\t\t\t\t\t...(meta.span && isValidTraceId(meta.span.traceId) && {parentSpan: meta.span})\n\t\t\t\t});\n\t\t\t\tschedule({\n\t\t\t\t\tfn() {\n\t\t\t\t\t\tmark(host, interactionId, metrics.UPDATE_PROPERTIES, {\n\t\t\t\t\t\t\tupdate: typeof update === 'function' ? 'DECLARATIVE' : 'OBJECT'\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (typeof update === 'function') {\n\t\t\t\t\t\t\tconst stateProps = getStatePropsContext(host, interactionId);\n\t\t\t\t\t\t\tconst {\n\t\t\t\t\t\t\t\tshouldUpdate = true,\n\t\t\t\t\t\t\t\toperation = ASSIGN,\n\t\t\t\t\t\t\t\tpath,\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\tstart,\n\t\t\t\t\t\t\t\tdeleteCount,\n\t\t\t\t\t\t\t\taddItems\n\t\t\t\t\t\t\t} = update(stateProps);\n\n\t\t\t\t\t\t\tif (shouldUpdate) {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tconst propertyPath = splitPath(path);\n\t\t\t\t\t\t\t\t\tconst propertyLen = propertyPath.length;\n\t\t\t\t\t\t\t\t\tconst [name] = propertyPath;\n\t\t\t\t\t\t\t\t\tconst propertyValue = host[name];\n\t\t\t\t\t\t\t\t\tif (propertyValue === null || typeof propertyValue !== 'object') {\n\t\t\t\t\t\t\t\t\t\tif (updatePropSpan) {\n\t\t\t\t\t\t\t\t\t\t\tupdatePropSpan.setAttribute(SPAN_ATTR_UPDATE_PROPERTIES_PROPNAME, name);\n\t\t\t\t\t\t\t\t\t\t\tupdatePropSpan.setAttribute(SPAN_ATTR_UPDATE_PROPERTIES_PROPVALUE, value);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tsetProperties(host, {[name]: value}, propertyDefs, {\n\t\t\t\t\t\t\t\t\t\t\tinteractionId,\n\t\t\t\t\t\t\t\t\t\t\t...(updatePropSpan &&\n\t\t\t\t\t\t\t\t\t\t\t\tisValidTraceId(updatePropSpan.traceId) && {span: updatePropSpan})\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst propertyValue = {};\n\t\t\t\t\t\t\t\t\t\tlet pvRef = propertyValue;\n\t\t\t\t\t\t\t\t\t\tlet hostRef = host;\n\t\t\t\t\t\t\t\t\t\tfor (let i = 0; i < propertyLen; i++) {\n\t\t\t\t\t\t\t\t\t\t\tconst name = propertyPath[i];\n\t\t\t\t\t\t\t\t\t\t\tconst value = hostRef[name];\n\t\t\t\t\t\t\t\t\t\t\tif (value === null || typeof value !== 'object') break;\n\t\t\t\t\t\t\t\t\t\t\tif (Array.isArray(value)) pvRef[name] = value.slice();\n\t\t\t\t\t\t\t\t\t\t\telse pvRef[name] = {...value};\n\n\t\t\t\t\t\t\t\t\t\t\tpvRef = pvRef[name];\n\t\t\t\t\t\t\t\t\t\t\thostRef = hostRef[name];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\toperations[operation](propertyValue, {\n\t\t\t\t\t\t\t\t\t\t\tpath: propertyLen ? propertyPath : [],\n\t\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\t\tstart,\n\t\t\t\t\t\t\t\t\t\t\tdeleteCount,\n\t\t\t\t\t\t\t\t\t\t\taddItems: Array.isArray(addItems) ? addItems : []\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tsetProperties(host, propertyValue, propertyDefs, {\n\t\t\t\t\t\t\t\t\t\t\tinteractionId,\n\t\t\t\t\t\t\t\t\t\t\t...(updatePropSpan &&\n\t\t\t\t\t\t\t\t\t\t\t\tisValidTraceId(updatePropSpan.traceId) && {span: updatePropSpan})\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (updatePropSpan) updatePropSpan.end();\n\t\t\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\t\t\tupdatePropSpan.recordException(error);\n\t\t\t\t\t\t\t\t\tlog('Error while performing properties update', {\n\t\t\t\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t\t\t\thost,\n\t\t\t\t\t\t\t\t\t\torigin: 'updateProperties'\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (updatePropSpan) {\n\t\t\t\t\t\t\t\t\tupdatePropSpan.setAttribute(SPAN_ATTR_UPDATE_PROPERTIES_SHOULD_UPDATE, false);\n\t\t\t\t\t\t\t\t\tupdatePropSpan.end();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (updatePropSpan) updatePropSpan.end();\n\t\t\t\t\t\t\tsetProperties(host, update, propertyDefs, {\n\t\t\t\t\t\t\t\tinteractionId,\n\t\t\t\t\t\t\t\t...(updatePropSpan &&\n\t\t\t\t\t\t\t\t\tisValidTraceId(updatePropSpan.traceId) && {span: updatePropSpan})\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\ttype: executionTiming !== HELPERS_SCHEDULED_CONST ? IMMEDIATE : PROPERTY_SET,\n\t\t\t\t\tmeta: {...meta, span: updatePropSpan}\n\t\t\t\t});\n\t\t\t},\n\t\t\tmeta\n\t\t);\n\t};\n}\n","import {applyInteractionId, mark, getInteractionId, types as metrics} from '@servicenow/ui-metrics';\nimport * as uiAnalyticsConsumer from '@servicenow/ui-analytics-consumer';\nimport getStatePropsContext from './getStatePropsContext';\nimport deferHelperExecution from './deferHelperExecution';\nimport {\n\tSCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED,\n\tHELPERS_SCHEDULED,\n\tHELPERS_DEFER,\n\tSPAN_FOR_DISPATCH,\n\tSPAN_KIND_CLIENT,\n\tSPAN_ATTR_DISPATCH_ACTION_TYPE,\n\tSPAN_ATTR_DISPATCH_SHOULD_DISPATCH\n} from '../../constants';\nimport {normalizeActionMeta} from '../normalizeActionMeta';\nimport {getSpanOptions} from '../';\nimport {INTERNAL_HOST_DISPATCH} from '../../symbols';\n\nconst {trace, isValidTraceId} = uiAnalyticsConsumer;\nconst wrapDispatch = (host, shouldWrap) => {\n\tif (shouldWrap === HELPERS_SCHEDULED) return host.dispatch;\n\n\treturn function dispatch(type, payload, meta = {}, error) {\n\t\tmeta[SCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED] = true; // eslint-disable-line no-param-reassign\n\t\tmeta[INTERNAL_HOST_DISPATCH] = true; // eslint-disable-line no-param-reassign\n\t\treturn host.dispatch(type, payload, meta, error);\n\t};\n};\n\nexport default function createDispatch(host, executionTiming) {\n\treturn function dispatch(typeOrFn, payload, meta = {}, error) {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\tmeta = normalizeActionMeta(meta, {host});\n\t\tconst interactionId = getInteractionId(meta);\n\t\tconst dispatchSpan = trace(SPAN_FOR_DISPATCH, {\n\t\t\t...getSpanOptions(host),\n\t\t\ttraceId: meta.span && meta.span.traceId,\n\t\t\tkind: SPAN_KIND_CLIENT,\n\t\t\tparentSpan: meta.span && isValidTraceId(meta.span.traceId) ? meta.span : null\n\t\t});\n\t\tif (executionTiming === HELPERS_DEFER)\n\t\t\tmark(host, interactionId, metrics.DEFER, {deferred: metrics.DISPATCH, type: typeOrFn});\n\n\t\tdeferHelperExecution(\n\t\t\texecutionTiming,\n\t\t\t() => {\n\t\t\t\tconst wrappedDispatch = wrapDispatch(host, executionTiming);\n\t\t\t\tif (typeof typeOrFn === 'function') {\n\t\t\t\t\tconst statePropsContext = getStatePropsContext(host, interactionId);\n\t\t\t\t\tconst {\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tpayload,\n\t\t\t\t\t\tmeta = {},\n\t\t\t\t\t\terror,\n\t\t\t\t\t\tshouldDispatch = true\n\t\t\t\t\t} = typeOrFn(statePropsContext);\n\t\t\t\t\tdispatchSpan.setAttribute(SPAN_ATTR_DISPATCH_ACTION_TYPE, type);\n\t\t\t\t\tif (isValidTraceId(dispatchSpan.traceId)) meta.span = dispatchSpan;\n\t\t\t\t\tif (shouldDispatch) {\n\t\t\t\t\t\tapplyInteractionId(meta);\n\t\t\t\t\t\tdispatchSpan.end();\n\t\t\t\t\t\twrappedDispatch(type, payload, meta, error);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatchSpan.setAttribute(SPAN_ATTR_DISPATCH_SHOULD_DISPATCH, false);\n\t\t\t\t\t\tdispatchSpan.end();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tapplyInteractionId(meta);\n\t\t\t\t\tif (isValidTraceId(dispatchSpan.traceId)) meta.span = dispatchSpan;\n\t\t\t\t\tdispatchSpan.setAttribute(SPAN_ATTR_DISPATCH_ACTION_TYPE, typeOrFn);\n\t\t\t\t\tdispatchSpan.end();\n\t\t\t\t\twrappedDispatch(typeOrFn, payload, meta, error);\n\t\t\t\t}\n\t\t\t},\n\t\t\t{...meta, el: host, interactionId, span: dispatchSpan}\n\t\t);\n\t};\n}\n","import log from '../../log';\nimport createUpdateState from './createUpdateState';\nimport createUpdateContext from './createUpdateContext';\nimport createUpdateProperties from './createUpdateProperties';\nimport createDispatch from './createDispatch';\nimport createComponentLogger from './createComponentLogger';\n\nexport default function createHelpers(host, propertyDefs, executionTiming = null, options = {}) {\n\tconst wrappedDispatch = createDispatch(host, executionTiming);\n\tconst dispatch = (...args) => {\n\t\tlog(\n\t\t\t`Please update the view for ${host.tagName.toLowerCase()} from using dispatch as the second argument to an object with dispatch, updateState, and updateProperties`,\n\t\t\t{host, origin: 'createHelpers'}\n\t\t);\n\t\twrappedDispatch(...args);\n\t};\n\tconst logger = createComponentLogger(host, executionTiming);\n\tif (options.presentational) return {dispatch: wrappedDispatch, logger};\n\n\tdispatch.dispatch = wrappedDispatch;\n\tdispatch.updateState = createUpdateState(host, executionTiming);\n\tdispatch.updateProperties = createUpdateProperties(host, propertyDefs, executionTiming);\n\tdispatch.updateContext = createUpdateContext(host, executionTiming);\n\tdispatch.logger = logger;\n\treturn dispatch;\n}\n","import {toLower} from '@servicenow/ui-internal';\nimport {\n\tSEISMIC_HOIST_TAG_NAME,\n\tHOIST_ATTR,\n\tNOW_HOIST_ATTR,\n\tCOMPONENT_ID_ATTRIBUTE,\n\tHOIST_APPEND_TO_ATTR,\n\tHOIST_APPEND_TO_PROP,\n\tNOW_HOIST_APPEND_TO_ATTR,\n\tNOW_HOIST_APPEND_TO_PROP,\n\tCOMPONENT_NAME_ATTR,\n\tHOIST_FIRST_SCROLL_PARENT,\n\tNOW_HOIST_PREPEND_TO_PROP,\n\tNOW_HOIST_PREPEND_TO_ATTR,\n\tNOW_HOIST_PROP,\n\tNOW_MODE_ATTR,\n\tNOW_COMPONENT_NAME_ATTR\n} from './constants';\nimport {\n\tROOT_NODE,\n\tATTACHED_ROOT_NODE,\n\tCONFIG,\n\tVARIABLES,\n\tCOMPONENT_ID,\n\tPROPERTY_DEFS,\n\tPROPS,\n\tRETARGETED_ACTION_TYPES,\n\tGET_RESOLVED_PROPERTY\n} from './symbols';\nimport {isHoisted, getHoistTarget, getHostVariables} from './utils';\n\nclass SeismicHoistElement extends HTMLElement {\n\tconstructor() {\n\t\tsuper();\n\n\t\tconst variables = {};\n\t\tthis[VARIABLES] = variables;\n\n\t\tvariables[RETARGETED_ACTION_TYPES] = [];\n\t}\n}\n\nconst hoistTagName = SEISMIC_HOIST_TAG_NAME.toLowerCase();\nwindow.customElements &&\n\t!window.customElements.get(hoistTagName) &&\n\twindow.customElements.define(hoistTagName, SeismicHoistElement);\n\nconst cast = (sourceEl, name, value) =>\n\tsourceEl[VARIABLES][PROPERTY_DEFS][name] && sourceEl[VARIABLES][PROPERTY_DEFS][name].unstableParse\n\t\t? JSON.stringify(sourceEl[VARIABLES][PROPS][name])\n\t\t: value;\n\nexport function createTargetAttr(tagName, componentId) {\n\treturn `${toLower(tagName)}[component-id=\"${componentId}\"]`;\n}\n\nexport function createTarget(sourceEl) {\n\tconst targetEl = document.createElement(hoistTagName);\n\tconst sourceVariables = getHostVariables(sourceEl);\n\tconst targetVariables = getHostVariables(targetEl);\n\tconst {\n\t\t[CONFIG]: {shadowRootOptions}\n\t} = sourceVariables;\n\ttargetVariables[ATTACHED_ROOT_NODE] = targetEl.attachShadow(shadowRootOptions);\n\ttargetEl.setAttribute(\n\t\t'target-for',\n\t\tcreateTargetAttr(sourceEl.tagName, sourceVariables[COMPONENT_ID])\n\t);\n\tconst {attributes} = sourceEl;\n\tconst {length: attributeCount} = sourceEl.attributes;\n\tfor (let i = 0; i < attributeCount; i++) {\n\t\tconst {name, value} = attributes[i];\n\t\tif (!omitAttrs.includes(name)) targetEl.setAttribute(name, cast(sourceEl, name, value));\n\t}\n\n\ttargetEl.sourceElement = sourceEl;\n\treturn targetEl;\n}\n\nexport const omitAttrs = [\n\tNOW_MODE_ATTR,\n\tNOW_COMPONENT_NAME_ATTR,\n\tNOW_HOIST_ATTR,\n\tNOW_HOIST_APPEND_TO_ATTR,\n\tNOW_HOIST_PREPEND_TO_ATTR,\n\tHOIST_ATTR,\n\tHOIST_APPEND_TO_ATTR,\n\tCOMPONENT_ID_ATTRIBUTE,\n\tCOMPONENT_NAME_ATTR\n];\n\nconst getParent = element => {\n\tconst parent = element.parentNode;\n\tif (parent && parent.host) return parent.host;\n\n\treturn parent;\n};\n\nconst overflowRegex = /(auto|scroll)/;\nconst getFirstScrollParent = sourceEl => {\n\tlet style = getComputedStyle(sourceEl);\n\tconst excludeStaticParent = style.position === 'absolute';\n\tlet parent = sourceEl;\n\n\tif (style.position === 'fixed') return document.body;\n\n\twhile ((parent = getParent(parent)) !== null) {\n\t\tif (parent === document.body) break;\n\n\t\tstyle = getComputedStyle(parent);\n\t\tif (excludeStaticParent && style.position === 'static') continue;\n\n\t\tif (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) return parent;\n\t}\n\n\treturn document.body;\n};\n\nconst shouldPrepend = sourceEl =>\n\tsourceEl[GET_RESOLVED_PROPERTY](NOW_HOIST_PREPEND_TO_PROP) ||\n\tsourceEl.getAttribute(NOW_HOIST_PREPEND_TO_ATTR);\n\nconst shouldAppend = sourceEl =>\n\tsourceEl[GET_RESOLVED_PROPERTY](HOIST_APPEND_TO_PROP) ||\n\tsourceEl.getAttribute(HOIST_APPEND_TO_ATTR) ||\n\tsourceEl[GET_RESOLVED_PROPERTY](NOW_HOIST_APPEND_TO_PROP) ||\n\tsourceEl.getAttribute(NOW_HOIST_APPEND_TO_ATTR);\n\nconst getAppendToEl = sourceEl => {\n\t// TODO: log and warn about legacy attributes, props\n\tconst hoistAppendToSelector = shouldAppend(sourceEl);\n\tconst hoistPrependToSelector = shouldPrepend(sourceEl);\n\n\tif (\n\t\thoistAppendToSelector === HOIST_FIRST_SCROLL_PARENT ||\n\t\thoistPrependToSelector === HOIST_FIRST_SCROLL_PARENT\n\t)\n\t\treturn getFirstScrollParent(sourceEl);\n\n\tconst selectorOrNode = hoistPrependToSelector || hoistAppendToSelector;\n\tif (!selectorOrNode) return document.body;\n\n\tconst node =\n\t\ttypeof selectorOrNode === 'string'\n\t\t\t? document.querySelector(selectorOrNode)\n\t\t\t: selectorOrNode instanceof HTMLElement\n\t\t\t? selectorOrNode\n\t\t\t: undefined;\n\n\treturn node || document.body;\n};\n\nexport function shouldHoistAttribute(host, name) {\n\treturn isHoisted(host) && !omitAttrs.includes(name);\n}\n\nexport function hoistAttribute(host, name, value) {\n\tconst hostVariables = getHostVariables(host);\n\tconst target = getHoistTarget(hostVariables);\n\tif (target.tagName === SEISMIC_HOIST_TAG_NAME) target.setAttribute(name, value);\n}\n\nexport function unhoistAttribute(host, name) {\n\tconst hostVariables = getHostVariables(host);\n\tconst target = getHoistTarget(hostVariables);\n\tif (target.tagName === SEISMIC_HOIST_TAG_NAME) target.removeAttribute(name);\n}\n\nexport function moveStyles(sourceEl, targetEl, deprioritizeStyles, onStateChange) {\n\tconst sourceVariables = getHostVariables(sourceEl);\n\tconst targetVariables = getHostVariables(targetEl);\n\tif (deprioritizeStyles) onStateChange(targetVariables[ATTACHED_ROOT_NODE], () => null);\n\n\tif (\n\t\tsourceVariables[ATTACHED_ROOT_NODE].adoptedStyleSheets &&\n\t\tsourceVariables[ATTACHED_ROOT_NODE].adoptedStyleSheets.length &&\n\t\t!targetVariables[ATTACHED_ROOT_NODE].adoptedStyleSheets.length\n\t) {\n\t\ttargetVariables[ATTACHED_ROOT_NODE].adoptedStyleSheets = [\n\t\t\t...sourceVariables[ATTACHED_ROOT_NODE].adoptedStyleSheets\n\t\t]; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tconst sourceElRootNode = sourceVariables[ATTACHED_ROOT_NODE];\n\t\tconst {length: sourceElRootNodeChildCount} = sourceElRootNode.children;\n\t\tif (\n\t\t\tsourceElRootNodeChildCount &&\n\t\t\tsourceElRootNode.firstChild.tagName === 'STYLE' &&\n\t\t\t!targetVariables[ATTACHED_ROOT_NODE].length\n\t\t) {\n\t\t\ttargetVariables[ATTACHED_ROOT_NODE].appendChild(\n\t\t\t\tsourceElRootNode.removeChild(sourceElRootNode.firstChild)\n\t\t\t);\n\t\t\twhile (sourceElRootNode.firstChild) sourceElRootNode.removeChild(sourceElRootNode.firstChild);\n\t\t}\n\t}\n}\n\nexport function moveChildren(sourceEl, targetEl) {\n\tif (sourceEl.children.length) {\n\t\tconst fragment = document.createDocumentFragment();\n\n\t\twhile (sourceEl.firstChild) fragment.appendChild(sourceEl.removeChild(sourceEl.firstChild));\n\n\t\ttargetEl.appendChild(fragment);\n\t}\n}\n\nfunction connectTarget(sourceEl, targetEl) {\n\tconst hoistAppendToEl = getAppendToEl(sourceEl);\n\tif (shouldPrepend(sourceEl)) hoistAppendToEl.prepend(targetEl);\n\telse hoistAppendToEl.appendChild(targetEl);\n}\n\nfunction disconnectTarget(targetEl) {\n\ttargetEl.parentNode.removeChild(targetEl);\n}\n\nexport default function hoist(sourceEl, deprioritizeStyles, onStateChange) {\n\tif (\n\t\t!sourceEl[GET_RESOLVED_PROPERTY](HOIST_ATTR) &&\n\t\t!sourceEl.hasAttribute(HOIST_ATTR) &&\n\t\t!sourceEl[GET_RESOLVED_PROPERTY](NOW_HOIST_PROP) &&\n\t\t!sourceEl.hasAttribute(NOW_HOIST_ATTR)\n\t)\n\t\treturn;\n\n\tconst targetEl = createTarget(sourceEl);\n\n\tconst sourceVariables = getHostVariables(sourceEl);\n\tconst targetVariables = getHostVariables(targetEl);\n\n\t// these blocks cover the case when the hoist property is set to true after the source has already been connected and\n\t// possibly rendered. this appends the styles to the target shadowRoot then clears out the remaining child nodes\n\t// that were rendered in the source shadowRoot. it would be more efficient to never render the source shadowRoot,\n\t// but there isn't a way to know if a node will be hoisted in the future.\n\tmoveStyles(sourceEl, targetEl, deprioritizeStyles, onStateChange);\n\tmoveChildren(sourceEl, targetEl);\n\n\tconnectTarget(sourceEl, targetEl);\n\tsourceVariables[ROOT_NODE] = targetVariables[ATTACHED_ROOT_NODE]; // eslint-disable-line no-param-reassign\n\n\treturn function unhoist() {\n\t\tsourceVariables[ROOT_NODE] = sourceVariables[ATTACHED_ROOT_NODE]; // eslint-disable-line no-param-reassign\n\t\tmoveStyles(targetEl, sourceEl, deprioritizeStyles, onStateChange);\n\t\tmoveChildren(targetEl, sourceEl);\n\t\tdisconnectTarget(targetEl);\n\t};\n}\n","import {toLower} from '@servicenow/ui-internal';\nimport {\n\tcreateStyleFragment,\n\tgetHostVariables,\n\tstyleSheetsContentCache,\n\tresolveStylesheetsContent\n} from './utils';\nimport {VERSION, ROOT_NODE} from './symbols';\n\nconst view = () => null;\nconst stylesMap = new Map();\n\nexport default async function applyStyles(el, config) {\n\tconst {\n\t\tstyles = '',\n\t\tstylesheets = [],\n\t\trenderer: {type: {onStateChange = () => null, deprioritizeStyles = false} = {}} = {}\n\t} = config;\n\n\t// eslint-disable-next-line nonblock-statement-body-position\n\tif (!styles && !stylesheets.length) return;\n\n\tconst hostVariables = getHostVariables(el);\n\tconst rootNode = hostVariables[ROOT_NODE];\n\tconst {tagName} = el;\n\n\tif (\n\t\tDocument &&\n\t\t'adoptedStyleSheets' in Document.prototype &&\n\t\t(process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'test')\n\t)\n\t\treturn applyWithAdoptedStylesSheets(el, tagName, rootNode, styles, stylesheets);\n\n\tapplyWithTag(el, tagName, rootNode, styles, stylesheets, deprioritizeStyles, onStateChange);\n}\n\nasync function applyWithAdoptedStylesSheets(el, tagName, rootNode, styles = '', stylesheets) {\n\tif (!stylesMap.has(tagName)) {\n\t\tconst externalStyles = document.head.querySelector(`#now-${toLower(tagName)}-styles`);\n\t\tif (externalStyles) {\n\t\t\tconst styleEl = externalStyles.content.cloneNode(true).querySelector('style');\n\t\t\tstyles = styleEl ? styleEl.textContent : styles; // eslint-disable-line no-param-reassign\n\t\t}\n\n\t\tlet stylesheetsContent = '';\n\n\t\tif (stylesheets && stylesheets.length) {\n\t\t\tstylesheetsContent = styleSheetsContentCache.get(el, tagName);\n\t\t\tif (!stylesheetsContent) {\n\t\t\t\tconst previousDisplaValue = el.style.display;\n\t\t\t\tel.style.setProperty('display', 'none', 'important');\n\t\t\t\tstylesheetsContent = await resolveStylesheetsContent(stylesheets);\n\t\t\t\tel.style.setProperty('display', previousDisplaValue);\n\t\t\t}\n\t\t}\n\n\t\tconst sheet = new CSSStyleSheet();\n\t\tsheet.replace(`${styles} ${stylesheetsContent}`);\n\t\tstylesMap.set(tagName, [sheet]);\n\t}\n\n\trootNode.adoptedStyleSheets = stylesMap.get(tagName); // eslint-disable-line no-param-reassign\n}\n\nasync function applyWithTag(\n\tel,\n\ttagName,\n\trootNode,\n\tstyles,\n\tstylesheets,\n\tdeprioritizeStyles,\n\tonStateChange\n) {\n\tlet stylesheetsContent = '';\n\n\t// eslint-disable-next-line nonblock-statement-body-position\n\tif (deprioritizeStyles) onStateChange(rootNode, view);\n\n\tif (stylesheets && stylesheets.length) {\n\t\tconst version = getHostVariables(VERSION) || '';\n\t\tstylesheetsContent = styleSheetsContentCache.get(version, tagName);\n\t\tif (!stylesheetsContent) {\n\t\t\tconst previousDisplaValue = el.style.display;\n\t\t\tel.style.setProperty('display', 'none', 'important');\n\t\t\tstylesheetsContent = await resolveStylesheetsContent(stylesheets);\n\t\t\tel.style.setProperty('display', previousDisplaValue);\n\t\t\tif (stylesheetsContent) styleSheetsContentCache.set(version, tagName, stylesheetsContent);\n\t\t}\n\t}\n\n\tconst styleFragment = createStyleFragment(styles, stylesheetsContent, tagName);\n\trootNode.appendChild(styleFragment);\n}\n","import {getHostVariables} from './utils';\nimport {ROOT_NODE} from './symbols';\n\nexport default function removeStyles(el) {\n\tconst hostVariables = getHostVariables(el);\n\tconst nodes = [...hostVariables[ROOT_NODE].childNodes];\n\tconst {length: nodeCount} = nodes;\n\n\tfor (let i = 0; i < nodeCount; i++) {\n\t\tconst node = nodes[i];\n\t\tif (node && (node.tagName === 'STYLE' || node.tagName === 'SCRIPT'))\n\t\t\thostVariables[ROOT_NODE].removeChild(node);\n\t}\n}\n","import {mark, types as metrics} from '@servicenow/ui-metrics';\nimport {memoize, toString} from '@servicenow/ui-internal';\nimport {filterPropertyDefinitions, toAttributeName, getHostVariables} from '../utils';\nimport reflectQueue from '../utils/reflectQueue'; // TODO: why is this required?\nimport {schedule, types} from '../scheduler';\nimport {PROPERTY_DEFS} from '../symbols';\n\nconst {REFLECT_PROPERTIES} = types;\n\nconst isAria = memoize(name => name.indexOf('aria') === 0, {profileName: 'isAria'});\n\nconst shouldRemoveAttribute = (name, value) => {\n\tif (isAria(name)) return !toString(value);\n\n\treturn !value;\n};\n\nconst getAttributeValue = (name, value) => {\n\tif (isAria(name)) return toString(value);\n\n\treturn value === true ? '' : value;\n};\n\nconst filterRelectedProperties = memoize(\n\thost => {\n\t\tconst hostVariables = getHostVariables(host);\n\t\tconst properties = filterPropertyDefinitions(hostVariables[PROPERTY_DEFS], d => d.reflect);\n\t\tconst keys = Object.keys(properties);\n\t\treturn {\n\t\t\tproperties,\n\t\t\tkeys\n\t\t};\n\t},\n\t{createCacheKey: host => host.tagName, profileName: 'filterRelectedProperties'}\n);\nconst filterUnstableParseProperties = memoize(\n\thost => {\n\t\tconst hostVariables = getHostVariables(host);\n\t\treturn filterPropertyDefinitions(hostVariables[PROPERTY_DEFS], d => d.unstableParse);\n\t},\n\t{createCacheKey: host => host.tagName, profileName: 'filterUnstableParseProperties'}\n);\nconst resolveValue = (propName, propDef, state) => {\n\tif (propDef.computed) {\n\t\tconst computedValue = propDef.computed(state);\n\t\tif (computedValue !== undefined) return computedValue;\n\t}\n\tconst stateValue = state.properties[propName];\n\tif (stateValue !== undefined) return stateValue;\n\n\treturn propDef.default || null;\n};\n\nexport function reflectProperty(propName, propDef, state, host, usingUnstableParse) {\n\tconst value = resolveValue(propName, propDef, state);\n\tconst attributeName = toAttributeName(propName);\n\tconst attributeValue = getAttributeValue(attributeName, value);\n\n\tif (shouldRemoveAttribute(attributeName, value) && host.hasAttribute(attributeName)) {\n\t\treflectQueue.push(attributeName);\n\n\t\thost.removeAttribute(attributeName);\n\t} else {\n\t\tif (\n\t\t\thost.getAttribute(attributeName) !== attributeValue &&\n\t\t\t((value !== null && value !== undefined && value !== false) ||\n\t\t\t\t(isAria(attributeName) && attributeValue))\n\t\t) {\n\t\t\treflectQueue.push(attributeName);\n\n\t\t\tif (usingUnstableParse[propName])\n\t\t\t\thost.setAttribute(attributeName, JSON.stringify(attributeValue), true);\n\t\t\telse host.setAttribute(attributeName, attributeValue, true);\n\t\t}\n\t}\n}\n\nexport default function reflectProperties(state, host, interactionId) {\n\tconst {properties: reflected, keys} = filterRelectedProperties(host);\n\tconst usingUnstableParse = filterUnstableParseProperties(host);\n\n\tschedule({\n\t\tfn() {\n\t\t\tmark(host, interactionId, metrics.PROPERTY_REFLECTION, {properties: keys});\n\t\t\tfor (const propName in reflected)\n\t\t\t\treflectProperty(propName, reflected[propName], state, host, usingUnstableParse);\n\t\t},\n\t\ttype: REFLECT_PROPERTIES,\n\t\tmeta: {el: host, interactionId}\n\t});\n\n\treturn state;\n}\n","import {sandbox, locations} from '@servicenow/ui-internal';\nimport {camelCaseProperties, unescapeReservedCharacters, resolveComputedProperties} from '../utils';\nimport reflectProperties from './reflectProperties';\nimport log from '../log';\n\nexport {reflectProperty} from './reflectProperties';\n\nexport default function shapeRenderData(\n\tstate,\n\thost,\n\thostVariables,\n\ttransform,\n\tdispatch,\n\tinteractionId\n) {\n\tconst transformedState = reflectProperties(\n\t\tunescapeReservedCharacters(\n\t\t\tresolveComputedProperties(camelCaseProperties(state), host, hostVariables, interactionId)\n\t\t),\n\t\thost,\n\t\tinteractionId\n\t);\n\n\treturn (\n\t\tsandbox(transform, {\n\t\t\targs: [transformedState],\n\t\t\thost,\n\t\t\tlocation: locations.TRANSFORM_STATE,\n\t\t\tdispatch,\n\t\t\tlog\n\t\t}) || transformedState\n\t);\n}\n","import {addResolvedPropertyMapping, isSelector} from '../property-selectors';\n\n/**\n * function to update resolvedSelectedPropertyMapping when the property value does not contain selector\n * but itself is selectable, it could become a provider property for other consumer components\n * @param {string} propertyValue\n * @param {string} providerPropName\n * @param {string} providerId\n */\nexport default function addResolvedSelectedPropertyMappingWithResolvedValue(\n\tpropertyValue,\n\tproviderPropName,\n\tproviderId\n) {\n\tif (isSelector(propertyValue)) return;\n\n\taddResolvedPropertyMapping({providerId, providerPropName}, propertyValue);\n}\n","/**\n * Function called to allow handler to process the  now-resolved-props before they are assigned to the component/host\n * @name ProcessNowResolvedPropsFn\n * @function\n * @param {{host:SeismicElement, rawResolvedProps:obj, propertyKeys}} opts\n */\n\n/**\n * Function called to cleanup any subscriptions or listeners when the host is disconnected\n * @name DisconnectNowResolvedPropsCallbacksFn\n * @function\n * @param {SeismicElement} host\n */\n\n/**\n * Function provided by component that will initiate the property changes\n * @name ChangeCallbackFn\n * @function\n * @param {object} propertiesToUpdate\n */\n\n/**\n * Function called to create any subscriptions or listeners when the host is connected\n * @name ConnectNowResolvedPropsCallbacksFn\n * @function\n * @param {SeismicElement} host\n * @param {ChangeCallbackFn} changeCallback\n */\n\n/**\n * @typedef NowResolvedPropsHandler\n * @type {object}\n * @property {ProcessNowResolvedPropsFn} processNowResolvedProps\n * @property {DisconnectNowResolvedPropsCallbacksFn} disconnectNowResolvedPropsCallbacks\n * @property {ConnectNowResolvedPropsCallbacksFn} connectNowResolvedPropsCallbacks\n */\n\n/** @type {NowResolvedPropsHandler|null} */\nlet nowResolvedPropsHandler = null;\n\nexport function processNowResolvedProps({host, rawResolvedProps, propertyKeys}) {\n\tif (!nowResolvedPropsHandler) return {};\n\n\tif (\n\t\tnowResolvedPropsHandler.processNowResolvedProps === undefined ||\n\t\ttypeof nowResolvedPropsHandler.processNowResolvedProps !== 'function'\n\t) {\n\t\treturn {};\n\t}\n\treturn nowResolvedPropsHandler.processNowResolvedProps({host, rawResolvedProps, propertyKeys});\n}\n\nexport function disconnectNowResolvedPropsCallbacks(host) {\n\tif (!nowResolvedPropsHandler) return;\n\n\tif (\n\t\tnowResolvedPropsHandler.disconnectNowResolvedPropsCallbacks === undefined ||\n\t\ttypeof nowResolvedPropsHandler.disconnectNowResolvedPropsCallbacks !== 'function'\n\t) {\n\t\treturn;\n\t}\n\tnowResolvedPropsHandler.disconnectNowResolvedPropsCallbacks(host);\n}\n\nexport function connectNowResolvedPropsCallbacks(host, changeCallback) {\n\tif (!nowResolvedPropsHandler) return;\n\n\tif (\n\t\tnowResolvedPropsHandler.connectNowResolvedPropsCallbacks === undefined ||\n\t\ttypeof nowResolvedPropsHandler.connectNowResolvedPropsCallbacks !== 'function'\n\t) {\n\t\treturn;\n\t}\n\tnowResolvedPropsHandler.connectNowResolvedPropsCallbacks(host, changeCallback);\n}\n\nexport function clearNowResolvedPropsHandler() {\n\tnowResolvedPropsHandler = null;\n}\n\n/**\n * Registers a nowResolvedPropsHandler for resolving dynamic properties.\n * @param {NowResolvedPropsHandler} handler\n */\nexport function registerNowResolvedPropsHandler(handler) {\n\tnowResolvedPropsHandler = handler;\n}\n","import * as uiAnalyticsConsumer from '@servicenow/ui-analytics-consumer';\nimport {set as setStat} from './stats';\nimport {\n\tcreateInteractionId,\n\tmark,\n\ttypes as metrics,\n\tsetInteractionId\n} from '@servicenow/ui-metrics';\nimport {buildPropertiesValidator} from './utils/schema';\nimport {\n\tsandbox,\n\tlocations,\n\tguid,\n\tpendingNetworkActionCountForHost,\n\tclearPendingNetworkActionsForHost,\n\taddPendingNetworkActionForHostCb,\n\tisEqual,\n\tisEmpty,\n\tNOW_SKIP_RENDER_UNTIL_PRESENT,\n\tRESOLVED_PROPS_ATTRIBUTE,\n\tget,\n\tNOW_DEFER_HYDRATION_ATTR\n} from '@servicenow/ui-internal';\nimport {normalizeConfig} from './utils/config';\nimport {\n\tCOMPONENT_ID_ATTRIBUTE,\n\tDEFER_ATTRIBUTE,\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_RENDERED as COMPONENT_RENDERED_ACTION_TYPE,\n\tNOW_MODE_PROP,\n\tNOW_ENABLE_PROPERTY_SETTING_PREVENTION_PROP,\n\tCOMPONENT_MODE_SUSPEND,\n\tCOMPONENT_MODE_DETACH,\n\tNOW_ID_ATTR,\n\tCOMPONENT_DOM_READY,\n\tSCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED,\n\tHELPERS_SCHEDULED as HELPERS_SCHEDULED_CONST,\n\tHELPERS_DEFER as HELPERS_DEFER_CONST,\n\tHELPERS_IMMEDIATE as HELPERS_IMMEDIATE_CONST,\n\tSTATE_UPDATED,\n\tCOMPONENT_INTERNAL_ACTION,\n\tCOMPONENT_PROPERTY_UPDATE_REQUESTED,\n\tCOMPONENT_RENDER_REQUESTED,\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_TREE_RENDERED,\n\tSHADOW_ROOT_MODE_CLOSED,\n\tNOW_PLACEHOLDER_HEIGHT_PROP,\n\tNOW_PLACEHOLDER_WIDTH_PROP,\n\tNOW_HOIST_PROP,\n\tHOIST_ATTR,\n\tNOW_PRIORITY_PROP,\n\tNOW_PRIORITY_ATTR,\n\tPRIORITY_LEVEL_LOW,\n\tSPAN_FOR_RENDER,\n\tSPAN_FOR_SET_PROPERTY,\n\tSPAN_KIND_CLIENT,\n\tSPAN_ATTR_COMPONENT_CONNECTED,\n\tSPAN_ATTR_COMPONENT_DETACHED,\n\tSPAN_ATTR_COMPONENT_INTERSECTED,\n\tSPAN_ATTR_COMPONENT_EVENT_DEFAULT_PREVENTED,\n\tSPAN_ATTR_COMPONENT_RENDER_SKIPPED,\n\tSPAN_ATTR_COMPONENT_SUSPENDED,\n\tSPAN_ATTR_SET_PROPERTY_SKIPED,\n\tSPAN_ATTR_UPDATE_PROPERTIES_PROPNAME,\n\tSPAN_ATTR_UPDATE_PROPERTIES_PROPVALUE,\n\tSPAN_ATTR_RENDER_CAUSE,\n\tPACKAGE_JSON_VERSION,\n\tSPAN_ATTR_COMPONENT_QUICK_EQUAL,\n\tSPAN_ATTR_COMPONENT_EQUAL,\n\tSPAN_ATTR_COMPONENT_READONLY_COMPUTED,\n\tNOW_NESTED_SELECTABLE_PROPS,\n\tSPAN_FOR_NOW_RESOLVE_PROPS_SET\n} from './constants';\nimport {\n\tPRESENTATIONAL,\n\tVARIABLES,\n\tCOMPONENT_ID,\n\tCONNECTED,\n\tPROPERTY_DEFS,\n\tSTATE,\n\tPROPS,\n\tDISPATCH,\n\tCONDITIONAL_DISPATCH,\n\tBOOTSTRAPPED_HANDLED,\n\tCONNECTED_HANDLED,\n\tUNHOIST,\n\tHOIST_CHANGED,\n\tHOIST_PARENT_CHANGED,\n\tGET_RESOLVED_PROPERTY,\n\tROOT_NODE,\n\tVERSION,\n\tATTACHED_ROOT_NODE,\n\tDEFERRED,\n\tCONFIG,\n\tACTION_HANDLERS,\n\tTARGETED_ACTION_TYPES,\n\tRENDERED_ONCE,\n\tTREE_RENDERED_ONCE,\n\tHELPERS_SCHEDULED,\n\tHELPERS_DEFER,\n\tHELPERS_IMMEDIATE,\n\tRENDER,\n\tSTYLE_PROXY,\n\tSET_PROPERTY,\n\tPREVIOUS_RENDER_STATE,\n\tPREVIOUS_RENDER_PROPERTIES,\n\tPREVIOUS_TREE_RENDER_STATE,\n\tPREVIOUS_TREE_RENDER_PROPERTIES,\n\tCHECK_IF_TREE_RENDERED,\n\tCHILD_IS_RENDERING,\n\tCHILDREN_TO_BE_RENDERED,\n\tCHILD_HAS_RENDERED,\n\tNOTIFY_PARENT_THAT_CHILD_IS_RENDERING,\n\tNOTIFY_PARENT_THAT_CHILD_TREE_HAS_RENDERED,\n\tNEEDS_TO_KNOW_ABOUT_TREE_RENDERS,\n\tANCESTOR_ROOT_NODE,\n\tANCESTOR_PATH,\n\tUPDATE_AFFECTED_COMPONENTS,\n\tRUNTIME_ACTION_HANDLERS,\n\tINTERSECTED,\n\tUSING_INTERSECTION_OBSERVER,\n\tINTERSECTION_TRIGGERED,\n\tREMOVE_INTERSECTED_STYLES,\n\tDETACHED_SHADOW_ROOT_CHILDREN_FRAGMENT,\n\tDETACHED_COMPONENT_PROPERTY_MAP,\n\tLOW_PRIORITY_PENDING,\n\tCONNECTED_TIMESTAMP,\n\tCHILDREN_TO_BE_INTERACTIVE,\n\tSELECTABLE_PROPERTIES,\n\tTREE_RENDERED_ONCE_TIMESTAMP,\n\tRENDERED_ONCE_TIMESTAMP,\n\tCONNECTED_DEFERRED_TIMESTAMP,\n\tCONTEXT,\n\tPROPERTIES_WITH_SELECTOR,\n\tREMOVE_UPDATE_CUSTOM_ELEMENT_OBSERVER,\n\tEXISTING_SHADOW_ROOT_ON_CREATE,\n\tPROPERTIES_WITH_NESTED_SELECTOR,\n\tHAS_NOW_RESOLVED_PROPS\n} from './symbols';\nimport {\n\tresolveRenderer,\n\tassertValidPropertyNames,\n\tresolveProperties,\n\tgetInitialPropertyValue,\n\tisReflecting,\n\tclearReflection,\n\tfilterPropertyDefinitions,\n\tshouldSetAttribute,\n\tshouldSetProperty,\n\ttoPropertyName,\n\ttoAttributeName,\n\tcreateLifecycleFunctions,\n\tmeasure,\n\tselectablePropertyResolver,\n\ttriggerComponentUpdates,\n\tupdateSelectedPropertyMappings,\n\tcamelCaseProperties,\n\tunescapeReservedCharacters,\n\tisHoisted,\n\tgetHoistTarget,\n\temitNowUiEvent,\n\tgetHostVariables,\n\tgetRootNode,\n\tapplyMetrics,\n\tresolveComputedProperties,\n\tcomputeProperties,\n\tintersectionObserver,\n\tapplyIntersectStyles,\n\tshouldOptOutOfDeepCompareForPage,\n\tmarkComponentInteractive,\n\tcreateOnStateChangeArgs,\n\tremoveStyleFragmentFromCache,\n\tsetUpdateConfigResolver,\n\taddUpdateCustomElementObserver,\n\tgetSpanOptions,\n\tresolveParentTraceId\n} from './utils';\n\nimport createContextProxy from './context/createContextProxy';\nimport {removeConsumer as removeContextConsumer} from './context/consumers';\nimport validateContext from './context/validateContext';\nimport {property as parseProperty, properties as parseProperties, parse} from './utils/parse';\nimport log from './log';\nimport {\n\tcreateDispatcher,\n\tcreateConditionalDispatch,\n\taddActionHandlers,\n\tremoveActionHandlers\n} from './actions';\nimport createHelpers from './utils/helpers';\nimport {shouldHoistAttribute, hoistAttribute, unhoistAttribute, default as hoist} from './hoist';\nimport applyStyles from './applyStyles';\nimport removeStyles from './removeStyles';\nimport {\n\tschedule,\n\ttypes,\n\tcountHighPriorityTasks,\n\tcountMediumPriorityTasks,\n\taddQueueEmptyForElCb\n} from './scheduler';\nimport {default as shapeRenderData, reflectProperty} from './shape-render-data';\nimport {\n\tgetAffected,\n\tresolveSelectedProperty,\n\tresolveSelectedProperties,\n\tremoveMappings,\n\tgetComponentAffected,\n\tremoveResolvedMapping,\n\tgetPartsForNestedSelectableProps,\n\tupdatePropertiesWithSelector,\n\tapplyUpdatesForSelectableProps\n} from './property-selectors';\nimport {mergeBehaviorProperties} from './utils/config/mergeBehaviorProperties';\nimport {normalizeBehaviors} from './utils/config/normalizeBehaviors';\nimport {getConfigItem, configConstants} from '@servicenow/ui-config';\nimport quickEquals from './utils/helpers/quickEquals';\nimport addResolvedSelectedPropertyMappingWithResolvedValue from './utils/addResolvedSelectedPropertyMappingWithResolvedValue';\nimport {getActiveSpan} from './utils/activeSpan';\n\nimport {\n\tconnectNowResolvedPropsCallbacks,\n\tdisconnectNowResolvedPropsCallbacks,\n\tprocessNowResolvedProps\n} from './utils/nowResolvedPropsHandler';\n\nconst {isValidTraceId, trace} = uiAnalyticsConsumer;\nconst {ENABLE_SCHEDULER_QUEUE_COUNTS, METRICS_COMPONENT_INTERACTIVE_ENABLED} = configConstants;\nconst enableSchedulerQueueCounts = getConfigItem(ENABLE_SCHEDULER_QUEUE_COUNTS);\nconst {COMPONENT_RENDER, DEFER_IDLE} = types;\nconst {ENABLE_PROPERTY_DEEP_COMPARE} = configConstants;\n\nconst enableDeepPropertyCompare = getConfigItem(ENABLE_PROPERTY_DEEP_COMPARE);\nlet optOutDeepCompare = shouldOptOutOfDeepCompareForPage('property');\nwindow.addEventListener(\n\t'popstate',\n\t() => (optOutDeepCompare = shouldOptOutOfDeepCompareForPage('property'))\n);\n\nconst shouldMarkInteractive = getConfigItem(METRICS_COMPONENT_INTERACTIVE_ENABLED);\nconst idleCallback = shouldMarkInteractive\n\t? el => markComponentInteractive(el, componentRegistryForInteractive)\n\t: () => null;\nlet componentRegistryForInteractive;\naddPendingNetworkActionForHostCb(idleCallback);\naddQueueEmptyForElCb(idleCallback);\n\nfunction clearRootNode(host, rootNode, onStateChange) {\n\tsandbox(onStateChange, {\n\t\targs: [rootNode, () => null, {}, host[HELPERS_DEFER]],\n\t\thost,\n\t\tdetails: {\n\t\t\ttype: 'onStateChange'\n\t\t},\n\t\tlocation: locations.RENDERER,\n\t\tdispatch: host[DISPATCH],\n\t\tlog\n\t});\n}\n\nfunction getResolvedState(hostVariables, componentRegistry) {\n\treturn {\n\t\t...hostVariables[STATE],\n\t\tproperties: resolveSelectedProperties(\n\t\t\tcomponentRegistry,\n\t\t\tselectablePropertyResolver,\n\t\t\t{...hostVariables[PROPS]},\n\t\t\thostVariables[PROPERTY_DEFS],\n\t\t\thostVariables[PROPERTIES_WITH_SELECTOR]\n\t\t)\n\t};\n}\n\nexport default function createElementClass(config) {\n\tconst {componentRegistry, presentational, state: initialState, name: tagName} = config;\n\tconst renderer = resolveRenderer(config);\n\tconst {\n\t\ttype: {\n\t\t\tonStateChange,\n\t\t\tonConnect: rendererOnConnect,\n\t\t\tonDisconnect: rendererOnDisconnect,\n\t\t\tdeprioritizeStyles = false // eslint-disable-line no-unused-vars\n\t\t},\n\t\ttransformState = props => props,\n\t\tcoeffects: useCoeffectsLikeObjectInView,\n\t\tview\n\t} = renderer;\n\n\tlet initialized = false;\n\tlet normalizedConfig;\n\tlet onConnect;\n\tlet onDisconnect;\n\tlet combinedPropertyDefs;\n\tlet shadowRootOptions;\n\tlet validateProperties;\n\tlet propertyKeys;\n\tlet rendererView;\n\tconst selectabledProperties = [];\n\tcomponentRegistryForInteractive = componentRegistryForInteractive || componentRegistry;\n\n\tfunction initialize() {\n\t\tif (initialized) return;\n\n\t\tinitialized = true;\n\t\tnormalizedConfig = normalizeConfig(config);\n\t\tconst lifecycleFns = createLifecycleFunctions(\n\t\t\trendererOnConnect,\n\t\t\trendererOnDisconnect,\n\t\t\tdeprioritizeStyles\n\t\t);\n\t\tonConnect = lifecycleFns.onConnect;\n\t\tonDisconnect = lifecycleFns.onDisconnect;\n\n\t\tcombinedPropertyDefs = normalizedConfig.properties;\n\t\tshadowRootOptions = normalizedConfig.shadowRootOptions;\n\n\t\tvalidateProperties = buildPropertiesValidator(combinedPropertyDefs);\n\t\tpropertyKeys = Object.keys(combinedPropertyDefs);\n\n\t\trendererView = view;\n\n\t\tfor (const k in combinedPropertyDefs) {\n\t\t\tif (combinedPropertyDefs[k].selectable) selectabledProperties.push(k);\n\t\t}\n\n\t\tconst {length: propertyKeysCount} = propertyKeys;\n\t\tfor (let i = 0; i < propertyKeysCount; i++) {\n\t\t\tconst name = propertyKeys[i];\n\t\t\taccessors[name] = {\n\t\t\t\tget() {\n\t\t\t\t\treturn this.getProperty(name);\n\t\t\t\t},\n\t\t\t\tset(value) {\n\t\t\t\t\tthis[SET_PROPERTY](name, value);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tObject.defineProperties(SeismicElement.prototype, accessors);\n\n\t\tassertValidPropertyNames(propertyKeys);\n\t}\n\n\tsetUpdateConfigResolver(tagName, (update, updateMeta) => {\n\t\tconst {comparison = {}} = updateMeta;\n\t\tconst modifiedConfig = {};\n\t\tfor (const configKey in update) {\n\t\t\tif (configKey in comparison) {\n\t\t\t\tif (comparison[configKey]) {\n\t\t\t\t\tmodifiedConfig[configKey] = update[configKey];\n\t\t\t\t}\n\t\t\t} else if (update[configKey] !== config[configKey]) {\n\t\t\t\tmodifiedConfig[configKey] = update[configKey];\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsupportedConfigKeys: presentational\n\t\t\t\t? ['styles', 'view']\n\t\t\t\t: ['styles', 'view', 'actionHandlers'],\n\t\t\tmodifiedConfig\n\t\t};\n\t});\n\taddUpdateCustomElementObserver(tagName, update => {\n\t\tif (update.styles) {\n\t\t\tconfig.styles = update.styles;\n\t\t\tremoveStyleFragmentFromCache(tagName);\n\t\t}\n\t\tif (update.actionHandlers) {\n\t\t\tconfig.actionHandlers = update.actionHandlers;\n\t\t\tnormalizedConfig = normalizeConfig(config);\n\t\t}\n\t\tif (update.view) {\n\t\t\tconfig.view = update.view;\n\t\t\trendererView = update.view;\n\t\t}\n\t});\n\n\tclass SeismicElement extends HTMLElement {\n\t\tconstructor() {\n\t\t\tsuper();\n\n\t\t\tinitialize();\n\n\t\t\tconst variables = {};\n\t\t\tthis[VARIABLES] = variables;\n\n\t\t\tvariables[SELECTABLE_PROPERTIES] = selectabledProperties;\n\t\t\tvariables[PROPERTIES_WITH_SELECTOR] = {};\n\t\t\tvariables[PROPERTIES_WITH_NESTED_SELECTOR] = {};\n\t\t\tvariables[PRESENTATIONAL] = presentational;\n\t\t\tvariables[PROPS] = {};\n\t\t\tvariables[CHILDREN_TO_BE_INTERACTIVE] = {};\n\t\t\tvariables[INTERSECTED] = true;\n\t\t\tvariables[CONFIG] = normalizedConfig;\n\t\t\tvariables[PROPERTY_DEFS] = combinedPropertyDefs;\n\t\t\tvariables[ANCESTOR_PATH] = [];\n\t\t\tif (!presentational) {\n\t\t\t\tvariables[TARGETED_ACTION_TYPES] = [];\n\t\t\t\tvariables[PREVIOUS_RENDER_STATE] = {};\n\t\t\t\tvariables[PREVIOUS_RENDER_PROPERTIES] = {};\n\t\t\t\tvariables[PREVIOUS_TREE_RENDER_STATE] = {};\n\t\t\t\tvariables[PREVIOUS_TREE_RENDER_PROPERTIES] = {};\n\t\t\t\tvariables[RENDERED_ONCE] = false;\n\t\t\t\tvariables[TREE_RENDERED_ONCE] = false;\n\t\t\t\tvariables[ACTION_HANDLERS] = [];\n\t\t\t\tvariables[RUNTIME_ACTION_HANDLERS] = [];\n\t\t\t}\n\n\t\t\tvariables[VERSION] = PACKAGE_JSON_VERSION; // For CSS externalization. TODO Revisit this logic\n\t\t\t// variables[EXISTING_SHADOW_ROOT_ON_CREATE] === true means the component has been server-side rendered\n\t\t\tvariables[EXISTING_SHADOW_ROOT_ON_CREATE] = this.shadowRoot !== null;\n\t\t\t// reuse the declared shadow root instead of creating a new shadow root if the component has been server-side rendered\n\t\t\tconst shadowRoot = this.shadowRoot || this.attachShadow(shadowRootOptions);\n\t\t\tvariables[ROOT_NODE] = shadowRoot;\n\t\t\tvariables[ATTACHED_ROOT_NODE] = shadowRoot;\n\t\t\tthis.upgradeProperties();\n\n\t\t\t// ui-metrics checks this to know if marks for this component are valid.\n\t\t\t// Components that are not bootstrapped don't have enough data to emit\n\t\t\t// a valid mark\n\t\t\tthis.__DO_NOT_USE_BOOTSTRAPPED__ = false;\n\n\t\t\tvariables[STYLE_PROXY] = new Proxy(super.style, {\n\t\t\t\tset: (style, key, value) => {\n\t\t\t\t\tstyle[key] = value; // eslint-disable-line no-param-reassign\n\t\t\t\t\tif (this.__DO_NOT_USE_BOOTSTRAPPED__ && isHoisted(this))\n\t\t\t\t\t\tgetHoistTarget(variables).style[key] = value;\n\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tget(style, key) {\n\t\t\t\t\tif (typeof style[key] === 'function') return style[key].bind(style);\n\n\t\t\t\t\treturn style[key];\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tsetStat('constructed', this.tagName.toLowerCase());\n\t\t}\n\n\t\tget [CONFIG]() {\n\t\t\treturn normalizedConfig;\n\t\t}\n\n\t\tget [PROPERTY_DEFS]() {\n\t\t\treturn combinedPropertyDefs;\n\t\t}\n\n\t\tget version() {\n\t\t\treturn PACKAGE_JSON_VERSION;\n\t\t}\n\n\t\tstatic get observedAttributes() {\n\t\t\tconst pKeys = Object.keys(\n\t\t\t\tmergeBehaviorProperties(\n\t\t\t\t\tnormalizeBehaviors(config.behaviors || [], tagName),\n\t\t\t\t\tconfig.properties || {},\n\t\t\t\t\ttagName\n\t\t\t\t)\n\t\t\t);\n\t\t\treturn pKeys.map(toAttributeName);\n\t\t}\n\n\t\tupgradeProperties() {\n\t\t\tconst rawResolvedProps = sandbox(parse, {\n\t\t\t\targs: [\n\t\t\t\t\tthis.getAttribute(RESOLVED_PROPS_ATTRIBUTE),\n\t\t\t\t\t'object',\n\t\t\t\t\tRESOLVED_PROPS_ATTRIBUTE,\n\t\t\t\t\tthis.tagName\n\t\t\t\t],\n\t\t\t\thost: this,\n\t\t\t\tdispatch: () => {},\n\t\t\t\tlocation: locations.PROPERTY,\n\t\t\t\tdetails: {parse: true, name: RESOLVED_PROPS_ATTRIBUTE},\n\t\t\t\tlog\n\t\t\t});\n\n\t\t\tconst shouldProcess = rawResolvedProps && typeof rawResolvedProps === 'object';\n\t\t\tthis[VARIABLES][HAS_NOW_RESOLVED_PROPS] = shouldProcess;\n\t\t\tconst processedResolvedProps = shouldProcess\n\t\t\t\t? sandbox(processNowResolvedProps, {\n\t\t\t\t\t\targs: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\thost: this,\n\t\t\t\t\t\t\t\trawResolvedProps,\n\t\t\t\t\t\t\t\tpropertyKeys,\n\t\t\t\t\t\t\t\tlog\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\thost: this,\n\t\t\t\t\t\tdispatch: () => {},\n\t\t\t\t\t\tlocation: locations.PROPERTY,\n\t\t\t\t\t\tdetails: {parse: true, name: RESOLVED_PROPS_ATTRIBUTE},\n\t\t\t\t\t\tlog\n\t\t\t\t  })\n\t\t\t\t: {};\n\n\t\t\tconst {length: propertyKeysCount} = propertyKeys;\n\t\t\tfor (let i = 0; i < propertyKeysCount; i++) {\n\t\t\t\tconst name = propertyKeys[i];\n\t\t\t\tif (this.hasOwnProperty(name)) {\n\t\t\t\t\tconst value = this[name];\n\t\t\t\t\tdelete this[name];\n\t\t\t\t\tthis[name] = value;\n\t\t\t\t} else if (processedResolvedProps && name in processedResolvedProps) {\n\t\t\t\t\tthis[name] = processedResolvedProps[name];\n\t\t\t\t} else if (rawResolvedProps && name in rawResolvedProps) {\n\t\t\t\t\tthis[name] = rawResolvedProps[name];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tgetComponentId() {\n\t\t\tconst variables = getHostVariables(this);\n\t\t\treturn variables[COMPONENT_ID];\n\t\t}\n\n\t\tsetComponentId() {\n\t\t\tconst variables = getHostVariables(this);\n\t\t\tvariables[COMPONENT_ID] = this.getAttribute(COMPONENT_ID_ATTRIBUTE) || guid();\n\t\t\tthis.setAttribute(NOW_ID_ATTR, variables[COMPONENT_ID], false);\n\t\t\tthis.setAttribute(COMPONENT_ID_ATTRIBUTE, variables[COMPONENT_ID], false);\n\t\t}\n\n\t\tgetProperty(name) {\n\t\t\tconst variables = getHostVariables(this);\n\t\t\treturn variables[PROPS][name];\n\t\t}\n\n\t\t[SET_PROPERTY](name, value, updateProperties = false, options = {}) {\n\t\t\tconst {interactionId = createInteractionId(), span: activeSpan} = options;\n\t\t\tconst variables = getHostVariables(this);\n\n\t\t\tconst parentSpan = activeSpan || getActiveSpan(this);\n\t\t\t// get noisy during initialize, ex setting nowId\n\t\t\tconst setPropSpan =\n\t\t\t\tthis.__DO_NOT_USE_BOOTSTRAPPED__ === true && parentSpan\n\t\t\t\t\t? trace(SPAN_FOR_SET_PROPERTY, {\n\t\t\t\t\t\t\t...getSpanOptions(this),\n\t\t\t\t\t\t\ttraceId: parentSpan.traceId,\n\t\t\t\t\t\t\tkind: SPAN_KIND_CLIENT,\n\t\t\t\t\t\t\tparentSpan\n\t\t\t\t\t  })\n\t\t\t\t\t: null;\n\n\t\t\tif (setPropSpan && (value === null || typeof value !== 'object')) {\n\t\t\t\tsetPropSpan.setAttribute(SPAN_ATTR_UPDATE_PROPERTIES_PROPNAME, name);\n\t\t\t\tif (typeof value !== 'object')\n\t\t\t\t\tsetPropSpan.setAttribute(SPAN_ATTR_UPDATE_PROPERTIES_PROPVALUE, value);\n\t\t\t}\n\n\t\t\tif (variables[PROPS][NOW_MODE_PROP] === COMPONENT_MODE_DETACH) {\n\t\t\t\tif (name !== NOW_MODE_PROP) {\n\t\t\t\t\tif (!this[DETACHED_COMPONENT_PROPERTY_MAP])\n\t\t\t\t\t\tthis[DETACHED_COMPONENT_PROPERTY_MAP] = new Map();\n\n\t\t\t\t\tthis[DETACHED_COMPONENT_PROPERTY_MAP].set(name, {\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tupdateProperties,\n\t\t\t\t\t\tinteractionId\n\t\t\t\t\t});\n\t\t\t\t\tif (setPropSpan) {\n\t\t\t\t\t\tsetPropSpan.setAttribute(SPAN_ATTR_SET_PROPERTY_SKIPED, SPAN_ATTR_COMPONENT_DETACHED);\n\t\t\t\t\t\tsetPropSpan.end();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst valueOrDefault = parseProperty(\n\t\t\t\tname,\n\t\t\t\tvalue === undefined ? combinedPropertyDefs[name].default : value,\n\t\t\t\tcombinedPropertyDefs[name],\n\t\t\t\tthis,\n\t\t\t\tvariables[DISPATCH] || createDispatcher(this)\n\t\t\t);\n\n\t\t\tif (quickEquals(valueOrDefault, variables[PROPS][name])) {\n\t\t\t\tif (setPropSpan) {\n\t\t\t\t\tsetPropSpan.setAttribute(SPAN_ATTR_SET_PROPERTY_SKIPED, SPAN_ATTR_COMPONENT_QUICK_EQUAL);\n\t\t\t\t\tsetPropSpan.end();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// we might want to consider doing some of this in createUpdateProperties like we\n\t\t\t// do for createUpdateState, so that we never even get this far if the property\n\t\t\t// update is declarative\n\t\t\tif (\n\t\t\t\t(enableDeepPropertyCompare && !optOutDeepCompare) || combinedPropertyDefs[name].deepCompare\n\t\t\t\t\t? isEqual(variables[PROPS][name], valueOrDefault)\n\t\t\t\t\t: variables[PROPS][name] === valueOrDefault\n\t\t\t) {\n\t\t\t\tif (setPropSpan) {\n\t\t\t\t\tsetPropSpan.setAttribute(SPAN_ATTR_SET_PROPERTY_SKIPED, SPAN_ATTR_COMPONENT_EQUAL);\n\t\t\t\t\tsetPropSpan.end();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this.__DO_NOT_USE_BOOTSTRAPPED__ !== true) {\n\t\t\t\tvariables[PROPS][name] = valueOrDefault;\n\t\t\t\tsetPropSpan && setPropSpan.end();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!shouldSetProperty(tagName, name, combinedPropertyDefs, updateProperties)) {\n\t\t\t\tif (setPropSpan) {\n\t\t\t\t\tsetPropSpan.setAttribute(\n\t\t\t\t\t\tSPAN_ATTR_SET_PROPERTY_SKIPED,\n\t\t\t\t\t\tSPAN_ATTR_COMPONENT_READONLY_COMPUTED\n\t\t\t\t\t);\n\t\t\t\t\tsetPropSpan.end();\n\t\t\t\t}\n\t\t\t\treturn log(`Cannot set read only or computed property ${name}.`, {\n\t\t\t\t\thost: this,\n\t\t\t\t\torigin: String(SET_PROPERTY)\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (variables[PROPS][NOW_ENABLE_PROPERTY_SETTING_PREVENTION_PROP]) {\n\t\t\t\tconst event = variables[DISPATCH](\n\t\t\t\t\tCOMPONENT_PROPERTY_UPDATE_REQUESTED,\n\t\t\t\t\t{name, value: variables[PROPS][name], nextValue: valueOrDefault, host: this},\n\t\t\t\t\tsetInteractionId(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t[SCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED]: true,\n\t\t\t\t\t\t\t[COMPONENT_INTERNAL_ACTION]: true,\n\t\t\t\t\t\t\tinternal: true,\n\t\t\t\t\t\t\tinternalPropertyUpdateRequested: updateProperties,\n\t\t\t\t\t\t\t...(setPropSpan && isValidTraceId(setPropSpan.traceId) && {span: setPropSpan})\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinteractionId\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\t\tif (event.defaultPrevented) {\n\t\t\t\t\tsetPropSpan && setPropSpan.end();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst previousValue = variables[PROPS][name];\n\t\t\tvariables[PROPS][name] = valueOrDefault;\n\n\t\t\t// If nowPlaceholderHeight or Width changes, we want to replace the previous intersect styles so long as:\n\t\t\t// We are currently observing for an intersection (because otherwise we don't want to apply these styles)\n\t\t\t// We have not intersected yet (these styles should only be applied when the component has not intersected yet)\n\t\t\tif (\n\t\t\t\tvariables[USING_INTERSECTION_OBSERVER] &&\n\t\t\t\t[NOW_PLACEHOLDER_HEIGHT_PROP, NOW_PLACEHOLDER_WIDTH_PROP].includes(name) &&\n\t\t\t\t!variables[INTERSECTED] &&\n\t\t\t\tpreviousValue !== valueOrDefault\n\t\t\t) {\n\t\t\t\tconst removeIntersectedStyles = applyIntersectStyles(this, config, {\n\t\t\t\t\theight: variables[PROPS][NOW_PLACEHOLDER_HEIGHT_PROP],\n\t\t\t\t\twidth: variables[PROPS][NOW_PLACEHOLDER_WIDTH_PROP]\n\t\t\t\t});\n\n\t\t\t\tif (variables[REMOVE_INTERSECTED_STYLES]) variables[REMOVE_INTERSECTED_STYLES]();\n\n\t\t\t\tvariables[REMOVE_INTERSECTED_STYLES] = removeIntersectedStyles;\n\t\t\t}\n\n\t\t\tconst propertyDetails = {\n\t\t\t\tpreviousValue,\n\t\t\t\tvalue: valueOrDefault\n\t\t\t};\n\n\t\t\tif (name === NOW_NESTED_SELECTABLE_PROPS && Array.isArray(valueOrDefault)) {\n\t\t\t\tpreviousValue.forEach(nestedSelectablePropName => {\n\t\t\t\t\tif (!valueOrDefault.includes(nestedSelectablePropName)) {\n\t\t\t\t\t\tconst [propName, path] = getPartsForNestedSelectableProps(nestedSelectablePropName);\n\t\t\t\t\t\tdelete variables[PROPERTIES_WITH_SELECTOR][nestedSelectablePropName];\n\t\t\t\t\t\tvariables[PROPERTIES_WITH_NESTED_SELECTOR][propName]?.delete(path);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tvalueOrDefault.forEach(nestedSelectablePropName => {\n\t\t\t\t\tconst [propName, path] = getPartsForNestedSelectableProps(nestedSelectablePropName);\n\n\t\t\t\t\tconst propValue = get(variables[PROPS][propName], path);\n\n\t\t\t\t\tvariables[PROPERTIES_WITH_NESTED_SELECTOR][propName] = (\n\t\t\t\t\t\tvariables[PROPERTIES_WITH_NESTED_SELECTOR][propName] || new Set()\n\t\t\t\t\t).add(path);\n\t\t\t\t\tapplyUpdatesForSelectableProps({\n\t\t\t\t\t\tname: nestedSelectablePropName,\n\t\t\t\t\t\tvalue: propValue,\n\t\t\t\t\t\tpropertiesWithSelector: variables[PROPERTIES_WITH_SELECTOR],\n\t\t\t\t\t\tcomponentId: variables[COMPONENT_ID],\n\t\t\t\t\t\tpropertyDetails,\n\t\t\t\t\t\tcomponentRegistry,\n\t\t\t\t\t\tnormalizedConfigForProp: normalizedConfig.properties[name]\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else if (variables[PROPERTIES_WITH_NESTED_SELECTOR][name]?.size > 0) {\n\t\t\t\tvariables[PROPERTIES_WITH_NESTED_SELECTOR][name].forEach(path => {\n\t\t\t\t\tconst nestedSelectablePropName = `${name}.${path}`;\n\t\t\t\t\tconst propValue = get(valueOrDefault, path);\n\t\t\t\t\tapplyUpdatesForSelectableProps({\n\t\t\t\t\t\tname: nestedSelectablePropName,\n\t\t\t\t\t\tvalue: propValue,\n\t\t\t\t\t\tpropertiesWithSelector: variables[PROPERTIES_WITH_SELECTOR],\n\t\t\t\t\t\tcomponentId: variables[COMPONENT_ID],\n\t\t\t\t\t\tpropertyDetails,\n\t\t\t\t\t\tcomponentRegistry,\n\t\t\t\t\t\tnormalizedConfigForProp: normalizedConfig.properties[name]\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tapplyUpdatesForSelectableProps({\n\t\t\t\t\tname,\n\t\t\t\t\tvalue: valueOrDefault,\n\t\t\t\t\tpropertiesWithSelector: variables[PROPERTIES_WITH_SELECTOR],\n\t\t\t\t\tcomponentId: variables[COMPONENT_ID],\n\t\t\t\t\tpropertyDetails,\n\t\t\t\t\tcomponentRegistry,\n\t\t\t\t\tnormalizedConfigForProp: normalizedConfig.properties[name]\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis[UPDATE_AFFECTED_COMPONENTS]({\n\t\t\t\tname,\n\t\t\t\tpropertyDetails,\n\t\t\t\tinteractionId,\n\t\t\t\tincludeSource: true,\n\t\t\t\t...(setPropSpan && isValidTraceId(setPropSpan.traceId) && {activeSpan: setPropSpan})\n\t\t\t});\n\t\t\tsetPropSpan && setPropSpan.end();\n\t\t}\n\n\t\t[UPDATE_AFFECTED_COMPONENTS]({\n\t\t\tname,\n\t\t\tpropertyDetails,\n\t\t\tinteractionId,\n\t\t\tincludeSource,\n\t\t\tactiveSpan\n\t\t}) {\n\t\t\tconst variables = getHostVariables(this);\n\n\t\t\tconst allAffectedComponents = getAffected(\n\t\t\t\tname,\n\t\t\t\tvariables[COMPONENT_ID],\n\t\t\t\tcomponentRegistry,\n\t\t\t\tincludeSource\n\t\t\t);\n\t\t\ttriggerComponentUpdates(\n\t\t\t\tcomponentRegistry,\n\t\t\t\tallAffectedComponents,\n\t\t\t\tpropertyDetails,\n\t\t\t\tinteractionId,\n\t\t\t\t'PROPERTY_SET',\n\t\t\t\t{activeSpan}\n\t\t\t);\n\t\t}\n\n\t\t[HOIST_CHANGED](value) {\n\t\t\tconst variables = getHostVariables(this);\n\n\t\t\tif ((value && variables[UNHOIST]) || (!value && !variables[UNHOIST])) return;\n\n\t\t\tif (!presentational) {\n\t\t\t\tvariables[ACTION_HANDLERS] = removeActionHandlers(variables[ACTION_HANDLERS]);\n\t\t\t\tvariables[TARGETED_ACTION_TYPES] = [];\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\t// render null to host's shadowRoot to ensure cleanup\n\t\t\t\tclearRootNode(this, variables[ATTACHED_ROOT_NODE], onStateChange);\n\t\t\t\tvariables[UNHOIST] = hoist(this, deprioritizeStyles, onStateChange);\n\t\t\t} else {\n\t\t\t\ttypeof variables[UNHOIST] === 'function' && variables[UNHOIST]();\n\t\t\t\tdelete variables[UNHOIST];\n\t\t\t}\n\n\t\t\tif (!presentational)\n\t\t\t\tvariables[ACTION_HANDLERS] = addActionHandlers(this, normalizedConfig.interceptors);\n\t\t}\n\n\t\t[HOIST_PARENT_CHANGED](propName) {\n\t\t\tconst variables = getHostVariables(this);\n\n\t\t\tconst resolvedState = getResolvedState(variables, componentRegistry, this);\n\t\t\t// reflect hoist targeting properties immediately, these attributes are used when hoisting\n\t\t\t[HOIST_ATTR, NOW_HOIST_PROP, propName].forEach(p => {\n\t\t\t\treflectProperty(p, combinedPropertyDefs[p], resolvedState, this, {});\n\t\t\t});\n\t\t\tif (!presentational) {\n\t\t\t\tvariables[ACTION_HANDLERS] = removeActionHandlers(variables[ACTION_HANDLERS]);\n\t\t\t\tvariables[TARGETED_ACTION_TYPES] = [];\n\t\t\t}\n\n\t\t\ttypeof variables[UNHOIST] === 'function' && variables[UNHOIST]();\n\t\t\tvariables[UNHOIST] = hoist(this, deprioritizeStyles, onStateChange);\n\n\t\t\tif (!presentational)\n\t\t\t\tvariables[ACTION_HANDLERS] = addActionHandlers(this, normalizedConfig.interceptors);\n\t\t}\n\n\t\t[GET_RESOLVED_PROPERTY](propName) {\n\t\t\tconst variables = getHostVariables(this);\n\n\t\t\treturn resolveSelectedProperty(\n\t\t\t\tcomponentRegistry,\n\t\t\t\tselectablePropertyResolver,\n\t\t\t\tvariables[PROPS][propName],\n\t\t\t\tnormalizedConfig.properties[propName]\n\t\t\t);\n\t\t}\n\n\t\tsetAttribute(name, value, isReflecting = false) {\n\t\t\tif (!shouldSetAttribute(tagName, isReflecting, name, combinedPropertyDefs)) {\n\t\t\t\treturn log(`Cannot set read only or computed property ${name}`, {\n\t\t\t\t\thost: this,\n\t\t\t\t\torigin: 'setAttribute'\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (shouldHoistAttribute(this, name)) hoistAttribute(this, name, value);\n\n\t\t\treturn HTMLElement.prototype.setAttribute.call(this, name, value);\n\t\t}\n\n\t\tremoveAttribute(name) {\n\t\t\tif (shouldHoistAttribute(this, name)) unhoistAttribute(this, name);\n\n\t\t\tHTMLElement.prototype.removeAttribute.call(this, name);\n\t\t}\n\n\t\tgenerateDeferGetterAndSetter() {\n\t\t\tconst variables = getHostVariables(this);\n\n\t\t\tvariables[DEFERRED] = true;\n\t\t\tObject.defineProperty(this, DEFER_ATTRIBUTE, {\n\t\t\t\tget: () => variables[DEFERRED],\n\t\t\t\tset: value => {\n\t\t\t\t\tif (variables[DEFERRED] === value) return;\n\n\t\t\t\t\tvariables[DEFERRED] = value;\n\t\t\t\t\tif (!variables[CONNECTED]) {\n\t\t\t\t\t\tsetStat('undefer', this.tagName.toLowerCase());\n\t\t\t\t\t\tthis.connectedCallback();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlog(\n\t\t\t\t\t\t\t`${this.tagName.toLowerCase()}[component-id=\"${\n\t\t\t\t\t\t\t\tvariables[COMPONENT_ID]\n\t\t\t\t\t\t\t}\"] cannot be deferred. It is already connected.`,\n\t\t\t\t\t\t\t{host: this, origin: 'generateDeferGetterAndSetter'}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tconfigurable: true\n\t\t\t});\n\t\t}\n\n\t\tshouldLegacyDefer() {\n\t\t\treturn this.hasAttribute(DEFER_ATTRIBUTE) && !this.__DO_NOT_USE_BOOTSTRAPPED__;\n\t\t}\n\n\t\tsetInitialProperties() {\n\t\t\tconst variables = getHostVariables(this);\n\n\t\t\tconst defaults = {};\n\t\t\tconst {length: propertyKeysCount} = propertyKeys;\n\t\t\tfor (let i = 0; i < propertyKeysCount; i++) {\n\t\t\t\tconst name = propertyKeys[i];\n\t\t\t\tdefaults[name] = getInitialPropertyValue(this, name, combinedPropertyDefs);\n\t\t\t}\n\n\t\t\tconst propertyDefs = combinedPropertyDefs;\n\t\t\tvariables[PROPS] = parseProperties(\n\t\t\t\tresolveProperties(\n\t\t\t\t\tinitialState,\n\t\t\t\t\tfilterPropertyDefinitions(propertyDefs, def => !def.computed),\n\t\t\t\t\tdefaults\n\t\t\t\t),\n\t\t\t\tpropertyDefs,\n\t\t\t\t{host: this, dispatch: variables[DISPATCH]}\n\t\t\t);\n\n\t\t\tconst properties = variables[PROPS];\n\t\t\tfor (const k in properties) {\n\t\t\t\tif (k === NOW_NESTED_SELECTABLE_PROPS && Array.isArray(properties[k])) {\n\t\t\t\t\tproperties[k].forEach(name => {\n\t\t\t\t\t\tconst [propName, path] = getPartsForNestedSelectableProps(name);\n\t\t\t\t\t\tconst propValue = get(properties[propName], path);\n\n\t\t\t\t\t\tvariables[PROPERTIES_WITH_NESTED_SELECTOR][propName] = (\n\t\t\t\t\t\t\tvariables[PROPERTIES_WITH_NESTED_SELECTOR][propName] || new Set()\n\t\t\t\t\t\t).add(path);\n\t\t\t\t\t\tupdatePropertiesWithSelector(name, propValue, variables[PROPERTIES_WITH_SELECTOR]);\n\t\t\t\t\t\tupdateSelectedPropertyMappings(\n\t\t\t\t\t\t\tpropValue,\n\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\tvariables[COMPONENT_ID],\n\t\t\t\t\t\t\tthis.__DO_NOT_USE_BOOTSTRAPPED__\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tupdatePropertiesWithSelector(k, properties[k], variables[PROPERTIES_WITH_SELECTOR]);\n\t\t\t\t\tupdateSelectedPropertyMappings(\n\t\t\t\t\t\tproperties[k],\n\t\t\t\t\t\tk,\n\t\t\t\t\t\tvariables[COMPONENT_ID],\n\t\t\t\t\t\tthis.__DO_NOT_USE_BOOTSTRAPPED__\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (combinedPropertyDefs[k] && combinedPropertyDefs[k].selectable) {\n\t\t\t\t\taddResolvedSelectedPropertyMappingWithResolvedValue(\n\t\t\t\t\t\tproperties[k],\n\t\t\t\t\t\tk,\n\t\t\t\t\t\tvariables[COMPONENT_ID]\n\t\t\t\t\t);\n\t\t\t\t\ttriggerComponentUpdates(\n\t\t\t\t\t\tcomponentRegistry,\n\t\t\t\t\t\tgetComponentAffected(k, variables[COMPONENT_ID]),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: variables[PROPS][k]\n\t\t\t\t\t\t},\n\t\t\t\t\t\tundefined,\n\t\t\t\t\t\t'INITIAL_PROPERTY_SET',\n\t\t\t\t\t\t{activeSpan: getActiveSpan(this)}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tgetResolvedProperties(interactionId) {\n\t\t\tconst variables = getHostVariables(this);\n\t\t\tconst state = getResolvedState(variables, componentRegistry, this);\n\t\t\tconst resolvedProperties = resolveComputedProperties(state, this, variables, interactionId);\n\t\t\treturn unescapeReservedCharacters(resolvedProperties).properties;\n\t\t}\n\n\t\tgetProperties() {\n\t\t\tconst variables = getHostVariables(this);\n\n\t\t\treturn {...variables[PROPS]};\n\t\t}\n\n\t\tattributeChangedCallback(name, oldValue, newValue) {\n\t\t\tconst variables = getHostVariables(this);\n\t\t\tif (name === DEFER_ATTRIBUTE) return (this[DEFER_ATTRIBUTE] = newValue);\n\n\t\t\tif (!variables[CONNECTED]) return;\n\n\t\t\tconst propName = toPropertyName(name);\n\t\t\tconst propValue = this[propName];\n\t\t\tif (isReflecting(name)) return clearReflection(name);\n\n\t\t\t// vdom renderers set prop, then attribute values on nodes; this check prevents a double render\n\t\t\t// while allowing for direct attribute setting and removal, e.g., el.setAttribute, el.removeAttribute\n\t\t\t// 1. if newValue is null and propValue is falsey then the property was set already and removeAttribute was called\n\t\t\t// 2. if propValue is truthy and newValue is a string and values are equal then the property was set\n\t\t\t//    already and setAttribute was called\n\t\t\t// 3. if propValue is truthy and newValue is empty string setAttribute was called after setting property to true\n\t\t\t// 4. if propValue is falsey and newValue is null removeAttribute was called after setting property to false\n\t\t\tif (newValue === null && !propValue) return;\n\n\t\t\tif (propValue && typeof newValue === 'string' && propValue === newValue) return;\n\n\t\t\tif (typeof propValue === 'boolean') {\n\t\t\t\tif (\n\t\t\t\t\tpropValue &&\n\t\t\t\t\tnewValue === '' &&\n\t\t\t\t\t!combinedPropertyDefs[propName].unstablePreserveEmptyStr\n\t\t\t\t)\n\t\t\t\t\treturn;\n\n\t\t\t\tif (!propValue && newValue === null) return;\n\t\t\t}\n\n\t\t\t// if newValue is null then removeAttribute was called, We should set the property to undefined, which will\n\t\t\t// be set to default in the setter if necessary\n\t\t\tif (variables[CONNECTED] && oldValue !== newValue)\n\t\t\t\tthis[propName] = newValue === null ? undefined : newValue;\n\t\t}\n\n\t\tconnectedCallback() {\n\t\t\tconst variables = getHostVariables(this);\n\t\t\t// if a node is quickly connected and disconnected then by the time\n\t\t\t// connectedCallback is called it can actually be disconnected\n\t\t\tif (!this.isConnected) return;\n\t\t\tif (this.shouldLegacyDefer()) {\n\t\t\t\tvariables[CONNECTED_DEFERRED_TIMESTAMP] = performance.now();\n\t\t\t\tsetStat('defer', this.tagName.toLowerCase());\n\t\t\t\treturn this.generateDeferGetterAndSetter();\n\t\t\t}\n\n\t\t\tvariables[REMOVE_UPDATE_CUSTOM_ELEMENT_OBSERVER] = addUpdateCustomElementObserver(\n\t\t\t\ttagName,\n\t\t\t\tupdate => {\n\t\t\t\t\tvariables[CONFIG] = normalizedConfig;\n\t\t\t\t\tif (update.styles) {\n\t\t\t\t\t\tremoveStyles(this);\n\t\t\t\t\t\tapplyStyles(this, config);\n\t\t\t\t\t}\n\t\t\t\t\tif (update.actionHandlers && !presentational) {\n\t\t\t\t\t\tvariables[ACTION_HANDLERS] = removeActionHandlers(variables[ACTION_HANDLERS]);\n\t\t\t\t\t\tvariables[ACTION_HANDLERS] = addActionHandlers(this, normalizedConfig.interceptors);\n\t\t\t\t\t}\n\t\t\t\t\tif (update.view) {\n\t\t\t\t\t\tthis[RENDER]();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\n\t\t\t// We haven't called `setInitialProperties()` yet until later in the\n\t\t\t// connect, so `this[NOW_PRIORITY_PROP]` may not have the default value\n\t\t\t// from the property config.\n\t\t\tconst priorityLevel =\n\t\t\t\tthis[NOW_PRIORITY_PROP] === undefined\n\t\t\t\t\t? combinedPropertyDefs[NOW_PRIORITY_PROP]\n\t\t\t\t\t\t? combinedPropertyDefs[NOW_PRIORITY_PROP].default\n\t\t\t\t\t\t: undefined\n\t\t\t\t\t: this[NOW_PRIORITY_PROP];\n\t\t\tif (priorityLevel === PRIORITY_LEVEL_LOW && !variables[LOW_PRIORITY_PENDING]) {\n\t\t\t\tthis.setAttribute(NOW_PRIORITY_ATTR, priorityLevel);\n\t\t\t\tvariables[LOW_PRIORITY_PENDING] = true;\n\t\t\t\tschedule({\n\t\t\t\t\tfn: () => {\n\t\t\t\t\t\tif (!variables[CONNECTED]) this.connectedCallback();\n\t\t\t\t\t\tthis.removeAttribute(NOW_PRIORITY_ATTR);\n\t\t\t\t\t\tdelete variables[LOW_PRIORITY_PENDING];\n\t\t\t\t\t},\n\t\t\t\t\ttype: DEFER_IDLE,\n\t\t\t\t\tmeta: {el: this, interactionId: createInteractionId()}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvariables[CONNECTED] = true;\n\t\t\tvariables[CONNECTED_TIMESTAMP] = performance.now();\n\t\t\tthis.setComponentId();\n\t\t\tthis.dispatch = createDispatcher(this);\n\t\t\tvariables[HELPERS_SCHEDULED] = createHelpers(\n\t\t\t\tthis,\n\t\t\t\tcombinedPropertyDefs,\n\t\t\t\tHELPERS_SCHEDULED_CONST,\n\t\t\t\t{presentational}\n\t\t\t);\n\t\t\tvariables[HELPERS_IMMEDIATE] = createHelpers(\n\t\t\t\tthis,\n\t\t\t\tcombinedPropertyDefs,\n\t\t\t\tHELPERS_IMMEDIATE_CONST,\n\t\t\t\t{presentational}\n\t\t\t);\n\t\t\tvariables[HELPERS_DEFER] = createHelpers(this, combinedPropertyDefs, HELPERS_DEFER_CONST, {\n\t\t\t\tpresentational\n\t\t\t});\n\t\t\tthis.helpers = variables[HELPERS_SCHEDULED]; // @servicenow/ui-internal relies on this\n\t\t\tvariables[DISPATCH] = this.dispatch;\n\t\t\tvariables[CONDITIONAL_DISPATCH] = createConditionalDispatch(this);\n\t\t\tvariables[UNHOIST] = hoist(this, deprioritizeStyles, onStateChange);\n\t\t\tconst rootNode = getRootNode(this);\n\t\t\tvariables[ANCESTOR_ROOT_NODE] = rootNode && rootNode.nowId ? rootNode : null;\n\t\t\tif (variables[ANCESTOR_ROOT_NODE]) {\n\t\t\t\tvariables[ANCESTOR_ROOT_NODE][VARIABLES][CHILDREN_TO_BE_INTERACTIVE][\n\t\t\t\t\tvariables[COMPONENT_ID]\n\t\t\t\t] = true;\n\t\t\t\tvariables[ANCESTOR_PATH] = [\n\t\t\t\t\tvariables[ANCESTOR_ROOT_NODE],\n\t\t\t\t\t...(variables[ANCESTOR_ROOT_NODE]?.[VARIABLES]?.[ANCESTOR_PATH] || [])\n\t\t\t\t];\n\t\t\t} else {\n\t\t\t\tvariables[ANCESTOR_PATH] = [];\n\t\t\t}\n\t\t\tthis.__DO_NOT_USE_OR_YOU_WILL_BE_FIRED_BY_YOUR_PARENT__ =\n\t\t\t\t(variables[ANCESTOR_ROOT_NODE] && variables[ANCESTOR_ROOT_NODE].nowId) || null;\n\t\t\tvariables[CHILDREN_TO_BE_RENDERED] = {};\n\t\t\tvariables[NEEDS_TO_KNOW_ABOUT_TREE_RENDERS] =\n\t\t\t\tnormalizedConfig.shouldDispatch[COMPONENT_DOM_TREE_READY] ||\n\t\t\t\tnormalizedConfig.shouldDispatch[COMPONENT_TREE_RENDERED] ||\n\t\t\t\t(variables[ANCESTOR_ROOT_NODE] &&\n\t\t\t\t\tvariables[ANCESTOR_ROOT_NODE][VARIABLES][NEEDS_TO_KNOW_ABOUT_TREE_RENDERS]);\n\n\t\t\tif (!presentational)\n\t\t\t\tvariables[ACTION_HANDLERS] = addActionHandlers(this, normalizedConfig.interceptors);\n\n\t\t\tif (componentRegistry[this.getComponentId()] !== undefined)\n\t\t\t\tlog(\n\t\t\t\t\t`The componentId- ${this.getComponentId()} already exists. Component identifiers must be unique.`\n\t\t\t\t);\n\n\t\t\tcomponentRegistry[this.getComponentId()] = this;\n\t\t\tconst activeSpan = getActiveSpan(this);\n\n\t\t\t// This must be called here syncronously instead of in the callback of onConnect\n\t\t\t// just below. If any code gets added that could prevent this[RENDER] being called\n\t\t\t// between here and inside the onConnect callback just below, it will break the\n\t\t\t// TREE_RENDERED and TREE_READY lifecycles\n\t\t\tthis[NOTIFY_PARENT_THAT_CHILD_IS_RENDERING]();\n\n\t\t\tif (variables[HAS_NOW_RESOLVED_PROPS]) {\n\t\t\t\tsandbox(connectNowResolvedPropsCallbacks, {\n\t\t\t\t\targs: [\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\tpropertyUpdates => {\n\t\t\t\t\t\t\tconst span = trace(SPAN_FOR_NOW_RESOLVE_PROPS_SET, {\n\t\t\t\t\t\t\t\t...getSpanOptions(this),\n\t\t\t\t\t\t\t\tkind: SPAN_KIND_CLIENT\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tconst options = {\n\t\t\t\t\t\t\t\tinteractionId: createInteractionId(),\n\t\t\t\t\t\t\t\tspan\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tthis.helpers.updateProperties(propertyUpdates, options);\n\t\t\t\t\t\t\tspan.end();\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\thost: this,\n\t\t\t\t\tdetails: {\n\t\t\t\t\t\ttype: 'connectNowResolvedPropsCallbacks'\n\t\t\t\t\t},\n\t\t\t\t\tlocation: locations.RENDERER,\n\t\t\t\t\tdispatch: variables[DISPATCH],\n\t\t\t\t\tlog\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tsandbox(onConnect, {\n\t\t\t\targs: [\n\t\t\t\t\tvariables[ROOT_NODE],\n\t\t\t\t\tthis.dispatch,\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.setInitialProperties();\n\t\t\t\t\t\tif (!presentational && !variables[STATE]) {\n\t\t\t\t\t\t\t// Set variables[STATE] to just initialState and not include setInitialState\n\t\t\t\t\t\t\t// for backwards compatibility: so that initialState is still available\n\t\t\t\t\t\t\t// within a computed property's computed() method\n\t\t\t\t\t\t\tvariables[STATE] = {...normalizedConfig.initialState};\n\n\t\t\t\t\t\t\tconst initialState = {\n\t\t\t\t\t\t\t\t...variables[STATE],\n\t\t\t\t\t\t\t\t...normalizedConfig.setInitialState({\n\t\t\t\t\t\t\t\t\thost: this,\n\t\t\t\t\t\t\t\t\tproperties: unescapeReservedCharacters(\n\t\t\t\t\t\t\t\t\t\tcomputeProperties(\n\t\t\t\t\t\t\t\t\t\t\tcamelCaseProperties(getResolvedState(variables, componentRegistry, this)),\n\t\t\t\t\t\t\t\t\t\t\tthis\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t).properties,\n\t\t\t\t\t\t\t\t\tcontext: createContextProxy(this)\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\temitNowUiEvent(STATE_UPDATED, {\n\t\t\t\t\t\t\t\tcomponentId: variables[COMPONENT_ID],\n\t\t\t\t\t\t\t\tpreviousState: undefined,\n\t\t\t\t\t\t\t\tnextState: initialState\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tvariables[STATE] = initialState;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis[RENDER](null, metrics.CONNECTION, {traceId: resolveParentTraceId(this)});\n\n\t\t\t\t\t\t// this is to handle the case in which a renderer has not already set the properties on the host because it is async.\n\t\t\t\t\t\t// i do not want to unconditionally move hoisting initialization here without a design and supporting tests.\n\t\t\t\t\t\t// this change is backwards compatible with existing hoist use cases and renderers.\n\t\t\t\t\t\tif (typeof variables[UNHOIST] !== 'function' && isHoisted(this)) {\n\t\t\t\t\t\t\tif (presentational) {\n\t\t\t\t\t\t\t\tvariables[UNHOIST] = hoist(this, deprioritizeStyles, onStateChange);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tremoveActionHandlers(variables[ACTION_HANDLERS]);\n\t\t\t\t\t\t\t\tvariables[TARGETED_ACTION_TYPES] = [];\n\t\t\t\t\t\t\t\tvariables[UNHOIST] = hoist(this, deprioritizeStyles, onStateChange);\n\t\t\t\t\t\t\t\tvariables[ACTION_HANDLERS] = addActionHandlers(this, normalizedConfig.interceptors);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tapplyStyles(this, config);\n\n\t\t\t\t\t\tvariables[USING_INTERSECTION_OBSERVER] =\n\t\t\t\t\t\t\tvariables[PROPS][NOW_PLACEHOLDER_HEIGHT_PROP] ||\n\t\t\t\t\t\t\tvariables[PROPS][NOW_PLACEHOLDER_WIDTH_PROP];\n\t\t\t\t\t\tif (variables[USING_INTERSECTION_OBSERVER]) {\n\t\t\t\t\t\t\tvariables[INTERSECTED] = false;\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tvariables[PROPS][NOW_PLACEHOLDER_HEIGHT_PROP] ||\n\t\t\t\t\t\t\t\tvariables[PROPS][NOW_PLACEHOLDER_WIDTH_PROP]\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tif (variables[REMOVE_INTERSECTED_STYLES]) variables[REMOVE_INTERSECTED_STYLES]();\n\t\t\t\t\t\t\t\tvariables[REMOVE_INTERSECTED_STYLES] = applyIntersectStyles(this, config, {\n\t\t\t\t\t\t\t\t\theight: variables[PROPS][NOW_PLACEHOLDER_HEIGHT_PROP],\n\t\t\t\t\t\t\t\t\twidth: variables[PROPS][NOW_PLACEHOLDER_WIDTH_PROP]\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tintersectionObserver.observe(this);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!this.__DO_NOT_USE_BOOTSTRAPPED__) {\n\t\t\t\t\t\t\tthis.__DO_NOT_USE_BOOTSTRAPPED__ = true;\n\n\t\t\t\t\t\t\tvariables[CONDITIONAL_DISPATCH](\n\t\t\t\t\t\t\t\tCOMPONENT_BOOTSTRAPPED,\n\t\t\t\t\t\t\t\t{host: this},\n\t\t\t\t\t\t\t\t{internal: true, span: activeSpan}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvariables[CONDITIONAL_DISPATCH](\n\t\t\t\t\t\t\tCOMPONENT_CONNECTED,\n\t\t\t\t\t\t\t{host: this},\n\t\t\t\t\t\t\t{internal: true, span: activeSpan}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\thost: this,\n\t\t\t\tdetails: {\n\t\t\t\t\ttype: 'onConnect'\n\t\t\t\t},\n\t\t\t\tlocation: locations.RENDERER,\n\t\t\t\tdispatch: variables[DISPATCH],\n\t\t\t\tlog\n\t\t\t});\n\t\t}\n\n\t\tdisconnectedCallback() {\n\t\t\tconst variables = getHostVariables(this);\n\n\t\t\tif (!variables[CONNECTED]) return;\n\n\t\t\tvariables[CONNECTED] = false;\n\t\t\tconst activeSpan = getActiveSpan(this);\n\t\t\t// render null to ensure that view specific clean up hooks are called\n\t\t\tclearRootNode(this, variables[ROOT_NODE], onStateChange);\n\n\t\t\tremoveStyles(this);\n\t\t\tif (variables[USING_INTERSECTION_OBSERVER] && !variables[INTERSECTED])\n\t\t\t\tintersectionObserver.unobserve(this);\n\n\t\t\tif (\n\t\t\t\t(!normalizedConfig.shouldDispatch[COMPONENT_BOOTSTRAPPED] &&\n\t\t\t\t\t!normalizedConfig.shouldDispatch[COMPONENT_CONNECTED]) ||\n\t\t\t\t(normalizedConfig.shouldDispatch[COMPONENT_BOOTSTRAPPED] &&\n\t\t\t\t\tvariables[BOOTSTRAPPED_HANDLED]) ||\n\t\t\t\t(normalizedConfig.shouldDispatch[COMPONENT_CONNECTED] && variables[CONNECTED_HANDLED])\n\t\t\t) {\n\t\t\t\tvariables[CONDITIONAL_DISPATCH](\n\t\t\t\t\tCOMPONENT_DISCONNECTED,\n\t\t\t\t\t{host: this},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternal: true,\n\t\t\t\t\t\t[SCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED]: true,\n\t\t\t\t\t\tspan: activeSpan\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tsandbox(onDisconnect, {\n\t\t\t\targs: [\n\t\t\t\t\tvariables[ROOT_NODE],\n\t\t\t\t\tthis.dispatch,\n\t\t\t\t\t() => {\n\t\t\t\t\t\ttypeof variables[UNHOIST] === 'function' && variables[UNHOIST]();\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\thost: this,\n\t\t\t\tdetails: {\n\t\t\t\t\ttype: 'onDisconnect'\n\t\t\t\t},\n\t\t\t\tlocation: locations.RENDERER,\n\t\t\t\tdispatch: variables[DISPATCH],\n\t\t\t\tlog\n\t\t\t});\n\n\t\t\tremoveResolvedMapping(variables[COMPONENT_ID]);\n\n\t\t\tif (presentational) {\n\t\t\t\tremoveMappings(variables[COMPONENT_ID]);\n\t\t\t} else {\n\t\t\t\tvariables[CONNECTED_HANDLED] = false;\n\t\t\t\tvariables[ACTION_HANDLERS] = removeActionHandlers(variables[ACTION_HANDLERS]);\n\t\t\t\tvariables[TARGETED_ACTION_TYPES] = [];\n\t\t\t\tremoveMappings(variables[COMPONENT_ID]);\n\t\t\t\tvariables[RENDERED_ONCE] = false;\n\t\t\t\tvariables[TREE_RENDERED_ONCE] = false;\n\t\t\t\tclearPendingNetworkActionsForHost(this);\n\t\t\t}\n\n\t\t\tremoveContextConsumer(this);\n\n\t\t\t// there are cases where connectedCallback has not executed, but disconnectedCallback does\n\t\t\tthis.getComponentId() && delete componentRegistry[this.getComponentId()];\n\n\t\t\tif (typeof variables[REMOVE_UPDATE_CUSTOM_ELEMENT_OBSERVER] === 'function') {\n\t\t\t\tvariables[REMOVE_UPDATE_CUSTOM_ELEMENT_OBSERVER]();\n\t\t\t}\n\n\t\t\tif (variables[HAS_NOW_RESOLVED_PROPS]) {\n\t\t\t\tsandbox(disconnectNowResolvedPropsCallbacks, {\n\t\t\t\t\targs: [this],\n\t\t\t\t\thost: this,\n\t\t\t\t\tdetails: {\n\t\t\t\t\t\ttype: 'disconnectNowResolvedPropsCallbacks'\n\t\t\t\t\t},\n\t\t\t\t\tlocation: locations.RENDERER,\n\t\t\t\t\tdispatch: variables[DISPATCH],\n\t\t\t\t\tlog\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t[RENDER](interactionId, source = metrics.CONNECTION, options = {}) {\n\t\t\tconst parentSpan = options.activeSpan || getActiveSpan(this);\n\t\t\tconst renderSpan = trace(SPAN_FOR_RENDER, {\n\t\t\t\t...getSpanOptions(this),\n\t\t\t\ttraceId: options.traceId || (parentSpan && parentSpan.traceId),\n\t\t\t\tkind: SPAN_KIND_CLIENT,\n\t\t\t\tparentSpan\n\t\t\t});\n\t\t\tconst variables = getHostVariables(this);\n\t\t\tif (typeof source === 'string') renderSpan.setAttribute(SPAN_ATTR_RENDER_CAUSE, source);\n\t\t\toptions.cause = source; // eslint-disable-line no-param-reassign\n\n\t\t\tif (enableSchedulerQueueCounts) {\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\toptions.highPriorityTaskCount = countHighPriorityTasks(this);\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\toptions.mediumPriorityTaskCount = countMediumPriorityTasks(this);\n\t\t\t\t// eslint-disable-next-line no-param-reassign\n\t\t\t\toptions.pendingNetworkActionCount = pendingNetworkActionCountForHost(this);\n\t\t\t}\n\n\t\t\t// tell parent that a child is rendering. Once this is called,\n\t\t\t// this[NOTIFY_PARENT_THAT_CHILD_TREE_HAS_RENDERED]() must be called at some point,\n\t\t\t// either directly or via this[CHECK_IF_TREE_RENDERED]()\n\t\t\tthis[NOTIFY_PARENT_THAT_CHILD_IS_RENDERING]({interactionId});\n\n\t\t\tif (!this.isConnected) {\n\t\t\t\tthis[NOTIFY_PARENT_THAT_CHILD_TREE_HAS_RENDERED]({interactionId});\n\t\t\t\trenderSpan.setAttribute(SPAN_ATTR_COMPONENT_CONNECTED, false);\n\t\t\t\trenderSpan.end();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tschedule({\n\t\t\t\tfn: () => {\n\t\t\t\t\tif (!this.isConnected) {\n\t\t\t\t\t\tthis[NOTIFY_PARENT_THAT_CHILD_TREE_HAS_RENDERED]({interactionId});\n\t\t\t\t\t\trenderSpan.setAttribute(SPAN_ATTR_COMPONENT_CONNECTED, false);\n\t\t\t\t\t\trenderSpan.end();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (variables[PROPS][NOW_MODE_PROP] === COMPONENT_MODE_SUSPEND) {\n\t\t\t\t\t\tthis[NOTIFY_PARENT_THAT_CHILD_TREE_HAS_RENDERED]({interactionId});\n\t\t\t\t\t\trenderSpan.setAttribute(SPAN_ATTR_COMPONENT_SUSPENDED, true);\n\t\t\t\t\t\trenderSpan.end();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (variables[PROPS][NOW_MODE_PROP] === COMPONENT_MODE_DETACH) {\n\t\t\t\t\t\tconst fragment = document.createDocumentFragment();\n\n\t\t\t\t\t\tif (!this[DETACHED_SHADOW_ROOT_CHILDREN_FRAGMENT]) {\n\t\t\t\t\t\t\twhile (variables[ROOT_NODE].firstChild) {\n\t\t\t\t\t\t\t\tfragment.appendChild(\n\t\t\t\t\t\t\t\t\tvariables[ROOT_NODE].removeChild(variables[ROOT_NODE].firstChild)\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tthis[DETACHED_SHADOW_ROOT_CHILDREN_FRAGMENT] = fragment;\n\t\t\t\t\t\t\tthis[NOTIFY_PARENT_THAT_CHILD_TREE_HAS_RENDERED]({interactionId});\n\t\t\t\t\t\t}\n\t\t\t\t\t\trenderSpan.setAttribute(SPAN_ATTR_COMPONENT_DETACHED, true);\n\t\t\t\t\t\trenderSpan.end();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// If we are observing for an intersection, and it has not happened yet, then cancel the render\n\t\t\t\t\tif (variables[USING_INTERSECTION_OBSERVER] && !variables[INTERSECTED]) {\n\t\t\t\t\t\tthis[NOTIFY_PARENT_THAT_CHILD_TREE_HAS_RENDERED]({interactionId});\n\t\t\t\t\t\trenderSpan.setAttribute(SPAN_ATTR_COMPONENT_INTERSECTED, false);\n\t\t\t\t\t\trenderSpan.end();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t/**\n\t\t\t\t\t * A component may take a few intemediate renders before settling on the final view that matches the SSR view.\n\t\t\t\t\t * If we do hydration on the first render, we will end up trashing the SSR view due to the view mismatch.\n\t\t\t\t\t * NOW_SKIP_RENDER_UNTIL_PRESENT is an array of properties that are needed to render the final view. We will\n\t\t\t\t\t * wait until all those properties are present before rendering the component, which also helps with the performance\n\t\t\t\t\t * since we skip the intermediate unnecessary renders.\n\t\t\t\t\t */\n\t\t\t\t\tconst shouldSkipRenderDueToEmptyProps =\n\t\t\t\t\t\t!variables[RENDERED_ONCE] &&\n\t\t\t\t\t\tArray.isArray(variables[PROPS][NOW_SKIP_RENDER_UNTIL_PRESENT])\n\t\t\t\t\t\t\t? variables[PROPS][NOW_SKIP_RENDER_UNTIL_PRESENT].some(prop =>\n\t\t\t\t\t\t\t\t\tisEmpty(this.getResolvedProperties()[prop])\n\t\t\t\t\t\t\t  )\n\t\t\t\t\t\t\t: false;\n\n\t\t\t\t\tconst shouldSkipRenderDueToDeferHydration = this.getAttribute(NOW_DEFER_HYDRATION_ATTR);\n\t\t\t\t\tif (shouldSkipRenderDueToEmptyProps || shouldSkipRenderDueToDeferHydration) {\n\t\t\t\t\t\tthis[NOTIFY_PARENT_THAT_CHILD_TREE_HAS_RENDERED]({interactionId});\n\t\t\t\t\t\trenderSpan.setAttribute(SPAN_ATTR_COMPONENT_INTERSECTED, false);\n\t\t\t\t\t\trenderSpan.end();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst state = getResolvedState(variables, componentRegistry);\n\t\t\t\t\tvalidateProperties(state.properties, this);\n\t\t\t\t\tvalidateContext(variables[CONTEXT], this);\n\n\t\t\t\t\tconst updatedState = shapeRenderData(\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\tvariables,\n\t\t\t\t\t\ttransformState,\n\t\t\t\t\t\tvariables[DISPATCH],\n\t\t\t\t\t\tinteractionId\n\t\t\t\t\t);\n\n\t\t\t\t\tconst event = variables[CONDITIONAL_DISPATCH](\n\t\t\t\t\t\tCOMPONENT_RENDER_REQUESTED,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpreviousRenderState: variables[PREVIOUS_RENDER_STATE],\n\t\t\t\t\t\t\tpreviousRenderProperties: variables[PREVIOUS_RENDER_PROPERTIES],\n\t\t\t\t\t\t\thost: this\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tfirstRenderOnConnect: !variables[RENDERED_ONCE],\n\t\t\t\t\t\t\t[COMPONENT_INTERNAL_ACTION]: true,\n\t\t\t\t\t\t\tinternal: true,\n\t\t\t\t\t\t\t[SCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED]: true,\n\t\t\t\t\t\t\trenderCause: options.cause,\n\t\t\t\t\t\t\t...(isValidTraceId(renderSpan.traceId) && {span: renderSpan})\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t\tif (event && event.defaultPrevented) {\n\t\t\t\t\t\tthis[NOTIFY_PARENT_THAT_CHILD_TREE_HAS_RENDERED]({interactionId});\n\t\t\t\t\t\trenderSpan.setAttribute(SPAN_ATTR_COMPONENT_EVENT_DEFAULT_PREVENTED, true);\n\t\t\t\t\t\trenderSpan.end();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet shouldSkipRender = false;\n\t\t\t\t\tif (this[DETACHED_SHADOW_ROOT_CHILDREN_FRAGMENT]) {\n\t\t\t\t\t\tif (this[DETACHED_COMPONENT_PROPERTY_MAP]) {\n\t\t\t\t\t\t\tthis[DETACHED_COMPONENT_PROPERTY_MAP].forEach(\n\t\t\t\t\t\t\t\t({name, value, updateProperties, interactionId}) => {\n\t\t\t\t\t\t\t\t\tshouldSkipRender = shouldSkipRender || this[VARIABLES][PROPS][name] !== value;\n\t\t\t\t\t\t\t\t\tthis[SET_PROPERTY](name, value, updateProperties, {interactionId});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvariables[ROOT_NODE].appendChild(this[DETACHED_SHADOW_ROOT_CHILDREN_FRAGMENT]);\n\t\t\t\t\t\tdelete this[DETACHED_SHADOW_ROOT_CHILDREN_FRAGMENT];\n\t\t\t\t\t\tdelete this[DETACHED_COMPONENT_PROPERTY_MAP];\n\t\t\t\t\t\tif (shouldSkipRender) {\n\t\t\t\t\t\t\trenderSpan.setAttribute(SPAN_ATTR_COMPONENT_RENDER_SKIPPED, true);\n\t\t\t\t\t\t\trenderSpan.end();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tmeasure(\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tconst [state, helpers] = createOnStateChangeArgs(\n\t\t\t\t\t\t\t\tuseCoeffectsLikeObjectInView,\n\t\t\t\t\t\t\t\tvariables[COMPONENT_ID],\n\t\t\t\t\t\t\t\tupdatedState,\n\t\t\t\t\t\t\t\tcreateContextProxy(this),\n\t\t\t\t\t\t\t\tapplyMetrics(variables[HELPERS_DEFER], renderSpan.id),\n\t\t\t\t\t\t\t\tthis\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tsandbox(onStateChange, {\n\t\t\t\t\t\t\t\targs: [\n\t\t\t\t\t\t\t\t\tvariables[ROOT_NODE],\n\t\t\t\t\t\t\t\t\trendererView,\n\t\t\t\t\t\t\t\t\tstate,\n\t\t\t\t\t\t\t\t\thelpers,\n\t\t\t\t\t\t\t\t\tinteractionId,\n\t\t\t\t\t\t\t\t\tisValidTraceId(renderSpan.traceId) ? renderSpan : null\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\thost: this,\n\t\t\t\t\t\t\t\tdetails: {\n\t\t\t\t\t\t\t\t\ttype: 'onStateChange'\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tlocation: locations.RENDERER,\n\t\t\t\t\t\t\t\tdispatch: variables[DISPATCH],\n\t\t\t\t\t\t\t\tlog\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\t`render-${tagName}#${variables[COMPONENT_ID]}`,\n\t\t\t\t\t\tinteractionId,\n\t\t\t\t\t\toptions\n\t\t\t\t\t);\n\n\t\t\t\t\tif (!variables[RENDERED_ONCE]) {\n\t\t\t\t\t\tvariables[CONDITIONAL_DISPATCH](\n\t\t\t\t\t\t\tCOMPONENT_DOM_READY,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpreviousRenderState: variables[PREVIOUS_RENDER_STATE],\n\t\t\t\t\t\t\t\tpreviousRenderProperties: variables[PREVIOUS_RENDER_PROPERTIES],\n\t\t\t\t\t\t\t\thost: this\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tinternal: true,\n\t\t\t\t\t\t\t\tfirstRenderOnConnect: true,\n\t\t\t\t\t\t\t\t[SCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED]: true,\n\t\t\t\t\t\t\t\t...(isValidTraceId(renderSpan.traceId) && {span: renderSpan})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tvariables[CONDITIONAL_DISPATCH](\n\t\t\t\t\t\tCOMPONENT_RENDERED_ACTION_TYPE,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpreviousRenderState: variables[PREVIOUS_RENDER_STATE],\n\t\t\t\t\t\t\tpreviousRenderProperties: variables[PREVIOUS_RENDER_PROPERTIES],\n\t\t\t\t\t\t\thost: this\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tinternal: true,\n\t\t\t\t\t\t\tfirstRenderOnConnect: !variables[RENDERED_ONCE],\n\t\t\t\t\t\t\t[SCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED]: true,\n\t\t\t\t\t\t\t...(isValidTraceId(renderSpan.traceId) && {span: renderSpan})\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t\tvariables[RENDERED_ONCE] = true;\n\t\t\t\t\tvariables[RENDERED_ONCE_TIMESTAMP] =\n\t\t\t\t\t\tvariables[RENDERED_ONCE_TIMESTAMP] || performance.now();\n\t\t\t\t\tvariables[PREVIOUS_RENDER_STATE] = updatedState;\n\t\t\t\t\tvariables[PREVIOUS_RENDER_PROPERTIES] = state.properties;\n\n\t\t\t\t\tthis[CHECK_IF_TREE_RENDERED](\n\t\t\t\t\t\tinteractionId,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\tisValidTraceId(renderSpan.traceId) ? renderSpan : null\n\t\t\t\t\t);\n\t\t\t\t\trenderSpan.end();\n\t\t\t\t},\n\t\t\t\ttype: COMPONENT_RENDER,\n\t\t\t\tmeta: {\n\t\t\t\t\tel: this,\n\t\t\t\t\tinteractionId,\n\t\t\t\t\t...(isValidTraceId(renderSpan.traceId) && {span: renderSpan})\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t[INTERSECTION_TRIGGERED]() {\n\t\t\tconst variables = getHostVariables(this);\n\n\t\t\tvariables[INTERSECTED] = true;\n\t\t\tif (variables[REMOVE_INTERSECTED_STYLES]) {\n\t\t\t\tvariables[REMOVE_INTERSECTED_STYLES]();\n\t\t\t\tvariables[REMOVE_INTERSECTED_STYLES] = null;\n\t\t\t}\n\n\t\t\tthis[RENDER](createInteractionId(), metrics.INTERSECTION);\n\t\t}\n\n\t\t[CHECK_IF_TREE_RENDERED](interactionId, options = {}, activeSpan = null) {\n\t\t\tconst variables = getHostVariables(this);\n\t\t\tconst parentSpan = activeSpan || getActiveSpan(this);\n\t\t\tif (enableSchedulerQueueCounts) {\n\t\t\t\toptions.highPriorityTaskCount = countHighPriorityTasks(this);\n\t\t\t\toptions.mediumPriorityTaskCount = countMediumPriorityTasks(this);\n\t\t\t\toptions.pendingNetworkActionCount = pendingNetworkActionCountForHost(this);\n\t\t\t}\n\n\t\t\t// Check if all children are complete. if so, dispatch that this component is also complete\n\t\t\tif (Object.keys(variables[CHILDREN_TO_BE_RENDERED]).length) return;\n\n\t\t\tif (!variables[TREE_RENDERED_ONCE]) {\n\t\t\t\tvariables[CONDITIONAL_DISPATCH](\n\t\t\t\t\tCOMPONENT_DOM_TREE_READY,\n\t\t\t\t\t{\n\t\t\t\t\t\tpreviousRenderState: variables[PREVIOUS_TREE_RENDER_STATE],\n\t\t\t\t\t\tpreviousRenderProperties: variables[PREVIOUS_TREE_RENDER_PROPERTIES],\n\t\t\t\t\t\thost: this\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tinternal: true,\n\t\t\t\t\t\tfirstRenderOnConnect: true,\n\t\t\t\t\t\t[SCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED]: true,\n\t\t\t\t\t\t...(parentSpan && isValidTraceId(parentSpan.traceId) && {span: parentSpan})\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tmark(this, interactionId, metrics.RENDER_TREE, options);\n\t\t\tvariables[CONDITIONAL_DISPATCH](\n\t\t\t\tCOMPONENT_TREE_RENDERED,\n\t\t\t\t{\n\t\t\t\t\tpreviousRenderState: variables[PREVIOUS_TREE_RENDER_STATE],\n\t\t\t\t\tpreviousRenderProperties: variables[PREVIOUS_TREE_RENDER_PROPERTIES],\n\t\t\t\t\thost: this\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tinternal: true,\n\t\t\t\t\tfirstRenderOnConnect: !variables[TREE_RENDERED_ONCE],\n\t\t\t\t\t[SCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED]: true,\n\t\t\t\t\t...(parentSpan && isValidTraceId(parentSpan.traceId) && {span: parentSpan})\n\t\t\t\t}\n\t\t\t);\n\n\t\t\tvariables[TREE_RENDERED_ONCE] = true;\n\t\t\tvariables[TREE_RENDERED_ONCE_TIMESTAMP] =\n\t\t\t\tvariables[TREE_RENDERED_ONCE_TIMESTAMP] || performance.now();\n\t\t\tvariables[PREVIOUS_TREE_RENDER_STATE] = variables[PREVIOUS_RENDER_STATE];\n\t\t\tvariables[PREVIOUS_TREE_RENDER_PROPERTIES] = variables[PREVIOUS_RENDER_PROPERTIES];\n\n\t\t\tthis[NOTIFY_PARENT_THAT_CHILD_TREE_HAS_RENDERED]({\n\t\t\t\tinteractionId,\n\t\t\t\t...(parentSpan && isValidTraceId(parentSpan.traceId) && {activeSpan: parentSpan})\n\t\t\t});\n\t\t}\n\n\t\t[CHILD_IS_RENDERING](child) {\n\t\t\tconst variables = getHostVariables(this);\n\t\t\tconst childVariables = getHostVariables(child);\n\t\t\tvariables[CHILDREN_TO_BE_RENDERED][childVariables[COMPONENT_ID]] = true;\n\t\t}\n\n\t\t[CHILD_HAS_RENDERED]({child, interactionId, activeSpan = null}) {\n\t\t\tconst variables = getHostVariables(this);\n\t\t\tconst childVariables = getHostVariables(child);\n\t\t\tdelete variables[CHILDREN_TO_BE_RENDERED][childVariables[COMPONENT_ID]];\n\n\t\t\tthis[CHECK_IF_TREE_RENDERED](interactionId, {}, activeSpan);\n\t\t}\n\n\t\t[NOTIFY_PARENT_THAT_CHILD_IS_RENDERING]() {\n\t\t\tconst variables = getHostVariables(this);\n\t\t\tconst parentHost = variables[ANCESTOR_ROOT_NODE];\n\t\t\tif (parentHost && getHostVariables(parentHost)[NEEDS_TO_KNOW_ABOUT_TREE_RENDERS])\n\t\t\t\tparentHost[CHILD_IS_RENDERING](this);\n\t\t}\n\n\t\t[NOTIFY_PARENT_THAT_CHILD_TREE_HAS_RENDERED]({interactionId, activeSpan = null}) {\n\t\t\tconst variables = getHostVariables(this);\n\t\t\tconst parentHost = variables[ANCESTOR_ROOT_NODE];\n\t\t\tif (parentHost && getHostVariables(parentHost)[NEEDS_TO_KNOW_ABOUT_TREE_RENDERS])\n\t\t\t\tparentHost[CHILD_HAS_RENDERED]({child: this, interactionId, activeSpan});\n\t\t}\n\t}\n\n\tconst accessors = {\n\t\tnowElementConfig: {\n\t\t\tget() {\n\t\t\t\tinitialize();\n\t\t\t\treturn normalizedConfig;\n\t\t\t}\n\t\t},\n\t\tnowRootNode: {\n\t\t\tget() {\n\t\t\t\tif (!initialized || shadowRootOptions.mode === SHADOW_ROOT_MODE_CLOSED) return null;\n\n\t\t\t\treturn getHostVariables(this)[ROOT_NODE];\n\t\t\t}\n\t\t},\n\t\tstyle: {\n\t\t\tget() {\n\t\t\t\treturn getHostVariables(this)[STYLE_PROXY];\n\t\t\t},\n\t\t\tset() {\n\t\t\t\tlog('setting style property directly is not supported');\n\t\t\t}\n\t\t}\n\t};\n\treturn SeismicElement;\n}\n","import {getConfigItem, configConstants} from '@servicenow/ui-config';\nimport ajv from '../ajv';\nimport validateSchema from '../validate/validateSchema';\n\nconst {VALIDATE_SCHEMAS} = configConstants;\nconst validateSchemas = getConfigItem(VALIDATE_SCHEMAS);\n\n/**\n * Build the validator for the config of a component\n * @private\n * @param {*} schema The schema of the config to validate against\n * @returns {Function(config, errorPrefix, options)} The function to validate the component's properties\n */\nfunction buildConfigValidator(schema) {\n\tif (validateSchemas) {\n\t\tlet validate;\n\t\ttry {\n\t\t\tvalidate = ajv.compile(schema);\n\t\t} catch (e) {\n\t\t\tconsole.error(e); // eslint-disable-line no-console\n\t\t\treturn () => false;\n\t\t}\n\n\t\treturn function validator(config, errorPrefix, options = {}) {\n\t\t\treturn validateSchema(validate, config, {errorPrefix, ...options});\n\t\t};\n\t}\n\n\treturn () => true;\n}\n\nexport default buildConfigValidator;\n","import buildConfigValidator from './utils/schema/build/buildConfigValidator';\nimport {SHADOW_ROOT_MODE_CLOSED, SHADOW_ROOT_MODE_OPEN} from './constants';\nimport {modifierTypes} from './effects';\n\nconst TYPE_ARRAY = {type: 'array'};\nconst TYPE_BOOLEAN = {type: 'boolean'};\nconst TYPE_FN = {fn: true};\nconst TYPE_NUMBER = {type: 'number'};\nconst TYPE_OBJECT = {type: 'object'};\nconst TYPE_STRING = {type: 'string'};\n\nconst properties = {\n\t...TYPE_OBJECT,\n\tadditionalProperties: {\n\t\t...TYPE_OBJECT,\n\t\tproperties: {\n\t\t\tdefault: {},\n\t\t\tcomputed: TYPE_FN,\n\t\t\trequired: TYPE_BOOLEAN,\n\t\t\tselectable: TYPE_BOOLEAN,\n\t\t\treflect: TYPE_BOOLEAN,\n\t\t\tdeepCompare: TYPE_BOOLEAN,\n\t\t\tresolveRef: TYPE_BOOLEAN,\n\t\t\tshouldRenderWhenSet: TYPE_BOOLEAN,\n\t\t\tschema: TYPE_OBJECT,\n\t\t\tunstableParse: {\n\t\t\t\t...TYPE_BOOLEAN,\n\t\t\t\tdeprecated: 'has been deprecated, use Type Schemas instead'\n\t\t\t},\n\t\t\tunstablePreserveEmptyStr: {\n\t\t\t\t...TYPE_BOOLEAN,\n\t\t\t\tdeprecated: 'has been deprecated, use Type Schemas instead'\n\t\t\t},\n\t\t\tdependencies: {\n\t\t\t\t...TYPE_ARRAY,\n\t\t\t\titems: TYPE_STRING\n\t\t\t},\n\t\t\tonChange: TYPE_FN\n\t\t},\n\t\tadditionalProperties: false\n\t}\n};\n\nconst interceptors = {\n\t...TYPE_ARRAY,\n\titems: {\n\t\tanyOf: [\n\t\t\t{\n\t\t\t\t...TYPE_OBJECT,\n\t\t\t\tproperties: {\n\t\t\t\t\tbefore: TYPE_FN,\n\t\t\t\t\tafter: TYPE_FN\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false\n\t\t\t},\n\t\t\tTYPE_FN\n\t\t]\n\t}\n};\n\nconst actions = {\n\t...TYPE_OBJECT,\n\tadditionalProperties: {\n\t\t...TYPE_OBJECT,\n\t\tproperties: {\n\t\t\thandlers: {\n\t\t\t\t...TYPE_ARRAY,\n\t\t\t\tdeprecated: 'has been deprecated, use actions handlers instead',\n\t\t\t\titems: {\n\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t...TYPE_OBJECT,\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\teffect: TYPE_FN,\n\t\t\t\t\t\t\t\tfn: TYPE_FN,\n\t\t\t\t\t\t\t\targs: TYPE_ARRAY\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tadditionalProperties: false\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTYPE_FN\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\tinterceptors: {\n\t\t\t\t...interceptors,\n\t\t\t\tdeprecated: 'has been deprecated, use actions handler `interceptors` instead'\n\t\t\t},\n\t\t\teffect: {\n\t\t\t\t...TYPE_FN,\n\t\t\t\tdeprecated: 'has been deprecated, use actions handlers instead'\n\t\t\t},\n\t\t\tprivate: {\n\t\t\t\ttype: 'boolean',\n\t\t\t\tdeprecated: 'has been deprecated, use actions handlers `stopPropagation` instead'\n\t\t\t},\n\t\t\tschema: TYPE_OBJECT\n\t\t},\n\t\tadditionalProperties: false\n\t}\n};\n\nconst actionHandlers = {\n\t...TYPE_OBJECT,\n\tadditionalProperties: {\n\t\tanyOf: [\n\t\t\t{\n\t\t\t\t...TYPE_OBJECT,\n\t\t\t\tproperties: {\n\t\t\t\t\teffect: TYPE_FN,\n\t\t\t\t\targs: TYPE_ARRAY,\n\t\t\t\t\tdescendantOnly: TYPE_BOOLEAN,\n\t\t\t\t\tstopPropagation: TYPE_BOOLEAN,\n\t\t\t\t\tinterceptors,\n\t\t\t\t\tmodifier: {\n\t\t\t\t\t\tanyOf: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t...TYPE_OBJECT,\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\t\t\t...TYPE_STRING,\n\t\t\t\t\t\t\t\t\t\tenum: [modifierTypes.DEBOUNCE]\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tdelay: TYPE_NUMBER,\n\t\t\t\t\t\t\t\t\tmaxWait: TYPE_NUMBER,\n\t\t\t\t\t\t\t\t\tcollate: TYPE_BOOLEAN\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tadditionalProperties: false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t...TYPE_OBJECT,\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\t\t\t...TYPE_STRING,\n\t\t\t\t\t\t\t\t\t\tenum: [modifierTypes.THROTTLE]\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tlimit: TYPE_NUMBER\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tadditionalProperties: false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t...TYPE_OBJECT,\n\t\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\t\t\t...TYPE_STRING,\n\t\t\t\t\t\t\t\t\t\tenum: [modifierTypes.TAKE_LATEST]\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tadditionalProperties: false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false\n\t\t\t},\n\t\t\tTYPE_FN\n\t\t]\n\t}\n};\n\nconst eventHandlers = {\n\t...TYPE_ARRAY,\n\titems: {\n\t\t...TYPE_OBJECT,\n\t\tproperties: {\n\t\t\tevents: {\n\t\t\t\t...TYPE_ARRAY,\n\t\t\t\tminItems: 1,\n\t\t\t\titems: TYPE_STRING\n\t\t\t},\n\t\t\teffect: TYPE_FN,\n\t\t\ttarget: {\n\t\t\t\tanyOf: [TYPE_OBJECT, TYPE_STRING]\n\t\t\t},\n\t\t\tcapture: TYPE_BOOLEAN,\n\t\t\tmodifier: {\n\t\t\t\tanyOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\t...TYPE_OBJECT,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\t...TYPE_STRING,\n\t\t\t\t\t\t\t\tenum: [modifierTypes.DEBOUNCE]\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tdelay: TYPE_NUMBER,\n\t\t\t\t\t\t\tmaxWait: TYPE_NUMBER,\n\t\t\t\t\t\t\tcollate: TYPE_BOOLEAN\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t...TYPE_OBJECT,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\t...TYPE_STRING,\n\t\t\t\t\t\t\t\tenum: [modifierTypes.THROTTLE]\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tlimit: TYPE_NUMBER\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t...TYPE_OBJECT,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\t...TYPE_STRING,\n\t\t\t\t\t\t\t\tenum: [modifierTypes.TAKE_LATEST]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\trequired: ['events', 'effect'],\n\t\tadditionalProperties: false\n\t}\n};\n\nconst initialState = {};\n\nconst setInitialState = {\n\t...TYPE_FN\n};\n\nconst onBootstrap = {\n\t...TYPE_FN,\n\tdeprecated: 'life cycle has been deprecated, use `COMPONENT_BOOTSTRAPPED` action handler instead'\n};\nconst onConnect = {\n\t...TYPE_FN,\n\tdeprecated: 'life cycle has been deprecated, use `COMPONENT_CONNECTED` action handler instead'\n};\n\nconst onDisconnect = {\n\t...TYPE_FN,\n\tdeprecated: 'life cycle has been deprecated, use `COMPONENT_DISCONNECTED` action handler instead'\n};\n\nconst onPropertiesSet = {\n\t...TYPE_FN,\n\tdeprecated: true\n};\n\nconst behavior = {\n\t...TYPE_OBJECT,\n\tproperties: {\n\t\tname: TYPE_STRING,\n\t\tproperties,\n\t\tactions,\n\t\tactionHandlers,\n\t\tdispatches: TYPE_OBJECT,\n\t\teventHandlers,\n\t\tinitialState,\n\t\tsetInitialState,\n\t\tonBootstrap,\n\t\tonConnect,\n\t\tonDisconnect,\n\t\tonPropertiesSet\n\t},\n\tadditionalProperties: false\n};\n\nconst presentationalBehavior = {\n\t...TYPE_OBJECT,\n\tproperties: {\n\t\tname: TYPE_STRING,\n\t\tproperties\n\t},\n\tadditionalProperties: false\n};\n\nconst validator = buildConfigValidator({\n\t...TYPE_OBJECT,\n\tproperties: {\n\t\tbehaviors: {\n\t\t\t...TYPE_ARRAY,\n\t\t\titems: {\n\t\t\t\tanyOf: [\n\t\t\t\t\tbehavior,\n\t\t\t\t\t{\n\t\t\t\t\t\t...TYPE_OBJECT,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tbehavior,\n\t\t\t\t\t\t\toptions: TYPE_OBJECT\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tuniqueItems: true\n\t\t},\n\t\tactions,\n\t\tactionHandlers,\n\t\teventHandlers,\n\t\tinitialState,\n\t\tsetInitialState,\n\t\tproperties,\n\t\trenderer: {\n\t\t\t...TYPE_OBJECT,\n\t\t\tproperties: {\n\t\t\t\tview: TYPE_FN,\n\t\t\t\ttransformState: TYPE_FN,\n\t\t\t\ttransformProps: TYPE_FN,\n\t\t\t\ttype: TYPE_OBJECT\n\t\t\t},\n\t\t\tadditionalProperties: false\n\t\t},\n\t\tview: TYPE_FN,\n\t\ttransformState: TYPE_FN,\n\t\ttransformProps: TYPE_FN,\n\t\ttype: TYPE_OBJECT,\n\t\tresources: {\n\t\t\t...TYPE_OBJECT,\n\t\t\tdeprecated: 'has been deprecated, use effects instead'\n\t\t},\n\t\tactionTypes: {\n\t\t\t...TYPE_ARRAY,\n\t\t\tdeprecated: true\n\t\t},\n\t\tactionTypesToProps: {\n\t\t\t...TYPE_OBJECT,\n\t\t\tdeprecated: true\n\t\t},\n\t\tonBootstrap,\n\t\tonConnect,\n\t\tonDisconnect,\n\t\tonPropertiesSet,\n\t\tdispatches: TYPE_OBJECT,\n\t\tslots: TYPE_OBJECT,\n\t\tstyles: TYPE_STRING,\n\t\tstylesheets: {\n\t\t\t...TYPE_ARRAY,\n\t\t\titems: TYPE_STRING\n\t\t},\n\t\tshadowRootOptions: {\n\t\t\t...TYPE_OBJECT,\n\t\t\tproperties: {\n\t\t\t\tmode: {\n\t\t\t\t\t...TYPE_STRING,\n\t\t\t\t\tenum: [SHADOW_ROOT_MODE_OPEN, SHADOW_ROOT_MODE_CLOSED]\n\t\t\t\t}\n\t\t\t},\n\t\t\tadditionalProperties: false\n\t\t}\n\t},\n\tadditionalProperties: false\n});\n\nconst presentationalValidator = buildConfigValidator({\n\t...TYPE_OBJECT,\n\tproperties: {\n\t\tbehaviors: {\n\t\t\t...TYPE_ARRAY,\n\t\t\titems: {\n\t\t\t\tanyOf: [\n\t\t\t\t\tpresentationalBehavior,\n\t\t\t\t\t{\n\t\t\t\t\t\t...TYPE_OBJECT,\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tbehavior: presentationalBehavior,\n\t\t\t\t\t\t\toptions: TYPE_OBJECT\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\tuniqueItems: true\n\t\t},\n\t\tproperties,\n\t\trenderer: {\n\t\t\t...TYPE_OBJECT,\n\t\t\tproperties: {\n\t\t\t\ttype: TYPE_OBJECT\n\t\t\t},\n\t\t\tadditionalProperties: false\n\t\t},\n\t\tview: TYPE_FN,\n\t\ttransformProps: TYPE_FN,\n\t\tstyles: TYPE_STRING,\n\t\tshadowRootOptions: {\n\t\t\t...TYPE_OBJECT,\n\t\t\tproperties: {\n\t\t\t\tmode: {\n\t\t\t\t\t...TYPE_STRING,\n\t\t\t\t\tenum: [SHADOW_ROOT_MODE_OPEN, SHADOW_ROOT_MODE_CLOSED]\n\t\t\t\t}\n\t\t\t},\n\t\t\tadditionalProperties: false\n\t\t}\n\t},\n\tadditionalProperties: false\n});\n\nexport function validatePresentationalConfig(name, config, options) {\n\treturn presentationalValidator(config, `Config for ${name}: `, options);\n}\n\nexport default function validateConfig(name, config, options) {\n\treturn validator(config, `Config for ${name}: `, options);\n}\n","import {set as setStat} from './stats';\nimport {getConfigItem, configConstants} from '@servicenow/ui-config';\nimport createElementClass from './createElementClass';\nimport log from './log';\nimport validateConfig, {validatePresentationalConfig} from './validateConfig';\nconst {CHECK_FOR_POSSIBLE_PRESENTATIONAL_COMPONENTS, POSSIBLE_PRESENTATIONAL_COMPONENTS} =\n\tconfigConstants;\nconst checkForPossiblePresentationalComponents = getConfigItem(\n\tCHECK_FOR_POSSIBLE_PRESENTATIONAL_COMPONENTS\n);\nconst possiblePresentationalComponents = getConfigItem(POSSIBLE_PRESENTATIONAL_COMPONENTS);\n\n/**\n * Define a custom element.\n * @function createCustomElement\n * @example\n * import {createCustomElement} from '@servicenow/ui-core';\n *\n * createCustomElement('sn-hello-world', {\n *   properties: {\n *     name: {\n *       default: 'Fred'\n *     }\n *   },\n *   transformState: ({properties}) => properties,\n *   view: ({name}) => <p>Hello {name}!</p>\n * });\n * @param {string} elementName - The tag name of the custom element.\n * @param {Object} config - The custom element configuration.\n * @param {function} [config.setInitialState] - Function that returns the initial state for a component.\n * @param {Object} [config.properties] - The properties used by a custom element.\n * @param {*} [config.properties.&lt;name&gt;.default] - The default value of the property.\n * @param {function} [config.properties.&lt;name&gt;.computed] - A function that computes the property value.\n * @param {boolean} [config.properties.&lt;name&gt;.reflect] - Reflect property change to corresponding attribute. This value is `false` by default, but for a limited, finite subset of keys that overlap with HTML Attribute keys, it is `true` and cannot be set to `false`.\n * @param {boolean} [config.properties.&lt;name&gt;.unstableParse] - Deprecated, use Type Schemas instead. Parse attribute values when corresponding properties are set. This value is `false` by default.\n * @param {boolean} [config.properties.&lt;name&gt;.unstablePreserveEmptyStr] - Deprecated, use Type Schemas instead. Preserve an empty string when attribute, property is present instead of converting the value to a boolean.\n * @param {boolean} [config.properties.&lt;name&gt;.readOnly] - Property cannot be externally set. This value is `false` by default.\n * @param {boolean} [config.properties.&lt;name&gt;.schema] - Schema that will validate the passed in value of the property during development. This value is `null` by default.\n * @param {boolean} [config.properties.&lt;name&gt;.selectable] - A selectable property can be selected or pointed by other component and map to its local property.\n * @param {boolean} [config.properties.&lt;name&gt;.shouldRenderWhenSet] - Property value change should trigger component render. This value is `true` by default.\n * @param {Object} [config.actions] - The actions the custom element dispatches.\n * @param {boolean} [config.actions.&lt;type&gt;.schema] - Schema that will validate if the payload of the action dispatched from this element is correct.\n * @param {Object} [config.actionHandlers] - Handlers to run when the action type is dispatched.\n * @param {function} [config.actionHandlers.&lt;type&gt;] - The action handler as an effect function or config object.\n * @param {function} [config.view] - A function that renders transformed component state and properties to virtual DOM.\n * @param {function} [config.transformState] - A function that executes before a component's state is passed to the view.\n * @param {Array} [config.behaviors] - Behaviors applied to the custom element.\n * @param {Object} [config.shadowRootOptions] - Options applied to the shadowRoot of a custom element.\n * @param {String} [config.shadowRootOptions.mode] - Mode of the shadowRoot.  Allowed values are `open` and `closed`.  When `closed` access is denied to `shadowRoot` from the element.  This value is `open` by default.\n */\nexport default function createCustomElementFactory(options) {\n\tconst {componentRegistry, presentational = false} = options;\n\n\treturn function createCustomElement(name, config = {}) {\n\t\tif (customElements.get(name))\n\t\t\treturn log(`The custom element, ${name}, has already been defined.`);\n\n\t\tif (presentational) {\n\t\t\tvalidatePresentationalConfig(name, config);\n\t\t} else {\n\t\t\tif (\n\t\t\t\tcheckForPossiblePresentationalComponents &&\n\t\t\t\tvalidatePresentationalConfig(name, config, {shouldLog: false})\n\t\t\t)\n\t\t\t\tpossiblePresentationalComponents.push(name);\n\n\t\t\tvalidateConfig(name, config);\n\t\t}\n\n\t\tcustomElements.define(\n\t\t\tname,\n\t\t\tcreateElementClass({\n\t\t\t\tpresentational,\n\t\t\t\t...config,\n\t\t\t\tname,\n\t\t\t\tcomponentRegistry\n\t\t\t})\n\t\t);\n\n\t\tsetStat('defined', name.toLowerCase());\n\t};\n}\n","const UXF_VIEWPORT_RENDER = 'UXF_VIEWPORT#RENDER';\nconst UXF_VIEWPORT_RENDER_BY_ID = 'UXF_VIEWPORT#RENDER_BY_ID';\nconst UXF_VIEWPORT_DISMISS = 'UXF_VIEWPORT#DISMISS';\nconst UXF_VIEWPORT_SCRIPTED_CONDITIONS_EVALUATION_REQUESTED =\n\t'UXF_VIEWPORT#SCRIPTED_CONDITIONS_EVALUATION_REQUESTED';\nconst UXF_VIEWPORT_SCRIPTED_CONDITIONS_EVALUATION_COMPLETED =\n\t'UXF_VIEWPORT#SCRIPTED_CONDITIONS_EVALUATION_COMPLETED';\nconst UXF_VIEWPORT_CALCULATE_ROUTES = 'UXF_VIEWPORT#CALCULATE_ROUTES';\nconst UXF_VIEWPORT_ROUTE_INITIALIZATION_COMPLETED =\n\t'UXF_VIEWPORT#ROUTE_INITIALIZATION_COMPLETED';\nconst UXF_VIEWPORT_ROUTE_SCRIPTED_CONDITIONS_EVALUATION_COMPLETED =\n\t'UXF_VIEWPORT#ROUTE_SCRIPTED_CONDITIONS_EVALUATION_COMPLETED';\nconst UXF_VIEWPORT_ROUTE_SCRIPTED_CONDITIONS_EVALUATION_REQUESTED =\n\t'UXF_VIEWPORT#ROUTE_SCRIPTED_CONDITIONS_EVALUATION_REQUESTED';\nconst VIEWPORT_ROUTE_REQUESTED = 'VIEWPORT_ROUTE_REQUESTED';\nexport const SCREEN_INTERACTION_ID_UPDATE_REQUESTED =\n\t'UXR_INTERNAL#SCREEN_INTERACTION_ID_UPDATE_REQUESTED';\nexport const NOW_UX_INTERACTION = 'NOW-UX-INTERACTION';\nexport const PAGE_LEVEL_SHORTCUT_EVENT_NAME_PREFIX = 'PAGE_LEVEL_SHORTCUT';\n\nexport const MACROPONENT_CATEGORY = {\n\tMODELESS_DIALOG: 'modeless_dialog',\n\tCOMPONENT: 'component',\n\tMODAL: 'modal',\n\tUI_CONTROLLER: 'ui_controller',\n\tMODELESS_DIALOG_BUNDLE: 'modeless_dialog_bundle',\n\tPAGE: 'page',\n\tPOPOVER: 'popover',\n\tPRIMITIVE: 'primitives',\n\tDATA_BROKER_PROXY: 'client_state_data_broker',\n\tVIEWPORT: 'viewport',\n\tSUB_PAGE: 'sub_page',\n\tAPP_SHELL_UI: 'chrome',\n\tCONTROLLER: 'controller',\n\tBUNDLE: 'bundle',\n};\n\nconst SCRIPT_EXEC_REQUESTED = 'UXF_INTERNAL#SCRIPT_EXEC_REQUESTED';\nconst MACROPONENT_STATE_UPDATED = 'UXF_INTERNAL#MACROPONENT_STATE_UPDATED';\nconst WRAPPED_EVENT_REDISPATCH = 'UXF_INTERNAL#WRAPPED_EVENT_REDISPATCH';\nconst UPDATE_CONTEXT_REQUESTED_BY_CONTROLLER_PROP_RESOLVED =\n\t'UXF_INTERNAL#UPDATE_CONTEXT_REQUESTED_BY_CONTROLLER_PROP_RESOLVED';\nconst UPDATE_CONTEXT_REQUESTED_BY_CONTROLLER_PROP_CHANGE =\n\t'UXF_INTERNAL#UPDATE_CONTEXT_REQUESTED_BY_CONTROLLER_PROP_CHANGE';\nconst SAVE_CONTROLLER_NODE_TO_TRANSLATOR =\n\t'UXF_INTERNAL#SAVE_CONTROLLER_NODE_TO_TRANSLATOR';\nexport const UXF_INTERNAL_SCREEN_MACROPONENT_IDLE =\n\t'UXF_INTERNAL#SCREEN_MACROPONENT_IDLE';\n\n// emitted by a Controller that has a dependency, handled internally, sends relay to parent\nexport const UXF_INTERNAL_DEPENDENCY_OP_REQUESTED =\n\t'UXF_INTERNAL#DEPENDENCY_OP_REQUESTED';\n// emitted by Parent (from child Controller), via parentDispatch, invokes dependency Controller's DB OP\nexport const UXF_INTERNAL_DEPENDENCY_OP_REQUEST_RELAYED =\n\t'UXF_INTERNAL#DEPENDENCY_OP_REQUEST_RELAYED';\nexport const DEPENDENCY_RELAY_EVENTS_ALLOWED_FROM_SCRIPT = {\n\tUXF_INTERNAL_DEPENDENCY_OP_REQUESTED,\n\tUXF_INTERNAL_DEPENDENCY_OP_REQUEST_RELAYED,\n};\n\nconst MACROPONENT_READY = 'MACROPONENT_READY';\nconst MACROPONENT_PROPERTY_CHANGED = 'MACROPONENT_PROPERTY_CHANGED';\nconst MACROPONENT_VIEWPORT_LOAD_REQUESTED =\n\t'MACROPONENT_VIEWPORT_LOAD_REQUESTED';\nconst MACROPONENT_VIEWPORT_LOAD_COMPLETED =\n\t'MACROPONENT_VIEWPORT_LOAD_COMPLETED';\nconst MACROPONENT_STATE_UPDATE_REQUESTED = 'MACROPONENT_STATE_UPDATE_REQUESTED';\nconst MACROPONENT_VIEWPORT_ROUTE_INITIALIZATION_COMPLETED =\n\t'MACROPONENT_VIEWPORT_ROUTE_INITIALIZATION_COMPLETED';\nconst HTTP_ERROR_OCCURRED = 'HTTP_ERROR_OCCURRED';\nconst MACROPONENT_PAGE_ERROR_OCCURRED = 'MACROPONENT_PAGE_ERROR_OCCURRED';\nconst TRACK_USAGE_REQUESTED = 'MACROPONENT_TRACK_USAGE_REQUESTED';\nconst MACROPONENT_POPOVER_OPEN_REQUESTED = 'MACROPONENT_POPOVER_OPEN_REQUESTED';\nconst MACROPONENT_POPOVER_ERROR_OCCURRED = 'MACROPONENT_POPOVER_ERROR_OCCURRED';\nconst MACROPONENT_POPOVER_ERROR_OCCURRED_DEPRECATED =\n\t'MACROPONENT_POPOVER_ERROR_OCCURRRED';\nconst OPEN_MODELESS_DIALOG = 'UXF#OPEN_DIALOG';\nconst CLOSE_MODELESS_DIALOG = 'UXF#CLOSE_DIALOG_ON_STAGE';\n\nconst MACROPONENT_FOCUSED = 'MACROPONENT_FOCUSED';\nconst MACROPONENT_FOCUS_ELEMENT_REQUESTED =\n\t'MACROPONENT_FOCUS_ELEMENT_REQUESTED';\nconst MACROPONENT_FOCUS_PARENT_REQUESTED = 'MACROPONENT_FOCUS_PARENT_REQUESTED';\n\nexport const UXF_TABSET_NON_VIEWPORT_CONTAINER_RENDER_REQUESTED =\n\t'UXF_TABSET_NON_VIEWPORT_CONTAINER_RENDER_REQUESTED';\n\nexport const UXF_MACROPONENT_OUTPUT_PROPERTY_UPDATED =\n\t'UXF_MACROPONENT#OUTPUT_PROPERTY_UPDATED';\n\nexport const MACROPONENT_DOMAIN_UPDATE_REQUESTED =\n\t'MACROPONENT_DOMAIN_UPDATE_REQUESTED';\n/**\n * actions handled by seismic - these are part of their public actions API\n * @see https://code.devsnc.com/dev/sn-seismic/blob/master/packages/core/src/utils/config/index.js\n * @see https://code.devsnc.com/dev/sn-seismic/blob/master/packages/core/src/accessibility/ariaLiveRegion.js\n */\nexport const SEISMIC_ARIA_LIVE_REGION_UPDATE_REQUESTED =\n\t'SEISMIC_ARIA_LIVE_REGION_UPDATE_REQUESTED';\nexport const publicSeismicActions = [SEISMIC_ARIA_LIVE_REGION_UPDATE_REQUESTED];\n\nexport const viewportActions = {\n\tUXF_VIEWPORT_RENDER,\n\tUXF_VIEWPORT_RENDER_BY_ID,\n\tUXF_VIEWPORT_DISMISS,\n\tUXF_VIEWPORT_SCRIPTED_CONDITIONS_EVALUATION_COMPLETED,\n\tUXF_VIEWPORT_SCRIPTED_CONDITIONS_EVALUATION_REQUESTED,\n\tUXF_VIEWPORT_CALCULATE_ROUTES,\n\tUXF_VIEWPORT_ROUTE_INITIALIZATION_COMPLETED,\n\tUXF_VIEWPORT_ROUTE_SCRIPTED_CONDITIONS_EVALUATION_COMPLETED,\n\tUXF_VIEWPORT_ROUTE_SCRIPTED_CONDITIONS_EVALUATION_REQUESTED,\n};\n\nexport const HEADLESS_VIEWPORT_COMPONENT_TAG = 'now-uxf-viewport';\nexport const HEADLESS_VIEWPORT_COMPONENT_PROP_VALUES = {\n\theadless: true,\n};\n\nexport const internalActions = {\n\tSCRIPT_EXEC_REQUESTED,\n\tMACROPONENT_STATE_UPDATED,\n\tWRAPPED_EVENT_REDISPATCH,\n\tUPDATE_CONTEXT_REQUESTED_BY_CONTROLLER_PROP_RESOLVED,\n\tUPDATE_CONTEXT_REQUESTED_BY_CONTROLLER_PROP_CHANGE,\n\tSAVE_CONTROLLER_NODE_TO_TRANSLATOR,\n\t...viewportActions,\n};\n\nexport const componentViewportInternalActions = {\n\tVIEWPORT_ROUTE_REQUESTED,\n};\n\nexport const MACROPONENT_FEATURES = {\n\tDATA_BROKERS: 'DATA_BROKERS',\n\tVIEWPORTS: 'VIEWPORTS',\n\tEVENT_MAPPING: 'EVENT_MAPPING',\n\tEXT_CONTROLLER_DEPENDENCY_PROPS: 'EXT_CONTROLLER_DEPENDENCY_PROPS',\n};\n\nexport const TABS_TYPE = {\n\tTEMPLATE: 'template',\n};\n\nexport const SLOT_TYPES = {\n\tTABS: 'tabs',\n};\n\n// Global Actions\nexport const NAV_ITEM_SELECTED = 'NAV_ITEM_SELECTED';\nexport const MODAL_SELECTED = 'MODAL_SELECTED';\nexport const MODAL_SELECTED_RELAY = 'MODAL_SELECTED_RELAY';\n\nexport const DA_WRAPPED_CLICKED = 'DA_WRAPPED_CLICKED';\nexport const MACROPONENT_PERSISTED_STATE_ON_EXTERNAL_CHANGE =\n\t'MACROPONENT_PERSISTED_STATE_ON_EXTERNAL_CHANGE';\n\n/**\n * Actions that the macroponent dispatches. Part of UXF's public API.\n * These don't bubble up and so far are limited to lifecycle-type actions.\n */\nexport const publicDispatchedActionNames = {\n\tMACROPONENT_READY,\n\tMACROPONENT_PROPERTY_CHANGED,\n\tMACROPONENT_VIEWPORT_LOAD_COMPLETED,\n\tMACROPONENT_VIEWPORT_ROUTE_INITIALIZATION_COMPLETED,\n\tMACROPONENT_PAGE_ERROR_OCCURRED,\n\tMACROPONENT_POPOVER_ERROR_OCCURRED,\n\tMACROPONENT_POPOVER_ERROR_OCCURRED_DEPRECATED,\n\tMACROPONENT_FOCUSED,\n\tMACROPONENT_DOMAIN_UPDATE_REQUESTED,\n\tMACROPONENT_PERSISTED_STATE_ON_EXTERNAL_CHANGE,\n};\n\n/**\n * Actions that the macroponent handles. Part of UXF's public API.\n */\nexport const publicActionHandlerNames = {\n\tMACROPONENT_STATE_UPDATE_REQUESTED,\n\tMACROPONENT_VIEWPORT_LOAD_REQUESTED,\n\tHTTP_ERROR_OCCURRED,\n\tTRACK_USAGE_REQUESTED,\n\tOPEN_MODELESS_DIALOG,\n\tCLOSE_MODELESS_DIALOG,\n\tMACROPONENT_POPOVER_OPEN_REQUESTED,\n\tMACROPONENT_FOCUS_ELEMENT_REQUESTED,\n\tMACROPONENT_FOCUS_PARENT_REQUESTED,\n};\n\nexport const IS_INTERNAL_ACTION = Symbol('isUxfInternalAction');\n\nexport const IS_MACROPONENT_READY = Symbol('isReady');\n\nexport const IS_SOURCED_FROM_SET_STATE = Symbol('isSourcedFromSetState');\nexport const IS_SOURCED_FROM_PERSISTED_STATE_CHANGE = Symbol(\n\t'isSourcedFromPersistedStateChange',\n);\n\nexport const CONTAINING_MACROPONENT_SYS_ID = Symbol(\n\t'DO_NOT_USE__uxfContainingMacropopnentSysId',\n);\n\nexport const COMPOSITION_ELEMENT_ID = Symbol('DO_NOT_USE__uxfCompositionElId');\n\nexport const REPEATER_ITEM = Symbol('repeaterItem');\n\nexport const SIGNAL_VIEWPORT_LOAD_COMPLETION = Symbol(\n\t'DO_NOT_USE__signalViewportLoadCompletion',\n);\n\nexport const SIGNAL_VIEWPORT_ROUTE_INITIALIZATION_COMPLETION = Symbol(\n\t'DO_NOT_USE__signalViewportRouteInitializationCompletion',\n);\n\nexport const SIGNAL_MACROPONENT_READY_STATE_UPDATED = Symbol(\n\t'DO_NOT_USE__signalMacroponentReadyStateUpdated',\n);\n\nexport const SIGNAL_MACROPONENT_READY_DISPATCHED = Symbol(\n\t'DO_NOT_USE__signalMacroponentReadyDispatched',\n);\n\nexport const SYMBOL_EVENT_MAPPING_SOURCE_IS_SCREEN_ACTION_TRANSFORMER = Symbol(\n\t'DO_NOT_USE__eventMappingSourceIsScreenActionTransformer',\n);\n\nexport const SYMBOL_EVENT_MAPPING_SOURCE_IS_FROM_SUB_PAGE = Symbol(\n\t'DO_NOT_USE__eventMappingSourceIsFromSubPage',\n);\nexport const SYMBOL_ORIGINATING_ELEMENT_ID_FOR_CONTROLLER_OP = Symbol(\n\t'DO_NOT_USE__originatingElementIdThatTriggeredControllerOp',\n);\n\nexport const UXF_VIEWPORT_SCREEN_TAG = 'sn-uxf-viewport-screen';\n\nexport const UXF_INTERNAL_EVENT_META = '__uxfMetaInternalOnlyDoNotUse';\n\n/** Source action path for Dirty State Management on `action.payload.meta.uxfMeta` */\nexport const UXF_DIRTY_STATE_MANAGEMENT_SOURCE_ACTION_PATH =\n\t'UXF_DIRTY_STATE_MANAGEMENT_SOURCE_ACTION_PATH';\n\n/** Experience Data for Dirty State Management on `action.payload.meta.uxfMeta` */\nexport const UXF_DIRTY_STATE_MANAGEMENT_EXPERIENCE_DATA =\n\t'UXF_DIRTY_STATE_MANAGEMENT_EXPERIENCE_DATA';\n\n/** Dirty State Management action trail for actions that are handled and augmented in library-uxf */\nexport const UXF_DIRTY_STATE_MANAGEMENT_DISPATCHED_ACTION_TRAILS =\n\t'UXF_DIRTY_STATE_MANAGEMENT_DISPATCHED_ACTION_TRAILS';\n\nexport const UXF_DIRTY_STATE_MANAGER_LAST_CLIENT_SCRIPT_SOURCE_COMPONENT_ID =\n\t'UXF_DIRTY_STATE_MANAGER_LAST_CLIENT_SCRIPT_SOURCE_COMPONENT_ID';\n\nexport const FORM_CONTROLLER_MCP_SYS_ID = '67ee2538534501108135ddeeff7b121b';\nexport const LIST_CONTROLLER_MCP_SYS_ID = '1c65a308432021105571609dc7b8f2c7';\n\nexport const UXF_THEME_UPDATED = '__DO_NOT_USE__UXF_INTERNAL#THEME_UPDATED';\n\nexport const LAYOUT_VERSION_3_0_0 = '3.0.0';\nexport const LAYOUT_VERSION_3_1_0 = '3.1.0';\n\nexport const NOW_UXF_MODAL_VIEWPORT = 'now-uxf-modal-viewport';\n\nexport const NOW_UXF_TABSET = 'now-uxf-tab-set';\n\nexport const NOW_CONTEXTUAL_SIDEBAR = 'now-contextual-sidebar';\n\n// a collection of compontent tags that, when they are of\n// type \"VIEWPORT\", should not dispatch the UXF_VIEWPORT#RENDER_BY_ID\n// action when rendered. this is due to a race condition when attempting\n// to render a viewport that has not yet been initialized.\nexport const NOW_UXF_VIEWPORT_BLACKLIST = [\n\tNOW_UXF_MODAL_VIEWPORT,\n\tNOW_UXF_TABSET,\n];\n\nexport const PRESET = 'preset';\n\nexport const HANDLING_SCOPE = '__uxfInternalHandlingScope__DO_NOT_USE';\nexport const UXF_INTERNAL_HANDLING_SCOPE_SAFETY = Symbol(HANDLING_SCOPE);\n\nexport const UXF_INTERNAL_RELAY_BY_SCREEN_ACTION_TRANSFORMER = Symbol(\n\t'__uxfInternalRelayByScreenActionTransformer__DO_NOT_USE',\n);\n\nexport const UXF_INTERNAL_ACTION_ORIGINATE = Symbol(\n\t'__uxfInternalActionOriginate__DO_NOT_USE',\n);\n\nexport const GLIDE_FORM_DATABROKER = 'dc6e87a5232200100e4bc50947bf654b';\n\nexport const UXF_EXTENSION_POINT_SINGLE_CONTROLLER_DEPENDENCY_KEY =\n\t'controller';\n\nexport const MACROPONENT_VALUE_UPDATED = 'SN_UXF#MACROPONENT_VALUE_UPDATED';\n\nexport const DEFAULT_LANG_CODE = 'en';\nexport const USER_PREF_LANG_HEADER = 'Now-User-Pref-Lang-Code';\n\nexport const MACROPONENT_TIME_TO_IDLE_MEASUREMENT_REQUESTED =\n\t'MACROPONENT_TIME_TO_IDLE_MEASUREMENT_REQUESTED';\n\nexport const PERSIST_STATE_CONSTANTS = {\n\tACTION_PERSIST_STATE: 'PERSIST_STATE',\n\tSINK_URL: 'URL',\n\tPERSIST_STATE_KEY: '_',\n};\n\nexport const ATTR_PARENT_TAG = 'parent-tag';\nexport const ATTR_LAYOUT_TAG = 'layout-tag';\nexport const NOW_UXF_PAGE = 'now-uxf-page';\n\nexport const SCREEN_ACTION_TRANSFORMER = 'screen-action-transformer';\n\nexport const elementTypes = {\n\tVIEWPORT: 'VIEWPORT',\n\tREPEATER: 'REPEATER',\n\tCONDITIONAL: 'CONDITIONAL',\n\tCONTROLLER: 'CONTROLLER',\n\tCONTAINER_ELEMENT: 'CONTAINER_ELEMENT',\n\tCHILD_ELEMENT: 'CHILD_ELEMENT',\n};\n\nconst PRIORITY = 'priority';\nconst LAZY = 'lazy';\n\nexport const renderStrategy = {\n\tPRIORITY,\n\tLAZY,\n};\n\nexport const INJECTION_POINT_TARGET = 'INJECTION_POINT_TARGET';\nexport const INJECTION_POINT_SOURCE = 'INJECTION_POINT_SOURCE';\nexport const UTILITY_PANEL = 'utilityPanel';\nexport const HOISTED_CONTENT_SOURCE_RENDERED =\n\t'UXF_INTERNAL#HOISTED_CONTENT_SOURCE_RENDERED';\n\nexport const IS_PAGE_LEVEL_SHORTCUT_ACTION = 'isPageLevelShortcutAction';\n\nexport const SET_EMBEDDABLE_INSTANCE_PROPS =\n\t'UXF_INTERNAL#SET_EMBEDDABLE_INSTANCE_PROPS';\n\n// STRY61488463: This flag is used to allow a node to support the\n// injection of additional extension points.\nexport const CAN_EXTEND_PAGE_COLLECTION = 'canExtendPageCollection';\n\nexport const LIST_CONTROLLER_DA_WRAPPED_CLICKED =\n\t'LIST_CTRL#DA_WRAPPED_CLICKED';\n// STRY62006456: This set contains the actions that are allowed to be\n// emitted by the `api.emit` method even when they are part of the\n// dispatched events.\nexport const WHITE_LISTED_EMIT_ACTIONS = new Set([\n\tLIST_CONTROLLER_DA_WRAPPED_CLICKED,\n]);\n\nexport const NOW_MODE = 'now-mode';\nexport const nowModes = {\n\tACTIVE: 'active',\n\tSUSPEND: 'suspend',\n};\n\nexport const deviceTypes = {\n\tMOBILE: 'mobile',\n\tDESKTOP: 'desktop',\n\tTABLET: 'tablet',\n};\n\n// TODO - Move all constants from data-broker-runtime to here to clean up import paths\nexport const DB_ENGINE_EXEC_REST_URL = '/api/now/uxf/databroker/exec';\n","export default {\n\t\"--now-font-family\": {\n\t\t\"name\": \"fontFamily\",\n\t\t\"initial\": \"'Source Sans Pro', Arial, sans-serif\"\n\t},\n\t\"--now-font-size--lg\": {\n\t\t\"name\": \"fontSize.lg\",\n\t\t\"initial\": \"20px\"\n\t},\n\t\"--now-font-size--lg1\": {\n\t\t\"name\": \"fontSize.lg1\",\n\t\t\"initial\": \"24px\"\n\t},\n\t\"--now-font-size--lg2\": {\n\t\t\"name\": \"fontSize.lg2\",\n\t\t\"initial\": \"28px\"\n\t},\n\t\"--now-font-size--lg3\": {\n\t\t\"name\": \"fontSize.lg3\",\n\t\t\"initial\": \"32px\"\n\t},\n\t\"--now-font-size--md\": {\n\t\t\"name\": \"fontSize.md\",\n\t\t\"initial\": \"14px\"\n\t},\n\t\"--now-font-size--md1\": {\n\t\t\"name\": \"fontSize.md1\",\n\t\t\"initial\": \"16px\"\n\t},\n\t\"--now-font-size--md2\": {\n\t\t\"name\": \"fontSize.md2\",\n\t\t\"initial\": \"18px\"\n\t},\n\t\"--now-font-size--sm\": {\n\t\t\"name\": \"fontSize.sm\",\n\t\t\"initial\": \"12px\"\n\t},\n\t\"--now-font-size--xl\": {\n\t\t\"name\": \"fontSize.xl\",\n\t\t\"initial\": \"40px\"\n\t},\n\t\"--now-font-size--xl1\": {\n\t\t\"name\": \"fontSize.xl1\",\n\t\t\"initial\": \"48px\"\n\t},\n\t\"--now-font-size--xl2\": {\n\t\t\"name\": \"fontSize.xl2\",\n\t\t\"initial\": \"56px\"\n\t},\n\t\"--now-font-size--xl3\": {\n\t\t\"name\": \"fontSize.xl3\",\n\t\t\"initial\": \"64px\"\n\t},\n\t\"--now-font-size--xs\": {\n\t\t\"name\": \"fontSize.xs\",\n\t\t\"initial\": \"10px\"\n\t},\n\t\"$now-global-border-radius--lg\": {\n\t\t\"name\": \"global.borderRadius.lg\",\n\t\t\"initial\": \"8px\"\n\t},\n\t\"$now-global-border-radius--md\": {\n\t\t\"name\": \"global.borderRadius.md\",\n\t\t\"initial\": \"4px\"\n\t},\n\t\"$now-global-border-radius--sm\": {\n\t\t\"name\": \"global.borderRadius.sm\",\n\t\t\"initial\": \"2px\"\n\t},\n\t\"$now-global-drop-shadow--lg\": {\n\t\t\"name\": \"global.dropShadow.lg\",\n\t\t\"initial\": \"0 8px 12px 0 RGB(56, 56, 56, 0.25)\"\n\t},\n\t\"$now-global-drop-shadow--md\": {\n\t\t\"name\": \"global.dropShadow.md\",\n\t\t\"initial\": \"0 4px 8px 0 RGB(56, 56, 56, 0.25)\"\n\t},\n\t\"$now-global-drop-shadow--sm\": {\n\t\t\"name\": \"global.dropShadow.sm\",\n\t\t\"initial\": \"0 2px 4px 0 RGB(56, 56, 56, 0.25)\"\n\t},\n\t\"$now-global-drop-shadow--xl\": {\n\t\t\"name\": \"global.dropShadow.xl\",\n\t\t\"initial\": \"0 12px 16px 0 RGB(56, 56, 56, 0.25)\"\n\t},\n\t\"$now-global-drop-shadow--xxl\": {\n\t\t\"name\": \"global.dropShadow.xxl\",\n\t\t\"initial\": \"0 16px 24px 0 RGB(56, 56, 56, 0.25)\"\n\t},\n\t\"$now-global-font-size--lg\": {\n\t\t\"name\": \"global.fontSize.lg\",\n\t\t\"initial\": \"20px\"\n\t},\n\t\"$now-global-font-size--md\": {\n\t\t\"name\": \"global.fontSize.md\",\n\t\t\"initial\": \"16px\"\n\t},\n\t\"$now-global-font-size--sm\": {\n\t\t\"name\": \"global.fontSize.sm\",\n\t\t\"initial\": \"12px\"\n\t},\n\t\"$now-global-font-size--xl\": {\n\t\t\"name\": \"global.fontSize.xl\",\n\t\t\"initial\": \"24px\"\n\t},\n\t\"$now-global-font-size--xxl\": {\n\t\t\"name\": \"global.fontSize.xxl\",\n\t\t\"initial\": \"32px\"\n\t},\n\t\"$now-global-layer--modal\": {\n\t\t\"name\": \"global.layer.modal\",\n\t\t\"initial\": \"4000\"\n\t},\n\t\"$now-global-layer--nav\": {\n\t\t\"name\": \"global.layer.nav\",\n\t\t\"initial\": \"2000\"\n\t},\n\t\"$now-global-layer--notify\": {\n\t\t\"name\": \"global.layer.notify\",\n\t\t\"initial\": \"3000\"\n\t},\n\t\"$now-global-layer--temp\": {\n\t\t\"name\": \"global.layer.temp\",\n\t\t\"initial\": \"1000\"\n\t},\n\t\"$now-global-layer--tooltip\": {\n\t\t\"name\": \"global.layer.tooltip\",\n\t\t\"initial\": \"5000\"\n\t},\n\t\"$now-global-line-height\": {\n\t\t\"name\": \"global.lineHeight\",\n\t\t\"initial\": \"1.25\"\n\t},\n\t\"$now-global-line-height--sm\": {\n\t\t\"name\": \"global.lineHeightSm\",\n\t\t\"initial\": \"1.3333\"\n\t},\n\t\"$now-global-line-height-crop--after\": {\n\t\t\"name\": \"global.lineHeightCrop.after\",\n\t\t\"initial\": \"-0.125em\"\n\t},\n\t\"$now-global-line-height-crop--before\": {\n\t\t\"name\": \"global.lineHeightCrop.before\",\n\t\t\"initial\": \"-0.25em\"\n\t},\n\t\"$now-global-opacity--least\": {\n\t\t\"name\": \"global.opacity.least\",\n\t\t\"derived\": \"--now-opacity--least\"\n\t},\n\t\"$now-global-opacity--less\": {\n\t\t\"name\": \"global.opacity.less\",\n\t\t\"derived\": \"--now-opacity--less\"\n\t},\n\t\"$now-global-opacity--mid\": {\n\t\t\"name\": \"global.opacity.mid\",\n\t\t\"derived\": \"--now-opacity--mid\"\n\t},\n\t\"$now-global-opacity--more\": {\n\t\t\"name\": \"global.opacity.more\",\n\t\t\"derived\": \"--now-opacity--more\"\n\t},\n\t\"$now-global-opacity--most\": {\n\t\t\"name\": \"global.opacity.most\",\n\t\t\"derived\": \"--now-opacity--most\"\n\t},\n\t\"$now-global-scrollbar-width\": {\n\t\t\"name\": \"global.scrollbarWidth\",\n\t\t\"initial\": \"17px\"\n\t},\n\t\"$now-global-space--3xl\": {\n\t\t\"name\": \"global.space.3Xl\",\n\t\t\"initial\": \"40px\"\n\t},\n\t\"$now-global-space--lg\": {\n\t\t\"name\": \"global.space.lg\",\n\t\t\"initial\": \"16px\"\n\t},\n\t\"$now-global-space--md\": {\n\t\t\"name\": \"global.space.md\",\n\t\t\"initial\": \"12px\"\n\t},\n\t\"$now-global-space--sm\": {\n\t\t\"name\": \"global.space.sm\",\n\t\t\"initial\": \"8px\"\n\t},\n\t\"$now-global-space--xl\": {\n\t\t\"name\": \"global.space.xl\",\n\t\t\"initial\": \"24px\"\n\t},\n\t\"$now-global-space--xs\": {\n\t\t\"name\": \"global.space.xs\",\n\t\t\"initial\": \"4px\"\n\t},\n\t\"$now-global-space--xxl\": {\n\t\t\"name\": \"global.space.xxl\",\n\t\t\"initial\": \"32px\"\n\t},\n\t\"$now-global-space--xxs\": {\n\t\t\"name\": \"global.space.xxs\",\n\t\t\"initial\": \"2px\"\n\t},\n\t\"--now-line-height-crop--after\": {\n\t\t\"name\": \"lineHeightCrop.after\",\n\t\t\"initial\": \"-0.125em\"\n\t},\n\t\"--now-line-height-crop--before\": {\n\t\t\"name\": \"lineHeightCrop.before\",\n\t\t\"initial\": \"-0.25em\"\n\t},\n\t\"--now-motion--delay--long\": {\n\t\t\"name\": \"motion.delay.long\",\n\t\t\"initial\": \"150ms\"\n\t},\n\t\"--now-motion--delay--longer\": {\n\t\t\"name\": \"motion.delay.longer\",\n\t\t\"initial\": \"200ms\"\n\t},\n\t\"--now-motion--delay--longest\": {\n\t\t\"name\": \"motion.delay.longest\",\n\t\t\"initial\": \"250ms\"\n\t},\n\t\"--now-motion--delay--medium\": {\n\t\t\"name\": \"motion.delay.medium\",\n\t\t\"initial\": \"125ms\"\n\t},\n\t\"--now-motion--delay--short\": {\n\t\t\"name\": \"motion.delay.short\",\n\t\t\"initial\": \"100ms\"\n\t},\n\t\"--now-motion--delay--shorter\": {\n\t\t\"name\": \"motion.delay.shorter\",\n\t\t\"initial\": \"75ms\"\n\t},\n\t\"--now-motion--delay--shortest\": {\n\t\t\"name\": \"motion.delay.shortest\",\n\t\t\"initial\": \"50ms\"\n\t},\n\t\"--now-motion--duration--fast\": {\n\t\t\"name\": \"motion.duration.fast\",\n\t\t\"initial\": \"150ms\"\n\t},\n\t\"--now-motion--duration--faster\": {\n\t\t\"name\": \"motion.duration.faster\",\n\t\t\"initial\": \"100ms\"\n\t},\n\t\"--now-motion--duration--fastest\": {\n\t\t\"name\": \"motion.duration.fastest\",\n\t\t\"initial\": \"75ms\"\n\t},\n\t\"--now-motion--duration--normal\": {\n\t\t\"name\": \"motion.duration.normal\",\n\t\t\"initial\": \"200ms\"\n\t},\n\t\"--now-motion--duration--slow\": {\n\t\t\"name\": \"motion.duration.slow\",\n\t\t\"initial\": \"250ms\"\n\t},\n\t\"--now-motion--duration--slower\": {\n\t\t\"name\": \"motion.duration.slower\",\n\t\t\"initial\": \"300ms\"\n\t},\n\t\"--now-motion--duration--slowest\": {\n\t\t\"name\": \"motion.duration.slowest\",\n\t\t\"initial\": \"350ms\"\n\t},\n\t\"--now-motion--ease--bounce\": {\n\t\t\"name\": \"motion.ease.bounce\",\n\t\t\"initial\": \"cubic-bezier(0.25, 0, 0.09, 1.27)\"\n\t},\n\t\"--now-motion--ease--emotive-enter\": {\n\t\t\"name\": \"motion.ease.emotiveEnter\",\n\t\t\"initial\": \"cubic-bezier(0.04, 0.67, 0.37, 0.99)\"\n\t},\n\t\"--now-motion--ease--emotive-exit\": {\n\t\t\"name\": \"motion.ease.emotiveExit\",\n\t\t\"initial\": \"cubic-bezier(1, 0, 1, 1)\"\n\t},\n\t\"--now-motion--ease--emotive-standard\": {\n\t\t\"name\": \"motion.ease.emotiveStandard\",\n\t\t\"initial\": \"cubic-bezier(0.85, 0, 0.14, 1)\"\n\t},\n\t\"--now-motion--ease--focus-enter\": {\n\t\t\"name\": \"motion.ease.focusEnter\",\n\t\t\"initial\": \"cubic-bezier(0, 0, 0.6, 1)\"\n\t},\n\t\"--now-motion--ease--focus-exit\": {\n\t\t\"name\": \"motion.ease.focusExit\",\n\t\t\"initial\": \"cubic-bezier(0.4, 0, 1, 1)\"\n\t},\n\t\"--now-motion--ease--focus-standard\": {\n\t\t\"name\": \"motion.ease.focusStandard\",\n\t\t\"initial\": \"cubic-bezier(0.4, 0, 0.5, 1)\"\n\t},\n\t\"--now-motion--ease--guided-enter\": {\n\t\t\"name\": \"motion.ease.guidedEnter\",\n\t\t\"initial\": \"cubic-bezier(0.21, 0.64, 0.52, 1)\"\n\t},\n\t\"--now-motion--ease--guided-exit\": {\n\t\t\"name\": \"motion.ease.guidedExit\",\n\t\t\"initial\": \"cubic-bezier(0.71, 0.01, 1, 1)\"\n\t},\n\t\"--now-motion--ease--guided-standard\": {\n\t\t\"name\": \"motion.ease.guidedStandard\",\n\t\t\"initial\": \"cubic-bezier(0.72, 0, 0.25, 1)\"\n\t},\n\t\"--now-motion--ease--linear\": {\n\t\t\"name\": \"motion.ease.linear\",\n\t\t\"initial\": \"linear\"\n\t},\n\t\"--now-opacity--least\": {\n\t\t\"name\": \"opacity.least\",\n\t\t\"initial\": \"0.1\"\n\t},\n\t\"--now-opacity--less\": {\n\t\t\"name\": \"opacity.less\",\n\t\t\"initial\": \"0.25\"\n\t},\n\t\"--now-opacity--mid\": {\n\t\t\"name\": \"opacity.mid\",\n\t\t\"initial\": \"0.5\"\n\t},\n\t\"--now-opacity--more\": {\n\t\t\"name\": \"opacity.more\",\n\t\t\"initial\": \"0.65\"\n\t},\n\t\"--now-opacity--most\": {\n\t\t\"name\": \"opacity.most\",\n\t\t\"initial\": \"0.8\"\n\t},\n\t\"--now-space--lg\": {\n\t\t\"name\": \"space.lg\",\n\t\t\"initial\": \"20px\"\n\t},\n\t\"--now-space--lg1\": {\n\t\t\"name\": \"space.lg1\",\n\t\t\"initial\": \"22px\"\n\t},\n\t\"--now-space--lg2\": {\n\t\t\"name\": \"space.lg2\",\n\t\t\"initial\": \"24px\"\n\t},\n\t\"--now-space--lg3\": {\n\t\t\"name\": \"space.lg3\",\n\t\t\"initial\": \"26px\"\n\t},\n\t\"--now-space--lg4\": {\n\t\t\"name\": \"space.lg4\",\n\t\t\"initial\": \"28px\"\n\t},\n\t\"--now-space--lg5\": {\n\t\t\"name\": \"space.lg5\",\n\t\t\"initial\": \"30px\"\n\t},\n\t\"--now-space--lg6\": {\n\t\t\"name\": \"space.lg6\",\n\t\t\"initial\": \"32px\"\n\t},\n\t\"--now-space--lg7\": {\n\t\t\"name\": \"space.lg7\",\n\t\t\"initial\": \"34px\"\n\t},\n\t\"--now-space--lg8\": {\n\t\t\"name\": \"space.lg8\",\n\t\t\"initial\": \"36px\"\n\t},\n\t\"--now-space--lg9\": {\n\t\t\"name\": \"space.lg9\",\n\t\t\"initial\": \"38px\"\n\t},\n\t\"--now-space--md\": {\n\t\t\"name\": \"space.md\",\n\t\t\"initial\": \"14px\"\n\t},\n\t\"--now-space--md1\": {\n\t\t\"name\": \"space.md1\",\n\t\t\"initial\": \"16px\"\n\t},\n\t\"--now-space--md2\": {\n\t\t\"name\": \"space.md2\",\n\t\t\"initial\": \"18px\"\n\t},\n\t\"--now-space--sm\": {\n\t\t\"name\": \"space.sm\",\n\t\t\"initial\": \"8px\"\n\t},\n\t\"--now-space--sm1\": {\n\t\t\"name\": \"space.sm1\",\n\t\t\"initial\": \"10px\"\n\t},\n\t\"--now-space--sm2\": {\n\t\t\"name\": \"space.sm2\",\n\t\t\"initial\": \"12px\"\n\t},\n\t\"--now-space--xl\": {\n\t\t\"name\": \"space.xl\",\n\t\t\"initial\": \"40px\"\n\t},\n\t\"--now-space--xl1\": {\n\t\t\"name\": \"space.xl1\",\n\t\t\"initial\": \"42px\"\n\t},\n\t\"--now-space--xl2\": {\n\t\t\"name\": \"space.xl2\",\n\t\t\"initial\": \"44px\"\n\t},\n\t\"--now-space--xl3\": {\n\t\t\"name\": \"space.xl3\",\n\t\t\"initial\": \"46px\"\n\t},\n\t\"--now-space--xl4\": {\n\t\t\"name\": \"space.xl4\",\n\t\t\"initial\": \"48px\"\n\t},\n\t\"--now-space--xl5\": {\n\t\t\"name\": \"space.xl5\",\n\t\t\"initial\": \"50px\"\n\t},\n\t\"--now-space--xl6\": {\n\t\t\"name\": \"space.xl6\",\n\t\t\"initial\": \"52px\"\n\t},\n\t\"--now-space--xl7\": {\n\t\t\"name\": \"space.xl7\",\n\t\t\"initial\": \"54px\"\n\t},\n\t\"--now-space--xl8\": {\n\t\t\"name\": \"space.xl8\",\n\t\t\"initial\": \"56px\"\n\t},\n\t\"--now-space--xl9\": {\n\t\t\"name\": \"space.xl9\",\n\t\t\"initial\": \"58px\"\n\t},\n\t\"--now-space--xs\": {\n\t\t\"name\": \"space.xs\",\n\t\t\"initial\": \"4px\"\n\t},\n\t\"--now-space--xs1\": {\n\t\t\"name\": \"space.xs1\",\n\t\t\"initial\": \"6px\"\n\t},\n\t\"--now-space--xxl\": {\n\t\t\"name\": \"space.xxl\",\n\t\t\"initial\": \"60px\"\n\t},\n\t\"--now-space--xxl1\": {\n\t\t\"name\": \"space.xxl1\",\n\t\t\"initial\": \"62px\"\n\t},\n\t\"--now-space--xxl2\": {\n\t\t\"name\": \"space.xxl2\",\n\t\t\"initial\": \"64px\"\n\t},\n\t\"--now-space--xxl3\": {\n\t\t\"name\": \"space.xxl3\",\n\t\t\"initial\": \"66px\"\n\t},\n\t\"--now-space--xxl4\": {\n\t\t\"name\": \"space.xxl4\",\n\t\t\"initial\": \"68px\"\n\t},\n\t\"--now-space--xxl5\": {\n\t\t\"name\": \"space.xxl5\",\n\t\t\"initial\": \"70px\"\n\t},\n\t\"--now-space--xxl6\": {\n\t\t\"name\": \"space.xxl6\",\n\t\t\"initial\": \"72px\"\n\t},\n\t\"--now-space--xxl7\": {\n\t\t\"name\": \"space.xxl7\",\n\t\t\"initial\": \"74px\"\n\t},\n\t\"--now-space--xxl8\": {\n\t\t\"name\": \"space.xxl8\",\n\t\t\"initial\": \"76px\"\n\t},\n\t\"--now-space--xxl9\": {\n\t\t\"name\": \"space.xxl9\",\n\t\t\"initial\": \"78px\"\n\t},\n\t\"--now-space--xxs\": {\n\t\t\"name\": \"space.xxs\",\n\t\t\"initial\": \"2px\"\n\t}\n}","export default {\n\t\"--now-color_alert--critical-0\": {\n\t\t\"name\": \"color.alert.critical0\",\n\t\t\"initial\": \"241,206,205\"\n\t},\n\t\"--now-color_alert--critical-1\": {\n\t\t\"name\": \"color.alert.critical1\",\n\t\t\"initial\": \"221,133,129\"\n\t},\n\t\"--now-color_alert--critical-2\": {\n\t\t\"name\": \"color.alert.critical2\",\n\t\t\"initial\": \"200,60,54\"\n\t},\n\t\"--now-color_alert--critical-3\": {\n\t\t\"name\": \"color.alert.critical3\",\n\t\t\"initial\": \"160,48,43\"\n\t},\n\t\"--now-color_alert--critical-4\": {\n\t\t\"name\": \"color.alert.critical4\",\n\t\t\"initial\": \"120,36,32\"\n\t},\n\t\"--now-color_alert--critical-5\": {\n\t\t\"name\": \"color.alert.critical5\",\n\t\t\"initial\": \"80,24,22\"\n\t},\n\t\"--now-color_alert--high-0\": {\n\t\t\"name\": \"color.alert.high0\",\n\t\t\"initial\": \"247,228,200\"\n\t},\n\t\"--now-color_alert--high-1\": {\n\t\t\"name\": \"color.alert.high1\",\n\t\t\"initial\": \"234,186,117\"\n\t},\n\t\"--now-color_alert--high-2\": {\n\t\t\"name\": \"color.alert.high2\",\n\t\t\"initial\": \"221,145,34\"\n\t},\n\t\"--now-color_alert--high-3\": {\n\t\t\"name\": \"color.alert.high3\",\n\t\t\"initial\": \"177,116,27\"\n\t},\n\t\"--now-color_alert--high-4\": {\n\t\t\"name\": \"color.alert.high4\",\n\t\t\"initial\": \"133,87,20\"\n\t},\n\t\"--now-color_alert--high-5\": {\n\t\t\"name\": \"color.alert.high5\",\n\t\t\"initial\": \"88,58,14\"\n\t},\n\t\"--now-color_alert--info-0\": {\n\t\t\"name\": \"color.alert.info0\",\n\t\t\"initial\": \"195,221,240\"\n\t},\n\t\"--now-color_alert--info-1\": {\n\t\t\"name\": \"color.alert.info1\",\n\t\t\"initial\": \"104,171,218\"\n\t},\n\t\"--now-color_alert--info-2\": {\n\t\t\"name\": \"color.alert.info2\",\n\t\t\"initial\": \"14,120,196\"\n\t},\n\t\"--now-color_alert--info-3\": {\n\t\t\"name\": \"color.alert.info3\",\n\t\t\"initial\": \"11,96,157\"\n\t},\n\t\"--now-color_alert--info-4\": {\n\t\t\"name\": \"color.alert.info4\",\n\t\t\"initial\": \"8,72,118\"\n\t},\n\t\"--now-color_alert--info-5\": {\n\t\t\"name\": \"color.alert.info5\",\n\t\t\"initial\": \"6,48,78\"\n\t},\n\t\"--now-color_alert--low-0\": {\n\t\t\"name\": \"color.alert.low0\",\n\t\t\"initial\": \"217,217,217\"\n\t},\n\t\"--now-color_alert--low-1\": {\n\t\t\"name\": \"color.alert.low1\",\n\t\t\"initial\": \"159,159,159\"\n\t},\n\t\"--now-color_alert--low-2\": {\n\t\t\"name\": \"color.alert.low2\",\n\t\t\"initial\": \"102,102,102\"\n\t},\n\t\"--now-color_alert--low-3\": {\n\t\t\"name\": \"color.alert.low3\",\n\t\t\"initial\": \"82,82,82\"\n\t},\n\t\"--now-color_alert--low-4\": {\n\t\t\"name\": \"color.alert.low4\",\n\t\t\"initial\": \"61,61,61\"\n\t},\n\t\"--now-color_alert--low-5\": {\n\t\t\"name\": \"color.alert.low5\",\n\t\t\"initial\": \"41,41,41\"\n\t},\n\t\"--now-color_alert--moderate-0\": {\n\t\t\"name\": \"color.alert.moderate0\",\n\t\t\"initial\": \"212,213,243\"\n\t},\n\t\"--now-color_alert--moderate-1\": {\n\t\t\"name\": \"color.alert.moderate1\",\n\t\t\"initial\": \"148,149,225\"\n\t},\n\t\"--now-color_alert--moderate-2\": {\n\t\t\"name\": \"color.alert.moderate2\",\n\t\t\"initial\": \"84,86,207\"\n\t},\n\t\"--now-color_alert--moderate-3\": {\n\t\t\"name\": \"color.alert.moderate3\",\n\t\t\"initial\": \"67,69,166\"\n\t},\n\t\"--now-color_alert--moderate-4\": {\n\t\t\"name\": \"color.alert.moderate4\",\n\t\t\"initial\": \"50,52,124\"\n\t},\n\t\"--now-color_alert--moderate-5\": {\n\t\t\"name\": \"color.alert.moderate5\",\n\t\t\"initial\": \"34,34,83\"\n\t},\n\t\"--now-color_alert--positive-0\": {\n\t\t\"name\": \"color.alert.positive0\",\n\t\t\"initial\": \"201,224,202\"\n\t},\n\t\"--now-color_alert--positive-1\": {\n\t\t\"name\": \"color.alert.positive1\",\n\t\t\"initial\": \"119,178,123\"\n\t},\n\t\"--now-color_alert--positive-2\": {\n\t\t\"name\": \"color.alert.positive2\",\n\t\t\"initial\": \"37,131,43\"\n\t},\n\t\"--now-color_alert--positive-3\": {\n\t\t\"name\": \"color.alert.positive3\",\n\t\t\"initial\": \"30,105,34\"\n\t},\n\t\"--now-color_alert--positive-4\": {\n\t\t\"name\": \"color.alert.positive4\",\n\t\t\"initial\": \"22,79,26\"\n\t},\n\t\"--now-color_alert--positive-5\": {\n\t\t\"name\": \"color.alert.positive5\",\n\t\t\"initial\": \"15,52,17\"\n\t},\n\t\"--now-color_alert--warning-0\": {\n\t\t\"name\": \"color.alert.warning0\",\n\t\t\"initial\": \"244,240,191\"\n\t},\n\t\"--now-color_alert--warning-1\": {\n\t\t\"name\": \"color.alert.warning1\",\n\t\t\"initial\": \"227,218,96\"\n\t},\n\t\"--now-color_alert--warning-2\": {\n\t\t\"name\": \"color.alert.warning2\",\n\t\t\"initial\": \"210,195,0\"\n\t},\n\t\"--now-color_alert--warning-3\": {\n\t\t\"name\": \"color.alert.warning3\",\n\t\t\"initial\": \"198,185,22\"\n\t},\n\t\"--now-color_alert--warning-4\": {\n\t\t\"name\": \"color.alert.warning4\",\n\t\t\"initial\": \"149,139,17\"\n\t},\n\t\"--now-color_alert--warning-5\": {\n\t\t\"name\": \"color.alert.warning5\",\n\t\t\"initial\": \"99,92,11\"\n\t},\n\t\"--now-color_background--neutral-1\": {\n\t\t\"name\": \"color.background.neutral1\",\n\t\t\"initial\": \"252,253,253\"\n\t},\n\t\"--now-color_background--neutral-2\": {\n\t\t\"name\": \"color.background.neutral2\",\n\t\t\"initial\": \"248,251,252\"\n\t},\n\t\"--now-color_background--neutral-3\": {\n\t\t\"name\": \"color.background.neutral3\",\n\t\t\"initial\": \"245,249,250\"\n\t},\n\t\"--now-color_background--neutral-4\": {\n\t\t\"name\": \"color.background.neutral4\",\n\t\t\"initial\": \"238,245,247\"\n\t},\n\t\"--now-color_background--neutral-5\": {\n\t\t\"name\": \"color.background.neutral5\",\n\t\t\"initial\": \"234,242,245\"\n\t},\n\t\"--now-color_background--neutral-6\": {\n\t\t\"name\": \"color.background.neutral6\",\n\t\t\"initial\": \"231,240,243\"\n\t},\n\t\"--now-color_background--neutral-7\": {\n\t\t\"name\": \"color.background.neutral7\",\n\t\t\"initial\": \"227,235,238\"\n\t},\n\t\"--now-color_background--neutral-8\": {\n\t\t\"name\": \"color.background.neutral8\",\n\t\t\"initial\": \"223,233,236\"\n\t},\n\t\"--now-color_background--neutral-9\": {\n\t\t\"name\": \"color.background.neutral9\",\n\t\t\"initial\": \"221,231,235\"\n\t},\n\t\"--now-color_background--primary\": {\n\t\t\"name\": \"color.background.primary\",\n\t\t\"derived\": \"--now-color--neutral-0\"\n\t},\n\t\"--now-color_background--primary-actionable\": {\n\t\t\"name\": \"color.background.primaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-18\"\n\t},\n\t\"--now-color_background--secondary\": {\n\t\t\"name\": \"color.background.secondary\",\n\t\t\"derived\": \"--now-color--neutral-1\"\n\t},\n\t\"--now-color_background--secondary-actionable\": {\n\t\t\"name\": \"color.background.secondaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-15\"\n\t},\n\t\"--now-color_background--tertiary\": {\n\t\t\"name\": \"color.background.tertiary\",\n\t\t\"derived\": \"--now-color--neutral-2\"\n\t},\n\t\"--now-color_background--tertiary-actionable\": {\n\t\t\"name\": \"color.background.tertiaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-12\"\n\t},\n\t\"--now-color_border--primary\": {\n\t\t\"name\": \"color.border.primary\",\n\t\t\"derived\": \"--now-color--neutral-7\"\n\t},\n\t\"--now-color_border--primary-actionable\": {\n\t\t\"name\": \"color.border.primaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-18\"\n\t},\n\t\"--now-color_border--secondary\": {\n\t\t\"name\": \"color.border.secondary\",\n\t\t\"derived\": \"--now-color--neutral-5\"\n\t},\n\t\"--now-color_border--secondary-actionable\": {\n\t\t\"name\": \"color.border.secondaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-15\"\n\t},\n\t\"--now-color_border--tertiary\": {\n\t\t\"name\": \"color.border.tertiary\",\n\t\t\"derived\": \"--now-color--neutral-3\"\n\t},\n\t\"--now-color_border--tertiary-actionable\": {\n\t\t\"name\": \"color.border.tertiaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-12\"\n\t},\n\t\"--now-color_brand--neutral\": {\n\t\t\"name\": \"color.brand.neutral\",\n\t\t\"initial\": \"255,255,255\"\n\t},\n\t\"--now-color_brand--primary\": {\n\t\t\"name\": \"color.brand.primary\",\n\t\t\"initial\": \"41,62,64\"\n\t},\n\t\"--now-color_brand--secondary\": {\n\t\t\"name\": \"color.brand.secondary\",\n\t\t\"initial\": \"129,181,161\"\n\t},\n\t\"--now-color_chrome--brand-0\": {\n\t\t\"name\": \"color.chrome.brand0\",\n\t\t\"initial\": \"223,226,226\"\n\t},\n\t\"--now-color_chrome--brand-1\": {\n\t\t\"name\": \"color.chrome.brand1\",\n\t\t\"initial\": \"187,194,194\"\n\t},\n\t\"--now-color_chrome--brand-10\": {\n\t\t\"name\": \"color.chrome.brand10\",\n\t\t\"initial\": \"21,32,32\"\n\t},\n\t\"--now-color_chrome--brand-2\": {\n\t\t\"name\": \"color.chrome.brand2\",\n\t\t\"initial\": \"150,161,161\"\n\t},\n\t\"--now-color_chrome--brand-3\": {\n\t\t\"name\": \"color.chrome.brand3\",\n\t\t\"initial\": \"114,128,129\"\n\t},\n\t\"--now-color_chrome--brand-4\": {\n\t\t\"name\": \"color.chrome.brand4\",\n\t\t\"initial\": \"77,96,97\"\n\t},\n\t\"--now-color_chrome--brand-5\": {\n\t\t\"name\": \"color.chrome.brand5\",\n\t\t\"initial\": \"41,63,64\"\n\t},\n\t\"--now-color_chrome--brand-6\": {\n\t\t\"name\": \"color.chrome.brand6\",\n\t\t\"initial\": \"37,57,58\"\n\t},\n\t\"--now-color_chrome--brand-7\": {\n\t\t\"name\": \"color.chrome.brand7\",\n\t\t\"initial\": \"33,50,51\"\n\t},\n\t\"--now-color_chrome--brand-8\": {\n\t\t\"name\": \"color.chrome.brand8\",\n\t\t\"initial\": \"29,44,45\"\n\t},\n\t\"--now-color_chrome--brand-9\": {\n\t\t\"name\": \"color.chrome.brand9\",\n\t\t\"initial\": \"25,38,38\"\n\t},\n\t\"--now-color_chrome--divider-0\": {\n\t\t\"name\": \"color.chrome.divider0\",\n\t\t\"initial\": \"169,178,179\"\n\t},\n\t\"--now-color_chrome--divider-1\": {\n\t\t\"name\": \"color.chrome.divider1\",\n\t\t\"initial\": \"144,155,156\"\n\t},\n\t\"--now-color_chrome--divider-10\": {\n\t\t\"name\": \"color.chrome.divider10\",\n\t\t\"initial\": \"8,13,13\"\n\t},\n\t\"--now-color_chrome--divider-2\": {\n\t\t\"name\": \"color.chrome.divider2\",\n\t\t\"initial\": \"118,132,133\"\n\t},\n\t\"--now-color_chrome--divider-3\": {\n\t\t\"name\": \"color.chrome.divider3\",\n\t\t\"initial\": \"92,109,110\"\n\t},\n\t\"--now-color_chrome--divider-4\": {\n\t\t\"name\": \"color.chrome.divider4\",\n\t\t\"initial\": \"67,86,87\"\n\t},\n\t\"--now-color_chrome--divider-5\": {\n\t\t\"name\": \"color.chrome.divider5\",\n\t\t\"initial\": \"36,55,56\"\n\t},\n\t\"--now-color_chrome--divider-6\": {\n\t\t\"name\": \"color.chrome.divider6\",\n\t\t\"initial\": \"30,46,47\"\n\t},\n\t\"--now-color_chrome--divider-7\": {\n\t\t\"name\": \"color.chrome.divider7\",\n\t\t\"initial\": \"25,38,38\"\n\t},\n\t\"--now-color_chrome--divider-8\": {\n\t\t\"name\": \"color.chrome.divider8\",\n\t\t\"initial\": \"19,29,30\"\n\t},\n\t\"--now-color_chrome--divider-9\": {\n\t\t\"name\": \"color.chrome.divider9\",\n\t\t\"initial\": \"14,21,21\"\n\t},\n\t\"--now-color_divider--primary\": {\n\t\t\"name\": \"color.divider.primary\",\n\t\t\"derived\": \"--now-color--neutral-7\"\n\t},\n\t\"--now-color_divider--secondary\": {\n\t\t\"name\": \"color.divider.secondary\",\n\t\t\"derived\": \"--now-color--neutral-5\"\n\t},\n\t\"--now-color_divider--tertiary\": {\n\t\t\"name\": \"color.divider.tertiary\",\n\t\t\"derived\": \"--now-color--neutral-3\"\n\t},\n\t\"--now-color_focus-ring\": {\n\t\t\"name\": \"color.focusRing\",\n\t\t\"derived\": \"--now-color--secondary-1\"\n\t},\n\t\"--now-color_focus-ring_shadow\": {\n\t\t\"name\": \"color.focusRing.shadow\",\n\t\t\"derived\": \"--now-color_background--primary\"\n\t},\n\t\"--now-color_grouped--blue-0\": {\n\t\t\"name\": \"color.grouped.blue0\",\n\t\t\"initial\": \"215,231,240\"\n\t},\n\t\"--now-color_grouped--blue-1\": {\n\t\t\"name\": \"color.grouped.blue1\",\n\t\t\"initial\": \"167,204,222\"\n\t},\n\t\"--now-color_grouped--blue-2\": {\n\t\t\"name\": \"color.grouped.blue2\",\n\t\t\"initial\": \"120,176,204\"\n\t},\n\t\"--now-color_grouped--blue-3\": {\n\t\t\"name\": \"color.grouped.blue3\",\n\t\t\"initial\": \"102,150,173\"\n\t},\n\t\"--now-color_grouped--blue-4\": {\n\t\t\"name\": \"color.grouped.blue4\",\n\t\t\"initial\": \"84,123,143\"\n\t},\n\t\"--now-color_grouped--blue-5\": {\n\t\t\"name\": \"color.grouped.blue5\",\n\t\t\"initial\": \"66,97,112\"\n\t},\n\t\"--now-color_grouped--brown-0\": {\n\t\t\"name\": \"color.grouped.brown0\",\n\t\t\"initial\": \"225,220,214\"\n\t},\n\t\"--now-color_grouped--brown-1\": {\n\t\t\"name\": \"color.grouped.brown1\",\n\t\t\"initial\": \"191,179,167\"\n\t},\n\t\"--now-color_grouped--brown-2\": {\n\t\t\"name\": \"color.grouped.brown2\",\n\t\t\"initial\": \"156,138,119\"\n\t},\n\t\"--now-color_grouped--brown-3\": {\n\t\t\"name\": \"color.grouped.brown3\",\n\t\t\"initial\": \"133,117,101\"\n\t},\n\t\"--now-color_grouped--brown-4\": {\n\t\t\"name\": \"color.grouped.brown4\",\n\t\t\"initial\": \"109,97,83\"\n\t},\n\t\"--now-color_grouped--brown-5\": {\n\t\t\"name\": \"color.grouped.brown5\",\n\t\t\"initial\": \"86,76,66\"\n\t},\n\t\"--now-color_grouped--gray-0\": {\n\t\t\"name\": \"color.grouped.gray0\",\n\t\t\"initial\": \"220,222,224\"\n\t},\n\t\"--now-color_grouped--gray-1\": {\n\t\t\"name\": \"color.grouped.gray1\",\n\t\t\"initial\": \"180,184,187\"\n\t},\n\t\"--now-color_grouped--gray-2\": {\n\t\t\"name\": \"color.grouped.gray2\",\n\t\t\"initial\": \"139,145,150\"\n\t},\n\t\"--now-color_grouped--gray-3\": {\n\t\t\"name\": \"color.grouped.gray3\",\n\t\t\"initial\": \"118,123,128\"\n\t},\n\t\"--now-color_grouped--gray-4\": {\n\t\t\"name\": \"color.grouped.gray4\",\n\t\t\"initial\": \"97,102,105\"\n\t},\n\t\"--now-color_grouped--gray-5\": {\n\t\t\"name\": \"color.grouped.gray5\",\n\t\t\"initial\": \"77,80,83\"\n\t},\n\t\"--now-color_grouped--green-0\": {\n\t\t\"name\": \"color.grouped.green0\",\n\t\t\"initial\": \"223,230,216\"\n\t},\n\t\"--now-color_grouped--green-1\": {\n\t\t\"name\": \"color.grouped.green1\",\n\t\t\"initial\": \"185,200,171\"\n\t},\n\t\"--now-color_grouped--green-2\": {\n\t\t\"name\": \"color.grouped.green2\",\n\t\t\"initial\": \"147,170,125\"\n\t},\n\t\"--now-color_grouped--green-3\": {\n\t\t\"name\": \"color.grouped.green3\",\n\t\t\"initial\": \"125,145,106\"\n\t},\n\t\"--now-color_grouped--green-4\": {\n\t\t\"name\": \"color.grouped.green4\",\n\t\t\"initial\": \"103,119,88\"\n\t},\n\t\"--now-color_grouped--green-5\": {\n\t\t\"name\": \"color.grouped.green5\",\n\t\t\"initial\": \"81,94,69\"\n\t},\n\t\"--now-color_grouped--green-yellow-0\": {\n\t\t\"name\": \"color.grouped.greenYellow0\",\n\t\t\"initial\": \"225,230,207\"\n\t},\n\t\"--now-color_grouped--green-yellow-1\": {\n\t\t\"name\": \"color.grouped.greenYellow1\",\n\t\t\"initial\": \"189,202,150\"\n\t},\n\t\"--now-color_grouped--green-yellow-2\": {\n\t\t\"name\": \"color.grouped.greenYellow2\",\n\t\t\"initial\": \"154,173,94\"\n\t},\n\t\"--now-color_grouped--green-yellow-3\": {\n\t\t\"name\": \"color.grouped.greenYellow3\",\n\t\t\"initial\": \"131,147,80\"\n\t},\n\t\"--now-color_grouped--green-yellow-4\": {\n\t\t\"name\": \"color.grouped.greenYellow4\",\n\t\t\"initial\": \"108,121,66\"\n\t},\n\t\"--now-color_grouped--green-yellow-5\": {\n\t\t\"name\": \"color.grouped.greenYellow5\",\n\t\t\"initial\": \"85,95,52\"\n\t},\n\t\"--now-color_grouped--magenta-0\": {\n\t\t\"name\": \"color.grouped.magenta0\",\n\t\t\"initial\": \"239,215,236\"\n\t},\n\t\"--now-color_grouped--magenta-1\": {\n\t\t\"name\": \"color.grouped.magenta1\",\n\t\t\"initial\": \"221,168,215\"\n\t},\n\t\"--now-color_grouped--magenta-2\": {\n\t\t\"name\": \"color.grouped.magenta2\",\n\t\t\"initial\": \"203,121,193\"\n\t},\n\t\"--now-color_grouped--magenta-3\": {\n\t\t\"name\": \"color.grouped.magenta3\",\n\t\t\"initial\": \"173,103,164\"\n\t},\n\t\"--now-color_grouped--magenta-4\": {\n\t\t\"name\": \"color.grouped.magenta4\",\n\t\t\"initial\": \"142,85,135\"\n\t},\n\t\"--now-color_grouped--magenta-5\": {\n\t\t\"name\": \"color.grouped.magenta5\",\n\t\t\"initial\": \"112,67,106\"\n\t},\n\t\"--now-color_grouped--orange-0\": {\n\t\t\"name\": \"color.grouped.orange0\",\n\t\t\"initial\": \"243,217,210\"\n\t},\n\t\"--now-color_grouped--orange-1\": {\n\t\t\"name\": \"color.grouped.orange1\",\n\t\t\"initial\": \"229,173,158\"\n\t},\n\t\"--now-color_grouped--orange-2\": {\n\t\t\"name\": \"color.grouped.orange2\",\n\t\t\"initial\": \"215,129,106\"\n\t},\n\t\"--now-color_grouped--orange-3\": {\n\t\t\"name\": \"color.grouped.orange3\",\n\t\t\"initial\": \"183,110,90\"\n\t},\n\t\"--now-color_grouped--orange-4\": {\n\t\t\"name\": \"color.grouped.orange4\",\n\t\t\"initial\": \"151,90,74\"\n\t},\n\t\"--now-color_grouped--orange-5\": {\n\t\t\"name\": \"color.grouped.orange5\",\n\t\t\"initial\": \"118,71,58\"\n\t},\n\t\"--now-color_grouped--pink-0\": {\n\t\t\"name\": \"color.grouped.pink0\",\n\t\t\"initial\": \"239,215,221\"\n\t},\n\t\"--now-color_grouped--pink-1\": {\n\t\t\"name\": \"color.grouped.pink1\",\n\t\t\"initial\": \"221,168,182\"\n\t},\n\t\"--now-color_grouped--pink-2\": {\n\t\t\"name\": \"color.grouped.pink2\",\n\t\t\"initial\": \"203,121,143\"\n\t},\n\t\"--now-color_grouped--pink-3\": {\n\t\t\"name\": \"color.grouped.pink3\",\n\t\t\"initial\": \"173,103,122\"\n\t},\n\t\"--now-color_grouped--pink-4\": {\n\t\t\"name\": \"color.grouped.pink4\",\n\t\t\"initial\": \"142,85,100\"\n\t},\n\t\"--now-color_grouped--pink-5\": {\n\t\t\"name\": \"color.grouped.pink5\",\n\t\t\"initial\": \"112,67,79\"\n\t},\n\t\"--now-color_grouped--purple-0\": {\n\t\t\"name\": \"color.grouped.purple0\",\n\t\t\"initial\": \"233,225,241\"\n\t},\n\t\"--now-color_grouped--purple-1\": {\n\t\t\"name\": \"color.grouped.purple1\",\n\t\t\"initial\": \"207,190,225\"\n\t},\n\t\"--now-color_grouped--purple-2\": {\n\t\t\"name\": \"color.grouped.purple2\",\n\t\t\"initial\": \"181,155,209\"\n\t},\n\t\"--now-color_grouped--purple-3\": {\n\t\t\"name\": \"color.grouped.purple3\",\n\t\t\"initial\": \"154,132,178\"\n\t},\n\t\"--now-color_grouped--purple-4\": {\n\t\t\"name\": \"color.grouped.purple4\",\n\t\t\"initial\": \"127,109,146\"\n\t},\n\t\"--now-color_grouped--purple-5\": {\n\t\t\"name\": \"color.grouped.purple5\",\n\t\t\"initial\": \"100,85,115\"\n\t},\n\t\"--now-color_grouped--teal-0\": {\n\t\t\"name\": \"color.grouped.teal0\",\n\t\t\"initial\": \"210,231,227\"\n\t},\n\t\"--now-color_grouped--teal-1\": {\n\t\t\"name\": \"color.grouped.teal1\",\n\t\t\"initial\": \"157,202,195\"\n\t},\n\t\"--now-color_grouped--teal-2\": {\n\t\t\"name\": \"color.grouped.teal2\",\n\t\t\"initial\": \"104,174,163\"\n\t},\n\t\"--now-color_grouped--teal-3\": {\n\t\t\"name\": \"color.grouped.teal3\",\n\t\t\"initial\": \"88,148,139\"\n\t},\n\t\"--now-color_grouped--teal-4\": {\n\t\t\"name\": \"color.grouped.teal4\",\n\t\t\"initial\": \"73,122,114\"\n\t},\n\t\"--now-color_grouped--teal-5\": {\n\t\t\"name\": \"color.grouped.teal5\",\n\t\t\"initial\": \"57,96,90\"\n\t},\n\t\"--now-color_grouped--yellow-0\": {\n\t\t\"name\": \"color.grouped.yellow0\",\n\t\t\"initial\": \"251,241,209\"\n\t},\n\t\"--now-color_grouped--yellow-1\": {\n\t\t\"name\": \"color.grouped.yellow1\",\n\t\t\"initial\": \"245,224,155\"\n\t},\n\t\"--now-color_grouped--yellow-2\": {\n\t\t\"name\": \"color.grouped.yellow2\",\n\t\t\"initial\": \"240,207,101\"\n\t},\n\t\"--now-color_grouped--yellow-3\": {\n\t\t\"name\": \"color.grouped.yellow3\",\n\t\t\"initial\": \"204,176,86\"\n\t},\n\t\"--now-color_grouped--yellow-4\": {\n\t\t\"name\": \"color.grouped.yellow4\",\n\t\t\"initial\": \"168,145,71\"\n\t},\n\t\"--now-color_grouped--yellow-5\": {\n\t\t\"name\": \"color.grouped.yellow5\",\n\t\t\"initial\": \"132,114,56\"\n\t},\n\t\"--now-color_presence--available\": {\n\t\t\"name\": \"color.presence.available\",\n\t\t\"initial\": \"75,166,107\"\n\t},\n\t\"--now-color_presence--away\": {\n\t\t\"name\": \"color.presence.away\",\n\t\t\"initial\": \"226,121,24\"\n\t},\n\t\"--now-color_presence--busy\": {\n\t\t\"name\": \"color.presence.busy\",\n\t\t\"initial\": \"234,60,16\"\n\t},\n\t\"--now-color_presence--offline\": {\n\t\t\"name\": \"color.presence.offline\",\n\t\t\"initial\": \"135,147,148\"\n\t},\n\t\"--now-color_selection--primary-0\": {\n\t\t\"name\": \"color.selection.primary0\",\n\t\t\"initial\": \"221,237,233\"\n\t},\n\t\"--now-color_selection--primary-1\": {\n\t\t\"name\": \"color.selection.primary1\",\n\t\t\"initial\": \"126,185,171\"\n\t},\n\t\"--now-color_selection--primary-2\": {\n\t\t\"name\": \"color.selection.primary2\",\n\t\t\"initial\": \"30,133,109\"\n\t},\n\t\"--now-color_selection--primary-3\": {\n\t\t\"name\": \"color.selection.primary3\",\n\t\t\"initial\": \"23,100,82\"\n\t},\n\t\"--now-color_selection--primary-4\": {\n\t\t\"name\": \"color.selection.primary4\",\n\t\t\"initial\": \"15,67,55\"\n\t},\n\t\"--now-color_selection--secondary-0\": {\n\t\t\"name\": \"color.selection.secondary0\",\n\t\t\"initial\": \"245,248,249\"\n\t},\n\t\"--now-color_selection--secondary-1\": {\n\t\t\"name\": \"color.selection.secondary1\",\n\t\t\"initial\": \"237,243,245\"\n\t},\n\t\"--now-color_selection--secondary-2\": {\n\t\t\"name\": \"color.selection.secondary2\",\n\t\t\"initial\": \"229,238,240\"\n\t},\n\t\"--now-color_selection--secondary-3\": {\n\t\t\"name\": \"color.selection.secondary3\",\n\t\t\"initial\": \"218,226,228\"\n\t},\n\t\"--now-color_selection--secondary-4\": {\n\t\t\"name\": \"color.selection.secondary4\",\n\t\t\"initial\": \"206,214,216\"\n\t},\n\t\"--now-color_surface--brand-1\": {\n\t\t\"name\": \"color.surface.brand1\",\n\t\t\"initial\": \"236,244,241\"\n\t},\n\t\"--now-color_surface--brand-2\": {\n\t\t\"name\": \"color.surface.brand2\",\n\t\t\"initial\": \"218,233,228\"\n\t},\n\t\"--now-color_surface--brand-3\": {\n\t\t\"name\": \"color.surface.brand3\",\n\t\t\"initial\": \"200,223,214\"\n\t},\n\t\"--now-color_surface--brand-4\": {\n\t\t\"name\": \"color.surface.brand4\",\n\t\t\"initial\": \"183,212,201\"\n\t},\n\t\"--now-color_surface--brand-5\": {\n\t\t\"name\": \"color.surface.brand5\",\n\t\t\"initial\": \"165,202,188\"\n\t},\n\t\"--now-color_surface--brand-6\": {\n\t\t\"name\": \"color.surface.brand6\",\n\t\t\"initial\": \"147,192,174\"\n\t},\n\t\"--now-color_surface--divider-1\": {\n\t\t\"name\": \"color.surface.divider1\",\n\t\t\"initial\": \"241,243,243\"\n\t},\n\t\"--now-color_surface--divider-2\": {\n\t\t\"name\": \"color.surface.divider2\",\n\t\t\"initial\": \"221,224,224\"\n\t},\n\t\"--now-color_surface--divider-3\": {\n\t\t\"name\": \"color.surface.divider3\",\n\t\t\"initial\": \"200,205,206\"\n\t},\n\t\"--now-color_surface--divider-4\": {\n\t\t\"name\": \"color.surface.divider4\",\n\t\t\"initial\": \"179,186,187\"\n\t},\n\t\"--now-color_surface--divider-5\": {\n\t\t\"name\": \"color.surface.divider5\",\n\t\t\"initial\": \"158,168,169\"\n\t},\n\t\"--now-color_surface--divider-6\": {\n\t\t\"name\": \"color.surface.divider6\",\n\t\t\"initial\": \"138,149,151\"\n\t},\n\t\"--now-color_surface--neutral-1\": {\n\t\t\"name\": \"color.surface.neutral1\",\n\t\t\"initial\": \"252,252,252\"\n\t},\n\t\"--now-color_surface--neutral-2\": {\n\t\t\"name\": \"color.surface.neutral2\",\n\t\t\"initial\": \"242,243,243\"\n\t},\n\t\"--now-color_surface--neutral-3\": {\n\t\t\"name\": \"color.surface.neutral3\",\n\t\t\"initial\": \"232,234,234\"\n\t},\n\t\"--now-color_surface--neutral-4\": {\n\t\t\"name\": \"color.surface.neutral4\",\n\t\t\"initial\": \"221,225,225\"\n\t},\n\t\"--now-color_surface--neutral-5\": {\n\t\t\"name\": \"color.surface.neutral5\",\n\t\t\"initial\": \"211,215,216\"\n\t},\n\t\"--now-color_surface--neutral-6\": {\n\t\t\"name\": \"color.surface.neutral6\",\n\t\t\"initial\": \"201,206,207\"\n\t},\n\t\"--now-color_text--primary\": {\n\t\t\"name\": \"color.text.primary\",\n\t\t\"derived\": \"--now-color--neutral-18\"\n\t},\n\t\"--now-color_text--primary-actionable\": {\n\t\t\"name\": \"color.text.primaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-0\"\n\t},\n\t\"--now-color_text--secondary\": {\n\t\t\"name\": \"color.text.secondary\",\n\t\t\"derived\": \"--now-color--neutral-15\"\n\t},\n\t\"--now-color_text--secondary-actionable\": {\n\t\t\"name\": \"color.text.secondaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-1\"\n\t},\n\t\"--now-color_text--tertiary\": {\n\t\t\"name\": \"color.text.tertiary\",\n\t\t\"derived\": \"--now-color--neutral-12\"\n\t},\n\t\"--now-color_text--tertiary-actionable\": {\n\t\t\"name\": \"color.text.tertiaryActionable\",\n\t\t\"derived\": \"--now-color--neutral-2\"\n\t},\n\t\"--now-color--blue-0\": {\n\t\t\"name\": \"color.blue0\",\n\t\t\"initial\": \"242,248,252\"\n\t},\n\t\"--now-color--blue-1\": {\n\t\t\"name\": \"color.blue1\",\n\t\t\"initial\": \"217,235,247\"\n\t},\n\t\"--now-color--blue-10\": {\n\t\t\"name\": \"color.blue10\",\n\t\t\"initial\": \"0,121,204\"\n\t},\n\t\"--now-color--blue-11\": {\n\t\t\"name\": \"color.blue11\",\n\t\t\"initial\": \"0,113,190\"\n\t},\n\t\"--now-color--blue-12\": {\n\t\t\"name\": \"color.blue12\",\n\t\t\"initial\": \"0,104,175\"\n\t},\n\t\"--now-color--blue-13\": {\n\t\t\"name\": \"color.blue13\",\n\t\t\"initial\": \"0,94,159\"\n\t},\n\t\"--now-color--blue-14\": {\n\t\t\"name\": \"color.blue14\",\n\t\t\"initial\": \"0,86,145\"\n\t},\n\t\"--now-color--blue-15\": {\n\t\t\"name\": \"color.blue15\",\n\t\t\"initial\": \"0,77,131\"\n\t},\n\t\"--now-color--blue-16\": {\n\t\t\"name\": \"color.blue16\",\n\t\t\"initial\": \"0,69,116\"\n\t},\n\t\"--now-color--blue-17\": {\n\t\t\"name\": \"color.blue17\",\n\t\t\"initial\": \"0,61,102\"\n\t},\n\t\"--now-color--blue-18\": {\n\t\t\"name\": \"color.blue18\",\n\t\t\"initial\": \"0,51,86\"\n\t},\n\t\"--now-color--blue-19\": {\n\t\t\"name\": \"color.blue19\",\n\t\t\"initial\": \"0,42,71\"\n\t},\n\t\"--now-color--blue-2\": {\n\t\t\"name\": \"color.blue2\",\n\t\t\"initial\": \"194,223,243\"\n\t},\n\t\"--now-color--blue-20\": {\n\t\t\"name\": \"color.blue20\",\n\t\t\"initial\": \"0,34,57\"\n\t},\n\t\"--now-color--blue-3\": {\n\t\t\"name\": \"color.blue3\",\n\t\t\"initial\": \"168,209,238\"\n\t},\n\t\"--now-color--blue-4\": {\n\t\t\"name\": \"color.blue4\",\n\t\t\"initial\": \"145,197,233\"\n\t},\n\t\"--now-color--blue-5\": {\n\t\t\"name\": \"color.blue5\",\n\t\t\"initial\": \"120,184,228\"\n\t},\n\t\"--now-color--blue-6\": {\n\t\t\"name\": \"color.blue6\",\n\t\t\"initial\": \"97,172,223\"\n\t},\n\t\"--now-color--blue-7\": {\n\t\t\"name\": \"color.blue7\",\n\t\t\"initial\": \"71,159,218\"\n\t},\n\t\"--now-color--blue-8\": {\n\t\t\"name\": \"color.blue8\",\n\t\t\"initial\": \"48,146,214\"\n\t},\n\t\"--now-color--blue-9\": {\n\t\t\"name\": \"color.blue9\",\n\t\t\"initial\": \"23,133,209\"\n\t},\n\t\"--now-color--brown-0\": {\n\t\t\"name\": \"color.brown0\",\n\t\t\"initial\": \"250,246,242\"\n\t},\n\t\"--now-color--brown-1\": {\n\t\t\"name\": \"color.brown1\",\n\t\t\"initial\": \"239,228,217\"\n\t},\n\t\"--now-color--brown-10\": {\n\t\t\"name\": \"color.brown10\",\n\t\t\"initial\": \"150,75,0\"\n\t},\n\t\"--now-color--brown-11\": {\n\t\t\"name\": \"color.brown11\",\n\t\t\"initial\": \"140,70,0\"\n\t},\n\t\"--now-color--brown-12\": {\n\t\t\"name\": \"color.brown12\",\n\t\t\"initial\": \"129,65,0\"\n\t},\n\t\"--now-color--brown-13\": {\n\t\t\"name\": \"color.brown13\",\n\t\t\"initial\": \"117,59,0\"\n\t},\n\t\"--now-color--brown-14\": {\n\t\t\"name\": \"color.brown14\",\n\t\t\"initial\": \"107,53,0\"\n\t},\n\t\"--now-color--brown-15\": {\n\t\t\"name\": \"color.brown15\",\n\t\t\"initial\": \"96,48,0\"\n\t},\n\t\"--now-color--brown-16\": {\n\t\t\"name\": \"color.brown16\",\n\t\t\"initial\": \"85,43,0\"\n\t},\n\t\"--now-color--brown-17\": {\n\t\t\"name\": \"color.brown17\",\n\t\t\"initial\": \"75,38,0\"\n\t},\n\t\"--now-color--brown-18\": {\n\t\t\"name\": \"color.brown18\",\n\t\t\"initial\": \"63,32,0\"\n\t},\n\t\"--now-color--brown-19\": {\n\t\t\"name\": \"color.brown19\",\n\t\t\"initial\": \"53,26,0\"\n\t},\n\t\"--now-color--brown-2\": {\n\t\t\"name\": \"color.brown2\",\n\t\t\"initial\": \"230,212,194\"\n\t},\n\t\"--now-color--brown-20\": {\n\t\t\"name\": \"color.brown20\",\n\t\t\"initial\": \"42,21,0\"\n\t},\n\t\"--now-color--brown-3\": {\n\t\t\"name\": \"color.brown3\",\n\t\t\"initial\": \"219,194,168\"\n\t},\n\t\"--now-color--brown-4\": {\n\t\t\"name\": \"color.brown4\",\n\t\t\"initial\": \"210,178,145\"\n\t},\n\t\"--now-color--brown-5\": {\n\t\t\"name\": \"color.brown5\",\n\t\t\"initial\": \"199,160,120\"\n\t},\n\t\"--now-color--brown-6\": {\n\t\t\"name\": \"color.brown6\",\n\t\t\"initial\": \"190,143,97\"\n\t},\n\t\"--now-color--brown-7\": {\n\t\t\"name\": \"color.brown7\",\n\t\t\"initial\": \"179,125,71\"\n\t},\n\t\"--now-color--brown-8\": {\n\t\t\"name\": \"color.brown8\",\n\t\t\"initial\": \"170,109,48\"\n\t},\n\t\"--now-color--brown-9\": {\n\t\t\"name\": \"color.brown9\",\n\t\t\"initial\": \"159,91,23\"\n\t},\n\t\"--now-color--focus-1\": {\n\t\t\"name\": \"color.focus1\",\n\t\t\"initial\": \"77,160,176\"\n\t},\n\t\"--now-color--focus-2\": {\n\t\t\"name\": \"color.focus2\",\n\t\t\"initial\": \"1,119,142\"\n\t},\n\t\"--now-color--focus-3\": {\n\t\t\"name\": \"color.focus3\",\n\t\t\"initial\": \"1,89,107\"\n\t},\n\t\"--now-color--gray-0\": {\n\t\t\"name\": \"color.gray0\",\n\t\t\"initial\": \"247,247,247\"\n\t},\n\t\"--now-color--gray-1\": {\n\t\t\"name\": \"color.gray1\",\n\t\t\"initial\": \"234,234,234\"\n\t},\n\t\"--now-color--gray-10\": {\n\t\t\"name\": \"color.gray10\",\n\t\t\"initial\": \"118,118,118\"\n\t},\n\t\"--now-color--gray-11\": {\n\t\t\"name\": \"color.gray11\",\n\t\t\"initial\": \"110,110,110\"\n\t},\n\t\"--now-color--gray-12\": {\n\t\t\"name\": \"color.gray12\",\n\t\t\"initial\": \"101,101,101\"\n\t},\n\t\"--now-color--gray-13\": {\n\t\t\"name\": \"color.gray13\",\n\t\t\"initial\": \"92,92,92\"\n\t},\n\t\"--now-color--gray-14\": {\n\t\t\"name\": \"color.gray14\",\n\t\t\"initial\": \"84,84,84\"\n\t},\n\t\"--now-color--gray-15\": {\n\t\t\"name\": \"color.gray15\",\n\t\t\"initial\": \"76,76,76\"\n\t},\n\t\"--now-color--gray-16\": {\n\t\t\"name\": \"color.gray16\",\n\t\t\"initial\": \"67,67,67\"\n\t},\n\t\"--now-color--gray-17\": {\n\t\t\"name\": \"color.gray17\",\n\t\t\"initial\": \"59,59,59\"\n\t},\n\t\"--now-color--gray-18\": {\n\t\t\"name\": \"color.gray18\",\n\t\t\"initial\": \"50,50,50\"\n\t},\n\t\"--now-color--gray-19\": {\n\t\t\"name\": \"color.gray19\",\n\t\t\"initial\": \"41,41,41\"\n\t},\n\t\"--now-color--gray-2\": {\n\t\t\"name\": \"color.gray2\",\n\t\t\"initial\": \"221,221,221\"\n\t},\n\t\"--now-color--gray-20\": {\n\t\t\"name\": \"color.gray20\",\n\t\t\"initial\": \"33,33,33\"\n\t},\n\t\"--now-color--gray-3\": {\n\t\t\"name\": \"color.gray3\",\n\t\t\"initial\": \"208,208,208\"\n\t},\n\t\"--now-color--gray-4\": {\n\t\t\"name\": \"color.gray4\",\n\t\t\"initial\": \"195,195,195\"\n\t},\n\t\"--now-color--gray-5\": {\n\t\t\"name\": \"color.gray5\",\n\t\t\"initial\": \"182,182,182\"\n\t},\n\t\"--now-color--gray-6\": {\n\t\t\"name\": \"color.gray6\",\n\t\t\"initial\": \"170,170,170\"\n\t},\n\t\"--now-color--gray-7\": {\n\t\t\"name\": \"color.gray7\",\n\t\t\"initial\": \"156,156,156\"\n\t},\n\t\"--now-color--gray-8\": {\n\t\t\"name\": \"color.gray8\",\n\t\t\"initial\": \"144,144,144\"\n\t},\n\t\"--now-color--gray-9\": {\n\t\t\"name\": \"color.gray9\",\n\t\t\"initial\": \"130,130,130\"\n\t},\n\t\"--now-color--green-0\": {\n\t\t\"name\": \"color.green0\",\n\t\t\"initial\": \"243,249,242\"\n\t},\n\t\"--now-color--green-1\": {\n\t\t\"name\": \"color.green1\",\n\t\t\"initial\": \"220,237,217\"\n\t},\n\t\"--now-color--green-10\": {\n\t\t\"name\": \"color.green10\",\n\t\t\"initial\": \"22,135,0\"\n\t},\n\t\"--now-color--green-11\": {\n\t\t\"name\": \"color.green11\",\n\t\t\"initial\": \"20,126,0\"\n\t},\n\t\"--now-color--green-12\": {\n\t\t\"name\": \"color.green12\",\n\t\t\"initial\": \"19,116,0\"\n\t},\n\t\"--now-color--green-13\": {\n\t\t\"name\": \"color.green13\",\n\t\t\"initial\": \"17,105,0\"\n\t},\n\t\"--now-color--green-14\": {\n\t\t\"name\": \"color.green14\",\n\t\t\"initial\": \"16,96,0\"\n\t},\n\t\"--now-color--green-15\": {\n\t\t\"name\": \"color.green15\",\n\t\t\"initial\": \"14,86,0\"\n\t},\n\t\"--now-color--green-16\": {\n\t\t\"name\": \"color.green16\",\n\t\t\"initial\": \"13,77,0\"\n\t},\n\t\"--now-color--green-17\": {\n\t\t\"name\": \"color.green17\",\n\t\t\"initial\": \"11,68,0\"\n\t},\n\t\"--now-color--green-18\": {\n\t\t\"name\": \"color.green18\",\n\t\t\"initial\": \"9,57,0\"\n\t},\n\t\"--now-color--green-19\": {\n\t\t\"name\": \"color.green19\",\n\t\t\"initial\": \"8,47,0\"\n\t},\n\t\"--now-color--green-2\": {\n\t\t\"name\": \"color.green2\",\n\t\t\"initial\": \"199,226,194\"\n\t},\n\t\"--now-color--green-20\": {\n\t\t\"name\": \"color.green20\",\n\t\t\"initial\": \"6,38,0\"\n\t},\n\t\"--now-color--green-3\": {\n\t\t\"name\": \"color.green3\",\n\t\t\"initial\": \"176,214,168\"\n\t},\n\t\"--now-color--green-4\": {\n\t\t\"name\": \"color.green4\",\n\t\t\"initial\": \"155,203,145\"\n\t},\n\t\"--now-color--green-5\": {\n\t\t\"name\": \"color.green5\",\n\t\t\"initial\": \"132,191,120\"\n\t},\n\t\"--now-color--green-6\": {\n\t\t\"name\": \"color.green6\",\n\t\t\"initial\": \"111,181,97\"\n\t},\n\t\"--now-color--green-7\": {\n\t\t\"name\": \"color.green7\",\n\t\t\"initial\": \"87,169,71\"\n\t},\n\t\"--now-color--green-8\": {\n\t\t\"name\": \"color.green8\",\n\t\t\"initial\": \"66,158,48\"\n\t},\n\t\"--now-color--green-9\": {\n\t\t\"name\": \"color.green9\",\n\t\t\"initial\": \"43,146,23\"\n\t},\n\t\"--now-color--green-yellow-0\": {\n\t\t\"name\": \"color.greenYellow0\",\n\t\t\"initial\": \"246,251,238\"\n\t},\n\t\"--now-color--green-yellow-1\": {\n\t\t\"name\": \"color.greenYellow1\",\n\t\t\"initial\": \"238,248,223\"\n\t},\n\t\"--now-color--green-yellow-10\": {\n\t\t\"name\": \"color.greenYellow10\",\n\t\t\"initial\": \"168,217,86\"\n\t},\n\t\"--now-color--green-yellow-11\": {\n\t\t\"name\": \"color.greenYellow11\",\n\t\t\"initial\": \"156,202,80\"\n\t},\n\t\"--now-color--green-yellow-12\": {\n\t\t\"name\": \"color.greenYellow12\",\n\t\t\"initial\": \"144,187,74\"\n\t},\n\t\"--now-color--green-yellow-13\": {\n\t\t\"name\": \"color.greenYellow13\",\n\t\t\"initial\": \"131,169,67\"\n\t},\n\t\"--now-color--green-yellow-14\": {\n\t\t\"name\": \"color.greenYellow14\",\n\t\t\"initial\": \"119,154,61\"\n\t},\n\t\"--now-color--green-yellow-15\": {\n\t\t\"name\": \"color.greenYellow15\",\n\t\t\"initial\": \"108,139,55\"\n\t},\n\t\"--now-color--green-yellow-16\": {\n\t\t\"name\": \"color.greenYellow16\",\n\t\t\"initial\": \"96,124,49\"\n\t},\n\t\"--now-color--green-yellow-17\": {\n\t\t\"name\": \"color.greenYellow17\",\n\t\t\"initial\": \"84,109,43\"\n\t},\n\t\"--now-color--green-yellow-18\": {\n\t\t\"name\": \"color.greenYellow18\",\n\t\t\"initial\": \"71,91,36\"\n\t},\n\t\"--now-color--green-yellow-19\": {\n\t\t\"name\": \"color.greenYellow19\",\n\t\t\"initial\": \"59,76,30\"\n\t},\n\t\"--now-color--green-yellow-2\": {\n\t\t\"name\": \"color.greenYellow2\",\n\t\t\"initial\": \"231,244,208\"\n\t},\n\t\"--now-color--green-yellow-20\": {\n\t\t\"name\": \"color.greenYellow20\",\n\t\t\"initial\": \"47,61,24\"\n\t},\n\t\"--now-color--green-yellow-3\": {\n\t\t\"name\": \"color.greenYellow3\",\n\t\t\"initial\": \"223,241,192\"\n\t},\n\t\"--now-color--green-yellow-4\": {\n\t\t\"name\": \"color.greenYellow4\",\n\t\t\"initial\": \"215,238,177\"\n\t},\n\t\"--now-color--green-yellow-5\": {\n\t\t\"name\": \"color.greenYellow5\",\n\t\t\"initial\": \"207,234,162\"\n\t},\n\t\"--now-color--green-yellow-6\": {\n\t\t\"name\": \"color.greenYellow6\",\n\t\t\"initial\": \"199,231,147\"\n\t},\n\t\"--now-color--green-yellow-7\": {\n\t\t\"name\": \"color.greenYellow7\",\n\t\t\"initial\": \"191,227,132\"\n\t},\n\t\"--now-color--green-yellow-8\": {\n\t\t\"name\": \"color.greenYellow8\",\n\t\t\"initial\": \"184,224,116\"\n\t},\n\t\"--now-color--green-yellow-9\": {\n\t\t\"name\": \"color.greenYellow9\",\n\t\t\"initial\": \"176,220,101\"\n\t},\n\t\"--now-color--interactive-0\": {\n\t\t\"name\": \"color.interactive0\",\n\t\t\"initial\": \"217,235,238\"\n\t},\n\t\"--now-color--interactive-1\": {\n\t\t\"name\": \"color.interactive1\",\n\t\t\"initial\": \"109,177,190\"\n\t},\n\t\"--now-color--interactive-2\": {\n\t\t\"name\": \"color.interactive2\",\n\t\t\"initial\": \"1,119,142\"\n\t},\n\t\"--now-color--interactive-3\": {\n\t\t\"name\": \"color.interactive3\",\n\t\t\"initial\": \"1,89,107\"\n\t},\n\t\"--now-color--interactive-4\": {\n\t\t\"name\": \"color.interactive4\",\n\t\t\"initial\": \"1,60,71\"\n\t},\n\t\"--now-color--link-1\": {\n\t\t\"name\": \"color.link1\",\n\t\t\"initial\": \"77,160,176\"\n\t},\n\t\"--now-color--link-2\": {\n\t\t\"name\": \"color.link2\",\n\t\t\"initial\": \"1,119,142\"\n\t},\n\t\"--now-color--link-3\": {\n\t\t\"name\": \"color.link3\",\n\t\t\"initial\": \"1,104,124\"\n\t},\n\t\"--now-color--link-4\": {\n\t\t\"name\": \"color.link4\",\n\t\t\"initial\": \"1,89,107\"\n\t},\n\t\"--now-color--magenta-0\": {\n\t\t\"name\": \"color.magenta0\",\n\t\t\"initial\": \"255,245,251\"\n\t},\n\t\"--now-color--magenta-1\": {\n\t\t\"name\": \"color.magenta1\",\n\t\t\"initial\": \"255,226,244\"\n\t},\n\t\"--now-color--magenta-10\": {\n\t\t\"name\": \"color.magenta10\",\n\t\t\"initial\": \"253,61,181\"\n\t},\n\t\"--now-color--magenta-11\": {\n\t\t\"name\": \"color.magenta11\",\n\t\t\"initial\": \"235,57,168\"\n\t},\n\t\"--now-color--magenta-12\": {\n\t\t\"name\": \"color.magenta12\",\n\t\t\"initial\": \"218,52,156\"\n\t},\n\t\"--now-color--magenta-13\": {\n\t\t\"name\": \"color.magenta13\",\n\t\t\"initial\": \"197,48,141\"\n\t},\n\t\"--now-color--magenta-14\": {\n\t\t\"name\": \"color.magenta14\",\n\t\t\"initial\": \"180,43,129\"\n\t},\n\t\"--now-color--magenta-15\": {\n\t\t\"name\": \"color.magenta15\",\n\t\t\"initial\": \"162,39,116\"\n\t},\n\t\"--now-color--magenta-16\": {\n\t\t\"name\": \"color.magenta16\",\n\t\t\"initial\": \"144,35,103\"\n\t},\n\t\"--now-color--magenta-17\": {\n\t\t\"name\": \"color.magenta17\",\n\t\t\"initial\": \"127,31,91\"\n\t},\n\t\"--now-color--magenta-18\": {\n\t\t\"name\": \"color.magenta18\",\n\t\t\"initial\": \"106,26,76\"\n\t},\n\t\"--now-color--magenta-19\": {\n\t\t\"name\": \"color.magenta19\",\n\t\t\"initial\": \"89,21,63\"\n\t},\n\t\"--now-color--magenta-2\": {\n\t\t\"name\": \"color.magenta2\",\n\t\t\"initial\": \"255,208,237\"\n\t},\n\t\"--now-color--magenta-20\": {\n\t\t\"name\": \"color.magenta20\",\n\t\t\"initial\": \"71,17,51\"\n\t},\n\t\"--now-color--magenta-3\": {\n\t\t\"name\": \"color.magenta3\",\n\t\t\"initial\": \"254,189,230\"\n\t},\n\t\"--now-color--magenta-4\": {\n\t\t\"name\": \"color.magenta4\",\n\t\t\"initial\": \"254,172,223\"\n\t},\n\t\"--now-color--magenta-5\": {\n\t\t\"name\": \"color.magenta5\",\n\t\t\"initial\": \"254,152,216\"\n\t},\n\t\"--now-color--magenta-6\": {\n\t\t\"name\": \"color.magenta6\",\n\t\t\"initial\": \"254,135,209\"\n\t},\n\t\"--now-color--magenta-7\": {\n\t\t\"name\": \"color.magenta7\",\n\t\t\"initial\": \"254,115,202\"\n\t},\n\t\"--now-color--magenta-8\": {\n\t\t\"name\": \"color.magenta8\",\n\t\t\"initial\": \"253,98,195\"\n\t},\n\t\"--now-color--magenta-9\": {\n\t\t\"name\": \"color.magenta9\",\n\t\t\"initial\": \"253,78,188\"\n\t},\n\t\"--now-color--neutral-0\": {\n\t\t\"name\": \"color.neutral0\",\n\t\t\"initial\": \"255,255,255\"\n\t},\n\t\"--now-color--neutral-1\": {\n\t\t\"name\": \"color.neutral1\",\n\t\t\"initial\": \"246,247,247\"\n\t},\n\t\"--now-color--neutral-10\": {\n\t\t\"name\": \"color.neutral10\",\n\t\t\"initial\": \"80,97,99\"\n\t},\n\t\"--now-color--neutral-11\": {\n\t\t\"name\": \"color.neutral11\",\n\t\t\"initial\": \"73,88,90\"\n\t},\n\t\"--now-color--neutral-12\": {\n\t\t\"name\": \"color.neutral12\",\n\t\t\"initial\": \"66,80,81\"\n\t},\n\t\"--now-color--neutral-13\": {\n\t\t\"name\": \"color.neutral13\",\n\t\t\"initial\": \"58,71,72\"\n\t},\n\t\"--now-color--neutral-14\": {\n\t\t\"name\": \"color.neutral14\",\n\t\t\"initial\": \"51,62,63\"\n\t},\n\t\"--now-color--neutral-15\": {\n\t\t\"name\": \"color.neutral15\",\n\t\t\"initial\": \"44,53,55\"\n\t},\n\t\"--now-color--neutral-16\": {\n\t\t\"name\": \"color.neutral16\",\n\t\t\"initial\": \"37,45,46\"\n\t},\n\t\"--now-color--neutral-17\": {\n\t\t\"name\": \"color.neutral17\",\n\t\t\"initial\": \"30,36,37\"\n\t},\n\t\"--now-color--neutral-18\": {\n\t\t\"name\": \"color.neutral18\",\n\t\t\"initial\": \"22,27,28\"\n\t},\n\t\"--now-color--neutral-19\": {\n\t\t\"name\": \"color.neutral19\",\n\t\t\"initial\": \"15,18,19\"\n\t},\n\t\"--now-color--neutral-2\": {\n\t\t\"name\": \"color.neutral2\",\n\t\t\"initial\": \"228,230,231\"\n\t},\n\t\"--now-color--neutral-20\": {\n\t\t\"name\": \"color.neutral20\",\n\t\t\"initial\": \"8,10,10\"\n\t},\n\t\"--now-color--neutral-21\": {\n\t\t\"name\": \"color.neutral21\",\n\t\t\"initial\": \"0,0,0\"\n\t},\n\t\"--now-color--neutral-3\": {\n\t\t\"name\": \"color.neutral3\",\n\t\t\"initial\": \"209,214,214\"\n\t},\n\t\"--now-color--neutral-4\": {\n\t\t\"name\": \"color.neutral4\",\n\t\t\"initial\": \"191,197,198\"\n\t},\n\t\"--now-color--neutral-5\": {\n\t\t\"name\": \"color.neutral5\",\n\t\t\"initial\": \"172,180,181\"\n\t},\n\t\"--now-color--neutral-6\": {\n\t\t\"name\": \"color.neutral6\",\n\t\t\"initial\": \"154,164,165\"\n\t},\n\t\"--now-color--neutral-7\": {\n\t\t\"name\": \"color.neutral7\",\n\t\t\"initial\": \"135,147,148\"\n\t},\n\t\"--now-color--neutral-8\": {\n\t\t\"name\": \"color.neutral8\",\n\t\t\"initial\": \"117,130,132\"\n\t},\n\t\"--now-color--neutral-9\": {\n\t\t\"name\": \"color.neutral9\",\n\t\t\"initial\": \"99,114,116\"\n\t},\n\t\"--now-color--neutral-less-0\": {\n\t\t\"name\": \"color.neutralLess0\",\n\t\t\"initial\": \"243,248,249\"\n\t},\n\t\"--now-color--neutral-less-1\": {\n\t\t\"name\": \"color.neutralLess1\",\n\t\t\"initial\": \"229,237,240\"\n\t},\n\t\"--now-color--neutral-less-10\": {\n\t\t\"name\": \"color.neutralLess10\",\n\t\t\"initial\": \"110,136,145\"\n\t},\n\t\"--now-color--neutral-less-11\": {\n\t\t\"name\": \"color.neutralLess11\",\n\t\t\"initial\": \"100,128,137\"\n\t},\n\t\"--now-color--neutral-less-12\": {\n\t\t\"name\": \"color.neutralLess12\",\n\t\t\"initial\": \"93,118,126\"\n\t},\n\t\"--now-color--neutral-less-13\": {\n\t\t\"name\": \"color.neutralLess13\",\n\t\t\"initial\": \"83,109,118\"\n\t},\n\t\"--now-color--neutral-less-14\": {\n\t\t\"name\": \"color.neutralLess14\",\n\t\t\"initial\": \"75,101,109\"\n\t},\n\t\"--now-color--neutral-less-15\": {\n\t\t\"name\": \"color.neutralLess15\",\n\t\t\"initial\": \"66,91,100\"\n\t},\n\t\"--now-color--neutral-less-16\": {\n\t\t\"name\": \"color.neutralLess16\",\n\t\t\"initial\": \"58,82,90\"\n\t},\n\t\"--now-color--neutral-less-17\": {\n\t\t\"name\": \"color.neutralLess17\",\n\t\t\"initial\": \"51,72,79\"\n\t},\n\t\"--now-color--neutral-less-18\": {\n\t\t\"name\": \"color.neutralLess18\",\n\t\t\"initial\": \"45,62,68\"\n\t},\n\t\"--now-color--neutral-less-19\": {\n\t\t\"name\": \"color.neutralLess19\",\n\t\t\"initial\": \"37,52,57\"\n\t},\n\t\"--now-color--neutral-less-2\": {\n\t\t\"name\": \"color.neutralLess2\",\n\t\t\"initial\": \"215,225,229\"\n\t},\n\t\"--now-color--neutral-less-20\": {\n\t\t\"name\": \"color.neutralLess20\",\n\t\t\"initial\": \"29,42,47\"\n\t},\n\t\"--now-color--neutral-less-3\": {\n\t\t\"name\": \"color.neutralLess3\",\n\t\t\"initial\": \"202,215,219\"\n\t},\n\t\"--now-color--neutral-less-4\": {\n\t\t\"name\": \"color.neutralLess4\",\n\t\t\"initial\": \"189,203,208\"\n\t},\n\t\"--now-color--neutral-less-5\": {\n\t\t\"name\": \"color.neutralLess5\",\n\t\t\"initial\": \"176,192,197\"\n\t},\n\t\"--now-color--neutral-less-6\": {\n\t\t\"name\": \"color.neutralLess6\",\n\t\t\"initial\": \"162,181,187\"\n\t},\n\t\"--now-color--neutral-less-7\": {\n\t\t\"name\": \"color.neutralLess7\",\n\t\t\"initial\": \"149,170,177\"\n\t},\n\t\"--now-color--neutral-less-8\": {\n\t\t\"name\": \"color.neutralLess8\",\n\t\t\"initial\": \"137,160,167\"\n\t},\n\t\"--now-color--neutral-less-9\": {\n\t\t\"name\": \"color.neutralLess9\",\n\t\t\"initial\": \"122,148,156\"\n\t},\n\t\"--now-color--neutral-mid-0\": {\n\t\t\"name\": \"color.neutralMid0\",\n\t\t\"initial\": \"238,244,247\"\n\t},\n\t\"--now-color--neutral-mid-1\": {\n\t\t\"name\": \"color.neutralMid1\",\n\t\t\"initial\": \"220,230,234\"\n\t},\n\t\"--now-color--neutral-mid-10\": {\n\t\t\"name\": \"color.neutralMid10\",\n\t\t\"initial\": \"86,110,118\"\n\t},\n\t\"--now-color--neutral-mid-11\": {\n\t\t\"name\": \"color.neutralMid11\",\n\t\t\"initial\": \"79,103,111\"\n\t},\n\t\"--now-color--neutral-mid-12\": {\n\t\t\"name\": \"color.neutralMid12\",\n\t\t\"initial\": \"70,93,101\"\n\t},\n\t\"--now-color--neutral-mid-13\": {\n\t\t\"name\": \"color.neutralMid13\",\n\t\t\"initial\": \"59,85,93\"\n\t},\n\t\"--now-color--neutral-mid-14\": {\n\t\t\"name\": \"color.neutralMid14\",\n\t\t\"initial\": \"51,75,83\"\n\t},\n\t\"--now-color--neutral-mid-15\": {\n\t\t\"name\": \"color.neutralMid15\",\n\t\t\"initial\": \"43,65,72\"\n\t},\n\t\"--now-color--neutral-mid-16\": {\n\t\t\"name\": \"color.neutralMid16\",\n\t\t\"initial\": \"35,55,61\"\n\t},\n\t\"--now-color--neutral-mid-17\": {\n\t\t\"name\": \"color.neutralMid17\",\n\t\t\"initial\": \"27,44,50\"\n\t},\n\t\"--now-color--neutral-mid-18\": {\n\t\t\"name\": \"color.neutralMid18\",\n\t\t\"initial\": \"19,34,39\"\n\t},\n\t\"--now-color--neutral-mid-19\": {\n\t\t\"name\": \"color.neutralMid19\",\n\t\t\"initial\": \"13,23,26\"\n\t},\n\t\"--now-color--neutral-mid-2\": {\n\t\t\"name\": \"color.neutralMid2\",\n\t\t\"initial\": \"203,216,221\"\n\t},\n\t\"--now-color--neutral-mid-20\": {\n\t\t\"name\": \"color.neutralMid20\",\n\t\t\"initial\": \"7,12,14\"\n\t},\n\t\"--now-color--neutral-mid-3\": {\n\t\t\"name\": \"color.neutralMid3\",\n\t\t\"initial\": \"183,199,205\"\n\t},\n\t\"--now-color--neutral-mid-4\": {\n\t\t\"name\": \"color.neutralMid4\",\n\t\t\"initial\": \"165,185,192\"\n\t},\n\t\"--now-color--neutral-mid-5\": {\n\t\t\"name\": \"color.neutralMid5\",\n\t\t\"initial\": \"151,173,180\"\n\t},\n\t\"--now-color--neutral-mid-6\": {\n\t\t\"name\": \"color.neutralMid6\",\n\t\t\"initial\": \"138,161,168\"\n\t},\n\t\"--now-color--neutral-mid-7\": {\n\t\t\"name\": \"color.neutralMid7\",\n\t\t\"initial\": \"123,149,157\"\n\t},\n\t\"--now-color--neutral-mid-8\": {\n\t\t\"name\": \"color.neutralMid8\",\n\t\t\"initial\": \"110,136,145\"\n\t},\n\t\"--now-color--neutral-mid-9\": {\n\t\t\"name\": \"color.neutralMid9\",\n\t\t\"initial\": \"98,123,132\"\n\t},\n\t\"--now-color--orange-0\": {\n\t\t\"name\": \"color.orange0\",\n\t\t\"initial\": \"255,248,235\"\n\t},\n\t\"--now-color--orange-1\": {\n\t\t\"name\": \"color.orange1\",\n\t\t\"initial\": \"255,240,212\"\n\t},\n\t\"--now-color--orange-10\": {\n\t\t\"name\": \"color.orange10\",\n\t\t\"initial\": \"255,165,0\"\n\t},\n\t\"--now-color--orange-11\": {\n\t\t\"name\": \"color.orange11\",\n\t\t\"initial\": \"237,153,0\"\n\t},\n\t\"--now-color--orange-12\": {\n\t\t\"name\": \"color.orange12\",\n\t\t\"initial\": \"219,142,0\"\n\t},\n\t\"--now-color--orange-13\": {\n\t\t\"name\": \"color.orange13\",\n\t\t\"initial\": \"199,129,0\"\n\t},\n\t\"--now-color--orange-14\": {\n\t\t\"name\": \"color.orange14\",\n\t\t\"initial\": \"181,117,0\"\n\t},\n\t\"--now-color--orange-15\": {\n\t\t\"name\": \"color.orange15\",\n\t\t\"initial\": \"163,106,0\"\n\t},\n\t\"--now-color--orange-16\": {\n\t\t\"name\": \"color.orange16\",\n\t\t\"initial\": \"145,94,0\"\n\t},\n\t\"--now-color--orange-17\": {\n\t\t\"name\": \"color.orange17\",\n\t\t\"initial\": \"128,83,0\"\n\t},\n\t\"--now-color--orange-18\": {\n\t\t\"name\": \"color.orange18\",\n\t\t\"initial\": \"107,69,0\"\n\t},\n\t\"--now-color--orange-19\": {\n\t\t\"name\": \"color.orange19\",\n\t\t\"initial\": \"89,58,0\"\n\t},\n\t\"--now-color--orange-2\": {\n\t\t\"name\": \"color.orange2\",\n\t\t\"initial\": \"255,232,189\"\n\t},\n\t\"--now-color--orange-20\": {\n\t\t\"name\": \"color.orange20\",\n\t\t\"initial\": \"71,46,0\"\n\t},\n\t\"--now-color--orange-3\": {\n\t\t\"name\": \"color.orange3\",\n\t\t\"initial\": \"255,223,163\"\n\t},\n\t\"--now-color--orange-4\": {\n\t\t\"name\": \"color.orange4\",\n\t\t\"initial\": \"255,215,140\"\n\t},\n\t\"--now-color--orange-5\": {\n\t\t\"name\": \"color.orange5\",\n\t\t\"initial\": \"255,206,117\"\n\t},\n\t\"--now-color--orange-6\": {\n\t\t\"name\": \"color.orange6\",\n\t\t\"initial\": \"255,198,94\"\n\t},\n\t\"--now-color--orange-7\": {\n\t\t\"name\": \"color.orange7\",\n\t\t\"initial\": \"255,190,71\"\n\t},\n\t\"--now-color--orange-8\": {\n\t\t\"name\": \"color.orange8\",\n\t\t\"initial\": \"255,181,46\"\n\t},\n\t\"--now-color--orange-9\": {\n\t\t\"name\": \"color.orange9\",\n\t\t\"initial\": \"255,173,23\"\n\t},\n\t\"--now-color--pink-0\": {\n\t\t\"name\": \"color.pink0\",\n\t\t\"initial\": \"255,249,250\"\n\t},\n\t\"--now-color--pink-1\": {\n\t\t\"name\": \"color.pink1\",\n\t\t\"initial\": \"255,238,241\"\n\t},\n\t\"--now-color--pink-10\": {\n\t\t\"name\": \"color.pink10\",\n\t\t\"initial\": \"255,141,161\"\n\t},\n\t\"--now-color--pink-11\": {\n\t\t\"name\": \"color.pink11\",\n\t\t\"initial\": \"237,131,150\"\n\t},\n\t\"--now-color--pink-12\": {\n\t\t\"name\": \"color.pink12\",\n\t\t\"initial\": \"219,121,138\"\n\t},\n\t\"--now-color--pink-13\": {\n\t\t\"name\": \"color.pink13\",\n\t\t\"initial\": \"199,110,126\"\n\t},\n\t\"--now-color--pink-14\": {\n\t\t\"name\": \"color.pink14\",\n\t\t\"initial\": \"181,100,114\"\n\t},\n\t\"--now-color--pink-15\": {\n\t\t\"name\": \"color.pink15\",\n\t\t\"initial\": \"163,90,103\"\n\t},\n\t\"--now-color--pink-16\": {\n\t\t\"name\": \"color.pink16\",\n\t\t\"initial\": \"145,80,92\"\n\t},\n\t\"--now-color--pink-17\": {\n\t\t\"name\": \"color.pink17\",\n\t\t\"initial\": \"128,71,81\"\n\t},\n\t\"--now-color--pink-18\": {\n\t\t\"name\": \"color.pink18\",\n\t\t\"initial\": \"107,59,68\"\n\t},\n\t\"--now-color--pink-19\": {\n\t\t\"name\": \"color.pink19\",\n\t\t\"initial\": \"89,49,56\"\n\t},\n\t\"--now-color--pink-2\": {\n\t\t\"name\": \"color.pink2\",\n\t\t\"initial\": \"255,228,232\"\n\t},\n\t\"--now-color--pink-20\": {\n\t\t\"name\": \"color.pink20\",\n\t\t\"initial\": \"71,39,45\"\n\t},\n\t\"--now-color--pink-3\": {\n\t\t\"name\": \"color.pink3\",\n\t\t\"initial\": \"255,216,223\"\n\t},\n\t\"--now-color--pink-4\": {\n\t\t\"name\": \"color.pink4\",\n\t\t\"initial\": \"255,206,215\"\n\t},\n\t\"--now-color--pink-5\": {\n\t\t\"name\": \"color.pink5\",\n\t\t\"initial\": \"255,195,205\"\n\t},\n\t\"--now-color--pink-6\": {\n\t\t\"name\": \"color.pink6\",\n\t\t\"initial\": \"255,184,197\"\n\t},\n\t\"--now-color--pink-7\": {\n\t\t\"name\": \"color.pink7\",\n\t\t\"initial\": \"255,173,187\"\n\t},\n\t\"--now-color--pink-8\": {\n\t\t\"name\": \"color.pink8\",\n\t\t\"initial\": \"255,163,179\"\n\t},\n\t\"--now-color--pink-9\": {\n\t\t\"name\": \"color.pink9\",\n\t\t\"initial\": \"255,151,169\"\n\t},\n\t\"--now-color--primary-0\": {\n\t\t\"name\": \"color.primary0\",\n\t\t\"initial\": \"221,237,233\"\n\t},\n\t\"--now-color--primary-1\": {\n\t\t\"name\": \"color.primary1\",\n\t\t\"initial\": \"30,133,109\"\n\t},\n\t\"--now-color--primary-2\": {\n\t\t\"name\": \"color.primary2\",\n\t\t\"initial\": \"23,100,82\"\n\t},\n\t\"--now-color--primary-3\": {\n\t\t\"name\": \"color.primary3\",\n\t\t\"initial\": \"15,67,55\"\n\t},\n\t\"--now-color--primary-brand-0\": {\n\t\t\"name\": \"color.primaryBrand0\",\n\t\t\"initial\": \"230,242,246\"\n\t},\n\t\"--now-color--primary-brand-1\": {\n\t\t\"name\": \"color.primaryBrand1\",\n\t\t\"initial\": \"207,231,238\"\n\t},\n\t\"--now-color--primary-brand-10\": {\n\t\t\"name\": \"color.primaryBrand10\",\n\t\t\"initial\": \"0,128,163\"\n\t},\n\t\"--now-color--primary-brand-11\": {\n\t\t\"name\": \"color.primaryBrand11\",\n\t\t\"initial\": \"0,120,153\"\n\t},\n\t\"--now-color--primary-brand-12\": {\n\t\t\"name\": \"color.primaryBrand12\",\n\t\t\"initial\": \"0,111,142\"\n\t},\n\t\"--now-color--primary-brand-13\": {\n\t\t\"name\": \"color.primaryBrand13\",\n\t\t\"initial\": \"0,104,132\"\n\t},\n\t\"--now-color--primary-brand-14\": {\n\t\t\"name\": \"color.primaryBrand14\",\n\t\t\"initial\": \"0,96,122\"\n\t},\n\t\"--now-color--primary-brand-15\": {\n\t\t\"name\": \"color.primaryBrand15\",\n\t\t\"initial\": \"0,88,112\"\n\t},\n\t\"--now-color--primary-brand-16\": {\n\t\t\"name\": \"color.primaryBrand16\",\n\t\t\"initial\": \"0,79,101\"\n\t},\n\t\"--now-color--primary-brand-17\": {\n\t\t\"name\": \"color.primaryBrand17\",\n\t\t\"initial\": \"0,72,91\"\n\t},\n\t\"--now-color--primary-brand-18\": {\n\t\t\"name\": \"color.primaryBrand18\",\n\t\t\"initial\": \"0,64,82\"\n\t},\n\t\"--now-color--primary-brand-19\": {\n\t\t\"name\": \"color.primaryBrand19\",\n\t\t\"initial\": \"0,55,70\"\n\t},\n\t\"--now-color--primary-brand-2\": {\n\t\t\"name\": \"color.primaryBrand2\",\n\t\t\"initial\": \"184,219,229\"\n\t},\n\t\"--now-color--primary-brand-20\": {\n\t\t\"name\": \"color.primaryBrand20\",\n\t\t\"initial\": \"0,47,60\"\n\t},\n\t\"--now-color--primary-brand-3\": {\n\t\t\"name\": \"color.primaryBrand3\",\n\t\t\"initial\": \"161,208,221\"\n\t},\n\t\"--now-color--primary-brand-4\": {\n\t\t\"name\": \"color.primaryBrand4\",\n\t\t\"initial\": \"138,197,213\"\n\t},\n\t\"--now-color--primary-brand-5\": {\n\t\t\"name\": \"color.primaryBrand5\",\n\t\t\"initial\": \"115,185,204\"\n\t},\n\t\"--now-color--primary-brand-6\": {\n\t\t\"name\": \"color.primaryBrand6\",\n\t\t\"initial\": \"92,174,196\"\n\t},\n\t\"--now-color--primary-brand-7\": {\n\t\t\"name\": \"color.primaryBrand7\",\n\t\t\"initial\": \"69,162,188\"\n\t},\n\t\"--now-color--primary-brand-8\": {\n\t\t\"name\": \"color.primaryBrand8\",\n\t\t\"initial\": \"46,151,180\"\n\t},\n\t\"--now-color--primary-brand-9\": {\n\t\t\"name\": \"color.primaryBrand9\",\n\t\t\"initial\": \"23,139,171\"\n\t},\n\t\"--now-color--purple-0\": {\n\t\t\"name\": \"color.purple0\",\n\t\t\"initial\": \"248,246,254\"\n\t},\n\t\"--now-color--purple-1\": {\n\t\t\"name\": \"color.purple1\",\n\t\t\"initial\": \"235,229,253\"\n\t},\n\t\"--now-color--purple-10\": {\n\t\t\"name\": \"color.purple10\",\n\t\t\"initial\": \"119,82,244\"\n\t},\n\t\"--now-color--purple-11\": {\n\t\t\"name\": \"color.purple11\",\n\t\t\"initial\": \"111,76,227\"\n\t},\n\t\"--now-color--purple-12\": {\n\t\t\"name\": \"color.purple12\",\n\t\t\"initial\": \"102,71,210\"\n\t},\n\t\"--now-color--purple-13\": {\n\t\t\"name\": \"color.purple13\",\n\t\t\"initial\": \"93,64,190\"\n\t},\n\t\"--now-color--purple-14\": {\n\t\t\"name\": \"color.purple14\",\n\t\t\"initial\": \"84,58,173\"\n\t},\n\t\"--now-color--purple-15\": {\n\t\t\"name\": \"color.purple15\",\n\t\t\"initial\": \"76,52,156\"\n\t},\n\t\"--now-color--purple-16\": {\n\t\t\"name\": \"color.purple16\",\n\t\t\"initial\": \"68,47,139\"\n\t},\n\t\"--now-color--purple-17\": {\n\t\t\"name\": \"color.purple17\",\n\t\t\"initial\": \"60,41,122\"\n\t},\n\t\"--now-color--purple-18\": {\n\t\t\"name\": \"color.purple18\",\n\t\t\"initial\": \"50,34,102\"\n\t},\n\t\"--now-color--purple-19\": {\n\t\t\"name\": \"color.purple19\",\n\t\t\"initial\": \"42,29,85\"\n\t},\n\t\"--now-color--purple-2\": {\n\t\t\"name\": \"color.purple2\",\n\t\t\"initial\": \"222,213,252\"\n\t},\n\t\"--now-color--purple-20\": {\n\t\t\"name\": \"color.purple20\",\n\t\t\"initial\": \"33,23,68\"\n\t},\n\t\"--now-color--purple-3\": {\n\t\t\"name\": \"color.purple3\",\n\t\t\"initial\": \"209,196,251\"\n\t},\n\t\"--now-color--purple-4\": {\n\t\t\"name\": \"color.purple4\",\n\t\t\"initial\": \"197,181,250\"\n\t},\n\t\"--now-color--purple-5\": {\n\t\t\"name\": \"color.purple5\",\n\t\t\"initial\": \"183,163,249\"\n\t},\n\t\"--now-color--purple-6\": {\n\t\t\"name\": \"color.purple6\",\n\t\t\"initial\": \"171,148,248\"\n\t},\n\t\"--now-color--purple-7\": {\n\t\t\"name\": \"color.purple7\",\n\t\t\"initial\": \"157,130,247\"\n\t},\n\t\"--now-color--purple-8\": {\n\t\t\"name\": \"color.purple8\",\n\t\t\"initial\": \"145,115,246\"\n\t},\n\t\"--now-color--purple-9\": {\n\t\t\"name\": \"color.purple9\",\n\t\t\"initial\": \"131,98,245\"\n\t},\n\t\"--now-color--red-0\": {\n\t\t\"name\": \"color.red0\",\n\t\t\"initial\": \"254,242,242\"\n\t},\n\t\"--now-color--red-1\": {\n\t\t\"name\": \"color.red1\",\n\t\t\"initial\": \"252,217,217\"\n\t},\n\t\"--now-color--red-10\": {\n\t\t\"name\": \"color.red10\",\n\t\t\"initial\": \"237,0,0\"\n\t},\n\t\"--now-color--red-11\": {\n\t\t\"name\": \"color.red11\",\n\t\t\"initial\": \"220,0,0\"\n\t},\n\t\"--now-color--red-12\": {\n\t\t\"name\": \"color.red12\",\n\t\t\"initial\": \"204,0,0\"\n\t},\n\t\"--now-color--red-13\": {\n\t\t\"name\": \"color.red13\",\n\t\t\"initial\": \"185,0,0\"\n\t},\n\t\"--now-color--red-14\": {\n\t\t\"name\": \"color.red14\",\n\t\t\"initial\": \"168,0,0\"\n\t},\n\t\"--now-color--red-15\": {\n\t\t\"name\": \"color.red15\",\n\t\t\"initial\": \"152,0,0\"\n\t},\n\t\"--now-color--red-16\": {\n\t\t\"name\": \"color.red16\",\n\t\t\"initial\": \"135,0,0\"\n\t},\n\t\"--now-color--red-17\": {\n\t\t\"name\": \"color.red17\",\n\t\t\"initial\": \"119,0,0\"\n\t},\n\t\"--now-color--red-18\": {\n\t\t\"name\": \"color.red18\",\n\t\t\"initial\": \"100,0,0\"\n\t},\n\t\"--now-color--red-19\": {\n\t\t\"name\": \"color.red19\",\n\t\t\"initial\": \"83,0,0\"\n\t},\n\t\"--now-color--red-2\": {\n\t\t\"name\": \"color.red2\",\n\t\t\"initial\": \"251,194,194\"\n\t},\n\t\"--now-color--red-20\": {\n\t\t\"name\": \"color.red20\",\n\t\t\"initial\": \"66,0,0\"\n\t},\n\t\"--now-color--red-3\": {\n\t\t\"name\": \"color.red3\",\n\t\t\"initial\": \"249,168,168\"\n\t},\n\t\"--now-color--red-4\": {\n\t\t\"name\": \"color.red4\",\n\t\t\"initial\": \"247,145,145\"\n\t},\n\t\"--now-color--red-5\": {\n\t\t\"name\": \"color.red5\",\n\t\t\"initial\": \"245,120,120\"\n\t},\n\t\"--now-color--red-6\": {\n\t\t\"name\": \"color.red6\",\n\t\t\"initial\": \"244,97,97\"\n\t},\n\t\"--now-color--red-7\": {\n\t\t\"name\": \"color.red7\",\n\t\t\"initial\": \"242,71,71\"\n\t},\n\t\"--now-color--red-8\": {\n\t\t\"name\": \"color.red8\",\n\t\t\"initial\": \"240,48,48\"\n\t},\n\t\"--now-color--red-9\": {\n\t\t\"name\": \"color.red9\",\n\t\t\"initial\": \"239,23,23\"\n\t},\n\t\"--now-color--secondary-0\": {\n\t\t\"name\": \"color.secondary0\",\n\t\t\"initial\": \"217,235,238\"\n\t},\n\t\"--now-color--secondary-1\": {\n\t\t\"name\": \"color.secondary1\",\n\t\t\"initial\": \"1,119,142\"\n\t},\n\t\"--now-color--secondary-2\": {\n\t\t\"name\": \"color.secondary2\",\n\t\t\"initial\": \"1,89,107\"\n\t},\n\t\"--now-color--secondary-3\": {\n\t\t\"name\": \"color.secondary3\",\n\t\t\"initial\": \"1,60,71\"\n\t},\n\t\"--now-color--secondary-brand-0\": {\n\t\t\"name\": \"color.secondaryBrand0\",\n\t\t\"initial\": \"243,254,241\"\n\t},\n\t\"--now-color--secondary-brand-1\": {\n\t\t\"name\": \"color.secondaryBrand1\",\n\t\t\"initial\": \"232,253,228\"\n\t},\n\t\"--now-color--secondary-brand-10\": {\n\t\t\"name\": \"color.secondaryBrand10\",\n\t\t\"initial\": \"134,246,115\"\n\t},\n\t\"--now-color--secondary-brand-11\": {\n\t\t\"name\": \"color.secondaryBrand11\",\n\t\t\"initial\": \"125,229,107\"\n\t},\n\t\"--now-color--secondary-brand-12\": {\n\t\t\"name\": \"color.secondaryBrand12\",\n\t\t\"initial\": \"114,209,98\"\n\t},\n\t\"--now-color--secondary-brand-13\": {\n\t\t\"name\": \"color.secondaryBrand13\",\n\t\t\"initial\": \"105,192,90\"\n\t},\n\t\"--now-color--secondary-brand-14\": {\n\t\t\"name\": \"color.secondaryBrand14\",\n\t\t\"initial\": \"94,172,81\"\n\t},\n\t\"--now-color--secondary-brand-15\": {\n\t\t\"name\": \"color.secondaryBrand15\",\n\t\t\"initial\": \"84,155,72\"\n\t},\n\t\"--now-color--secondary-brand-16\": {\n\t\t\"name\": \"color.secondaryBrand16\",\n\t\t\"initial\": \"74,135,63\"\n\t},\n\t\"--now-color--secondary-brand-17\": {\n\t\t\"name\": \"color.secondaryBrand17\",\n\t\t\"initial\": \"64,118,55\"\n\t},\n\t\"--now-color--secondary-brand-18\": {\n\t\t\"name\": \"color.secondaryBrand18\",\n\t\t\"initial\": \"54,98,46\"\n\t},\n\t\"--now-color--secondary-brand-19\": {\n\t\t\"name\": \"color.secondaryBrand19\",\n\t\t\"initial\": \"44,81,38\"\n\t},\n\t\"--now-color--secondary-brand-2\": {\n\t\t\"name\": \"color.secondaryBrand2\",\n\t\t\"initial\": \"221,252,216\"\n\t},\n\t\"--now-color--secondary-brand-20\": {\n\t\t\"name\": \"color.secondaryBrand20\",\n\t\t\"initial\": \"34,62,29\"\n\t},\n\t\"--now-color--secondary-brand-3\": {\n\t\t\"name\": \"color.secondaryBrand3\",\n\t\t\"initial\": \"210,252,203\"\n\t},\n\t\"--now-color--secondary-brand-4\": {\n\t\t\"name\": \"color.secondaryBrand4\",\n\t\t\"initial\": \"199,251,191\"\n\t},\n\t\"--now-color--secondary-brand-5\": {\n\t\t\"name\": \"color.secondaryBrand5\",\n\t\t\"initial\": \"188,250,178\"\n\t},\n\t\"--now-color--secondary-brand-6\": {\n\t\t\"name\": \"color.secondaryBrand6\",\n\t\t\"initial\": \"178,249,165\"\n\t},\n\t\"--now-color--secondary-brand-7\": {\n\t\t\"name\": \"color.secondaryBrand7\",\n\t\t\"initial\": \"167,248,153\"\n\t},\n\t\"--now-color--secondary-brand-8\": {\n\t\t\"name\": \"color.secondaryBrand8\",\n\t\t\"initial\": \"156,248,140\"\n\t},\n\t\"--now-color--secondary-brand-9\": {\n\t\t\"name\": \"color.secondaryBrand9\",\n\t\t\"initial\": \"145,247,128\"\n\t},\n\t\"--now-color--supplementary1-brand-0\": {\n\t\t\"name\": \"color.supplementary1Brand0\",\n\t\t\"initial\": \"241,251,255\"\n\t},\n\t\"--now-color--supplementary1-brand-1\": {\n\t\t\"name\": \"color.supplementary1Brand1\",\n\t\t\"initial\": \"228,247,255\"\n\t},\n\t\"--now-color--supplementary1-brand-10\": {\n\t\t\"name\": \"color.supplementary1Brand10\",\n\t\t\"initial\": \"113,213,254\"\n\t},\n\t\"--now-color--supplementary1-brand-11\": {\n\t\t\"name\": \"color.supplementary1Brand11\",\n\t\t\"initial\": \"105,198,236\"\n\t},\n\t\"--now-color--supplementary1-brand-12\": {\n\t\t\"name\": \"color.supplementary1Brand12\",\n\t\t\"initial\": \"96,181,216\"\n\t},\n\t\"--now-color--supplementary1-brand-13\": {\n\t\t\"name\": \"color.supplementary1Brand13\",\n\t\t\"initial\": \"88,166,198\"\n\t},\n\t\"--now-color--supplementary1-brand-14\": {\n\t\t\"name\": \"color.supplementary1Brand14\",\n\t\t\"initial\": \"79,149,178\"\n\t},\n\t\"--now-color--supplementary1-brand-15\": {\n\t\t\"name\": \"color.supplementary1Brand15\",\n\t\t\"initial\": \"71,134,160\"\n\t},\n\t\"--now-color--supplementary1-brand-16\": {\n\t\t\"name\": \"color.supplementary1Brand16\",\n\t\t\"initial\": \"62,117,140\"\n\t},\n\t\"--now-color--supplementary1-brand-17\": {\n\t\t\"name\": \"color.supplementary1Brand17\",\n\t\t\"initial\": \"54,102,122\"\n\t},\n\t\"--now-color--supplementary1-brand-18\": {\n\t\t\"name\": \"color.supplementary1Brand18\",\n\t\t\"initial\": \"45,85,102\"\n\t},\n\t\"--now-color--supplementary1-brand-19\": {\n\t\t\"name\": \"color.supplementary1Brand19\",\n\t\t\"initial\": \"37,70,84\"\n\t},\n\t\"--now-color--supplementary1-brand-2\": {\n\t\t\"name\": \"color.supplementary1Brand2\",\n\t\t\"initial\": \"215,243,255\"\n\t},\n\t\"--now-color--supplementary1-brand-20\": {\n\t\t\"name\": \"color.supplementary1Brand20\",\n\t\t\"initial\": \"28,53,64\"\n\t},\n\t\"--now-color--supplementary1-brand-3\": {\n\t\t\"name\": \"color.supplementary1Brand3\",\n\t\t\"initial\": \"202,239,255\"\n\t},\n\t\"--now-color--supplementary1-brand-4\": {\n\t\t\"name\": \"color.supplementary1Brand4\",\n\t\t\"initial\": \"190,236,255\"\n\t},\n\t\"--now-color--supplementary1-brand-5\": {\n\t\t\"name\": \"color.supplementary1Brand5\",\n\t\t\"initial\": \"177,232,254\"\n\t},\n\t\"--now-color--supplementary1-brand-6\": {\n\t\t\"name\": \"color.supplementary1Brand6\",\n\t\t\"initial\": \"164,228,254\"\n\t},\n\t\"--now-color--supplementary1-brand-7\": {\n\t\t\"name\": \"color.supplementary1Brand7\",\n\t\t\"initial\": \"151,224,254\"\n\t},\n\t\"--now-color--supplementary1-brand-8\": {\n\t\t\"name\": \"color.supplementary1Brand8\",\n\t\t\"initial\": \"139,221,254\"\n\t},\n\t\"--now-color--supplementary1-brand-9\": {\n\t\t\"name\": \"color.supplementary1Brand9\",\n\t\t\"initial\": \"126,217,254\"\n\t},\n\t\"--now-color--teal-0\": {\n\t\t\"name\": \"color.teal0\",\n\t\t\"initial\": \"242,249,249\"\n\t},\n\t\"--now-color--teal-1\": {\n\t\t\"name\": \"color.teal1\",\n\t\t\"initial\": \"217,236,236\"\n\t},\n\t\"--now-color--teal-10\": {\n\t\t\"name\": \"color.teal10\",\n\t\t\"initial\": \"0,128,128\"\n\t},\n\t\"--now-color--teal-11\": {\n\t\t\"name\": \"color.teal11\",\n\t\t\"initial\": \"0,119,119\"\n\t},\n\t\"--now-color--teal-12\": {\n\t\t\"name\": \"color.teal12\",\n\t\t\"initial\": \"0,110,110\"\n\t},\n\t\"--now-color--teal-13\": {\n\t\t\"name\": \"color.teal13\",\n\t\t\"initial\": \"0,100,100\"\n\t},\n\t\"--now-color--teal-14\": {\n\t\t\"name\": \"color.teal14\",\n\t\t\"initial\": \"0,91,91\"\n\t},\n\t\"--now-color--teal-15\": {\n\t\t\"name\": \"color.teal15\",\n\t\t\"initial\": \"0,82,82\"\n\t},\n\t\"--now-color--teal-16\": {\n\t\t\"name\": \"color.teal16\",\n\t\t\"initial\": \"0,73,73\"\n\t},\n\t\"--now-color--teal-17\": {\n\t\t\"name\": \"color.teal17\",\n\t\t\"initial\": \"0,64,64\"\n\t},\n\t\"--now-color--teal-18\": {\n\t\t\"name\": \"color.teal18\",\n\t\t\"initial\": \"0,54,54\"\n\t},\n\t\"--now-color--teal-19\": {\n\t\t\"name\": \"color.teal19\",\n\t\t\"initial\": \"0,45,45\"\n\t},\n\t\"--now-color--teal-2\": {\n\t\t\"name\": \"color.teal2\",\n\t\t\"initial\": \"194,225,225\"\n\t},\n\t\"--now-color--teal-20\": {\n\t\t\"name\": \"color.teal20\",\n\t\t\"initial\": \"0,36,36\"\n\t},\n\t\"--now-color--teal-3\": {\n\t\t\"name\": \"color.teal3\",\n\t\t\"initial\": \"168,212,212\"\n\t},\n\t\"--now-color--teal-4\": {\n\t\t\"name\": \"color.teal4\",\n\t\t\"initial\": \"145,200,200\"\n\t},\n\t\"--now-color--teal-5\": {\n\t\t\"name\": \"color.teal5\",\n\t\t\"initial\": \"120,188,188\"\n\t},\n\t\"--now-color--teal-6\": {\n\t\t\"name\": \"color.teal6\",\n\t\t\"initial\": \"97,176,176\"\n\t},\n\t\"--now-color--teal-7\": {\n\t\t\"name\": \"color.teal7\",\n\t\t\"initial\": \"71,164,164\"\n\t},\n\t\"--now-color--teal-8\": {\n\t\t\"name\": \"color.teal8\",\n\t\t\"initial\": \"48,152,152\"\n\t},\n\t\"--now-color--teal-9\": {\n\t\t\"name\": \"color.teal9\",\n\t\t\"initial\": \"23,139,139\"\n\t},\n\t\"--now-color--yellow-0\": {\n\t\t\"name\": \"color.yellow0\",\n\t\t\"initial\": \"255,252,238\"\n\t},\n\t\"--now-color--yellow-1\": {\n\t\t\"name\": \"color.yellow1\",\n\t\t\"initial\": \"255,250,222\"\n\t},\n\t\"--now-color--yellow-10\": {\n\t\t\"name\": \"color.yellow10\",\n\t\t\"initial\": \"255,229,81\"\n\t},\n\t\"--now-color--yellow-11\": {\n\t\t\"name\": \"color.yellow11\",\n\t\t\"initial\": \"237,213,75\"\n\t},\n\t\"--now-color--yellow-12\": {\n\t\t\"name\": \"color.yellow12\",\n\t\t\"initial\": \"219,197,70\"\n\t},\n\t\"--now-color--yellow-13\": {\n\t\t\"name\": \"color.yellow13\",\n\t\t\"initial\": \"199,179,63\"\n\t},\n\t\"--now-color--yellow-14\": {\n\t\t\"name\": \"color.yellow14\",\n\t\t\"initial\": \"181,163,58\"\n\t},\n\t\"--now-color--yellow-15\": {\n\t\t\"name\": \"color.yellow15\",\n\t\t\"initial\": \"163,147,52\"\n\t},\n\t\"--now-color--yellow-16\": {\n\t\t\"name\": \"color.yellow16\",\n\t\t\"initial\": \"145,131,46\"\n\t},\n\t\"--now-color--yellow-17\": {\n\t\t\"name\": \"color.yellow17\",\n\t\t\"initial\": \"128,115,41\"\n\t},\n\t\"--now-color--yellow-18\": {\n\t\t\"name\": \"color.yellow18\",\n\t\t\"initial\": \"107,96,34\"\n\t},\n\t\"--now-color--yellow-19\": {\n\t\t\"name\": \"color.yellow19\",\n\t\t\"initial\": \"89,80,28\"\n\t},\n\t\"--now-color--yellow-2\": {\n\t\t\"name\": \"color.yellow2\",\n\t\t\"initial\": \"255,248,206\"\n\t},\n\t\"--now-color--yellow-20\": {\n\t\t\"name\": \"color.yellow20\",\n\t\t\"initial\": \"71,64,23\"\n\t},\n\t\"--now-color--yellow-3\": {\n\t\t\"name\": \"color.yellow3\",\n\t\t\"initial\": \"255,245,191\"\n\t},\n\t\"--now-color--yellow-4\": {\n\t\t\"name\": \"color.yellow4\",\n\t\t\"initial\": \"255,243,175\"\n\t},\n\t\"--now-color--yellow-5\": {\n\t\t\"name\": \"color.yellow5\",\n\t\t\"initial\": \"255,241,159\"\n\t},\n\t\"--now-color--yellow-6\": {\n\t\t\"name\": \"color.yellow6\",\n\t\t\"initial\": \"255,238,144\"\n\t},\n\t\"--now-color--yellow-7\": {\n\t\t\"name\": \"color.yellow7\",\n\t\t\"initial\": \"255,236,128\"\n\t},\n\t\"--now-color--yellow-8\": {\n\t\t\"name\": \"color.yellow8\",\n\t\t\"initial\": \"255,234,112\"\n\t},\n\t\"--now-color--yellow-9\": {\n\t\t\"name\": \"color.yellow9\",\n\t\t\"initial\": \"255,231,97\"\n\t}\n}","export default {\n\t\"--now-datavis_color_chart_fill\": {\n\t\t\"name\": \"datavis.color.chart.fill\",\n\t\t\"derived\": \"--now-color_alert--info-1\"\n\t},\n\t\"--now-datavis_color_chart--primary\": {\n\t\t\"name\": \"datavis.color.chart.primary\",\n\t\t\"derived\": \"--now-color--neutral-2\"\n\t},\n\t\"--now-datavis_color_chart--secondary\": {\n\t\t\"name\": \"datavis.color.chart.secondary\",\n\t\t\"derived\": \"--now-color--neutral-4\"\n\t},\n\t\"--now-datavis_color_chart--tertiary\": {\n\t\t\"name\": \"datavis.color.chart.tertiary\",\n\t\t\"derived\": \"--now-color--neutral-7\"\n\t},\n\t\"--now-datavis_color_label--primary\": {\n\t\t\"name\": \"datavis.color.label.primary\",\n\t\t\"derived\": \"--now-color--neutral-18\"\n\t},\n\t\"--now-datavis_color_label--secondary\": {\n\t\t\"name\": \"datavis.color.label.secondary\",\n\t\t\"derived\": \"--now-color--neutral-9\"\n\t},\n\t\"--now-datavis_color_label--tertiary\": {\n\t\t\"name\": \"datavis.color.label.tertiary\",\n\t\t\"derived\": \"--now-color--neutral-5\"\n\t},\n\t\"--now-datavis_color_layer_band--primary\": {\n\t\t\"name\": \"datavis.color.layer.band.primary\",\n\t\t\"derived\": \"--now-color_alert--high-1\"\n\t},\n\t\"--now-datavis_color_layer_band--secondary\": {\n\t\t\"name\": \"datavis.color.layer.band.secondary\",\n\t\t\"derived\": \"--now-color_alert--high-2\"\n\t},\n\t\"--now-datavis_color_layer--primary\": {\n\t\t\"name\": \"datavis.color.layer.primary\",\n\t\t\"derived\": \"--now-color--neutral-2\"\n\t},\n\t\"--now-datavis_color_layer--quad\": {\n\t\t\"name\": \"datavis.color.layer.quad\",\n\t\t\"derived\": \"--now-color--neutral-20\"\n\t},\n\t\"--now-datavis_color_layer--secondary\": {\n\t\t\"name\": \"datavis.color.layer.secondary\",\n\t\t\"derived\": \"--now-color--neutral-4\"\n\t},\n\t\"--now-datavis_color_layer--tertiary\": {\n\t\t\"name\": \"datavis.color.layer.tertiary\",\n\t\t\"derived\": \"--now-color--neutral-5\"\n\t},\n\t\"--now-datavis_color_series_default\": {\n\t\t\"name\": \"datavis.color.series.default\",\n\t\t\"derived\": \"--now-datavis_color--qualitative-0\"\n\t},\n\t\"--now-datavis_color--accessibility-0\": {\n\t\t\"name\": \"datavis.color.accessibility0\",\n\t\t\"derived\": \"--now-color--neutral-0\"\n\t},\n\t\"--now-datavis_color--accessibility-10\": {\n\t\t\"name\": \"datavis.color.accessibility10\",\n\t\t\"derived\": \"--now-color--neutral-20\"\n\t},\n\t\"--now-datavis_color--accessibility-2\": {\n\t\t\"name\": \"datavis.color.accessibility2\",\n\t\t\"derived\": \"--now-color--neutral-4\"\n\t},\n\t\"--now-datavis_color--blue-0\": {\n\t\t\"name\": \"datavis.color.blue0\",\n\t\t\"initial\": \"210,229,244\"\n\t},\n\t\"--now-datavis_color--blue-1\": {\n\t\t\"name\": \"datavis.color.blue1\",\n\t\t\"initial\": \"182,212,237\"\n\t},\n\t\"--now-datavis_color--blue-10\": {\n\t\t\"name\": \"datavis.color.blue10\",\n\t\t\"initial\": \"30,59,82\"\n\t},\n\t\"--now-datavis_color--blue-2\": {\n\t\t\"name\": \"datavis.color.blue2\",\n\t\t\"initial\": \"158,197,230\"\n\t},\n\t\"--now-datavis_color--blue-3\": {\n\t\t\"name\": \"datavis.color.blue3\",\n\t\t\"initial\": \"129,181,223\"\n\t},\n\t\"--now-datavis_color--blue-4\": {\n\t\t\"name\": \"datavis.color.blue4\",\n\t\t\"initial\": \"105,166,216\"\n\t},\n\t\"--now-datavis_color--blue-5\": {\n\t\t\"name\": \"datavis.color.blue5\",\n\t\t\"initial\": \"77,149,209\"\n\t},\n\t\"--now-datavis_color--blue-6\": {\n\t\t\"name\": \"datavis.color.blue6\",\n\t\t\"initial\": \"66,131,184\"\n\t},\n\t\"--now-datavis_color--blue-7\": {\n\t\t\"name\": \"datavis.color.blue7\",\n\t\t\"initial\": \"58,115,161\"\n\t},\n\t\"--now-datavis_color--blue-8\": {\n\t\t\"name\": \"datavis.color.blue8\",\n\t\t\"initial\": \"50,95,134\"\n\t},\n\t\"--now-datavis_color--blue-9\": {\n\t\t\"name\": \"datavis.color.blue9\",\n\t\t\"initial\": \"40,77,108\"\n\t},\n\t\"--now-datavis_color--brown-0\": {\n\t\t\"name\": \"datavis.color.brown0\",\n\t\t\"initial\": \"236,219,213\"\n\t},\n\t\"--now-datavis_color--brown-1\": {\n\t\t\"name\": \"datavis.color.brown1\",\n\t\t\"initial\": \"223,195,185\"\n\t},\n\t\"--now-datavis_color--brown-10\": {\n\t\t\"name\": \"datavis.color.brown10\",\n\t\t\"initial\": \"69,42,33\"\n\t},\n\t\"--now-datavis_color--brown-2\": {\n\t\t\"name\": \"datavis.color.brown2\",\n\t\t\"initial\": \"212,174,161\"\n\t},\n\t\"--now-datavis_color--brown-3\": {\n\t\t\"name\": \"datavis.color.brown3\",\n\t\t\"initial\": \"198,151,134\"\n\t},\n\t\"--now-datavis_color--brown-4\": {\n\t\t\"name\": \"datavis.color.brown4\",\n\t\t\"initial\": \"186,130,109\"\n\t},\n\t\"--now-datavis_color--brown-5\": {\n\t\t\"name\": \"datavis.color.brown5\",\n\t\t\"initial\": \"176,108,84\"\n\t},\n\t\"--now-datavis_color--brown-6\": {\n\t\t\"name\": \"datavis.color.brown6\",\n\t\t\"initial\": \"156,95,73\"\n\t},\n\t\"--now-datavis_color--brown-7\": {\n\t\t\"name\": \"datavis.color.brown7\",\n\t\t\"initial\": \"132,81,62\"\n\t},\n\t\"--now-datavis_color--brown-8\": {\n\t\t\"name\": \"datavis.color.brown8\",\n\t\t\"initial\": \"111,68,52\"\n\t},\n\t\"--now-datavis_color--brown-9\": {\n\t\t\"name\": \"datavis.color.brown9\",\n\t\t\"initial\": \"90,55,42\"\n\t},\n\t\"--now-datavis_color--green-0\": {\n\t\t\"name\": \"datavis.color.green0\",\n\t\t\"initial\": \"208,231,211\"\n\t},\n\t\"--now-datavis_color--green-1\": {\n\t\t\"name\": \"datavis.color.green1\",\n\t\t\"initial\": \"181,217,184\"\n\t},\n\t\"--now-datavis_color--green-10\": {\n\t\t\"name\": \"datavis.color.green10\",\n\t\t\"initial\": \"28,63,31\"\n\t},\n\t\"--now-datavis_color--green-2\": {\n\t\t\"name\": \"datavis.color.green2\",\n\t\t\"initial\": \"154,203,159\"\n\t},\n\t\"--now-datavis_color--green-3\": {\n\t\t\"name\": \"datavis.color.green3\",\n\t\t\"initial\": \"127,189,133\"\n\t},\n\t\"--now-datavis_color--green-4\": {\n\t\t\"name\": \"datavis.color.green4\",\n\t\t\"initial\": \"100,175,108\"\n\t},\n\t\"--now-datavis_color--green-5\": {\n\t\t\"name\": \"datavis.color.green5\",\n\t\t\"initial\": \"73,162,82\"\n\t},\n\t\"--now-datavis_color--green-6\": {\n\t\t\"name\": \"datavis.color.green6\",\n\t\t\"initial\": \"62,142,70\"\n\t},\n\t\"--now-datavis_color--green-7\": {\n\t\t\"name\": \"datavis.color.green7\",\n\t\t\"initial\": \"55,123,62\"\n\t},\n\t\"--now-datavis_color--green-8\": {\n\t\t\"name\": \"datavis.color.green8\",\n\t\t\"initial\": \"46,102,51\"\n\t},\n\t\"--now-datavis_color--green-9\": {\n\t\t\"name\": \"datavis.color.green9\",\n\t\t\"initial\": \"37,85,42\"\n\t},\n\t\"--now-datavis_color--negative\": {\n\t\t\"name\": \"datavis.color.negative\",\n\t\t\"derived\": \"--now-color_alert--critical-3\"\n\t},\n\t\"--now-datavis_color--olive-0\": {\n\t\t\"name\": \"datavis.color.olive0\",\n\t\t\"initial\": \"226,231,208\"\n\t},\n\t\"--now-datavis_color--olive-1\": {\n\t\t\"name\": \"datavis.color.olive1\",\n\t\t\"initial\": \"210,217,181\"\n\t},\n\t\"--now-datavis_color--olive-10\": {\n\t\t\"name\": \"datavis.color.olive10\",\n\t\t\"initial\": \"56,63,28\"\n\t},\n\t\"--now-datavis_color--olive-2\": {\n\t\t\"name\": \"datavis.color.olive2\",\n\t\t\"initial\": \"193,203,154\"\n\t},\n\t\"--now-datavis_color--olive-3\": {\n\t\t\"name\": \"datavis.color.olive3\",\n\t\t\"initial\": \"176,189,127\"\n\t},\n\t\"--now-datavis_color--olive-4\": {\n\t\t\"name\": \"datavis.color.olive4\",\n\t\t\"initial\": \"159,175,100\"\n\t},\n\t\"--now-datavis_color--olive-5\": {\n\t\t\"name\": \"datavis.color.olive5\",\n\t\t\"initial\": \"143,162,73\"\n\t},\n\t\"--now-datavis_color--olive-6\": {\n\t\t\"name\": \"datavis.color.olive6\",\n\t\t\"initial\": \"125,142,62\"\n\t},\n\t\"--now-datavis_color--olive-7\": {\n\t\t\"name\": \"datavis.color.olive7\",\n\t\t\"initial\": \"108,123,55\"\n\t},\n\t\"--now-datavis_color--olive-8\": {\n\t\t\"name\": \"datavis.color.olive8\",\n\t\t\"initial\": \"90,102,46\"\n\t},\n\t\"--now-datavis_color--olive-9\": {\n\t\t\"name\": \"datavis.color.olive9\",\n\t\t\"initial\": \"75,85,37\"\n\t},\n\t\"--now-datavis_color--orange-0\": {\n\t\t\"name\": \"datavis.color.orange0\",\n\t\t\"initial\": \"250,226,209\"\n\t},\n\t\"--now-datavis_color--orange-1\": {\n\t\t\"name\": \"datavis.color.orange1\",\n\t\t\"initial\": \"247,209,182\"\n\t},\n\t\"--now-datavis_color--orange-10\": {\n\t\t\"name\": \"datavis.color.orange10\",\n\t\t\"initial\": \"94,56,28\"\n\t},\n\t\"--now-datavis_color--orange-2\": {\n\t\t\"name\": \"datavis.color.orange2\",\n\t\t\"initial\": \"244,190,153\"\n\t},\n\t\"--now-datavis_color--orange-3\": {\n\t\t\"name\": \"datavis.color.orange3\",\n\t\t\"initial\": \"241,172,126\"\n\t},\n\t\"--now-datavis_color--orange-4\": {\n\t\t\"name\": \"datavis.color.orange4\",\n\t\t\"initial\": \"238,154,99\"\n\t},\n\t\"--now-datavis_color--orange-5\": {\n\t\t\"name\": \"datavis.color.orange5\",\n\t\t\"initial\": \"235,137,71\"\n\t},\n\t\"--now-datavis_color--orange-6\": {\n\t\t\"name\": \"datavis.color.orange6\",\n\t\t\"initial\": \"207,123,63\"\n\t},\n\t\"--now-datavis_color--orange-7\": {\n\t\t\"name\": \"datavis.color.orange7\",\n\t\t\"initial\": \"177,104,53\"\n\t},\n\t\"--now-datavis_color--orange-8\": {\n\t\t\"name\": \"datavis.color.orange8\",\n\t\t\"initial\": \"149,88,45\"\n\t},\n\t\"--now-datavis_color--orange-9\": {\n\t\t\"name\": \"datavis.color.orange9\",\n\t\t\"initial\": \"122,71,36\"\n\t},\n\t\"--now-datavis_color--pink-0\": {\n\t\t\"name\": \"datavis.color.pink0\",\n\t\t\"initial\": \"246,213,246\"\n\t},\n\t\"--now-datavis_color--pink-1\": {\n\t\t\"name\": \"datavis.color.pink1\",\n\t\t\"initial\": \"240,188,240\"\n\t},\n\t\"--now-datavis_color--pink-10\": {\n\t\t\"name\": \"datavis.color.pink10\",\n\t\t\"initial\": \"88,34,88\"\n\t},\n\t\"--now-datavis_color--pink-2\": {\n\t\t\"name\": \"datavis.color.pink2\",\n\t\t\"initial\": \"235,162,235\"\n\t},\n\t\"--now-datavis_color--pink-3\": {\n\t\t\"name\": \"datavis.color.pink3\",\n\t\t\"initial\": \"228,134,228\"\n\t},\n\t\"--now-datavis_color--pink-4\": {\n\t\t\"name\": \"datavis.color.pink4\",\n\t\t\"initial\": \"224,108,224\"\n\t},\n\t\"--now-datavis_color--pink-5\": {\n\t\t\"name\": \"datavis.color.pink5\",\n\t\t\"initial\": \"217,84,217\"\n\t},\n\t\"--now-datavis_color--pink-6\": {\n\t\t\"name\": \"datavis.color.pink6\",\n\t\t\"initial\": \"191,74,191\"\n\t},\n\t\"--now-datavis_color--pink-7\": {\n\t\t\"name\": \"datavis.color.pink7\",\n\t\t\"initial\": \"165,64,165\"\n\t},\n\t\"--now-datavis_color--pink-8\": {\n\t\t\"name\": \"datavis.color.pink8\",\n\t\t\"initial\": \"140,54,140\"\n\t},\n\t\"--now-datavis_color--pink-9\": {\n\t\t\"name\": \"datavis.color.pink9\",\n\t\t\"initial\": \"114,44,114\"\n\t},\n\t\"--now-datavis_color--positive\": {\n\t\t\"name\": \"datavis.color.positive\",\n\t\t\"derived\": \"--now-color_alert--positive-3\"\n\t},\n\t\"--now-datavis_color--primary\": {\n\t\t\"name\": \"datavis.color.primary\",\n\t\t\"derived\": \"--now-color--neutral-0\"\n\t},\n\t\"--now-datavis_color--purple-0\": {\n\t\t\"name\": \"datavis.color.purple0\",\n\t\t\"initial\": \"216,216,238\"\n\t},\n\t\"--now-datavis_color--purple-1\": {\n\t\t\"name\": \"datavis.color.purple1\",\n\t\t\"initial\": \"190,190,228\"\n\t},\n\t\"--now-datavis_color--purple-10\": {\n\t\t\"name\": \"datavis.color.purple10\",\n\t\t\"initial\": \"38,38,75\"\n\t},\n\t\"--now-datavis_color--purple-2\": {\n\t\t\"name\": \"datavis.color.purple2\",\n\t\t\"initial\": \"166,165,217\"\n\t},\n\t\"--now-datavis_color--purple-3\": {\n\t\t\"name\": \"datavis.color.purple3\",\n\t\t\"initial\": \"145,144,208\"\n\t},\n\t\"--now-datavis_color--purple-4\": {\n\t\t\"name\": \"datavis.color.purple4\",\n\t\t\"initial\": \"120,118,198\"\n\t},\n\t\"--now-datavis_color--purple-5\": {\n\t\t\"name\": \"datavis.color.purple5\",\n\t\t\"initial\": \"95,93,187\"\n\t},\n\t\"--now-datavis_color--purple-6\": {\n\t\t\"name\": \"datavis.color.purple6\",\n\t\t\"initial\": \"85,84,166\"\n\t},\n\t\"--now-datavis_color--purple-7\": {\n\t\t\"name\": \"datavis.color.purple7\",\n\t\t\"initial\": \"73,72,142\"\n\t},\n\t\"--now-datavis_color--purple-8\": {\n\t\t\"name\": \"datavis.color.purple8\",\n\t\t\"initial\": \"60,60,119\"\n\t},\n\t\"--now-datavis_color--purple-9\": {\n\t\t\"name\": \"datavis.color.purple9\",\n\t\t\"initial\": \"50,50,98\"\n\t},\n\t\"--now-datavis_color--qualitative-0\": {\n\t\t\"name\": \"datavis.color.qualitative0\",\n\t\t\"derived\": \"--now-datavis_color--blue-5\"\n\t},\n\t\"--now-datavis_color--qualitative-1\": {\n\t\t\"name\": \"datavis.color.qualitative1\",\n\t\t\"derived\": \"--now-datavis_color--orange-3\"\n\t},\n\t\"--now-datavis_color--qualitative-10\": {\n\t\t\"name\": \"datavis.color.qualitative10\",\n\t\t\"derived\": \"--now-datavis_color--teal-5\"\n\t},\n\t\"--now-datavis_color--qualitative-11\": {\n\t\t\"name\": \"datavis.color.qualitative11\",\n\t\t\"derived\": \"--now-datavis_color--blue-4\"\n\t},\n\t\"--now-datavis_color--qualitative-12\": {\n\t\t\"name\": \"datavis.color.qualitative12\",\n\t\t\"derived\": \"--now-datavis_color--orange-2\"\n\t},\n\t\"--now-datavis_color--qualitative-13\": {\n\t\t\"name\": \"datavis.color.qualitative13\",\n\t\t\"derived\": \"--now-datavis_color--green-4\"\n\t},\n\t\"--now-datavis_color--qualitative-14\": {\n\t\t\"name\": \"datavis.color.qualitative14\",\n\t\t\"derived\": \"--now-datavis_color--pink-2\"\n\t},\n\t\"--now-datavis_color--qualitative-15\": {\n\t\t\"name\": \"datavis.color.qualitative15\",\n\t\t\"derived\": \"--now-datavis_color--brown-4\"\n\t},\n\t\"--now-datavis_color--qualitative-16\": {\n\t\t\"name\": \"datavis.color.qualitative16\",\n\t\t\"derived\": \"--now-datavis_color--violet-2\"\n\t},\n\t\"--now-datavis_color--qualitative-17\": {\n\t\t\"name\": \"datavis.color.qualitative17\",\n\t\t\"derived\": \"--now-datavis_color--yellow-green-4\"\n\t},\n\t\"--now-datavis_color--qualitative-18\": {\n\t\t\"name\": \"datavis.color.qualitative18\",\n\t\t\"derived\": \"--now-datavis_color--red-2\"\n\t},\n\t\"--now-datavis_color--qualitative-19\": {\n\t\t\"name\": \"datavis.color.qualitative19\",\n\t\t\"derived\": \"--now-datavis_color--purple-4\"\n\t},\n\t\"--now-datavis_color--qualitative-2\": {\n\t\t\"name\": \"datavis.color.qualitative2\",\n\t\t\"derived\": \"--now-datavis_color--green-5\"\n\t},\n\t\"--now-datavis_color--qualitative-20\": {\n\t\t\"name\": \"datavis.color.qualitative20\",\n\t\t\"derived\": \"--now-datavis_color--olive-2\"\n\t},\n\t\"--now-datavis_color--qualitative-21\": {\n\t\t\"name\": \"datavis.color.qualitative21\",\n\t\t\"derived\": \"--now-datavis_color--teal-4\"\n\t},\n\t\"--now-datavis_color--qualitative-22\": {\n\t\t\"name\": \"datavis.color.qualitative22\",\n\t\t\"derived\": \"--now-datavis_color--blue-8\"\n\t},\n\t\"--now-datavis_color--qualitative-23\": {\n\t\t\"name\": \"datavis.color.qualitative23\",\n\t\t\"derived\": \"--now-datavis_color--orange-6\"\n\t},\n\t\"--now-datavis_color--qualitative-24\": {\n\t\t\"name\": \"datavis.color.qualitative24\",\n\t\t\"derived\": \"--now-datavis_color--green-8\"\n\t},\n\t\"--now-datavis_color--qualitative-25\": {\n\t\t\"name\": \"datavis.color.qualitative25\",\n\t\t\"derived\": \"--now-datavis_color--pink-6\"\n\t},\n\t\"--now-datavis_color--qualitative-26\": {\n\t\t\"name\": \"datavis.color.qualitative26\",\n\t\t\"derived\": \"--now-datavis_color--brown-8\"\n\t},\n\t\"--now-datavis_color--qualitative-27\": {\n\t\t\"name\": \"datavis.color.qualitative27\",\n\t\t\"derived\": \"--now-datavis_color--violet-6\"\n\t},\n\t\"--now-datavis_color--qualitative-28\": {\n\t\t\"name\": \"datavis.color.qualitative28\",\n\t\t\"derived\": \"--now-datavis_color--yellow-green-8\"\n\t},\n\t\"--now-datavis_color--qualitative-29\": {\n\t\t\"name\": \"datavis.color.qualitative29\",\n\t\t\"derived\": \"--now-datavis_color--red-6\"\n\t},\n\t\"--now-datavis_color--qualitative-3\": {\n\t\t\"name\": \"datavis.color.qualitative3\",\n\t\t\"derived\": \"--now-datavis_color--pink-3\"\n\t},\n\t\"--now-datavis_color--qualitative-30\": {\n\t\t\"name\": \"datavis.color.qualitative30\",\n\t\t\"derived\": \"--now-datavis_color--purple-8\"\n\t},\n\t\"--now-datavis_color--qualitative-31\": {\n\t\t\"name\": \"datavis.color.qualitative31\",\n\t\t\"derived\": \"--now-datavis_color--olive-6\"\n\t},\n\t\"--now-datavis_color--qualitative-32\": {\n\t\t\"name\": \"datavis.color.qualitative32\",\n\t\t\"derived\": \"--now-datavis_color--teal-8\"\n\t},\n\t\"--now-datavis_color--qualitative-4\": {\n\t\t\"name\": \"datavis.color.qualitative4\",\n\t\t\"derived\": \"--now-datavis_color--brown-5\"\n\t},\n\t\"--now-datavis_color--qualitative-5\": {\n\t\t\"name\": \"datavis.color.qualitative5\",\n\t\t\"derived\": \"--now-datavis_color--violet-3\"\n\t},\n\t\"--now-datavis_color--qualitative-6\": {\n\t\t\"name\": \"datavis.color.qualitative6\",\n\t\t\"derived\": \"--now-datavis_color--yellow-green-5\"\n\t},\n\t\"--now-datavis_color--qualitative-7\": {\n\t\t\"name\": \"datavis.color.qualitative7\",\n\t\t\"derived\": \"--now-datavis_color--red-3\"\n\t},\n\t\"--now-datavis_color--qualitative-8\": {\n\t\t\"name\": \"datavis.color.qualitative8\",\n\t\t\"derived\": \"--now-datavis_color--purple-5\"\n\t},\n\t\"--now-datavis_color--qualitative-9\": {\n\t\t\"name\": \"datavis.color.qualitative9\",\n\t\t\"derived\": \"--now-datavis_color--olive-3\"\n\t},\n\t\"--now-datavis_color--red-0\": {\n\t\t\"name\": \"datavis.color.red0\",\n\t\t\"initial\": \"246,213,214\"\n\t},\n\t\"--now-datavis_color--red-1\": {\n\t\t\"name\": \"datavis.color.red1\",\n\t\t\"initial\": \"240,188,188\"\n\t},\n\t\"--now-datavis_color--red-10\": {\n\t\t\"name\": \"datavis.color.red10\",\n\t\t\"initial\": \"88,34,34\"\n\t},\n\t\"--now-datavis_color--red-2\": {\n\t\t\"name\": \"datavis.color.red2\",\n\t\t\"initial\": \"235,162,164\"\n\t},\n\t\"--now-datavis_color--red-3\": {\n\t\t\"name\": \"datavis.color.red3\",\n\t\t\"initial\": \"228,134,135\"\n\t},\n\t\"--now-datavis_color--red-4\": {\n\t\t\"name\": \"datavis.color.red4\",\n\t\t\"initial\": \"224,108,110\"\n\t},\n\t\"--now-datavis_color--red-5\": {\n\t\t\"name\": \"datavis.color.red5\",\n\t\t\"initial\": \"217,84,84\"\n\t},\n\t\"--now-datavis_color--red-6\": {\n\t\t\"name\": \"datavis.color.red6\",\n\t\t\"initial\": \"191,74,76\"\n\t},\n\t\"--now-datavis_color--red-7\": {\n\t\t\"name\": \"datavis.color.red7\",\n\t\t\"initial\": \"165,64,66\"\n\t},\n\t\"--now-datavis_color--red-8\": {\n\t\t\"name\": \"datavis.color.red8\",\n\t\t\"initial\": \"140,54,54\"\n\t},\n\t\"--now-datavis_color--red-9\": {\n\t\t\"name\": \"datavis.color.red9\",\n\t\t\"initial\": \"114,44,44\"\n\t},\n\t\"--now-datavis_color--teal-0\": {\n\t\t\"name\": \"datavis.color.teal0\",\n\t\t\"initial\": \"210,244,236\"\n\t},\n\t\"--now-datavis_color--teal-1\": {\n\t\t\"name\": \"datavis.color.teal1\",\n\t\t\"initial\": \"182,237,225\"\n\t},\n\t\"--now-datavis_color--teal-10\": {\n\t\t\"name\": \"datavis.color.teal10\",\n\t\t\"initial\": \"30,82,71\"\n\t},\n\t\"--now-datavis_color--teal-2\": {\n\t\t\"name\": \"datavis.color.teal2\",\n\t\t\"initial\": \"158,230,214\"\n\t},\n\t\"--now-datavis_color--teal-3\": {\n\t\t\"name\": \"datavis.color.teal3\",\n\t\t\"initial\": \"129,223,202\"\n\t},\n\t\"--now-datavis_color--teal-4\": {\n\t\t\"name\": \"datavis.color.teal4\",\n\t\t\"initial\": \"105,216,192\"\n\t},\n\t\"--now-datavis_color--teal-5\": {\n\t\t\"name\": \"datavis.color.teal5\",\n\t\t\"initial\": \"77,209,180\"\n\t},\n\t\"--now-datavis_color--teal-6\": {\n\t\t\"name\": \"datavis.color.teal6\",\n\t\t\"initial\": \"66,184,158\"\n\t},\n\t\"--now-datavis_color--teal-7\": {\n\t\t\"name\": \"datavis.color.teal7\",\n\t\t\"initial\": \"58,161,139\"\n\t},\n\t\"--now-datavis_color--teal-8\": {\n\t\t\"name\": \"datavis.color.teal8\",\n\t\t\"initial\": \"50,134,116\"\n\t},\n\t\"--now-datavis_color--teal-9\": {\n\t\t\"name\": \"datavis.color.teal9\",\n\t\t\"initial\": \"40,108,93\"\n\t},\n\t\"--now-datavis_color--violet-0\": {\n\t\t\"name\": \"datavis.color.violet0\",\n\t\t\"initial\": \"232,216,238\"\n\t},\n\t\"--now-datavis_color--violet-1\": {\n\t\t\"name\": \"datavis.color.violet1\",\n\t\t\"initial\": \"218,190,228\"\n\t},\n\t\"--now-datavis_color--violet-10\": {\n\t\t\"name\": \"datavis.color.violet10\",\n\t\t\"initial\": \"65,38,75\"\n\t},\n\t\"--now-datavis_color--violet-2\": {\n\t\t\"name\": \"datavis.color.violet2\",\n\t\t\"initial\": \"203,165,217\"\n\t},\n\t\"--now-datavis_color--violet-3\": {\n\t\t\"name\": \"datavis.color.violet3\",\n\t\t\"initial\": \"191,144,208\"\n\t},\n\t\"--now-datavis_color--violet-4\": {\n\t\t\"name\": \"datavis.color.violet4\",\n\t\t\"initial\": \"177,118,198\"\n\t},\n\t\"--now-datavis_color--violet-5\": {\n\t\t\"name\": \"datavis.color.violet5\",\n\t\t\"initial\": \"162,93,187\"\n\t},\n\t\"--now-datavis_color--violet-6\": {\n\t\t\"name\": \"datavis.color.violet6\",\n\t\t\"initial\": \"144,84,166\"\n\t},\n\t\"--now-datavis_color--violet-7\": {\n\t\t\"name\": \"datavis.color.violet7\",\n\t\t\"initial\": \"124,72,142\"\n\t},\n\t\"--now-datavis_color--violet-8\": {\n\t\t\"name\": \"datavis.color.violet8\",\n\t\t\"initial\": \"103,60,119\"\n\t},\n\t\"--now-datavis_color--violet-9\": {\n\t\t\"name\": \"datavis.color.violet9\",\n\t\t\"initial\": \"85,50,98\"\n\t},\n\t\"--now-datavis_color--yellow-0\": {\n\t\t\"name\": \"datavis.color.yellow0\",\n\t\t\"initial\": \"255,238,204\"\n\t},\n\t\"--now-datavis_color--yellow-1\": {\n\t\t\"name\": \"datavis.color.yellow1\",\n\t\t\"initial\": \"255,225,163\"\n\t},\n\t\"--now-datavis_color--yellow-10\": {\n\t\t\"name\": \"datavis.color.yellow10\",\n\t\t\"initial\": \"102,69,0\"\n\t},\n\t\"--now-datavis_color--yellow-2\": {\n\t\t\"name\": \"datavis.color.yellow2\",\n\t\t\"initial\": \"255,212,122\"\n\t},\n\t\"--now-datavis_color--yellow-3\": {\n\t\t\"name\": \"datavis.color.yellow3\",\n\t\t\"initial\": \"255,199,82\"\n\t},\n\t\"--now-datavis_color--yellow-4\": {\n\t\t\"name\": \"datavis.color.yellow4\",\n\t\t\"initial\": \"255,185,41\"\n\t},\n\t\"--now-datavis_color--yellow-5\": {\n\t\t\"name\": \"datavis.color.yellow5\",\n\t\t\"initial\": \"255,172,0\"\n\t},\n\t\"--now-datavis_color--yellow-6\": {\n\t\t\"name\": \"datavis.color.yellow6\",\n\t\t\"initial\": \"224,151,0\"\n\t},\n\t\"--now-datavis_color--yellow-7\": {\n\t\t\"name\": \"datavis.color.yellow7\",\n\t\t\"initial\": \"194,131,0\"\n\t},\n\t\"--now-datavis_color--yellow-8\": {\n\t\t\"name\": \"datavis.color.yellow8\",\n\t\t\"initial\": \"163,110,0\"\n\t},\n\t\"--now-datavis_color--yellow-9\": {\n\t\t\"name\": \"datavis.color.yellow9\",\n\t\t\"initial\": \"133,89,0\"\n\t},\n\t\"--now-datavis_color--yellow-green-0\": {\n\t\t\"name\": \"datavis.color.yellowGreen0\",\n\t\t\"initial\": \"238,245,204\"\n\t},\n\t\"--now-datavis_color--yellow-green-1\": {\n\t\t\"name\": \"datavis.color.yellowGreen1\",\n\t\t\"initial\": \"227,238,170\"\n\t},\n\t\"--now-datavis_color--yellow-green-10\": {\n\t\t\"name\": \"datavis.color.yellowGreen10\",\n\t\t\"initial\": \"74,86,16\"\n\t},\n\t\"--now-datavis_color--yellow-green-2\": {\n\t\t\"name\": \"datavis.color.yellowGreen2\",\n\t\t\"initial\": \"214,231,136\"\n\t},\n\t\"--now-datavis_color--yellow-green-3\": {\n\t\t\"name\": \"datavis.color.yellowGreen3\",\n\t\t\"initial\": \"206,226,105\"\n\t},\n\t\"--now-datavis_color--yellow-green-4\": {\n\t\t\"name\": \"datavis.color.yellowGreen4\",\n\t\t\"initial\": \"194,219,72\"\n\t},\n\t\"--now-datavis_color--yellow-green-5\": {\n\t\t\"name\": \"datavis.color.yellowGreen5\",\n\t\t\"initial\": \"185,214,41\"\n\t},\n\t\"--now-datavis_color--yellow-green-6\": {\n\t\t\"name\": \"datavis.color.yellowGreen6\",\n\t\t\"initial\": \"163,188,36\"\n\t},\n\t\"--now-datavis_color--yellow-green-7\": {\n\t\t\"name\": \"datavis.color.yellowGreen7\",\n\t\t\"initial\": \"139,163,31\"\n\t},\n\t\"--now-datavis_color--yellow-green-8\": {\n\t\t\"name\": \"datavis.color.yellowGreen8\",\n\t\t\"initial\": \"119,137,26\"\n\t},\n\t\"--now-datavis_color--yellow-green-9\": {\n\t\t\"name\": \"datavis.color.yellowGreen9\",\n\t\t\"initial\": \"95,111,21\"\n\t},\n\t\"--now-datavis_register_swatch--border-radius\": {\n\t\t\"name\": \"datavis.register.swatch.borderRadius\",\n\t\t\"initial\": \"0\"\n\t}\n}","export default {\n\t\"--now-actionable--border-radius\": {\n\t\t\"name\": \"actionable.borderRadius\",\n\t\t\"initial\": \"0\"\n\t},\n\t\"--now-actionable--border-width\": {\n\t\t\"name\": \"actionable.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-actionable--font-family\": {\n\t\t\"name\": \"actionable.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-actionable--font-size--lg\": {\n\t\t\"name\": \"actionable.fontSize.lg\",\n\t\t\"derived\": \"--now-font-size--lg1\"\n\t},\n\t\"--now-actionable--font-size--md\": {\n\t\t\"name\": \"actionable.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-actionable--font-size--sm\": {\n\t\t\"name\": \"actionable.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-actionable--font-style\": {\n\t\t\"name\": \"actionable.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-actionable--font-weight\": {\n\t\t\"name\": \"actionable.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-actionable--opacity--disabled\": {\n\t\t\"name\": \"actionable.opacity.disabled\",\n\t\t\"derived\": \"--now-opacity--less\"\n\t},\n\t\"--now-actionable--text-transform\": {\n\t\t\"name\": \"actionable.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-actionable--text-wrap\": {\n\t\t\"name\": \"actionable.textWrap\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-container_body--font-size--md\": {\n\t\t\"name\": \"container.body.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-container_body--font-size--sm\": {\n\t\t\"name\": \"container.body.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-container_footer--font-size--md\": {\n\t\t\"name\": \"container.footer.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-container_footer--font-size--sm\": {\n\t\t\"name\": \"container.footer.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-container_header--font-size--lg\": {\n\t\t\"name\": \"container.header.fontSize.lg\",\n\t\t\"derived\": \"--now-display-type_header--font-size--lg\"\n\t},\n\t\"--now-container_header--font-size--lg1\": {\n\t\t\"name\": \"container.header.fontSize.lg1\",\n\t\t\"derived\": \"--now-display-type_header--font-size--lg1\"\n\t},\n\t\"--now-container_header--font-size--md\": {\n\t\t\"name\": \"container.header.fontSize.md\",\n\t\t\"derived\": \"--now-display-type_header--font-size--md\"\n\t},\n\t\"--now-container_header--font-size--sm\": {\n\t\t\"name\": \"container.header.fontSize.sm\",\n\t\t\"derived\": \"--now-display-type_header--font-size--sm\"\n\t},\n\t\"--now-container_subheader--font-size--md\": {\n\t\t\"name\": \"container.subheader.fontSize.md\",\n\t\t\"derived\": \"--now-display-type_subheader--font-size--md\"\n\t},\n\t\"--now-container_subheader--font-size--sm\": {\n\t\t\"name\": \"container.subheader.fontSize.sm\",\n\t\t\"derived\": \"--now-display-type_subheader--font-size--sm\"\n\t},\n\t\"--now-container--border-color\": {\n\t\t\"name\": \"container.borderColor\",\n\t\t\"derived\": \"--now-color_border--tertiary\"\n\t},\n\t\"--now-container--border-radius\": {\n\t\t\"name\": \"container.borderRadius\",\n\t\t\"initial\": \"0\"\n\t},\n\t\"--now-container--border-width\": {\n\t\t\"name\": \"container.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-container--color\": {\n\t\t\"name\": \"container.color\",\n\t\t\"derived\": \"--now-color_background--primary\"\n\t},\n\t\"--now-container--font-family\": {\n\t\t\"name\": \"container.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-container--font-style\": {\n\t\t\"name\": \"container.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-container--font-weight\": {\n\t\t\"name\": \"container.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-container--text-transform\": {\n\t\t\"name\": \"container.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-display-type_header--font-size--lg\": {\n\t\t\"name\": \"displayType.header.fontSize.lg\",\n\t\t\"derived\": \"--now-font-size--lg\"\n\t},\n\t\"--now-display-type_header--font-size--lg1\": {\n\t\t\"name\": \"displayType.header.fontSize.lg1\",\n\t\t\"derived\": \"--now-font-size--lg1\"\n\t},\n\t\"--now-display-type_header--font-size--lg2\": {\n\t\t\"name\": \"displayType.header.fontSize.lg2\",\n\t\t\"derived\": \"--now-font-size--lg2\"\n\t},\n\t\"--now-display-type_header--font-size--lg3\": {\n\t\t\"name\": \"displayType.header.fontSize.lg3\",\n\t\t\"derived\": \"--now-font-size--lg3\"\n\t},\n\t\"--now-display-type_header--font-size--md\": {\n\t\t\"name\": \"displayType.header.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-display-type_header--font-size--md1\": {\n\t\t\"name\": \"displayType.header.fontSize.md1\",\n\t\t\"derived\": \"--now-font-size--md2\"\n\t},\n\t\"--now-display-type_header--font-size--sm\": {\n\t\t\"name\": \"displayType.header.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-display-type_label--color\": {\n\t\t\"name\": \"displayType.label.color\",\n\t\t\"derived\": \"--now-color_text--tertiary\"\n\t},\n\t\"--now-display-type_label--font-family\": {\n\t\t\"name\": \"displayType.label.fontFamily\",\n\t\t\"derived\": \"--now-display-type--font-family\"\n\t},\n\t\"--now-display-type_label--font-size--md\": {\n\t\t\"name\": \"displayType.label.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-display-type_label--font-size--sm\": {\n\t\t\"name\": \"displayType.label.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-display-type_label--font-style\": {\n\t\t\"name\": \"displayType.label.fontStyle\",\n\t\t\"derived\": \"--now-display-type--font-style\"\n\t},\n\t\"--now-display-type_label--font-weight\": {\n\t\t\"name\": \"displayType.label.fontWeight\",\n\t\t\"derived\": \"--now-display-type--font-weight\"\n\t},\n\t\"--now-display-type_label--text-transform\": {\n\t\t\"name\": \"displayType.label.textTransform\",\n\t\t\"derived\": \"--now-display-type--text-transform\"\n\t},\n\t\"--now-display-type_subheader--font-size--md\": {\n\t\t\"name\": \"displayType.subheader.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-display-type_subheader--font-size--sm\": {\n\t\t\"name\": \"displayType.subheader.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-display-type_value--color\": {\n\t\t\"name\": \"displayType.value.color\",\n\t\t\"derived\": \"--now-display-type--color\"\n\t},\n\t\"--now-display-type_value--font-family\": {\n\t\t\"name\": \"displayType.value.fontFamily\",\n\t\t\"derived\": \"--now-display-type--font-family\"\n\t},\n\t\"--now-display-type_value--font-size--md\": {\n\t\t\"name\": \"displayType.value.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-display-type_value--font-size--sm\": {\n\t\t\"name\": \"displayType.value.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-display-type_value--font-style\": {\n\t\t\"name\": \"displayType.value.fontStyle\",\n\t\t\"derived\": \"--now-display-type--font-style\"\n\t},\n\t\"--now-display-type_value--font-weight\": {\n\t\t\"name\": \"displayType.value.fontWeight\",\n\t\t\"derived\": \"--now-display-type--font-weight\"\n\t},\n\t\"--now-display-type_value--text-transform\": {\n\t\t\"name\": \"displayType.value.textTransform\",\n\t\t\"derived\": \"--now-display-type--text-transform\"\n\t},\n\t\"--now-display-type--color\": {\n\t\t\"name\": \"displayType.color\",\n\t\t\"derived\": \"--now-color_text--primary\"\n\t},\n\t\"--now-display-type--font-family\": {\n\t\t\"name\": \"displayType.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-display-type--font-style\": {\n\t\t\"name\": \"displayType.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-display-type--font-weight\": {\n\t\t\"name\": \"displayType.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-display-type--header-primary--font-family\": {\n\t\t\"name\": \"displayType.headerPrimary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--primary--font-family\"\n\t},\n\t\"--now-display-type--header-primary--font-style\": {\n\t\t\"name\": \"displayType.headerPrimary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--primary--font-style\"\n\t},\n\t\"--now-display-type--header-primary--font-weight\": {\n\t\t\"name\": \"displayType.headerPrimary.fontWeight\",\n\t\t\"derived\": \"--now-display-type--primary--font-weight\"\n\t},\n\t\"--now-display-type--header-primary--text-transform\": {\n\t\t\"name\": \"displayType.headerPrimary.textTransform\",\n\t\t\"derived\": \"--now-display-type--primary--text-transform\"\n\t},\n\t\"--now-display-type--header-secondary--font-family\": {\n\t\t\"name\": \"displayType.headerSecondary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--secondary--font-family\"\n\t},\n\t\"--now-display-type--header-secondary--font-style\": {\n\t\t\"name\": \"displayType.headerSecondary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--secondary--font-style\"\n\t},\n\t\"--now-display-type--header-secondary--font-weight\": {\n\t\t\"name\": \"displayType.headerSecondary.fontWeight\",\n\t\t\"derived\": \"--now-display-type--secondary--font-weight\"\n\t},\n\t\"--now-display-type--header-secondary--text-transform\": {\n\t\t\"name\": \"displayType.headerSecondary.textTransform\",\n\t\t\"derived\": \"--now-display-type--secondary--text-transform\"\n\t},\n\t\"--now-display-type--header-tertiary--font-family\": {\n\t\t\"name\": \"displayType.headerTertiary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--tertiary--font-family\"\n\t},\n\t\"--now-display-type--header-tertiary--font-style\": {\n\t\t\"name\": \"displayType.headerTertiary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--tertiary--font-style\"\n\t},\n\t\"--now-display-type--header-tertiary--font-weight\": {\n\t\t\"name\": \"displayType.headerTertiary.fontWeight\",\n\t\t\"derived\": \"--now-display-type--tertiary--font-weight\"\n\t},\n\t\"--now-display-type--header-tertiary--text-transform\": {\n\t\t\"name\": \"displayType.headerTertiary.textTransform\",\n\t\t\"derived\": \"--now-display-type--tertiary--text-transform\"\n\t},\n\t\"--now-display-type--line-height-crop--after\": {\n\t\t\"name\": \"displayType.lineHeightCrop.after\",\n\t\t\"derived\": \"--now-line-height-crop--after\"\n\t},\n\t\"--now-display-type--line-height-crop--before\": {\n\t\t\"name\": \"displayType.lineHeightCrop.before\",\n\t\t\"derived\": \"--now-line-height-crop--before\"\n\t},\n\t\"--now-display-type--primary--color\": {\n\t\t\"name\": \"displayType.primary.color\",\n\t\t\"derived\": \"--now-display-type--color\"\n\t},\n\t\"--now-display-type--primary--font-family\": {\n\t\t\"name\": \"displayType.primary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--font-family\"\n\t},\n\t\"--now-display-type--primary--font-style\": {\n\t\t\"name\": \"displayType.primary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--font-style\"\n\t},\n\t\"--now-display-type--primary--font-weight\": {\n\t\t\"name\": \"displayType.primary.fontWeight\",\n\t\t\"initial\": \"600\"\n\t},\n\t\"--now-display-type--primary--text-transform\": {\n\t\t\"name\": \"displayType.primary.textTransform\",\n\t\t\"derived\": \"--now-display-type--text-transform\"\n\t},\n\t\"--now-display-type--secondary--color\": {\n\t\t\"name\": \"displayType.secondary.color\",\n\t\t\"derived\": \"--now-color_text--secondary\"\n\t},\n\t\"--now-display-type--secondary--font-family\": {\n\t\t\"name\": \"displayType.secondary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--font-family\"\n\t},\n\t\"--now-display-type--secondary--font-style\": {\n\t\t\"name\": \"displayType.secondary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--font-style\"\n\t},\n\t\"--now-display-type--secondary--font-weight\": {\n\t\t\"name\": \"displayType.secondary.fontWeight\",\n\t\t\"derived\": \"--now-display-type--font-weight\"\n\t},\n\t\"--now-display-type--secondary--text-transform\": {\n\t\t\"name\": \"displayType.secondary.textTransform\",\n\t\t\"derived\": \"--now-display-type--text-transform\"\n\t},\n\t\"--now-display-type--tertiary--color\": {\n\t\t\"name\": \"displayType.tertiary.color\",\n\t\t\"derived\": \"--now-color_text--tertiary\"\n\t},\n\t\"--now-display-type--tertiary--font-family\": {\n\t\t\"name\": \"displayType.tertiary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--font-family\"\n\t},\n\t\"--now-display-type--tertiary--font-style\": {\n\t\t\"name\": \"displayType.tertiary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--font-style\"\n\t},\n\t\"--now-display-type--tertiary--font-weight\": {\n\t\t\"name\": \"displayType.tertiary.fontWeight\",\n\t\t\"derived\": \"--now-display-type--font-weight\"\n\t},\n\t\"--now-display-type--tertiary--text-transform\": {\n\t\t\"name\": \"displayType.tertiary.textTransform\",\n\t\t\"derived\": \"--now-display-type--text-transform\"\n\t},\n\t\"--now-display-type--text-transform\": {\n\t\t\"name\": \"displayType.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-display-type--title-primary--font-family\": {\n\t\t\"name\": \"displayType.titlePrimary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--primary--font-family\"\n\t},\n\t\"--now-display-type--title-primary--font-style\": {\n\t\t\"name\": \"displayType.titlePrimary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--primary--font-style\"\n\t},\n\t\"--now-display-type--title-primary--font-weight\": {\n\t\t\"name\": \"displayType.titlePrimary.fontWeight\",\n\t\t\"derived\": \"--now-display-type--primary--font-weight\"\n\t},\n\t\"--now-display-type--title-primary--text-transform\": {\n\t\t\"name\": \"displayType.titlePrimary.textTransform\",\n\t\t\"derived\": \"--now-display-type--primary--text-transform\"\n\t},\n\t\"--now-display-type--title-secondary--font-family\": {\n\t\t\"name\": \"displayType.titleSecondary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--secondary--font-family\"\n\t},\n\t\"--now-display-type--title-secondary--font-style\": {\n\t\t\"name\": \"displayType.titleSecondary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--secondary--font-style\"\n\t},\n\t\"--now-display-type--title-secondary--font-weight\": {\n\t\t\"name\": \"displayType.titleSecondary.fontWeight\",\n\t\t\"derived\": \"--now-display-type--secondary--font-weight\"\n\t},\n\t\"--now-display-type--title-secondary--text-transform\": {\n\t\t\"name\": \"displayType.titleSecondary.textTransform\",\n\t\t\"derived\": \"--now-display-type--secondary--text-transform\"\n\t},\n\t\"--now-display-type--title-tertiary--font-family\": {\n\t\t\"name\": \"displayType.titleTertiary.fontFamily\",\n\t\t\"derived\": \"--now-display-type--tertiary--font-family\"\n\t},\n\t\"--now-display-type--title-tertiary--font-style\": {\n\t\t\"name\": \"displayType.titleTertiary.fontStyle\",\n\t\t\"derived\": \"--now-display-type--tertiary--font-style\"\n\t},\n\t\"--now-display-type--title-tertiary--font-weight\": {\n\t\t\"name\": \"displayType.titleTertiary.fontWeight\",\n\t\t\"derived\": \"--now-display-type--tertiary--font-weight\"\n\t},\n\t\"--now-display-type--title-tertiary--text-transform\": {\n\t\t\"name\": \"displayType.titleTertiary.textTransform\",\n\t\t\"derived\": \"--now-display-type--tertiary--text-transform\"\n\t},\n\t\"--now-form-control_handle--border-radius\": {\n\t\t\"name\": \"formControl.handle.borderRadius\",\n\t\t\"initial\": \"2px\"\n\t},\n\t\"--now-form-control_handle--border-width\": {\n\t\t\"name\": \"formControl.handle.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-form-control_label--font-size--lg\": {\n\t\t\"name\": \"formControl.label.fontSize.lg\",\n\t\t\"derived\": \"--now-font-size--lg1\"\n\t},\n\t\"--now-form-control_label--font-size--md\": {\n\t\t\"name\": \"formControl.label.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-form-control_label--font-size--sm\": {\n\t\t\"name\": \"formControl.label.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-form-control_label--font-size--xs\": {\n\t\t\"name\": \"formControl.label.fontSize.xs\",\n\t\t\"derived\": \"--now-font-size--xs\"\n\t},\n\t\"--now-form-control_message--font-size--sm\": {\n\t\t\"name\": \"formControl.message.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-form-control_track--border-radius\": {\n\t\t\"name\": \"formControl.track.borderRadius\",\n\t\t\"initial\": \"2px\"\n\t},\n\t\"--now-form-control_track--border-width\": {\n\t\t\"name\": \"formControl.track.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-form-control_value--font-size--lg\": {\n\t\t\"name\": \"formControl.value.fontSize.lg\",\n\t\t\"derived\": \"--now-font-size--lg1\"\n\t},\n\t\"--now-form-control_value--font-size--md\": {\n\t\t\"name\": \"formControl.value.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-form-control_value--font-size--sm\": {\n\t\t\"name\": \"formControl.value.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-form-control_value--font-size--xs\": {\n\t\t\"name\": \"formControl.value.fontSize.xs\",\n\t\t\"derived\": \"--now-font-size--xs\"\n\t},\n\t\"--now-form-control--background-color-alpha--readonly\": {\n\t\t\"name\": \"formControl.backgroundColorAlpha.readonly\",\n\t\t\"derived\": \"--now-opacity--less\"\n\t},\n\t\"--now-form-control--border-radius\": {\n\t\t\"name\": \"formControl.borderRadius\",\n\t\t\"initial\": \"0\"\n\t},\n\t\"--now-form-control--border-width\": {\n\t\t\"name\": \"formControl.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-form-control--font-family\": {\n\t\t\"name\": \"formControl.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-form-control--font-style\": {\n\t\t\"name\": \"formControl.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-form-control--font-weight\": {\n\t\t\"name\": \"formControl.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-form-control--text-transform\": {\n\t\t\"name\": \"formControl.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-identifier_label--font-size--lg\": {\n\t\t\"name\": \"identifier.label.fontSize.lg\",\n\t\t\"derived\": \"--now-font-size--lg\"\n\t},\n\t\"--now-identifier_label--font-size--lg1\": {\n\t\t\"name\": \"identifier.label.fontSize.lg1\",\n\t\t\"derived\": \"--now-font-size--lg1\"\n\t},\n\t\"--now-identifier_label--font-size--lg2\": {\n\t\t\"name\": \"identifier.label.fontSize.lg2\",\n\t\t\"derived\": \"--now-font-size--lg2\"\n\t},\n\t\"--now-identifier_label--font-size--lg3\": {\n\t\t\"name\": \"identifier.label.fontSize.lg3\",\n\t\t\"derived\": \"--now-font-size--lg3\"\n\t},\n\t\"--now-identifier_label--font-size--md\": {\n\t\t\"name\": \"identifier.label.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-identifier_label--font-size--sm\": {\n\t\t\"name\": \"identifier.label.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-identifier_label--font-size--xl3\": {\n\t\t\"name\": \"identifier.label.fontSize.xl3\",\n\t\t\"derived\": \"--now-font-size--xl3\"\n\t},\n\t\"--now-identifier_label--font-size--xs\": {\n\t\t\"name\": \"identifier.label.fontSize.xs\",\n\t\t\"derived\": \"--now-font-size--xs\"\n\t},\n\t\"--now-identifier--border-radius\": {\n\t\t\"name\": \"identifier.borderRadius\",\n\t\t\"initial\": \"0\"\n\t},\n\t\"--now-identifier--border-width\": {\n\t\t\"name\": \"identifier.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-identifier--font-family\": {\n\t\t\"name\": \"identifier.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-identifier--font-style\": {\n\t\t\"name\": \"identifier.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-identifier--font-weight\": {\n\t\t\"name\": \"identifier.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-identifier--text-transform\": {\n\t\t\"name\": \"identifier.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-indicator_label--font-size--lg\": {\n\t\t\"name\": \"indicator.label.fontSize.lg\",\n\t\t\"derived\": \"--now-font-size--lg1\"\n\t},\n\t\"--now-indicator_label--font-size--md\": {\n\t\t\"name\": \"indicator.label.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-indicator_label--font-size--sm\": {\n\t\t\"name\": \"indicator.label.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-indicator--border-radius\": {\n\t\t\"name\": \"indicator.borderRadius\",\n\t\t\"initial\": \"2px\"\n\t},\n\t\"--now-indicator--border-width\": {\n\t\t\"name\": \"indicator.borderWidth\",\n\t\t\"initial\": \"0\"\n\t},\n\t\"--now-indicator--font-family\": {\n\t\t\"name\": \"indicator.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-indicator--font-style\": {\n\t\t\"name\": \"indicator.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-indicator--font-weight\": {\n\t\t\"name\": \"indicator.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-indicator--text-transform\": {\n\t\t\"name\": \"indicator.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-loading_label--font-size--md\": {\n\t\t\"name\": \"loading.label.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-loading_label--font-size--sm\": {\n\t\t\"name\": \"loading.label.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-loading--border-radius\": {\n\t\t\"name\": \"loading.borderRadius\",\n\t\t\"initial\": \"0\"\n\t},\n\t\"--now-loading--border-width\": {\n\t\t\"name\": \"loading.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-loading--font-family\": {\n\t\t\"name\": \"loading.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-loading--font-style\": {\n\t\t\"name\": \"loading.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-loading--font-weight\": {\n\t\t\"name\": \"loading.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-loading--initial--background-color\": {\n\t\t\"name\": \"loading.initial.backgroundColor\",\n\t\t\"derived\": \"--now-color--primary-1\"\n\t},\n\t\"--now-loading--initial--border-color\": {\n\t\t\"name\": \"loading.initial.borderColor\",\n\t\t\"derived\": \"--now-color--primary-2\"\n\t},\n\t\"--now-loading--text-transform\": {\n\t\t\"name\": \"loading.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-menu_divider--color\": {\n\t\t\"name\": \"menu.divider.color\",\n\t\t\"derived\": \"--now-color_divider--tertiary\"\n\t},\n\t\"--now-menu_divider--width\": {\n\t\t\"name\": \"menu.divider.width\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-menu_field--font-size--md\": {\n\t\t\"name\": \"menu.field.fontSize.md\",\n\t\t\"derived\": \"--now-form-control_value--font-size--md\"\n\t},\n\t\"--now-menu_field--font-size--sm\": {\n\t\t\"name\": \"menu.field.fontSize.sm\",\n\t\t\"derived\": \"--now-form-control_value--font-size--sm\"\n\t},\n\t\"--now-menu_header--font-size--md\": {\n\t\t\"name\": \"menu.header.fontSize.md\",\n\t\t\"derived\": \"--now-display-type_header--font-size--md\"\n\t},\n\t\"--now-menu_header--font-size--sm\": {\n\t\t\"name\": \"menu.header.fontSize.sm\",\n\t\t\"derived\": \"--now-display-type_header--font-size--sm\"\n\t},\n\t\"--now-menu_heading--font-family\": {\n\t\t\"name\": \"menu.heading.fontFamily\",\n\t\t\"derived\": \"--now-menu--font-family\"\n\t},\n\t\"--now-menu_heading--font-style\": {\n\t\t\"name\": \"menu.heading.fontStyle\",\n\t\t\"derived\": \"--now-menu--font-style\"\n\t},\n\t\"--now-menu_heading--font-weight\": {\n\t\t\"name\": \"menu.heading.fontWeight\",\n\t\t\"derived\": \"--now-menu--font-weight\"\n\t},\n\t\"--now-menu_heading--text-transform\": {\n\t\t\"name\": \"menu.heading.textTransform\",\n\t\t\"derived\": \"--now-menu--text-transform\"\n\t},\n\t\"--now-menu_label--font-size--md\": {\n\t\t\"name\": \"menu.label.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-menu_label--font-size--sm\": {\n\t\t\"name\": \"menu.label.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-menu_search--font-family\": {\n\t\t\"name\": \"menu.search.fontFamily\",\n\t\t\"derived\": \"--now-menu--font-family\"\n\t},\n\t\"--now-menu_search--font-style\": {\n\t\t\"name\": \"menu.search.fontStyle\",\n\t\t\"derived\": \"--now-menu--font-style\"\n\t},\n\t\"--now-menu_search--font-weight\": {\n\t\t\"name\": \"menu.search.fontWeight\",\n\t\t\"derived\": \"--now-menu--font-weight\"\n\t},\n\t\"--now-menu_search--text-transform\": {\n\t\t\"name\": \"menu.search.textTransform\",\n\t\t\"derived\": \"--now-menu--text-transform\"\n\t},\n\t\"--now-menu_sublabel--font-family\": {\n\t\t\"name\": \"menu.sublabel.fontFamily\",\n\t\t\"derived\": \"--now-menu--font-family\"\n\t},\n\t\"--now-menu_sublabel--font-size--md\": {\n\t\t\"name\": \"menu.sublabel.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-menu_sublabel--font-size--sm\": {\n\t\t\"name\": \"menu.sublabel.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-menu_sublabel--font-style\": {\n\t\t\"name\": \"menu.sublabel.fontStyle\",\n\t\t\"derived\": \"--now-menu--font-style\"\n\t},\n\t\"--now-menu_sublabel--font-weight\": {\n\t\t\"name\": \"menu.sublabel.fontWeight\",\n\t\t\"derived\": \"--now-menu--font-weight\"\n\t},\n\t\"--now-menu_sublabel--text-transform\": {\n\t\t\"name\": \"menu.sublabel.textTransform\",\n\t\t\"derived\": \"--now-menu--text-transform\"\n\t},\n\t\"--now-menu--background-color\": {\n\t\t\"name\": \"menu.backgroundColor\",\n\t\t\"derived\": \"--now-color_background--primary\"\n\t},\n\t\"--now-menu--border-color\": {\n\t\t\"name\": \"menu.borderColor\",\n\t\t\"derived\": \"--now-color_border--primary\"\n\t},\n\t\"--now-menu--border-radius\": {\n\t\t\"name\": \"menu.borderRadius\",\n\t\t\"initial\": \"2px\"\n\t},\n\t\"--now-menu--border-width\": {\n\t\t\"name\": \"menu.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-menu--font-family\": {\n\t\t\"name\": \"menu.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-menu--font-style\": {\n\t\t\"name\": \"menu.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-menu--font-weight\": {\n\t\t\"name\": \"menu.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-menu--text-transform\": {\n\t\t\"name\": \"menu.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-messaging_header--font-size--md\": {\n\t\t\"name\": \"messaging.header.fontSize.md\",\n\t\t\"derived\": \"--now-display-type_header--font-size--md\"\n\t},\n\t\"--now-messaging_message--font-size--md\": {\n\t\t\"name\": \"messaging.message.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-messaging--background-color\": {\n\t\t\"name\": \"messaging.backgroundColor\",\n\t\t\"derived\": \"--now-color_background--primary\"\n\t},\n\t\"--now-messaging--border-color\": {\n\t\t\"name\": \"messaging.borderColor\",\n\t\t\"derived\": \"--now-color_border--secondary\"\n\t},\n\t\"--now-messaging--border-radius\": {\n\t\t\"name\": \"messaging.borderRadius\",\n\t\t\"initial\": \"4px\"\n\t},\n\t\"--now-messaging--border-width\": {\n\t\t\"name\": \"messaging.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-messaging--font-family\": {\n\t\t\"name\": \"messaging.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-messaging--font-style\": {\n\t\t\"name\": \"messaging.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-messaging--font-weight\": {\n\t\t\"name\": \"messaging.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-messaging--text-transform\": {\n\t\t\"name\": \"messaging.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-navigation_label--font-size--md\": {\n\t\t\"name\": \"navigation.label.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-navigation_label--font-size--sm\": {\n\t\t\"name\": \"navigation.label.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-navigation_sublabel--font-size--md\": {\n\t\t\"name\": \"navigation.sublabel.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-navigation_sublabel--font-size--sm\": {\n\t\t\"name\": \"navigation.sublabel.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-navigation--font-family\": {\n\t\t\"name\": \"navigation.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-navigation--font-style\": {\n\t\t\"name\": \"navigation.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-navigation--font-weight\": {\n\t\t\"name\": \"navigation.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-navigation--text-transform\": {\n\t\t\"name\": \"navigation.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-view-control_header--font-size--lg\": {\n\t\t\"name\": \"viewControl.header.fontSize.lg\",\n\t\t\"derived\": \"--now-display-type_header--font-size--lg\"\n\t},\n\t\"--now-view-control_header--font-size--md\": {\n\t\t\"name\": \"viewControl.header.fontSize.md\",\n\t\t\"derived\": \"--now-display-type_header--font-size--md\"\n\t},\n\t\"--now-view-control_header--font-size--sm\": {\n\t\t\"name\": \"viewControl.header.fontSize.sm\",\n\t\t\"derived\": \"--now-display-type_header--font-size--sm\"\n\t},\n\t\"--now-view-control_label--font-size--md\": {\n\t\t\"name\": \"viewControl.label.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-view-control_label--font-size--sm\": {\n\t\t\"name\": \"viewControl.label.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-view-control_subheader--font-size--sm\": {\n\t\t\"name\": \"viewControl.subheader.fontSize.sm\",\n\t\t\"derived\": \"--now-display-type_subheader--font-size--sm\"\n\t},\n\t\"--now-view-control--border-radius\": {\n\t\t\"name\": \"viewControl.borderRadius\",\n\t\t\"initial\": \"0\"\n\t},\n\t\"--now-view-control--border-width\": {\n\t\t\"name\": \"viewControl.borderWidth\",\n\t\t\"initial\": \"0\"\n\t},\n\t\"--now-view-control--font-family\": {\n\t\t\"name\": \"viewControl.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-view-control--font-style\": {\n\t\t\"name\": \"viewControl.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-view-control--font-weight\": {\n\t\t\"name\": \"viewControl.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-view-control--text-transform\": {\n\t\t\"name\": \"viewControl.textTransform\",\n\t\t\"initial\": \"none\"\n\t},\n\t\"--now-window_body--font-size--md\": {\n\t\t\"name\": \"window.body.fontSize.md\",\n\t\t\"derived\": \"--now-font-size--md1\"\n\t},\n\t\"--now-window_body--font-size--sm\": {\n\t\t\"name\": \"window.body.fontSize.sm\",\n\t\t\"derived\": \"--now-font-size--sm\"\n\t},\n\t\"--now-window_header--font-size--lg\": {\n\t\t\"name\": \"window.header.fontSize.lg\",\n\t\t\"derived\": \"--now-display-type_header--font-size--lg\"\n\t},\n\t\"--now-window_header--font-size--md\": {\n\t\t\"name\": \"window.header.fontSize.md\",\n\t\t\"derived\": \"--now-display-type_header--font-size--md\"\n\t},\n\t\"--now-window_header--font-size--sm\": {\n\t\t\"name\": \"window.header.fontSize.sm\",\n\t\t\"derived\": \"--now-display-type_header--font-size--sm\"\n\t},\n\t\"--now-window--background-color\": {\n\t\t\"name\": \"window.backgroundColor\",\n\t\t\"derived\": \"--now-color_background--primary\"\n\t},\n\t\"--now-window--border-color\": {\n\t\t\"name\": \"window.borderColor\",\n\t\t\"derived\": \"--now-color_divider--secondary\"\n\t},\n\t\"--now-window--border-radius\": {\n\t\t\"name\": \"window.borderRadius\",\n\t\t\"initial\": \"4px\"\n\t},\n\t\"--now-window--border-width\": {\n\t\t\"name\": \"window.borderWidth\",\n\t\t\"initial\": \"1px\"\n\t},\n\t\"--now-window--font-family\": {\n\t\t\"name\": \"window.fontFamily\",\n\t\t\"derived\": \"--now-font-family\"\n\t},\n\t\"--now-window--font-style\": {\n\t\t\"name\": \"window.fontStyle\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-window--font-weight\": {\n\t\t\"name\": \"window.fontWeight\",\n\t\t\"initial\": \"normal\"\n\t},\n\t\"--now-window--text-transform\": {\n\t\t\"name\": \"window.textTransform\",\n\t\t\"initial\": \"none\"\n\t}\n}","/*\n * # AUTO GENERATED\n *\n * The following hook definition files can be auto-generated by running the\n * command `.bin/theme-behavior-json` from the root of the design-system repo:\n *\n * - system.colors.js\n * - datavis.colors.js\n * - categories.js\n * - globals.js\n *\n * # COLOR HOOK SYNTAX\n *\n * Color hooks with initial do not inherit from other color hooks when not\n * defined in the application's theme. In the unlikely case they are not defined\n * in the theme they default to a real value (like #fff). They also don't have\n * different definitions for their light vs. dark theme.\n *\n * Color hooks with derived inherit from one or more other color hooks when\n * not defined in the application's theme. They generally (though not always)\n * have different definitions for light vs. dark theme.\n *\n * Examples:\n * - color.neutral0 --> #fff\n * - color.backgroundPrimary --[light]--> color.neutral0 --> #fff\n * - color.backgroundPrimary --[dark]---> color.neutral18 --> #161b1c\n */\n\nimport globals from './globals.js';\n// @TODO: Need dark derived, not just light derived. Using light for both\n// right now to simplify things. We don't strictly need dark theme in Quebec.\nimport systemColors from './system.colors.js';\nimport datavisColors from './datavis.colors.js';\nimport categories from './categories.js';\n\nexport default {\n\t...globals,\n\t...systemColors,\n\t...datavisColors,\n\t...categories,\n};\n","export default{\n    \"--now-actionable_divider--brand-primary--color\": {\n        \"name\": \"actionable.divider.brandPrimary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--brand-primary--color--active\": {\n        \"name\": \"actionable.divider.brandPrimary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--brand-primary--color--hover\": {\n        \"name\": \"actionable.divider.brandPrimary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--brand-secondary--color\": {\n        \"name\": \"actionable.divider.brandSecondary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--brand-secondary--color--active\": {\n        \"name\": \"actionable.divider.brandSecondary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--brand-secondary--color--hover\": {\n        \"name\": \"actionable.divider.brandSecondary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--brand-tertiary--color\": {\n        \"name\": \"actionable.divider.brandTertiary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--brand-tertiary--color--active\": {\n        \"name\": \"actionable.divider.brandTertiary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--brand-tertiary--color--hover\": {\n        \"name\": \"actionable.divider.brandTertiary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary--color\": {\n        \"name\": \"actionable.divider.primary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary--color--active\": {\n        \"name\": \"actionable.divider.primary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary--color--hover\": {\n        \"name\": \"actionable.divider.primary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary-negative--color\": {\n        \"name\": \"actionable.divider.primaryNegative.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary-negative--color--active\": {\n        \"name\": \"actionable.divider.primaryNegative.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary-negative--color--hover\": {\n        \"name\": \"actionable.divider.primaryNegative.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary-positive--color\": {\n        \"name\": \"actionable.divider.primaryPositive.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary-positive--color--active\": {\n        \"name\": \"actionable.divider.primaryPositive.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--primary-positive--color--hover\": {\n        \"name\": \"actionable.divider.primaryPositive.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_divider--secondary--color\": {\n        \"name\": \"actionable.divider.secondary.color\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable_divider--secondary--color--active\": {\n        \"name\": \"actionable.divider.secondary.color.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_divider--secondary--color--hover\": {\n        \"name\": \"actionable.divider.secondary.color.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_divider--secondary-negative--color\": {\n        \"name\": \"actionable.divider.secondaryNegative.color\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable_divider--secondary-negative--color--active\": {\n        \"name\": \"actionable.divider.secondaryNegative.color.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-actionable_divider--secondary-negative--color--hover\": {\n        \"name\": \"actionable.divider.secondaryNegative.color.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-actionable_divider--secondary-positive--color\": {\n        \"name\": \"actionable.divider.secondaryPositive.color\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable_divider--secondary-positive--color--active\": {\n        \"name\": \"actionable.divider.secondaryPositive.color.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-actionable_divider--secondary-positive--color--hover\": {\n        \"name\": \"actionable.divider.secondaryPositive.color.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-actionable_divider--tertiary--color\": {\n        \"name\": \"actionable.divider.tertiary.color\",\n        \"derived\": \"--now-color_border--tertiary-actionable\"\n    },\n    \"--now-actionable_divider--tertiary--color--active\": {\n        \"name\": \"actionable.divider.tertiary.color.active\",\n        \"derived\": \"--now-color_border--primary-actionable\"\n    },\n    \"--now-actionable_divider--tertiary--color--hover\": {\n        \"name\": \"actionable.divider.tertiary.color.hover\",\n        \"derived\": \"--now-color_border--secondary-actionable\"\n    },\n    \"--now-actionable_icon--brand-primary--color\": {\n        \"name\": \"actionable.icon.brandPrimary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--brand-primary--color--active\": {\n        \"name\": \"actionable.icon.brandPrimary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--brand-primary--color--hover\": {\n        \"name\": \"actionable.icon.brandPrimary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--brand-secondary--color\": {\n        \"name\": \"actionable.icon.brandSecondary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--brand-secondary--color--active\": {\n        \"name\": \"actionable.icon.brandSecondary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--brand-secondary--color--hover\": {\n        \"name\": \"actionable.icon.brandSecondary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--brand-tertiary--color\": {\n        \"name\": \"actionable.icon.brandTertiary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--brand-tertiary--color--active\": {\n        \"name\": \"actionable.icon.brandTertiary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--brand-tertiary--color--hover\": {\n        \"name\": \"actionable.icon.brandTertiary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary_bare--color\": {\n        \"name\": \"actionable.icon.primary.bare.color\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable_icon--primary_bare--color--active\": {\n        \"name\": \"actionable.icon.primary.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary_bare--color--hover\": {\n        \"name\": \"actionable.icon.primary.bare.color.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_icon--primary_bare--color--selected\": {\n        \"name\": \"actionable.icon.primary.bare.color.selected\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable_icon--primary_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.primary.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.primary.bare.color.selected.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_icon--primary_high-contrast_bare--color\": {\n        \"name\": \"actionable.icon.primary.highContrast.bare.color\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_icon--primary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.icon.primary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.icon.primary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.primary.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_icon--primary_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.primary.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.primary.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.icon.primary.highlighted.bare.color.selected\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable_icon--primary_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.primary.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.primary.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_icon--primary_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.primary.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_icon--primary_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.primary.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.primary.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary--color\": {\n        \"name\": \"actionable.icon.primary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary--color--active\": {\n        \"name\": \"actionable.icon.primary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary--color--hover\": {\n        \"name\": \"actionable.icon.primary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary-negative--color\": {\n        \"name\": \"actionable.icon.primaryNegative.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary-negative--color--active\": {\n        \"name\": \"actionable.icon.primaryNegative.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary-negative--color--hover\": {\n        \"name\": \"actionable.icon.primaryNegative.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary-positive--color\": {\n        \"name\": \"actionable.icon.primaryPositive.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary-positive--color--active\": {\n        \"name\": \"actionable.icon.primaryPositive.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary-positive--color--hover\": {\n        \"name\": \"actionable.icon.primaryPositive.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_icon--primary-selection_bare--color\": {\n        \"name\": \"actionable.icon.primarySelection.bare.color\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--primary-selection_bare--color--active\": {\n        \"name\": \"actionable.icon.primarySelection.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_bare--color--hover\": {\n        \"name\": \"actionable.icon.primarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--primary-selection_bare--color--selected\": {\n        \"name\": \"actionable.icon.primarySelection.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--primary-selection_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.primarySelection.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.primarySelection.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--primary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.icon.primarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--primary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.icon.primarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.icon.primarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.primarySelection.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--primary-selection_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.primarySelection.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.primarySelection.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.icon.primarySelection.highlighted.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--primary-selection_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.primarySelection.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.primarySelection.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.primarySelection.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--primary-selection_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.primarySelection.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.primarySelection.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection--color\": {\n        \"name\": \"actionable.icon.primarySelection.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection--color--active\": {\n        \"name\": \"actionable.icon.primarySelection.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--primary-selection--color--hover\": {\n        \"name\": \"actionable.icon.primarySelection.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--secondary_bare--color\": {\n        \"name\": \"actionable.icon.secondary.bare.color\",\n        \"derived\": \"--now-actionable_icon--secondary--color\"\n    },\n    \"--now-actionable_icon--secondary_bare--color--active\": {\n        \"name\": \"actionable.icon.secondary.bare.color.active\",\n        \"derived\": \"--now-actionable_icon--secondary--color--active\"\n    },\n    \"--now-actionable_icon--secondary_bare--color--hover\": {\n        \"name\": \"actionable.icon.secondary.bare.color.hover\",\n        \"derived\": \"--now-actionable_icon--secondary--color--hover\"\n    },\n    \"--now-actionable_icon--secondary_bare--color--selected\": {\n        \"name\": \"actionable.icon.secondary.bare.color.selected\",\n        \"derived\": \"--now-actionable_icon--secondary_bare--color\"\n    },\n    \"--now-actionable_icon--secondary_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.secondary.bare.color.selected.active\",\n        \"derived\": \"--now-actionable_icon--secondary_bare--color--active\"\n    },\n    \"--now-actionable_icon--secondary_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.secondary.bare.color.selected.hover\",\n        \"derived\": \"--now-actionable_icon--secondary_bare--color--hover\"\n    },\n    \"--now-actionable_icon--secondary_high-contrast_bare--color\": {\n        \"name\": \"actionable.icon.secondary.highContrast.bare.color\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_icon--secondary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.icon.secondary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--secondary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.icon.secondary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_icon--secondary_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.secondary.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_icon--secondary_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.secondary.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--secondary_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.secondary.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_icon--secondary_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.icon.secondary.highlighted.bare.color.selected\",\n        \"derived\": \"--now-actionable_icon--secondary_bare--color--selected\"\n    },\n    \"--now-actionable_icon--secondary_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.secondary.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-actionable_icon--secondary_bare--color--selected_active\"\n    },\n    \"--now-actionable_icon--secondary_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.secondary.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-actionable_icon--secondary_bare--color--selected_hover\"\n    },\n    \"--now-actionable_icon--secondary_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.secondary.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_icon--secondary_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.secondary.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--secondary_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.secondary.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_icon--secondary--color\": {\n        \"name\": \"actionable.icon.secondary.color\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable_icon--secondary--color--active\": {\n        \"name\": \"actionable.icon.secondary.color.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_icon--secondary--color--hover\": {\n        \"name\": \"actionable.icon.secondary.color.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_icon--secondary-negative--color\": {\n        \"name\": \"actionable.icon.secondaryNegative.color\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable_icon--secondary-negative--color--active\": {\n        \"name\": \"actionable.icon.secondaryNegative.color.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-actionable_icon--secondary-negative--color--hover\": {\n        \"name\": \"actionable.icon.secondaryNegative.color.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-actionable_icon--secondary-positive--color\": {\n        \"name\": \"actionable.icon.secondaryPositive.color\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable_icon--secondary-positive--color--active\": {\n        \"name\": \"actionable.icon.secondaryPositive.color.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-actionable_icon--secondary-positive--color--hover\": {\n        \"name\": \"actionable.icon.secondaryPositive.color.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-actionable_icon--secondary-selection_bare--color\": {\n        \"name\": \"actionable.icon.secondarySelection.bare.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_icon--secondary-selection_bare--color--active\": {\n        \"name\": \"actionable.icon.secondarySelection.bare.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--secondary-selection_bare--color--hover\": {\n        \"name\": \"actionable.icon.secondarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--secondary-selection_bare--color--selected\": {\n        \"name\": \"actionable.icon.secondarySelection.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_icon--secondary-selection_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.secondarySelection.bare.color.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--secondary-selection_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.secondarySelection.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--secondary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.icon.secondarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--secondary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.icon.secondarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--secondary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.icon.secondarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--secondary-selection_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.secondarySelection.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--secondary-selection_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.secondarySelection.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--secondary-selection_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.secondarySelection.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--secondary-selection_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.icon.secondarySelection.highlighted.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_icon--secondary-selection_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.secondarySelection.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--secondary-selection_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.secondarySelection.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--secondary-selection_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.secondarySelection.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--secondary-selection_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.secondarySelection.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--secondary-selection_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.secondarySelection.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--secondary-selection--color\": {\n        \"name\": \"actionable.icon.secondarySelection.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_icon--secondary-selection--color--active\": {\n        \"name\": \"actionable.icon.secondarySelection.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--secondary-selection--color--hover\": {\n        \"name\": \"actionable.icon.secondarySelection.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--tertiary_bare--color\": {\n        \"name\": \"actionable.icon.tertiary.bare.color\",\n        \"derived\": \"--now-actionable_icon--tertiary--color\"\n    },\n    \"--now-actionable_icon--tertiary_bare--color--active\": {\n        \"name\": \"actionable.icon.tertiary.bare.color.active\",\n        \"derived\": \"--now-actionable_icon--tertiary--color--active\"\n    },\n    \"--now-actionable_icon--tertiary_bare--color--hover\": {\n        \"name\": \"actionable.icon.tertiary.bare.color.hover\",\n        \"derived\": \"--now-actionable_icon--tertiary--color--hover\"\n    },\n    \"--now-actionable_icon--tertiary_bare--color--selected\": {\n        \"name\": \"actionable.icon.tertiary.bare.color.selected\",\n        \"derived\": \"--now-actionable_icon--tertiary_bare--color\"\n    },\n    \"--now-actionable_icon--tertiary_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.tertiary.bare.color.selected.active\",\n        \"derived\": \"--now-actionable_icon--tertiary_bare--color--active\"\n    },\n    \"--now-actionable_icon--tertiary_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.tertiary.bare.color.selected.hover\",\n        \"derived\": \"--now-actionable_icon--tertiary_bare--color--hover\"\n    },\n    \"--now-actionable_icon--tertiary_high-contrast_bare--color\": {\n        \"name\": \"actionable.icon.tertiary.highContrast.bare.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.icon.tertiary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.icon.tertiary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.tertiary.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.tertiary.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.tertiary.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.icon.tertiary.highlighted.bare.color.selected\",\n        \"derived\": \"--now-actionable_icon--tertiary_bare--color--selected\"\n    },\n    \"--now-actionable_icon--tertiary_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.tertiary.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-actionable_icon--tertiary_bare--color--selected_active\"\n    },\n    \"--now-actionable_icon--tertiary_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.tertiary.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-actionable_icon--tertiary_bare--color--selected_hover\"\n    },\n    \"--now-actionable_icon--tertiary_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.tertiary.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.tertiary.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.tertiary.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary--color\": {\n        \"name\": \"actionable.icon.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-actionable_icon--tertiary--color--active\": {\n        \"name\": \"actionable.icon.tertiary.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary--color--hover\": {\n        \"name\": \"actionable.icon.tertiary.color.hover\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-actionable_icon--tertiary-selection_bare--color\": {\n        \"name\": \"actionable.icon.tertiarySelection.bare.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-actionable_icon--tertiary-selection_bare--color--active\": {\n        \"name\": \"actionable.icon.tertiarySelection.bare.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--tertiary-selection_bare--color--hover\": {\n        \"name\": \"actionable.icon.tertiarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--tertiary-selection_bare--color--selected\": {\n        \"name\": \"actionable.icon.tertiarySelection.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_icon--tertiary-selection_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.tertiarySelection.bare.color.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--tertiary-selection_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.tertiarySelection.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--tertiary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.icon.tertiarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.icon.tertiarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.icon.tertiarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--tertiary-selection_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.tertiarySelection.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--tertiary-selection_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.tertiarySelection.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary-selection_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.tertiarySelection.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--tertiary-selection_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.icon.tertiarySelection.highlighted.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_icon--tertiary-selection_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.tertiarySelection.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--tertiary-selection_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.tertiarySelection.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--tertiary-selection_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.icon.tertiarySelection.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_icon--tertiary-selection_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.icon.tertiarySelection.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_icon--tertiary-selection_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.icon.tertiarySelection.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_icon--tertiary-selection--color\": {\n        \"name\": \"actionable.icon.tertiarySelection.color\",\n        \"derived\": \"--now-actionable_icon--tertiary--color\"\n    },\n    \"--now-actionable_icon--tertiary-selection--color--active\": {\n        \"name\": \"actionable.icon.tertiarySelection.color.active\",\n        \"derived\": \"--now-actionable_icon--tertiary--color--active\"\n    },\n    \"--now-actionable_icon--tertiary-selection--color--hover\": {\n        \"name\": \"actionable.icon.tertiarySelection.color.hover\",\n        \"derived\": \"--now-actionable_icon--tertiary--color--hover\"\n    },\n    \"--now-actionable_label--brand-primary--color\": {\n        \"name\": \"actionable.label.brandPrimary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--brand-primary--color--active\": {\n        \"name\": \"actionable.label.brandPrimary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--brand-primary--color--hover\": {\n        \"name\": \"actionable.label.brandPrimary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--brand-secondary--color\": {\n        \"name\": \"actionable.label.brandSecondary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--brand-secondary--color--active\": {\n        \"name\": \"actionable.label.brandSecondary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--brand-secondary--color--hover\": {\n        \"name\": \"actionable.label.brandSecondary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--brand-tertiary--color\": {\n        \"name\": \"actionable.label.brandTertiary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--brand-tertiary--color--active\": {\n        \"name\": \"actionable.label.brandTertiary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--brand-tertiary--color--hover\": {\n        \"name\": \"actionable.label.brandTertiary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary_bare--color\": {\n        \"name\": \"actionable.label.primary.bare.color\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable_label--primary_bare--color--active\": {\n        \"name\": \"actionable.label.primary.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary_bare--color--hover\": {\n        \"name\": \"actionable.label.primary.bare.color.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_label--primary_bare--color--selected\": {\n        \"name\": \"actionable.label.primary.bare.color.selected\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable_label--primary_bare--color--selected_active\": {\n        \"name\": \"actionable.label.primary.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.primary.bare.color.selected.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_label--primary_high-contrast_bare--color\": {\n        \"name\": \"actionable.label.primary.highContrast.bare.color\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_label--primary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.label.primary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.label.primary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.primary.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_label--primary_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.primary.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.primary.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.label.primary.highlighted.bare.color.selected\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable_label--primary_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.label.primary.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.primary.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_label--primary_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.primary.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_label--primary_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.primary.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.primary.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary--color\": {\n        \"name\": \"actionable.label.primary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary--color--active\": {\n        \"name\": \"actionable.label.primary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary--color--hover\": {\n        \"name\": \"actionable.label.primary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary-negative--color\": {\n        \"name\": \"actionable.label.primaryNegative.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary-negative--color--active\": {\n        \"name\": \"actionable.label.primaryNegative.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary-negative--color--hover\": {\n        \"name\": \"actionable.label.primaryNegative.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary-positive--color\": {\n        \"name\": \"actionable.label.primaryPositive.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary-positive--color--active\": {\n        \"name\": \"actionable.label.primaryPositive.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary-positive--color--hover\": {\n        \"name\": \"actionable.label.primaryPositive.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_label--primary-selection_bare--color\": {\n        \"name\": \"actionable.label.primarySelection.bare.color\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--primary-selection_bare--color--active\": {\n        \"name\": \"actionable.label.primarySelection.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_bare--color--hover\": {\n        \"name\": \"actionable.label.primarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--primary-selection_bare--color--selected\": {\n        \"name\": \"actionable.label.primarySelection.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--primary-selection_bare--color--selected_active\": {\n        \"name\": \"actionable.label.primarySelection.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.primarySelection.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--primary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.label.primarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--primary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.label.primarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.label.primarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.primarySelection.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--primary-selection_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.primarySelection.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.primarySelection.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.label.primarySelection.highlighted.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--primary-selection_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.label.primarySelection.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.primarySelection.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.primarySelection.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--primary-selection_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.primarySelection.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.primarySelection.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection--color\": {\n        \"name\": \"actionable.label.primarySelection.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection--color--active\": {\n        \"name\": \"actionable.label.primarySelection.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--primary-selection--color--hover\": {\n        \"name\": \"actionable.label.primarySelection.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--secondary_bare--color\": {\n        \"name\": \"actionable.label.secondary.bare.color\",\n        \"derived\": \"--now-actionable_label--secondary--color\"\n    },\n    \"--now-actionable_label--secondary_bare--color--active\": {\n        \"name\": \"actionable.label.secondary.bare.color.active\",\n        \"derived\": \"--now-actionable_label--secondary--color--active\"\n    },\n    \"--now-actionable_label--secondary_bare--color--hover\": {\n        \"name\": \"actionable.label.secondary.bare.color.hover\",\n        \"derived\": \"--now-actionable_label--secondary--color--hover\"\n    },\n    \"--now-actionable_label--secondary_bare--color--selected\": {\n        \"name\": \"actionable.label.secondary.bare.color.selected\",\n        \"derived\": \"--now-actionable_label--secondary_bare--color\"\n    },\n    \"--now-actionable_label--secondary_bare--color--selected_active\": {\n        \"name\": \"actionable.label.secondary.bare.color.selected.active\",\n        \"derived\": \"--now-actionable_label--secondary_bare--color--active\"\n    },\n    \"--now-actionable_label--secondary_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.secondary.bare.color.selected.hover\",\n        \"derived\": \"--now-actionable_label--secondary_bare--color--hover\"\n    },\n    \"--now-actionable_label--secondary_high-contrast_bare--color\": {\n        \"name\": \"actionable.label.secondary.highContrast.bare.color\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_label--secondary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.label.secondary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--secondary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.label.secondary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_label--secondary_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.secondary.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_label--secondary_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.secondary.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--secondary_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.secondary.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_label--secondary_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.label.secondary.highlighted.bare.color.selected\",\n        \"derived\": \"--now-actionable_label--secondary_bare--color--selected\"\n    },\n    \"--now-actionable_label--secondary_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.label.secondary.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-actionable_label--secondary_bare--color--selected_active\"\n    },\n    \"--now-actionable_label--secondary_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.secondary.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-actionable_label--secondary_bare--color--selected_hover\"\n    },\n    \"--now-actionable_label--secondary_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.secondary.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_label--secondary_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.secondary.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--secondary_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.secondary.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_label--secondary--color\": {\n        \"name\": \"actionable.label.secondary.color\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable_label--secondary--color--active\": {\n        \"name\": \"actionable.label.secondary.color.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_label--secondary--color--hover\": {\n        \"name\": \"actionable.label.secondary.color.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_label--secondary-negative--color\": {\n        \"name\": \"actionable.label.secondaryNegative.color\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable_label--secondary-negative--color--active\": {\n        \"name\": \"actionable.label.secondaryNegative.color.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-actionable_label--secondary-negative--color--hover\": {\n        \"name\": \"actionable.label.secondaryNegative.color.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-actionable_label--secondary-positive--color\": {\n        \"name\": \"actionable.label.secondaryPositive.color\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable_label--secondary-positive--color--active\": {\n        \"name\": \"actionable.label.secondaryPositive.color.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-actionable_label--secondary-positive--color--hover\": {\n        \"name\": \"actionable.label.secondaryPositive.color.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-actionable_label--secondary-selection_bare--color\": {\n        \"name\": \"actionable.label.secondarySelection.bare.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_label--secondary-selection_bare--color--active\": {\n        \"name\": \"actionable.label.secondarySelection.bare.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--secondary-selection_bare--color--hover\": {\n        \"name\": \"actionable.label.secondarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--secondary-selection_bare--color--selected\": {\n        \"name\": \"actionable.label.secondarySelection.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_label--secondary-selection_bare--color--selected_active\": {\n        \"name\": \"actionable.label.secondarySelection.bare.color.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--secondary-selection_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.secondarySelection.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--secondary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.label.secondarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--secondary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.label.secondarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--secondary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.label.secondarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--secondary-selection_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.secondarySelection.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--secondary-selection_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.secondarySelection.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--secondary-selection_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.secondarySelection.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--secondary-selection_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.label.secondarySelection.highlighted.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_label--secondary-selection_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.label.secondarySelection.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--secondary-selection_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.secondarySelection.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--secondary-selection_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.secondarySelection.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--secondary-selection_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.secondarySelection.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--secondary-selection_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.secondarySelection.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--secondary-selection--color\": {\n        \"name\": \"actionable.label.secondarySelection.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_label--secondary-selection--color--active\": {\n        \"name\": \"actionable.label.secondarySelection.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--secondary-selection--color--hover\": {\n        \"name\": \"actionable.label.secondarySelection.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--tertiary_bare--color\": {\n        \"name\": \"actionable.label.tertiary.bare.color\",\n        \"derived\": \"--now-actionable_label--tertiary--color\"\n    },\n    \"--now-actionable_label--tertiary_bare--color--active\": {\n        \"name\": \"actionable.label.tertiary.bare.color.active\",\n        \"derived\": \"--now-actionable_label--tertiary--color--active\"\n    },\n    \"--now-actionable_label--tertiary_bare--color--hover\": {\n        \"name\": \"actionable.label.tertiary.bare.color.hover\",\n        \"derived\": \"--now-actionable_label--tertiary--color--hover\"\n    },\n    \"--now-actionable_label--tertiary_bare--color--selected\": {\n        \"name\": \"actionable.label.tertiary.bare.color.selected\",\n        \"derived\": \"--now-actionable_label--tertiary_bare--color\"\n    },\n    \"--now-actionable_label--tertiary_bare--color--selected_active\": {\n        \"name\": \"actionable.label.tertiary.bare.color.selected.active\",\n        \"derived\": \"--now-actionable_label--tertiary_bare--color--active\"\n    },\n    \"--now-actionable_label--tertiary_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.tertiary.bare.color.selected.hover\",\n        \"derived\": \"--now-actionable_label--tertiary_bare--color--hover\"\n    },\n    \"--now-actionable_label--tertiary_high-contrast_bare--color\": {\n        \"name\": \"actionable.label.tertiary.highContrast.bare.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.label.tertiary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.label.tertiary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.tertiary.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.tertiary.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.tertiary.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.label.tertiary.highlighted.bare.color.selected\",\n        \"derived\": \"--now-actionable_label--tertiary_bare--color--selected\"\n    },\n    \"--now-actionable_label--tertiary_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.label.tertiary.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-actionable_label--tertiary_bare--color--selected_active\"\n    },\n    \"--now-actionable_label--tertiary_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.tertiary.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-actionable_label--tertiary_bare--color--selected_hover\"\n    },\n    \"--now-actionable_label--tertiary_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.tertiary.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.tertiary.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.tertiary.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary--color\": {\n        \"name\": \"actionable.label.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-actionable_label--tertiary--color--active\": {\n        \"name\": \"actionable.label.tertiary.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary--color--hover\": {\n        \"name\": \"actionable.label.tertiary.color.hover\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-actionable_label--tertiary-selection_bare--color\": {\n        \"name\": \"actionable.label.tertiarySelection.bare.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-actionable_label--tertiary-selection_bare--color--active\": {\n        \"name\": \"actionable.label.tertiarySelection.bare.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--tertiary-selection_bare--color--hover\": {\n        \"name\": \"actionable.label.tertiarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--tertiary-selection_bare--color--selected\": {\n        \"name\": \"actionable.label.tertiarySelection.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_label--tertiary-selection_bare--color--selected_active\": {\n        \"name\": \"actionable.label.tertiarySelection.bare.color.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--tertiary-selection_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.tertiarySelection.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--tertiary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.label.tertiarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.label.tertiarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.label.tertiarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--tertiary-selection_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.tertiarySelection.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--tertiary-selection_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.tertiarySelection.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary-selection_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.tertiarySelection.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--tertiary-selection_highlighted_bare--color--selected\": {\n        \"name\": \"actionable.label.tertiarySelection.highlighted.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_label--tertiary-selection_highlighted_bare--color--selected_active\": {\n        \"name\": \"actionable.label.tertiarySelection.highlighted.bare.color.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--tertiary-selection_highlighted_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.tertiarySelection.highlighted.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--tertiary-selection_highlighted_high-contrast_bare--color--selected\": {\n        \"name\": \"actionable.label.tertiarySelection.highlighted.highContrast.bare.color.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_label--tertiary-selection_highlighted_high-contrast_bare--color--selected_active\": {\n        \"name\": \"actionable.label.tertiarySelection.highlighted.highContrast.bare.color.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_label--tertiary-selection_highlighted_high-contrast_bare--color--selected_hover\": {\n        \"name\": \"actionable.label.tertiarySelection.highlighted.highContrast.bare.color.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_label--tertiary-selection--color\": {\n        \"name\": \"actionable.label.tertiarySelection.color\",\n        \"derived\": \"--now-actionable_label--tertiary--color\"\n    },\n    \"--now-actionable_label--tertiary-selection--color--active\": {\n        \"name\": \"actionable.label.tertiarySelection.color.active\",\n        \"derived\": \"--now-actionable_label--tertiary--color--active\"\n    },\n    \"--now-actionable_label--tertiary-selection--color--hover\": {\n        \"name\": \"actionable.label.tertiarySelection.color.hover\",\n        \"derived\": \"--now-actionable_label--tertiary--color--hover\"\n    },\n    \"--now-actionable_link_icon-end--primary--color\": {\n        \"name\": \"actionable.link.iconEnd.primary.color\",\n        \"derived\": \"--now-color--link-2\"\n    },\n    \"--now-actionable_link_icon-end--primary--color--active\": {\n        \"name\": \"actionable.link.iconEnd.primary.color.active\",\n        \"derived\": \"--now-color--link-4\"\n    },\n    \"--now-actionable_link_icon-end--primary--color--hover\": {\n        \"name\": \"actionable.link.iconEnd.primary.color.hover\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_icon-end--secondary--color\": {\n        \"name\": \"actionable.link.iconEnd.secondary.color\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_icon-end--secondary--color--active\": {\n        \"name\": \"actionable.link.iconEnd.secondary.color.active\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-actionable_link_icon-end--secondary--color--hover\": {\n        \"name\": \"actionable.link.iconEnd.secondary.color.hover\",\n        \"derived\": \"--now-color--link-4\"\n    },\n    \"--now-actionable_link_icon-end--tertiary--color\": {\n        \"name\": \"actionable.link.iconEnd.tertiary.color\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-actionable_link_icon-end--tertiary--color--active\": {\n        \"name\": \"actionable.link.iconEnd.tertiary.color.active\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_icon-end--tertiary--color--hover\": {\n        \"name\": \"actionable.link.iconEnd.tertiary.color.hover\",\n        \"derived\": \"--now-color--link-2\"\n    },\n    \"--now-actionable_link_icon-start--primary--color\": {\n        \"name\": \"actionable.link.iconStart.primary.color\",\n        \"derived\": \"--now-color--link-2\"\n    },\n    \"--now-actionable_link_icon-start--primary--color--active\": {\n        \"name\": \"actionable.link.iconStart.primary.color.active\",\n        \"derived\": \"--now-color--link-4\"\n    },\n    \"--now-actionable_link_icon-start--primary--color--hover\": {\n        \"name\": \"actionable.link.iconStart.primary.color.hover\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_icon-start--secondary--color\": {\n        \"name\": \"actionable.link.iconStart.secondary.color\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_icon-start--secondary--color--active\": {\n        \"name\": \"actionable.link.iconStart.secondary.color.active\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-actionable_link_icon-start--secondary--color--hover\": {\n        \"name\": \"actionable.link.iconStart.secondary.color.hover\",\n        \"derived\": \"--now-color--link-4\"\n    },\n    \"--now-actionable_link_icon-start--tertiary--color\": {\n        \"name\": \"actionable.link.iconStart.tertiary.color\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-actionable_link_icon-start--tertiary--color--active\": {\n        \"name\": \"actionable.link.iconStart.tertiary.color.active\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_icon-start--tertiary--color--hover\": {\n        \"name\": \"actionable.link.iconStart.tertiary.color.hover\",\n        \"derived\": \"--now-color--link-2\"\n    },\n    \"--now-actionable_link_label--primary--color\": {\n        \"name\": \"actionable.link.label.primary.color\",\n        \"derived\": \"--now-color--link-2\"\n    },\n    \"--now-actionable_link_label--primary--color--active\": {\n        \"name\": \"actionable.link.label.primary.color.active\",\n        \"derived\": \"--now-color--link-4\"\n    },\n    \"--now-actionable_link_label--primary--color--hover\": {\n        \"name\": \"actionable.link.label.primary.color.hover\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_label--secondary--color\": {\n        \"name\": \"actionable.link.label.secondary.color\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_label--secondary--color--active\": {\n        \"name\": \"actionable.link.label.secondary.color.active\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-actionable_link_label--secondary--color--hover\": {\n        \"name\": \"actionable.link.label.secondary.color.hover\",\n        \"derived\": \"--now-color--link-4\"\n    },\n    \"--now-actionable_link_label--tertiary--color\": {\n        \"name\": \"actionable.link.label.tertiary.color\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-actionable_link_label--tertiary--color--active\": {\n        \"name\": \"actionable.link.label.tertiary.color.active\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-actionable_link_label--tertiary--color--hover\": {\n        \"name\": \"actionable.link.label.tertiary.color.hover\",\n        \"derived\": \"--now-color--link-2\"\n    },\n    \"--now-actionable_trigger-icon--brand-primary--color\": {\n        \"name\": \"actionable.triggerIcon.brandPrimary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--brand-primary--color--active\": {\n        \"name\": \"actionable.triggerIcon.brandPrimary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--brand-primary--color--hover\": {\n        \"name\": \"actionable.triggerIcon.brandPrimary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--brand-secondary--color\": {\n        \"name\": \"actionable.triggerIcon.brandSecondary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--brand-secondary--color--active\": {\n        \"name\": \"actionable.triggerIcon.brandSecondary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--brand-secondary--color--hover\": {\n        \"name\": \"actionable.triggerIcon.brandSecondary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--brand-tertiary--color\": {\n        \"name\": \"actionable.triggerIcon.brandTertiary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--brand-tertiary--color--active\": {\n        \"name\": \"actionable.triggerIcon.brandTertiary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--brand-tertiary--color--hover\": {\n        \"name\": \"actionable.triggerIcon.brandTertiary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary_bare--color\": {\n        \"name\": \"actionable.triggerIcon.primary.bare.color\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable_trigger-icon--primary_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.primary.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--primary_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.primary.bare.color.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_trigger-icon--primary_high-contrast_bare--color\": {\n        \"name\": \"actionable.triggerIcon.primary.highContrast.bare.color\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable_trigger-icon--primary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.primary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--primary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.primary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--primary--color\": {\n        \"name\": \"actionable.triggerIcon.primary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary--color--active\": {\n        \"name\": \"actionable.triggerIcon.primary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary--color--hover\": {\n        \"name\": \"actionable.triggerIcon.primary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary-negative--color\": {\n        \"name\": \"actionable.triggerIcon.primaryNegative.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary-negative--color--active\": {\n        \"name\": \"actionable.triggerIcon.primaryNegative.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary-negative--color--hover\": {\n        \"name\": \"actionable.triggerIcon.primaryNegative.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary-positive--color\": {\n        \"name\": \"actionable.triggerIcon.primaryPositive.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary-positive--color--active\": {\n        \"name\": \"actionable.triggerIcon.primaryPositive.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary-positive--color--hover\": {\n        \"name\": \"actionable.triggerIcon.primaryPositive.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection_bare--color\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.bare.color\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection--color\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection--color--active\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--primary-selection--color--hover\": {\n        \"name\": \"actionable.triggerIcon.primarySelection.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--secondary_bare--color\": {\n        \"name\": \"actionable.triggerIcon.secondary.bare.color\",\n        \"derived\": \"--now-actionable_trigger-icon--secondary--color\"\n    },\n    \"--now-actionable_trigger-icon--secondary_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.secondary.bare.color.active\",\n        \"derived\": \"--now-actionable_trigger-icon--secondary--color--active\"\n    },\n    \"--now-actionable_trigger-icon--secondary_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.secondary.bare.color.hover\",\n        \"derived\": \"--now-actionable_trigger-icon--secondary--color--hover\"\n    },\n    \"--now-actionable_trigger-icon--secondary_high-contrast_bare--color\": {\n        \"name\": \"actionable.triggerIcon.secondary.highContrast.bare.color\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_trigger-icon--secondary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.secondary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--secondary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.secondary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_trigger-icon--secondary--color\": {\n        \"name\": \"actionable.triggerIcon.secondary.color\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable_trigger-icon--secondary--color--active\": {\n        \"name\": \"actionable.triggerIcon.secondary.color.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable_trigger-icon--secondary--color--hover\": {\n        \"name\": \"actionable.triggerIcon.secondary.color.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable_trigger-icon--secondary-negative--color\": {\n        \"name\": \"actionable.triggerIcon.secondaryNegative.color\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable_trigger-icon--secondary-negative--color--active\": {\n        \"name\": \"actionable.triggerIcon.secondaryNegative.color.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-actionable_trigger-icon--secondary-negative--color--hover\": {\n        \"name\": \"actionable.triggerIcon.secondaryNegative.color.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-actionable_trigger-icon--secondary-positive--color\": {\n        \"name\": \"actionable.triggerIcon.secondaryPositive.color\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable_trigger-icon--secondary-positive--color--active\": {\n        \"name\": \"actionable.triggerIcon.secondaryPositive.color.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-actionable_trigger-icon--secondary-positive--color--hover\": {\n        \"name\": \"actionable.triggerIcon.secondaryPositive.color.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection_bare--color\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.bare.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.bare.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection--color\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection--color--active\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_trigger-icon--secondary-selection--color--hover\": {\n        \"name\": \"actionable.triggerIcon.secondarySelection.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_trigger-icon--tertiary_bare--color\": {\n        \"name\": \"actionable.triggerIcon.tertiary.bare.color\",\n        \"derived\": \"--now-actionable_trigger-icon--tertiary--color\"\n    },\n    \"--now-actionable_trigger-icon--tertiary_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.tertiary.bare.color.active\",\n        \"derived\": \"--now-actionable_trigger-icon--tertiary--color--active\"\n    },\n    \"--now-actionable_trigger-icon--tertiary_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.tertiary.bare.color.hover\",\n        \"derived\": \"--now-actionable_trigger-icon--tertiary--color--hover\"\n    },\n    \"--now-actionable_trigger-icon--tertiary_high-contrast_bare--color\": {\n        \"name\": \"actionable.triggerIcon.tertiary.highContrast.bare.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.tertiary.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.tertiary.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary--color\": {\n        \"name\": \"actionable.triggerIcon.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary--color--active\": {\n        \"name\": \"actionable.triggerIcon.tertiary.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary--color--hover\": {\n        \"name\": \"actionable.triggerIcon.tertiary.color.hover\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection_bare--color\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.bare.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.bare.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection_high-contrast_bare--color\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.highContrast.bare.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection_high-contrast_bare--color--active\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.highContrast.bare.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection_high-contrast_bare--color--hover\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.highContrast.bare.color.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection--color\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.color\",\n        \"derived\": \"--now-actionable_trigger-icon--tertiary--color\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection--color--active\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.color.active\",\n        \"derived\": \"--now-actionable_trigger-icon--tertiary--color--active\"\n    },\n    \"--now-actionable_trigger-icon--tertiary-selection--color--hover\": {\n        \"name\": \"actionable.triggerIcon.tertiarySelection.color.hover\",\n        \"derived\": \"--now-actionable_trigger-icon--tertiary--color--hover\"\n    },\n    \"--now-actionable--background-color-alpha\": {\n        \"name\": \"actionable.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-actionable--background-color-alpha--active\": {\n        \"name\": \"actionable.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-actionable--background-color-alpha--hover\": {\n        \"name\": \"actionable.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-actionable--background-color-alpha--selected\": {\n        \"name\": \"actionable.backgroundColorAlpha.selected\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-actionable--bare--border-color-alpha\": {\n        \"name\": \"actionable.bare.borderColorAlpha\",\n        \"derived\": \"--now-actionable--border-color-alpha\"\n    },\n    \"--now-actionable--bare--border-radius\": {\n        \"name\": \"actionable.bare.borderRadius\",\n        \"derived\": \"--now-actionable--border-radius\"\n    },\n    \"--now-actionable--bare--border-width\": {\n        \"name\": \"actionable.bare.borderWidth\",\n        \"derived\": \"--now-actionable--border-width\"\n    },\n    \"--now-actionable--bare--font-family\": {\n        \"name\": \"actionable.bare.fontFamily\",\n        \"derived\": \"--now-actionable--font-family\"\n    },\n    \"--now-actionable--bare--font-style\": {\n        \"name\": \"actionable.bare.fontStyle\",\n        \"derived\": \"--now-actionable--font-style\"\n    },\n    \"--now-actionable--bare--font-weight\": {\n        \"name\": \"actionable.bare.fontWeight\",\n        \"derived\": \"--now-actionable--font-weight\"\n    },\n    \"--now-actionable--bare--opacity--disabled\": {\n        \"name\": \"actionable.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--opacity--disabled\"\n    },\n    \"--now-actionable--bare--text-transform\": {\n        \"name\": \"actionable.bare.textTransform\",\n        \"derived\": \"--now-actionable--text-transform\"\n    },\n    \"--now-actionable--border-color-alpha\": {\n        \"name\": \"actionable.borderColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-actionable--brand-primary--background-color\": {\n        \"name\": \"actionable.brandPrimary.backgroundColor\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--brand-primary--background-color--active\": {\n        \"name\": \"actionable.brandPrimary.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--brand-primary--background-color--hover\": {\n        \"name\": \"actionable.brandPrimary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable--brand-primary--border-color\": {\n        \"name\": \"actionable.brandPrimary.borderColor\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--brand-primary--border-color--active\": {\n        \"name\": \"actionable.brandPrimary.borderColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--brand-primary--border-color--hover\": {\n        \"name\": \"actionable.brandPrimary.borderColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable--brand-primary--border-radius\": {\n        \"name\": \"actionable.brandPrimary.borderRadius\",\n        \"derived\": \"--now-actionable--contained_brand--border-radius\"\n    },\n    \"--now-actionable--brand-primary--border-width\": {\n        \"name\": \"actionable.brandPrimary.borderWidth\",\n        \"derived\": \"--now-actionable--contained_brand--border-width\"\n    },\n    \"--now-actionable--brand-primary--font-family\": {\n        \"name\": \"actionable.brandPrimary.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--brand-primary--font-style\": {\n        \"name\": \"actionable.brandPrimary.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--brand-primary--font-weight\": {\n        \"name\": \"actionable.brandPrimary.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--brand-primary--opacity--disabled\": {\n        \"name\": \"actionable.brandPrimary.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--brand-primary--text-transform\": {\n        \"name\": \"actionable.brandPrimary.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--brand-secondary--background-color\": {\n        \"name\": \"actionable.brandSecondary.backgroundColor\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable--brand-secondary--background-color--active\": {\n        \"name\": \"actionable.brandSecondary.backgroundColor.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable--brand-secondary--background-color--hover\": {\n        \"name\": \"actionable.brandSecondary.backgroundColor.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable--brand-secondary--border-color\": {\n        \"name\": \"actionable.brandSecondary.borderColor\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable--brand-secondary--border-color--active\": {\n        \"name\": \"actionable.brandSecondary.borderColor.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable--brand-secondary--border-color--hover\": {\n        \"name\": \"actionable.brandSecondary.borderColor.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable--brand-secondary--border-radius\": {\n        \"name\": \"actionable.brandSecondary.borderRadius\",\n        \"derived\": \"--now-actionable--contained_brand--border-radius\"\n    },\n    \"--now-actionable--brand-secondary--border-width\": {\n        \"name\": \"actionable.brandSecondary.borderWidth\",\n        \"derived\": \"--now-actionable--contained_brand--border-width\"\n    },\n    \"--now-actionable--brand-secondary--font-family\": {\n        \"name\": \"actionable.brandSecondary.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--brand-secondary--font-style\": {\n        \"name\": \"actionable.brandSecondary.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--brand-secondary--font-weight\": {\n        \"name\": \"actionable.brandSecondary.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--brand-secondary--opacity--disabled\": {\n        \"name\": \"actionable.brandSecondary.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--brand-secondary--text-transform\": {\n        \"name\": \"actionable.brandSecondary.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--brand-tertiary--background-color\": {\n        \"name\": \"actionable.brandTertiary.backgroundColor\",\n        \"derived\": \"--now-color_background--tertiary-actionable\"\n    },\n    \"--now-actionable--brand-tertiary--background-color--active\": {\n        \"name\": \"actionable.brandTertiary.backgroundColor.active\",\n        \"derived\": \"--now-color_background--primary-actionable\"\n    },\n    \"--now-actionable--brand-tertiary--background-color--hover\": {\n        \"name\": \"actionable.brandTertiary.backgroundColor.hover\",\n        \"derived\": \"--now-color_background--secondary-actionable\"\n    },\n    \"--now-actionable--brand-tertiary--border-color\": {\n        \"name\": \"actionable.brandTertiary.borderColor\",\n        \"derived\": \"--now-color_border--tertiary-actionable\"\n    },\n    \"--now-actionable--brand-tertiary--border-color--active\": {\n        \"name\": \"actionable.brandTertiary.borderColor.active\",\n        \"derived\": \"--now-color_border--primary-actionable\"\n    },\n    \"--now-actionable--brand-tertiary--border-color--hover\": {\n        \"name\": \"actionable.brandTertiary.borderColor.hover\",\n        \"derived\": \"--now-color_border--secondary-actionable\"\n    },\n    \"--now-actionable--brand-tertiary--border-radius\": {\n        \"name\": \"actionable.brandTertiary.borderRadius\",\n        \"derived\": \"--now-actionable--contained_brand--border-radius\"\n    },\n    \"--now-actionable--brand-tertiary--border-width\": {\n        \"name\": \"actionable.brandTertiary.borderWidth\",\n        \"derived\": \"--now-actionable--contained_brand--border-width\"\n    },\n    \"--now-actionable--brand-tertiary--font-family\": {\n        \"name\": \"actionable.brandTertiary.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--brand-tertiary--font-style\": {\n        \"name\": \"actionable.brandTertiary.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--brand-tertiary--font-weight\": {\n        \"name\": \"actionable.brandTertiary.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--brand-tertiary--opacity--disabled\": {\n        \"name\": \"actionable.brandTertiary.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--brand-tertiary--text-transform\": {\n        \"name\": \"actionable.brandTertiary.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--color-alpha\": {\n        \"name\": \"actionable.colorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-actionable--contained_brand--border-radius\": {\n        \"name\": \"actionable.contained.brand.borderRadius\",\n        \"derived\": \"--now-actionable--border-radius\"\n    },\n    \"--now-actionable--contained_brand--border-width\": {\n        \"name\": \"actionable.contained.brand.borderWidth\",\n        \"initial\": \"0\"\n    },\n    \"--now-actionable--contained--border-radius\": {\n        \"name\": \"actionable.contained.borderRadius\",\n        \"derived\": \"--now-actionable--border-radius\"\n    },\n    \"--now-actionable--contained--border-width\": {\n        \"name\": \"actionable.contained.borderWidth\",\n        \"derived\": \"--now-actionable--border-width\"\n    },\n    \"--now-actionable--contained--font-family\": {\n        \"name\": \"actionable.contained.fontFamily\",\n        \"derived\": \"--now-actionable--font-family\"\n    },\n    \"--now-actionable--contained--font-style\": {\n        \"name\": \"actionable.contained.fontStyle\",\n        \"derived\": \"--now-actionable--font-style\"\n    },\n    \"--now-actionable--contained--font-weight\": {\n        \"name\": \"actionable.contained.fontWeight\",\n        \"derived\": \"--now-actionable--font-weight\"\n    },\n    \"--now-actionable--contained--opacity--disabled\": {\n        \"name\": \"actionable.contained.opacity.disabled\",\n        \"derived\": \"--now-actionable--opacity--disabled\"\n    },\n    \"--now-actionable--contained--text-transform\": {\n        \"name\": \"actionable.contained.textTransform\",\n        \"derived\": \"--now-actionable--text-transform\"\n    },\n    \"--now-actionable--divider--width\": {\n        \"name\": \"actionable.divider.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-actionable--high-contrast--color-alpha\": {\n        \"name\": \"actionable.highContrast.colorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-actionable--iconic--border-color-alpha\": {\n        \"name\": \"actionable.iconic.borderColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-actionable--primary_bare--background-color--active\": {\n        \"name\": \"actionable.primary.bare.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_bare--background-color--hover\": {\n        \"name\": \"actionable.primary.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_bare--background-color--selected\": {\n        \"name\": \"actionable.primary.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable--primary_bare--background-color--selected_active\": {\n        \"name\": \"actionable.primary.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.primary.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_bare--border-color--active\": {\n        \"name\": \"actionable.primary.bare.borderColor.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary_bare--border-color--hover\": {\n        \"name\": \"actionable.primary.bare.borderColor.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--primary_bare--border-color--selected\": {\n        \"name\": \"actionable.primary.bare.borderColor.selected\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable--primary_bare--border-color--selected_active\": {\n        \"name\": \"actionable.primary.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.primary.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--primary_bare--border-radius\": {\n        \"name\": \"actionable.primary.bare.borderRadius\",\n        \"derived\": \"--now-actionable--bare--border-radius\"\n    },\n    \"--now-actionable--primary_bare--border-width\": {\n        \"name\": \"actionable.primary.bare.borderWidth\",\n        \"derived\": \"--now-actionable--bare--border-width\"\n    },\n    \"--now-actionable--primary_bare--font-family\": {\n        \"name\": \"actionable.primary.bare.fontFamily\",\n        \"derived\": \"--now-actionable--bare--font-family\"\n    },\n    \"--now-actionable--primary_bare--font-style\": {\n        \"name\": \"actionable.primary.bare.fontStyle\",\n        \"derived\": \"--now-actionable--bare--font-style\"\n    },\n    \"--now-actionable--primary_bare--font-weight\": {\n        \"name\": \"actionable.primary.bare.fontWeight\",\n        \"derived\": \"--now-actionable--bare--font-weight\"\n    },\n    \"--now-actionable--primary_bare--opacity--disabled\": {\n        \"name\": \"actionable.primary.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--primary_bare--text-transform\": {\n        \"name\": \"actionable.primary.bare.textTransform\",\n        \"derived\": \"--now-actionable--bare--text-transform\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--background-color--active\": {\n        \"name\": \"actionable.primary.highContrast.bare.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--background-color--hover\": {\n        \"name\": \"actionable.primary.highContrast.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.primary.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.primary.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.primary.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--border-color--active\": {\n        \"name\": \"actionable.primary.highContrast.bare.borderColor.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--border-color--hover\": {\n        \"name\": \"actionable.primary.highContrast.bare.borderColor.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.primary.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.primary.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.primary.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary_high-contrast_bare--opacity--disabled\": {\n        \"name\": \"actionable.primary.highContrast.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--primary_highlighted_bare--background-color--selected\": {\n        \"name\": \"actionable.primary.highlighted.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_highlighted_bare--background-color--selected_active\": {\n        \"name\": \"actionable.primary.highlighted.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_highlighted_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.primary.highlighted.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_highlighted_bare--border-color--selected\": {\n        \"name\": \"actionable.primary.highlighted.bare.borderColor.selected\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable--primary_highlighted_bare--border-color--selected_active\": {\n        \"name\": \"actionable.primary.highlighted.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary_highlighted_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.primary.highlighted.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--primary_highlighted_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.primary.highlighted.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_highlighted_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.primary.highlighted.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_highlighted_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.primary.highlighted.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary_highlighted_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.primary.highlighted.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--primary_highlighted_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.primary.highlighted.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary_highlighted_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.primary.highlighted.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary--background-color\": {\n        \"name\": \"actionable.primary.backgroundColor\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary--background-color--active\": {\n        \"name\": \"actionable.primary.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--primary--background-color--hover\": {\n        \"name\": \"actionable.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable--primary--border-color\": {\n        \"name\": \"actionable.primary.borderColor\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-actionable--primary--border-color--active\": {\n        \"name\": \"actionable.primary.borderColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-actionable--primary--border-color--hover\": {\n        \"name\": \"actionable.primary.borderColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-actionable--primary--border-radius\": {\n        \"name\": \"actionable.primary.borderRadius\",\n        \"derived\": \"--now-actionable--contained_brand--border-radius\"\n    },\n    \"--now-actionable--primary--border-width\": {\n        \"name\": \"actionable.primary.borderWidth\",\n        \"derived\": \"--now-actionable--contained_brand--border-width\"\n    },\n    \"--now-actionable--primary--font-family\": {\n        \"name\": \"actionable.primary.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--primary--font-style\": {\n        \"name\": \"actionable.primary.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--primary--font-weight\": {\n        \"name\": \"actionable.primary.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--primary--opacity--disabled\": {\n        \"name\": \"actionable.primary.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--primary--text-transform\": {\n        \"name\": \"actionable.primary.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--primary-negative--background-color\": {\n        \"name\": \"actionable.primaryNegative.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable--primary-negative--background-color--active\": {\n        \"name\": \"actionable.primaryNegative.backgroundColor.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-actionable--primary-negative--background-color--hover\": {\n        \"name\": \"actionable.primaryNegative.backgroundColor.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-actionable--primary-negative--border-color\": {\n        \"name\": \"actionable.primaryNegative.borderColor\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable--primary-negative--border-color--active\": {\n        \"name\": \"actionable.primaryNegative.borderColor.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-actionable--primary-negative--border-color--hover\": {\n        \"name\": \"actionable.primaryNegative.borderColor.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-actionable--primary-negative--border-radius\": {\n        \"name\": \"actionable.primaryNegative.borderRadius\",\n        \"derived\": \"--now-actionable--primary--border-radius\"\n    },\n    \"--now-actionable--primary-negative--border-width\": {\n        \"name\": \"actionable.primaryNegative.borderWidth\",\n        \"derived\": \"--now-actionable--primary--border-width\"\n    },\n    \"--now-actionable--primary-negative--font-family\": {\n        \"name\": \"actionable.primaryNegative.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--primary-negative--font-style\": {\n        \"name\": \"actionable.primaryNegative.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--primary-negative--font-weight\": {\n        \"name\": \"actionable.primaryNegative.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--primary-negative--opacity--disabled\": {\n        \"name\": \"actionable.primaryNegative.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--primary-negative--text-transform\": {\n        \"name\": \"actionable.primaryNegative.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--primary-positive--background-color\": {\n        \"name\": \"actionable.primaryPositive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable--primary-positive--background-color--active\": {\n        \"name\": \"actionable.primaryPositive.backgroundColor.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-actionable--primary-positive--background-color--hover\": {\n        \"name\": \"actionable.primaryPositive.backgroundColor.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-actionable--primary-positive--border-color\": {\n        \"name\": \"actionable.primaryPositive.borderColor\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable--primary-positive--border-color--active\": {\n        \"name\": \"actionable.primaryPositive.borderColor.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-actionable--primary-positive--border-color--hover\": {\n        \"name\": \"actionable.primaryPositive.borderColor.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-actionable--primary-positive--border-radius\": {\n        \"name\": \"actionable.primaryPositive.borderRadius\",\n        \"derived\": \"--now-actionable--primary--border-radius\"\n    },\n    \"--now-actionable--primary-positive--border-width\": {\n        \"name\": \"actionable.primaryPositive.borderWidth\",\n        \"derived\": \"--now-actionable--primary--border-width\"\n    },\n    \"--now-actionable--primary-positive--font-family\": {\n        \"name\": \"actionable.primaryPositive.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--primary-positive--font-style\": {\n        \"name\": \"actionable.primaryPositive.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--primary-positive--font-weight\": {\n        \"name\": \"actionable.primaryPositive.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--primary-positive--opacity--disabled\": {\n        \"name\": \"actionable.primaryPositive.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--primary-positive--text-transform\": {\n        \"name\": \"actionable.primaryPositive.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--primary-selection_bare--background-color--active\": {\n        \"name\": \"actionable.primarySelection.bare.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_bare--background-color--hover\": {\n        \"name\": \"actionable.primarySelection.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_bare--background-color--selected\": {\n        \"name\": \"actionable.primarySelection.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_bare--background-color--selected_active\": {\n        \"name\": \"actionable.primarySelection.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.primarySelection.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_bare--border-color--active\": {\n        \"name\": \"actionable.primarySelection.bare.borderColor.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_bare--border-color--hover\": {\n        \"name\": \"actionable.primarySelection.bare.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection_bare--border-color--selected\": {\n        \"name\": \"actionable.primarySelection.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--primary-selection_bare--border-color--selected_active\": {\n        \"name\": \"actionable.primarySelection.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.primarySelection.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection_bare--border-radius\": {\n        \"name\": \"actionable.primarySelection.bare.borderRadius\",\n        \"derived\": \"--now-actionable--primary_bare--border-radius\"\n    },\n    \"--now-actionable--primary-selection_bare--border-width\": {\n        \"name\": \"actionable.primarySelection.bare.borderWidth\",\n        \"derived\": \"--now-actionable--primary_bare--border-width\"\n    },\n    \"--now-actionable--primary-selection_bare--font-family\": {\n        \"name\": \"actionable.primarySelection.bare.fontFamily\",\n        \"derived\": \"--now-actionable--bare--font-family\"\n    },\n    \"--now-actionable--primary-selection_bare--font-style\": {\n        \"name\": \"actionable.primarySelection.bare.fontStyle\",\n        \"derived\": \"--now-actionable--bare--font-style\"\n    },\n    \"--now-actionable--primary-selection_bare--font-weight\": {\n        \"name\": \"actionable.primarySelection.bare.fontWeight\",\n        \"derived\": \"--now-actionable--bare--font-weight\"\n    },\n    \"--now-actionable--primary-selection_bare--opacity--disabled\": {\n        \"name\": \"actionable.primarySelection.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--primary-selection_bare--text-transform\": {\n        \"name\": \"actionable.primarySelection.bare.textTransform\",\n        \"derived\": \"--now-actionable--bare--text-transform\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--background-color--active\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--background-color--hover\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--border-color--active\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.borderColor.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--border-color--hover\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.borderColor.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_high-contrast_bare--opacity--disabled\": {\n        \"name\": \"actionable.primarySelection.highContrast.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--primary-selection_highlighted_bare--background-color--selected\": {\n        \"name\": \"actionable.primarySelection.highlighted.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_highlighted_bare--background-color--selected_active\": {\n        \"name\": \"actionable.primarySelection.highlighted.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_highlighted_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.primarySelection.highlighted.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_highlighted_bare--border-color--selected\": {\n        \"name\": \"actionable.primarySelection.highlighted.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection_highlighted_bare--border-color--selected_active\": {\n        \"name\": \"actionable.primarySelection.highlighted.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_highlighted_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.primarySelection.highlighted.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_highlighted_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.primarySelection.highlighted.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_highlighted_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.primarySelection.highlighted.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_highlighted_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.primarySelection.highlighted.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection_highlighted_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.primarySelection.highlighted.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection_highlighted_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.primarySelection.highlighted.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection_highlighted_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.primarySelection.highlighted.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--primary-selection--background-color\": {\n        \"name\": \"actionable.primarySelection.backgroundColor\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--primary-selection--background-color--active\": {\n        \"name\": \"actionable.primarySelection.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection--background-color--hover\": {\n        \"name\": \"actionable.primarySelection.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--primary-selection--border-color\": {\n        \"name\": \"actionable.primarySelection.borderColor\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection--border-color--active\": {\n        \"name\": \"actionable.primarySelection.borderColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection--border-color--hover\": {\n        \"name\": \"actionable.primarySelection.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--primary-selection--border-radius\": {\n        \"name\": \"actionable.primarySelection.borderRadius\",\n        \"derived\": \"--now-actionable--primary--border-radius\"\n    },\n    \"--now-actionable--primary-selection--border-width\": {\n        \"name\": \"actionable.primarySelection.borderWidth\",\n        \"derived\": \"--now-actionable--primary--border-width\"\n    },\n    \"--now-actionable--primary-selection--font-family\": {\n        \"name\": \"actionable.primarySelection.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--primary-selection--font-style\": {\n        \"name\": \"actionable.primarySelection.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--primary-selection--font-weight\": {\n        \"name\": \"actionable.primarySelection.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--primary-selection--opacity--disabled\": {\n        \"name\": \"actionable.primarySelection.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--primary-selection--text-transform\": {\n        \"name\": \"actionable.primarySelection.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--secondary_bare--background-color--active\": {\n        \"name\": \"actionable.secondary.bare.backgroundColor.active\",\n        \"derived\": \"--now-actionable--secondary--background-color--active\"\n    },\n    \"--now-actionable--secondary_bare--background-color--hover\": {\n        \"name\": \"actionable.secondary.bare.backgroundColor.hover\",\n        \"derived\": \"--now-actionable--secondary--background-color--hover\"\n    },\n    \"--now-actionable--secondary_bare--background-color--selected\": {\n        \"name\": \"actionable.secondary.bare.backgroundColor.selected\",\n        \"derived\": \"--now-actionable--secondary--background-color\"\n    },\n    \"--now-actionable--secondary_bare--background-color--selected_active\": {\n        \"name\": \"actionable.secondary.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--active\"\n    },\n    \"--now-actionable--secondary_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.secondary.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--hover\"\n    },\n    \"--now-actionable--secondary_bare--border-color--active\": {\n        \"name\": \"actionable.secondary.bare.borderColor.active\",\n        \"derived\": \"--now-actionable--secondary--border-color--active\"\n    },\n    \"--now-actionable--secondary_bare--border-color--hover\": {\n        \"name\": \"actionable.secondary.bare.borderColor.hover\",\n        \"derived\": \"--now-actionable--secondary--border-color--hover\"\n    },\n    \"--now-actionable--secondary_bare--border-color--selected\": {\n        \"name\": \"actionable.secondary.bare.borderColor.selected\",\n        \"derived\": \"--now-actionable--secondary--border-color\"\n    },\n    \"--now-actionable--secondary_bare--border-color--selected_active\": {\n        \"name\": \"actionable.secondary.bare.borderColor.selected.active\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--active\"\n    },\n    \"--now-actionable--secondary_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.secondary.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--hover\"\n    },\n    \"--now-actionable--secondary_bare--border-radius\": {\n        \"name\": \"actionable.secondary.bare.borderRadius\",\n        \"derived\": \"--now-actionable--bare--border-radius\"\n    },\n    \"--now-actionable--secondary_bare--border-width\": {\n        \"name\": \"actionable.secondary.bare.borderWidth\",\n        \"derived\": \"--now-actionable--bare--border-width\"\n    },\n    \"--now-actionable--secondary_bare--font-family\": {\n        \"name\": \"actionable.secondary.bare.fontFamily\",\n        \"derived\": \"--now-actionable--bare--font-family\"\n    },\n    \"--now-actionable--secondary_bare--font-style\": {\n        \"name\": \"actionable.secondary.bare.fontStyle\",\n        \"derived\": \"--now-actionable--bare--font-style\"\n    },\n    \"--now-actionable--secondary_bare--font-weight\": {\n        \"name\": \"actionable.secondary.bare.fontWeight\",\n        \"derived\": \"--now-actionable--bare--font-weight\"\n    },\n    \"--now-actionable--secondary_bare--opacity--disabled\": {\n        \"name\": \"actionable.secondary.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--secondary_bare--text-transform\": {\n        \"name\": \"actionable.secondary.bare.textTransform\",\n        \"derived\": \"--now-actionable--bare--text-transform\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--background-color--active\": {\n        \"name\": \"actionable.secondary.highContrast.bare.backgroundColor.active\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--active\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--background-color--hover\": {\n        \"name\": \"actionable.secondary.highContrast.bare.backgroundColor.hover\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--hover\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.secondary.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--selected\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.secondary.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--selected_active\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.secondary.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--selected_hover\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--border-color--active\": {\n        \"name\": \"actionable.secondary.highContrast.bare.borderColor.active\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--active\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--border-color--hover\": {\n        \"name\": \"actionable.secondary.highContrast.bare.borderColor.hover\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--hover\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.secondary.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--selected\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.secondary.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--selected_active\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.secondary.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--selected_hover\"\n    },\n    \"--now-actionable--secondary_high-contrast_bare--opacity--disabled\": {\n        \"name\": \"actionable.secondary.highContrast.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--secondary_highlighted_bare--background-color--selected\": {\n        \"name\": \"actionable.secondary.highlighted.bare.backgroundColor.selected\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--selected\"\n    },\n    \"--now-actionable--secondary_highlighted_bare--background-color--selected_active\": {\n        \"name\": \"actionable.secondary.highlighted.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--selected_active\"\n    },\n    \"--now-actionable--secondary_highlighted_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.secondary.highlighted.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-actionable--secondary_bare--background-color--selected_hover\"\n    },\n    \"--now-actionable--secondary_highlighted_bare--border-color--selected\": {\n        \"name\": \"actionable.secondary.highlighted.bare.borderColor.selected\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--selected\"\n    },\n    \"--now-actionable--secondary_highlighted_bare--border-color--selected_active\": {\n        \"name\": \"actionable.secondary.highlighted.bare.borderColor.selected.active\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--selected_active\"\n    },\n    \"--now-actionable--secondary_highlighted_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.secondary.highlighted.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-actionable--secondary_bare--border-color--selected_hover\"\n    },\n    \"--now-actionable--secondary_highlighted_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.secondary.highlighted.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-actionable--secondary_highlighted_bare--background-color--selected\"\n    },\n    \"--now-actionable--secondary_highlighted_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.secondary.highlighted.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-actionable--secondary_highlighted_bare--background-color--selected_active\"\n    },\n    \"--now-actionable--secondary_highlighted_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.secondary.highlighted.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-actionable--secondary_highlighted_bare--background-color--selected_hover\"\n    },\n    \"--now-actionable--secondary_highlighted_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.secondary.highlighted.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-actionable--secondary_highlighted_bare--border-color--selected\"\n    },\n    \"--now-actionable--secondary_highlighted_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.secondary.highlighted.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-actionable--secondary_highlighted_bare--border-color--selected_active\"\n    },\n    \"--now-actionable--secondary_highlighted_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.secondary.highlighted.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-actionable--secondary_highlighted_bare--border-color--selected_hover\"\n    },\n    \"--now-actionable--secondary--background-color\": {\n        \"name\": \"actionable.secondary.backgroundColor\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable--secondary--background-color--active\": {\n        \"name\": \"actionable.secondary.backgroundColor.active\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable--secondary--background-color--hover\": {\n        \"name\": \"actionable.secondary.backgroundColor.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable--secondary--border-color\": {\n        \"name\": \"actionable.secondary.borderColor\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-actionable--secondary--border-color--active\": {\n        \"name\": \"actionable.secondary.borderColor.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-actionable--secondary--border-color--hover\": {\n        \"name\": \"actionable.secondary.borderColor.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-actionable--secondary--border-radius\": {\n        \"name\": \"actionable.secondary.borderRadius\",\n        \"derived\": \"--now-actionable--contained--border-radius\"\n    },\n    \"--now-actionable--secondary--border-width\": {\n        \"name\": \"actionable.secondary.borderWidth\",\n        \"derived\": \"--now-actionable--contained--border-width\"\n    },\n    \"--now-actionable--secondary--font-family\": {\n        \"name\": \"actionable.secondary.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--secondary--font-style\": {\n        \"name\": \"actionable.secondary.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--secondary--font-weight\": {\n        \"name\": \"actionable.secondary.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--secondary--opacity--disabled\": {\n        \"name\": \"actionable.secondary.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--secondary--text-transform\": {\n        \"name\": \"actionable.secondary.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--secondary-negative--background-color\": {\n        \"name\": \"actionable.secondaryNegative.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-actionable--secondary-negative--background-color--active\": {\n        \"name\": \"actionable.secondaryNegative.backgroundColor.active\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable--secondary-negative--background-color--hover\": {\n        \"name\": \"actionable.secondaryNegative.backgroundColor.hover\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable--secondary-negative--border-color\": {\n        \"name\": \"actionable.secondaryNegative.borderColor\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-actionable--secondary-negative--border-color--active\": {\n        \"name\": \"actionable.secondaryNegative.borderColor.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-actionable--secondary-negative--border-color--hover\": {\n        \"name\": \"actionable.secondaryNegative.borderColor.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-actionable--secondary-negative--border-radius\": {\n        \"name\": \"actionable.secondaryNegative.borderRadius\",\n        \"derived\": \"--now-actionable--secondary--border-radius\"\n    },\n    \"--now-actionable--secondary-negative--border-width\": {\n        \"name\": \"actionable.secondaryNegative.borderWidth\",\n        \"derived\": \"--now-actionable--secondary--border-width\"\n    },\n    \"--now-actionable--secondary-negative--font-family\": {\n        \"name\": \"actionable.secondaryNegative.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--secondary-negative--font-style\": {\n        \"name\": \"actionable.secondaryNegative.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--secondary-negative--font-weight\": {\n        \"name\": \"actionable.secondaryNegative.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--secondary-negative--opacity--disabled\": {\n        \"name\": \"actionable.secondaryNegative.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--secondary-negative--text-transform\": {\n        \"name\": \"actionable.secondaryNegative.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--secondary-positive--background-color\": {\n        \"name\": \"actionable.secondaryPositive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable--secondary-positive--background-color--active\": {\n        \"name\": \"actionable.secondaryPositive.backgroundColor.active\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable--secondary-positive--background-color--hover\": {\n        \"name\": \"actionable.secondaryPositive.backgroundColor.hover\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable--secondary-positive--border-color\": {\n        \"name\": \"actionable.secondaryPositive.borderColor\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-actionable--secondary-positive--border-color--active\": {\n        \"name\": \"actionable.secondaryPositive.borderColor.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-actionable--secondary-positive--border-color--hover\": {\n        \"name\": \"actionable.secondaryPositive.borderColor.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-actionable--secondary-positive--border-radius\": {\n        \"name\": \"actionable.secondaryPositive.borderRadius\",\n        \"derived\": \"--now-actionable--secondary--border-radius\"\n    },\n    \"--now-actionable--secondary-positive--border-width\": {\n        \"name\": \"actionable.secondaryPositive.borderWidth\",\n        \"derived\": \"--now-actionable--secondary--border-width\"\n    },\n    \"--now-actionable--secondary-positive--font-family\": {\n        \"name\": \"actionable.secondaryPositive.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--secondary-positive--font-style\": {\n        \"name\": \"actionable.secondaryPositive.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--secondary-positive--font-weight\": {\n        \"name\": \"actionable.secondaryPositive.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--secondary-positive--opacity--disabled\": {\n        \"name\": \"actionable.secondaryPositive.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--secondary-positive--text-transform\": {\n        \"name\": \"actionable.secondaryPositive.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--secondary-selection_bare--background-color--active\": {\n        \"name\": \"actionable.secondarySelection.bare.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_bare--background-color--hover\": {\n        \"name\": \"actionable.secondarySelection.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_bare--background-color--selected\": {\n        \"name\": \"actionable.secondarySelection.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_bare--background-color--selected_active\": {\n        \"name\": \"actionable.secondarySelection.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.secondarySelection.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_bare--border-color--active\": {\n        \"name\": \"actionable.secondarySelection.bare.borderColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--secondary-selection_bare--border-color--hover\": {\n        \"name\": \"actionable.secondarySelection.bare.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--secondary-selection_bare--border-color--selected\": {\n        \"name\": \"actionable.secondarySelection.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_bare--border-color--selected_active\": {\n        \"name\": \"actionable.secondarySelection.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--secondary-selection_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.secondarySelection.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--secondary-selection_bare--border-radius\": {\n        \"name\": \"actionable.secondarySelection.bare.borderRadius\",\n        \"derived\": \"--now-actionable--secondary_bare--border-radius\"\n    },\n    \"--now-actionable--secondary-selection_bare--border-width\": {\n        \"name\": \"actionable.secondarySelection.bare.borderWidth\",\n        \"derived\": \"--now-actionable--secondary_bare--border-width\"\n    },\n    \"--now-actionable--secondary-selection_bare--font-family\": {\n        \"name\": \"actionable.secondarySelection.bare.fontFamily\",\n        \"derived\": \"--now-actionable--bare--font-family\"\n    },\n    \"--now-actionable--secondary-selection_bare--font-style\": {\n        \"name\": \"actionable.secondarySelection.bare.fontStyle\",\n        \"derived\": \"--now-actionable--bare--font-style\"\n    },\n    \"--now-actionable--secondary-selection_bare--font-weight\": {\n        \"name\": \"actionable.secondarySelection.bare.fontWeight\",\n        \"derived\": \"--now-actionable--bare--font-weight\"\n    },\n    \"--now-actionable--secondary-selection_bare--opacity--disabled\": {\n        \"name\": \"actionable.secondarySelection.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--secondary-selection_bare--text-transform\": {\n        \"name\": \"actionable.secondarySelection.bare.textTransform\",\n        \"derived\": \"--now-actionable--bare--text-transform\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--background-color--active\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--background-color--hover\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--border-color--active\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.borderColor.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--border-color--hover\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--secondary-selection_high-contrast_bare--opacity--disabled\": {\n        \"name\": \"actionable.secondarySelection.highContrast.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_bare--background-color--selected\": {\n        \"name\": \"actionable.secondarySelection.highlighted.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_bare--background-color--selected_active\": {\n        \"name\": \"actionable.secondarySelection.highlighted.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.secondarySelection.highlighted.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_bare--border-color--selected\": {\n        \"name\": \"actionable.secondarySelection.highlighted.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_bare--border-color--selected_active\": {\n        \"name\": \"actionable.secondarySelection.highlighted.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.secondarySelection.highlighted.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.secondarySelection.highlighted.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.secondarySelection.highlighted.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.secondarySelection.highlighted.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.secondarySelection.highlighted.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.secondarySelection.highlighted.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--secondary-selection_highlighted_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.secondarySelection.highlighted.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--secondary-selection--background-color\": {\n        \"name\": \"actionable.secondarySelection.backgroundColor\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection--background-color--active\": {\n        \"name\": \"actionable.secondarySelection.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection--background-color--hover\": {\n        \"name\": \"actionable.secondarySelection.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection--border-color\": {\n        \"name\": \"actionable.secondarySelection.borderColor\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--secondary-selection--border-color--active\": {\n        \"name\": \"actionable.secondarySelection.borderColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--secondary-selection--border-color--hover\": {\n        \"name\": \"actionable.secondarySelection.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--secondary-selection--border-radius\": {\n        \"name\": \"actionable.secondarySelection.borderRadius\",\n        \"derived\": \"--now-actionable--secondary--border-radius\"\n    },\n    \"--now-actionable--secondary-selection--border-width\": {\n        \"name\": \"actionable.secondarySelection.borderWidth\",\n        \"derived\": \"--now-actionable--secondary--border-width\"\n    },\n    \"--now-actionable--secondary-selection--font-family\": {\n        \"name\": \"actionable.secondarySelection.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--secondary-selection--font-style\": {\n        \"name\": \"actionable.secondarySelection.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--secondary-selection--font-weight\": {\n        \"name\": \"actionable.secondarySelection.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--secondary-selection--opacity--disabled\": {\n        \"name\": \"actionable.secondarySelection.opacity.disabled\",\n        \"derived\": \"--now-actionable--opacity--disabled\"\n    },\n    \"--now-actionable--secondary-selection--text-transform\": {\n        \"name\": \"actionable.secondarySelection.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--tertiary_bare--background-color--active\": {\n        \"name\": \"actionable.tertiary.bare.backgroundColor.active\",\n        \"derived\": \"--now-actionable--tertiary--background-color--active\"\n    },\n    \"--now-actionable--tertiary_bare--background-color--hover\": {\n        \"name\": \"actionable.tertiary.bare.backgroundColor.hover\",\n        \"derived\": \"--now-actionable--tertiary--background-color--hover\"\n    },\n    \"--now-actionable--tertiary_bare--background-color--selected\": {\n        \"name\": \"actionable.tertiary.bare.backgroundColor.selected\",\n        \"derived\": \"--now-actionable--tertiary--background-color\"\n    },\n    \"--now-actionable--tertiary_bare--background-color--selected_active\": {\n        \"name\": \"actionable.tertiary.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--active\"\n    },\n    \"--now-actionable--tertiary_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.tertiary.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--hover\"\n    },\n    \"--now-actionable--tertiary_bare--border-color--active\": {\n        \"name\": \"actionable.tertiary.bare.borderColor.active\",\n        \"derived\": \"--now-actionable--tertiary--border-color--active\"\n    },\n    \"--now-actionable--tertiary_bare--border-color--hover\": {\n        \"name\": \"actionable.tertiary.bare.borderColor.hover\",\n        \"derived\": \"--now-actionable--tertiary--border-color--hover\"\n    },\n    \"--now-actionable--tertiary_bare--border-color--selected\": {\n        \"name\": \"actionable.tertiary.bare.borderColor.selected\",\n        \"derived\": \"--now-actionable--tertiary--border-color\"\n    },\n    \"--now-actionable--tertiary_bare--border-color--selected_active\": {\n        \"name\": \"actionable.tertiary.bare.borderColor.selected.active\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--active\"\n    },\n    \"--now-actionable--tertiary_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.tertiary.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--hover\"\n    },\n    \"--now-actionable--tertiary_bare--border-radius\": {\n        \"name\": \"actionable.tertiary.bare.borderRadius\",\n        \"derived\": \"--now-actionable--bare--border-radius\"\n    },\n    \"--now-actionable--tertiary_bare--border-width\": {\n        \"name\": \"actionable.tertiary.bare.borderWidth\",\n        \"derived\": \"--now-actionable--bare--border-width\"\n    },\n    \"--now-actionable--tertiary_bare--font-family\": {\n        \"name\": \"actionable.tertiary.bare.fontFamily\",\n        \"derived\": \"--now-actionable--bare--font-family\"\n    },\n    \"--now-actionable--tertiary_bare--font-style\": {\n        \"name\": \"actionable.tertiary.bare.fontStyle\",\n        \"derived\": \"--now-actionable--bare--font-style\"\n    },\n    \"--now-actionable--tertiary_bare--font-weight\": {\n        \"name\": \"actionable.tertiary.bare.fontWeight\",\n        \"derived\": \"--now-actionable--bare--font-weight\"\n    },\n    \"--now-actionable--tertiary_bare--opacity--disabled\": {\n        \"name\": \"actionable.tertiary.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--opacity--disabled\"\n    },\n    \"--now-actionable--tertiary_bare--text-transform\": {\n        \"name\": \"actionable.tertiary.bare.textTransform\",\n        \"derived\": \"--now-actionable--bare--text-transform\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--background-color--active\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.backgroundColor.active\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--active\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--background-color--hover\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.backgroundColor.hover\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--hover\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--selected\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--selected_active\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--selected_hover\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--border-color--active\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.borderColor.active\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--active\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--border-color--hover\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.borderColor.hover\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--hover\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--selected\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--selected_active\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--selected_hover\"\n    },\n    \"--now-actionable--tertiary_high-contrast_bare--opacity--disabled\": {\n        \"name\": \"actionable.tertiary.highContrast.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--tertiary_highlighted_bare--background-color--selected\": {\n        \"name\": \"actionable.tertiary.highlighted.bare.backgroundColor.selected\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--selected\"\n    },\n    \"--now-actionable--tertiary_highlighted_bare--background-color--selected_active\": {\n        \"name\": \"actionable.tertiary.highlighted.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--selected_active\"\n    },\n    \"--now-actionable--tertiary_highlighted_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.tertiary.highlighted.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-actionable--tertiary_bare--background-color--selected_hover\"\n    },\n    \"--now-actionable--tertiary_highlighted_bare--border-color--selected\": {\n        \"name\": \"actionable.tertiary.highlighted.bare.borderColor.selected\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--selected\"\n    },\n    \"--now-actionable--tertiary_highlighted_bare--border-color--selected_active\": {\n        \"name\": \"actionable.tertiary.highlighted.bare.borderColor.selected.active\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--selected_active\"\n    },\n    \"--now-actionable--tertiary_highlighted_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.tertiary.highlighted.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-color--selected_hover\"\n    },\n    \"--now-actionable--tertiary_highlighted_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.tertiary.highlighted.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-actionable--tertiary_highlighted_bare--background-color--selected\"\n    },\n    \"--now-actionable--tertiary_highlighted_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.tertiary.highlighted.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-actionable--tertiary_highlighted_bare--background-color--selected_active\"\n    },\n    \"--now-actionable--tertiary_highlighted_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.tertiary.highlighted.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-actionable--tertiary_highlighted_bare--background-color--selected_hover\"\n    },\n    \"--now-actionable--tertiary_highlighted_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.tertiary.highlighted.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-actionable--tertiary_highlighted_bare--border-color--selected\"\n    },\n    \"--now-actionable--tertiary_highlighted_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.tertiary.highlighted.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-actionable--tertiary_highlighted_bare--border-color--selected_active\"\n    },\n    \"--now-actionable--tertiary_highlighted_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.tertiary.highlighted.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-actionable--tertiary_highlighted_bare--border-color--selected_hover\"\n    },\n    \"--now-actionable--tertiary--background-color\": {\n        \"name\": \"actionable.tertiary.backgroundColor\",\n        \"derived\": \"--now-color_background--secondary-actionable\"\n    },\n    \"--now-actionable--tertiary--background-color--active\": {\n        \"name\": \"actionable.tertiary.backgroundColor.active\",\n        \"derived\": \"--now-color_background--secondary-actionable\"\n    },\n    \"--now-actionable--tertiary--background-color--hover\": {\n        \"name\": \"actionable.tertiary.backgroundColor.hover\",\n        \"derived\": \"--now-color_background--secondary-actionable\"\n    },\n    \"--now-actionable--tertiary--border-color\": {\n        \"name\": \"actionable.tertiary.borderColor\",\n        \"derived\": \"--now-color_border--tertiary-actionable\"\n    },\n    \"--now-actionable--tertiary--border-color--active\": {\n        \"name\": \"actionable.tertiary.borderColor.active\",\n        \"derived\": \"--now-color_border--primary-actionable\"\n    },\n    \"--now-actionable--tertiary--border-color--hover\": {\n        \"name\": \"actionable.tertiary.borderColor.hover\",\n        \"derived\": \"--now-color_border--secondary-actionable\"\n    },\n    \"--now-actionable--tertiary--border-radius\": {\n        \"name\": \"actionable.tertiary.borderRadius\",\n        \"derived\": \"--now-actionable--contained--border-radius\"\n    },\n    \"--now-actionable--tertiary--border-width\": {\n        \"name\": \"actionable.tertiary.borderWidth\",\n        \"derived\": \"--now-actionable--contained--border-width\"\n    },\n    \"--now-actionable--tertiary--font-family\": {\n        \"name\": \"actionable.tertiary.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--tertiary--font-style\": {\n        \"name\": \"actionable.tertiary.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--tertiary--font-weight\": {\n        \"name\": \"actionable.tertiary.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--tertiary--opacity--disabled\": {\n        \"name\": \"actionable.tertiary.opacity.disabled\",\n        \"derived\": \"--now-actionable--contained--opacity--disabled\"\n    },\n    \"--now-actionable--tertiary--text-transform\": {\n        \"name\": \"actionable.tertiary.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--tertiary-selection_bare--background-color--active\": {\n        \"name\": \"actionable.tertiarySelection.bare.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_bare--background-color--hover\": {\n        \"name\": \"actionable.tertiarySelection.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_bare--background-color--selected\": {\n        \"name\": \"actionable.tertiarySelection.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_bare--background-color--selected_active\": {\n        \"name\": \"actionable.tertiarySelection.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.tertiarySelection.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_bare--border-color--active\": {\n        \"name\": \"actionable.tertiarySelection.bare.borderColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--tertiary-selection_bare--border-color--hover\": {\n        \"name\": \"actionable.tertiarySelection.bare.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--tertiary-selection_bare--border-color--selected\": {\n        \"name\": \"actionable.tertiarySelection.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_bare--border-color--selected_active\": {\n        \"name\": \"actionable.tertiarySelection.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--tertiary-selection_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.tertiarySelection.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--tertiary-selection_bare--border-radius\": {\n        \"name\": \"actionable.tertiarySelection.bare.borderRadius\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-radius\"\n    },\n    \"--now-actionable--tertiary-selection_bare--border-width\": {\n        \"name\": \"actionable.tertiarySelection.bare.borderWidth\",\n        \"derived\": \"--now-actionable--tertiary_bare--border-width\"\n    },\n    \"--now-actionable--tertiary-selection_bare--font-family\": {\n        \"name\": \"actionable.tertiarySelection.bare.fontFamily\",\n        \"derived\": \"--now-actionable--bare--font-family\"\n    },\n    \"--now-actionable--tertiary-selection_bare--font-style\": {\n        \"name\": \"actionable.tertiarySelection.bare.fontStyle\",\n        \"derived\": \"--now-actionable--bare--font-style\"\n    },\n    \"--now-actionable--tertiary-selection_bare--font-weight\": {\n        \"name\": \"actionable.tertiarySelection.bare.fontWeight\",\n        \"derived\": \"--now-actionable--bare--font-weight\"\n    },\n    \"--now-actionable--tertiary-selection_bare--opacity--disabled\": {\n        \"name\": \"actionable.tertiarySelection.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--tertiary-selection_bare--text-transform\": {\n        \"name\": \"actionable.tertiarySelection.bare.textTransform\",\n        \"derived\": \"--now-actionable--bare--text-transform\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--background-color--active\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--background-color--hover\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--border-color--active\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.borderColor.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--border-color--hover\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--tertiary-selection_high-contrast_bare--opacity--disabled\": {\n        \"name\": \"actionable.tertiarySelection.highContrast.bare.opacity.disabled\",\n        \"derived\": \"--now-actionable--bare--opacity--disabled\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_bare--background-color--selected\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_bare--background-color--selected_active\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_bare--border-color--selected\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_bare--border-color--selected_active\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_high-contrast_bare--background-color--selected\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.highContrast.bare.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_high-contrast_bare--background-color--selected_active\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.highContrast.bare.backgroundColor.selected.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_high-contrast_bare--background-color--selected_hover\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.highContrast.bare.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_high-contrast_bare--border-color--selected\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.highContrast.bare.borderColor.selected\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_high-contrast_bare--border-color--selected_active\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.highContrast.bare.borderColor.selected.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-actionable--tertiary-selection_highlighted_high-contrast_bare--border-color--selected_hover\": {\n        \"name\": \"actionable.tertiarySelection.highlighted.highContrast.bare.borderColor.selected.hover\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-actionable--tertiary-selection--background-color\": {\n        \"name\": \"actionable.tertiarySelection.backgroundColor\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection--background-color--active\": {\n        \"name\": \"actionable.tertiarySelection.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection--background-color--hover\": {\n        \"name\": \"actionable.tertiarySelection.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-actionable--tertiary-selection--border-color\": {\n        \"name\": \"actionable.tertiarySelection.borderColor\",\n        \"derived\": \"--now-actionable--tertiary--border-color\"\n    },\n    \"--now-actionable--tertiary-selection--border-color--active\": {\n        \"name\": \"actionable.tertiarySelection.borderColor.active\",\n        \"derived\": \"--now-actionable--tertiary--border-color--active\"\n    },\n    \"--now-actionable--tertiary-selection--border-color--hover\": {\n        \"name\": \"actionable.tertiarySelection.borderColor.hover\",\n        \"derived\": \"--now-actionable--tertiary--border-color--hover\"\n    },\n    \"--now-actionable--tertiary-selection--border-radius\": {\n        \"name\": \"actionable.tertiarySelection.borderRadius\",\n        \"derived\": \"--now-actionable--tertiary--border-radius\"\n    },\n    \"--now-actionable--tertiary-selection--border-width\": {\n        \"name\": \"actionable.tertiarySelection.borderWidth\",\n        \"derived\": \"--now-actionable--tertiary--border-width\"\n    },\n    \"--now-actionable--tertiary-selection--font-family\": {\n        \"name\": \"actionable.tertiarySelection.fontFamily\",\n        \"derived\": \"--now-actionable--contained--font-family\"\n    },\n    \"--now-actionable--tertiary-selection--font-style\": {\n        \"name\": \"actionable.tertiarySelection.fontStyle\",\n        \"derived\": \"--now-actionable--contained--font-style\"\n    },\n    \"--now-actionable--tertiary-selection--font-weight\": {\n        \"name\": \"actionable.tertiarySelection.fontWeight\",\n        \"derived\": \"--now-actionable--contained--font-weight\"\n    },\n    \"--now-actionable--tertiary-selection--opacity--disabled\": {\n        \"name\": \"actionable.tertiarySelection.opacity.disabled\",\n        \"derived\": \"--now-actionable--opacity--disabled\"\n    },\n    \"--now-actionable--tertiary-selection--text-transform\": {\n        \"name\": \"actionable.tertiarySelection.textTransform\",\n        \"derived\": \"--now-actionable--contained--text-transform\"\n    },\n    \"--now-actionable--text-wrap\": {\n        \"name\": \"actionable.textWrap\",\n        \"initial\": \"normal\"\n    },\n    \"--now-container-card_divider--primary--color\": {\n        \"name\": \"containerCard.divider.primary.color\",\n        \"derived\": \"--now-color_divider--primary\"\n    },\n    \"--now-container-card_divider--primary--width\": {\n        \"name\": \"containerCard.divider.primary.width\",\n        \"derived\": \"--now-container-card_divider--width\"\n    },\n    \"--now-container-card_divider--secondary--color\": {\n        \"name\": \"containerCard.divider.secondary.color\",\n        \"derived\": \"--now-color_divider--secondary\"\n    },\n    \"--now-container-card_divider--secondary--width\": {\n        \"name\": \"containerCard.divider.secondary.width\",\n        \"derived\": \"--now-container-card_divider--width\"\n    },\n    \"--now-container-card_divider--tertiary--color\": {\n        \"name\": \"containerCard.divider.tertiary.color\",\n        \"derived\": \"--now-color_divider--tertiary\"\n    },\n    \"--now-container-card_divider--tertiary--width\": {\n        \"name\": \"containerCard.divider.tertiary.width\",\n        \"derived\": \"--now-container-card_divider--width\"\n    },\n    \"--now-container-card_divider--width\": {\n        \"name\": \"containerCard.divider.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-container-card_footer--font-family\": {\n        \"name\": \"containerCard.footer.fontFamily\",\n        \"derived\": \"--now-container--font-family\"\n    },\n    \"--now-container-card_footer--font-style\": {\n        \"name\": \"containerCard.footer.fontStyle\",\n        \"derived\": \"--now-container--font-style\"\n    },\n    \"--now-container-card_footer--font-weight\": {\n        \"name\": \"containerCard.footer.fontWeight\",\n        \"derived\": \"--now-container--font-weight\"\n    },\n    \"--now-container-card_footer--primary--color\": {\n        \"name\": \"containerCard.footer.primary.color\",\n        \"derived\": \"--now-display-type--primary--color\"\n    },\n    \"--now-container-card_footer--secondary--color\": {\n        \"name\": \"containerCard.footer.secondary.color\",\n        \"derived\": \"--now-display-type--secondary--color\"\n    },\n    \"--now-container-card_footer--tertiary--color\": {\n        \"name\": \"containerCard.footer.tertiary.color\",\n        \"derived\": \"--now-display-type--tertiary--color\"\n    },\n    \"--now-container-card_footer--text-transform\": {\n        \"name\": \"containerCard.footer.textTransform\",\n        \"derived\": \"--now-container--text-transform\"\n    },\n    \"--now-container-card_header--font-family\": {\n        \"name\": \"containerCard.header.fontFamily\",\n        \"derived\": \"--now-display-type--head-primary--font-family\"\n    },\n    \"--now-container-card_header--font-style\": {\n        \"name\": \"containerCard.header.fontStyle\",\n        \"derived\": \"--now-display-type--head-primary--font-style\"\n    },\n    \"--now-container-card_header--font-weight\": {\n        \"name\": \"containerCard.header.fontWeight\",\n        \"derived\": \"--now-display-type--head-primary--font-weight\"\n    },\n    \"--now-container-card_header--primary--color\": {\n        \"name\": \"containerCard.header.primary.color\",\n        \"derived\": \"--now-display-type--primary--color\"\n    },\n    \"--now-container-card_header--secondary--color\": {\n        \"name\": \"containerCard.header.secondary.color\",\n        \"derived\": \"--now-display-type--secondary--color\"\n    },\n    \"--now-container-card_header--tertiary--color\": {\n        \"name\": \"containerCard.header.tertiary.color\",\n        \"derived\": \"--now-display-type--tertiary--color\"\n    },\n    \"--now-container-card_header--text-transform\": {\n        \"name\": \"containerCard.header.textTransform\",\n        \"derived\": \"--now-display-type--head-primary--text-transform\"\n    },\n    \"--now-container-card_status--primary_blue--background-color\": {\n        \"name\": \"containerCard.status.primary.blue.backgroundColor\",\n        \"derived\": \"--now-color_grouped--blue-4\"\n    },\n    \"--now-container-card_status--primary_brown--background-color\": {\n        \"name\": \"containerCard.status.primary.brown.backgroundColor\",\n        \"derived\": \"--now-color_grouped--brown-4\"\n    },\n    \"--now-container-card_status--primary_critical--background-color\": {\n        \"name\": \"containerCard.status.primary.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-container-card_status--primary_gray--background-color\": {\n        \"name\": \"containerCard.status.primary.gray.backgroundColor\",\n        \"derived\": \"--now-color_grouped--gray-4\"\n    },\n    \"--now-container-card_status--primary_green--background-color\": {\n        \"name\": \"containerCard.status.primary.green.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-4\"\n    },\n    \"--now-container-card_status--primary_green-yellow--background-color\": {\n        \"name\": \"containerCard.status.primary.greenYellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-4\"\n    },\n    \"--now-container-card_status--primary_high--background-color\": {\n        \"name\": \"containerCard.status.primary.high.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-2\"\n    },\n    \"--now-container-card_status--primary_info--background-color\": {\n        \"name\": \"containerCard.status.primary.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-2\"\n    },\n    \"--now-container-card_status--primary_low--background-color\": {\n        \"name\": \"containerCard.status.primary.low.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-2\"\n    },\n    \"--now-container-card_status--primary_magenta--background-color\": {\n        \"name\": \"containerCard.status.primary.magenta.backgroundColor\",\n        \"derived\": \"--now-color_grouped--magenta-4\"\n    },\n    \"--now-container-card_status--primary_moderate--background-color\": {\n        \"name\": \"containerCard.status.primary.moderate.backgroundColor\",\n        \"derived\": \"--now-color_alert--moderate-2\"\n    },\n    \"--now-container-card_status--primary_orange--background-color\": {\n        \"name\": \"containerCard.status.primary.orange.backgroundColor\",\n        \"derived\": \"--now-color_grouped--orange-4\"\n    },\n    \"--now-container-card_status--primary_pink--background-color\": {\n        \"name\": \"containerCard.status.primary.pink.backgroundColor\",\n        \"derived\": \"--now-color_grouped--pink-4\"\n    },\n    \"--now-container-card_status--primary_positive--background-color\": {\n        \"name\": \"containerCard.status.primary.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-2\"\n    },\n    \"--now-container-card_status--primary_purple--background-color\": {\n        \"name\": \"containerCard.status.primary.purple.backgroundColor\",\n        \"derived\": \"--now-color_grouped--purple-4\"\n    },\n    \"--now-container-card_status--primary_teal--background-color\": {\n        \"name\": \"containerCard.status.primary.teal.backgroundColor\",\n        \"derived\": \"--now-color_grouped--teal-4\"\n    },\n    \"--now-container-card_status--primary_warning--background-color\": {\n        \"name\": \"containerCard.status.primary.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-2\"\n    },\n    \"--now-container-card_status--primary_yellow--background-color\": {\n        \"name\": \"containerCard.status.primary.yellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--yellow-4\"\n    },\n    \"--now-container-card_status--secondary_blue--background-color\": {\n        \"name\": \"containerCard.status.secondary.blue.backgroundColor\",\n        \"derived\": \"--now-color_grouped--blue-1\"\n    },\n    \"--now-container-card_status--secondary_brown--background-color\": {\n        \"name\": \"containerCard.status.secondary.brown.backgroundColor\",\n        \"derived\": \"--now-color_grouped--brown-1\"\n    },\n    \"--now-container-card_status--secondary_critical--background-color\": {\n        \"name\": \"containerCard.status.secondary.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-1\"\n    },\n    \"--now-container-card_status--secondary_gray--background-color\": {\n        \"name\": \"containerCard.status.secondary.gray.backgroundColor\",\n        \"derived\": \"--now-color_grouped--gray-1\"\n    },\n    \"--now-container-card_status--secondary_green--background-color\": {\n        \"name\": \"containerCard.status.secondary.green.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-1\"\n    },\n    \"--now-container-card_status--secondary_green-yellow--background-color\": {\n        \"name\": \"containerCard.status.secondary.greenYellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-1\"\n    },\n    \"--now-container-card_status--secondary_high--background-color\": {\n        \"name\": \"containerCard.status.secondary.high.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-1\"\n    },\n    \"--now-container-card_status--secondary_info--background-color\": {\n        \"name\": \"containerCard.status.secondary.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-1\"\n    },\n    \"--now-container-card_status--secondary_low--background-color\": {\n        \"name\": \"containerCard.status.secondary.low.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-1\"\n    },\n    \"--now-container-card_status--secondary_magenta--background-color\": {\n        \"name\": \"containerCard.status.secondary.magenta.backgroundColor\",\n        \"derived\": \"--now-color_grouped--magenta-1\"\n    },\n    \"--now-container-card_status--secondary_moderate--background-color\": {\n        \"name\": \"containerCard.status.secondary.moderate.backgroundColor\",\n        \"derived\": \"--now-color_alert--moderate-1\"\n    },\n    \"--now-container-card_status--secondary_orange--background-color\": {\n        \"name\": \"containerCard.status.secondary.orange.backgroundColor\",\n        \"derived\": \"--now-color_grouped--orange-1\"\n    },\n    \"--now-container-card_status--secondary_pink--background-color\": {\n        \"name\": \"containerCard.status.secondary.pink.backgroundColor\",\n        \"derived\": \"--now-color_grouped--pink-1\"\n    },\n    \"--now-container-card_status--secondary_positive--background-color\": {\n        \"name\": \"containerCard.status.secondary.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-1\"\n    },\n    \"--now-container-card_status--secondary_purple--background-color\": {\n        \"name\": \"containerCard.status.secondary.purple.backgroundColor\",\n        \"derived\": \"--now-color_grouped--purple-1\"\n    },\n    \"--now-container-card_status--secondary_teal--background-color\": {\n        \"name\": \"containerCard.status.secondary.teal.backgroundColor\",\n        \"derived\": \"--now-color_grouped--teal-1\"\n    },\n    \"--now-container-card_status--secondary_warning--background-color\": {\n        \"name\": \"containerCard.status.secondary.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-1\"\n    },\n    \"--now-container-card_status--secondary_yellow--background-color\": {\n        \"name\": \"containerCard.status.secondary.yellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--yellow-1\"\n    },\n    \"--now-container-card_status--tertiary_blue--background-color\": {\n        \"name\": \"containerCard.status.tertiary.blue.backgroundColor\",\n        \"derived\": \"--now-color_grouped--blue-0\"\n    },\n    \"--now-container-card_status--tertiary_brown--background-color\": {\n        \"name\": \"containerCard.status.tertiary.brown.backgroundColor\",\n        \"derived\": \"--now-color_grouped--brown-0\"\n    },\n    \"--now-container-card_status--tertiary_critical--background-color\": {\n        \"name\": \"containerCard.status.tertiary.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-container-card_status--tertiary_gray--background-color\": {\n        \"name\": \"containerCard.status.tertiary.gray.backgroundColor\",\n        \"derived\": \"--now-color_grouped--gray-0\"\n    },\n    \"--now-container-card_status--tertiary_green--background-color\": {\n        \"name\": \"containerCard.status.tertiary.green.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-0\"\n    },\n    \"--now-container-card_status--tertiary_green-yellow--background-color\": {\n        \"name\": \"containerCard.status.tertiary.greenYellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-0\"\n    },\n    \"--now-container-card_status--tertiary_high--background-color\": {\n        \"name\": \"containerCard.status.tertiary.high.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-0\"\n    },\n    \"--now-container-card_status--tertiary_info--background-color\": {\n        \"name\": \"containerCard.status.tertiary.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-0\"\n    },\n    \"--now-container-card_status--tertiary_low--background-color\": {\n        \"name\": \"containerCard.status.tertiary.low.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-0\"\n    },\n    \"--now-container-card_status--tertiary_magenta--background-color\": {\n        \"name\": \"containerCard.status.tertiary.magenta.backgroundColor\",\n        \"derived\": \"--now-color_grouped--magenta-0\"\n    },\n    \"--now-container-card_status--tertiary_moderate--background-color\": {\n        \"name\": \"containerCard.status.tertiary.moderate.backgroundColor\",\n        \"derived\": \"--now-color_alert--moderate-0\"\n    },\n    \"--now-container-card_status--tertiary_orange--background-color\": {\n        \"name\": \"containerCard.status.tertiary.orange.backgroundColor\",\n        \"derived\": \"--now-color_grouped--orange-0\"\n    },\n    \"--now-container-card_status--tertiary_pink--background-color\": {\n        \"name\": \"containerCard.status.tertiary.pink.backgroundColor\",\n        \"derived\": \"--now-color_grouped--pink-0\"\n    },\n    \"--now-container-card_status--tertiary_positive--background-color\": {\n        \"name\": \"containerCard.status.tertiary.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-0\"\n    },\n    \"--now-container-card_status--tertiary_purple--background-color\": {\n        \"name\": \"containerCard.status.tertiary.purple.backgroundColor\",\n        \"derived\": \"--now-color_grouped--purple-0\"\n    },\n    \"--now-container-card_status--tertiary_teal--background-color\": {\n        \"name\": \"containerCard.status.tertiary.teal.backgroundColor\",\n        \"derived\": \"--now-color_grouped--teal-0\"\n    },\n    \"--now-container-card_status--tertiary_warning--background-color\": {\n        \"name\": \"containerCard.status.tertiary.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-0\"\n    },\n    \"--now-container-card_status--tertiary_yellow--background-color\": {\n        \"name\": \"containerCard.status.tertiary.yellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--yellow-0\"\n    },\n    \"--now-container-card_subheader--font-family\": {\n        \"name\": \"containerCard.subheader.fontFamily\",\n        \"derived\": \"--now-display-type--title-primary--font-family\"\n    },\n    \"--now-container-card_subheader--font-style\": {\n        \"name\": \"containerCard.subheader.fontStyle\",\n        \"derived\": \"--now-display-type--title-primary--font-style\"\n    },\n    \"--now-container-card_subheader--font-weight\": {\n        \"name\": \"containerCard.subheader.fontWeight\",\n        \"derived\": \"--now-display-type--title-primary--font-weight\"\n    },\n    \"--now-container-card_subheader--primary--color\": {\n        \"name\": \"containerCard.subheader.primary.color\",\n        \"derived\": \"--now-container-card--primary--color\"\n    },\n    \"--now-container-card_subheader--secondary--color\": {\n        \"name\": \"containerCard.subheader.secondary.color\",\n        \"derived\": \"--now-container-card--secondary--color\"\n    },\n    \"--now-container-card_subheader--tertiary--color\": {\n        \"name\": \"containerCard.subheader.tertiary.color\",\n        \"derived\": \"--now-container-card--tertiary--color\"\n    },\n    \"--now-container-card_subheader--text-transform\": {\n        \"name\": \"containerCard.subheader.textTransform\",\n        \"derived\": \"--now-display-type--title-primary--text-transform\"\n    },\n    \"--now-container-card_tagline--font-family\": {\n        \"name\": \"containerCard.tagline.fontFamily\",\n        \"derived\": \"--now-container-card--font-family\"\n    },\n    \"--now-container-card_tagline--font-style\": {\n        \"name\": \"containerCard.tagline.fontStyle\",\n        \"derived\": \"--now-container-card--font-style\"\n    },\n    \"--now-container-card_tagline--font-weight\": {\n        \"name\": \"containerCard.tagline.fontWeight\",\n        \"derived\": \"--now-container-card--font-weight\"\n    },\n    \"--now-container-card_tagline--primary--color\": {\n        \"name\": \"containerCard.tagline.primary.color\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-container-card_tagline--secondary--color\": {\n        \"name\": \"containerCard.tagline.secondary.color\",\n        \"derived\": \"--now-container-card--secondary--color\"\n    },\n    \"--now-container-card_tagline--tertiary--color\": {\n        \"name\": \"containerCard.tagline.tertiary.color\",\n        \"derived\": \"--now-container-card--tertiary--color\"\n    },\n    \"--now-container-card_tagline--text-transform\": {\n        \"name\": \"containerCard.tagline.textTransform\",\n        \"derived\": \"--now-container-card--text-transform\"\n    },\n    \"--now-container-card--actionable--border-radius\": {\n        \"name\": \"containerCard.actionable.borderRadius\",\n        \"derived\": \"--now-container-card--border-radius\"\n    },\n    \"--now-container-card--actionable--border-width\": {\n        \"name\": \"containerCard.actionable.borderWidth\",\n        \"derived\": \"--now-container-card--border-width\"\n    },\n    \"--now-container-card--actionable--border-width--active\": {\n        \"name\": \"containerCard.actionable.borderWidth.active\",\n        \"derived\": \"--now-container-card--actionable--border-width\"\n    },\n    \"--now-container-card--actionable--border-width--hover\": {\n        \"name\": \"containerCard.actionable.borderWidth.hover\",\n        \"derived\": \"--now-container-card--actionable--border-width\"\n    },\n    \"--now-container-card--actionable--border-width--selected\": {\n        \"name\": \"containerCard.actionable.borderWidth.selected\",\n        \"derived\": \"--now-container-card--actionable--border-width\"\n    },\n    \"--now-container-card--background-color\": {\n        \"name\": \"containerCard.backgroundColor\",\n        \"derived\": \"--now-container--color\"\n    },\n    \"--now-container-card--background-color-alpha\": {\n        \"name\": \"containerCard.backgroundColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-container-card--border-color\": {\n        \"name\": \"containerCard.borderColor\",\n        \"derived\": \"--now-container--border-color\"\n    },\n    \"--now-container-card--border-radius\": {\n        \"name\": \"containerCard.borderRadius\",\n        \"derived\": \"--now-container--border-radius\"\n    },\n    \"--now-container-card--border-width\": {\n        \"name\": \"containerCard.borderWidth\",\n        \"derived\": \"--now-container--border-width\"\n    },\n    \"--now-container-card--font-family\": {\n        \"name\": \"containerCard.fontFamily\",\n        \"derived\": \"--now-container--font-family\"\n    },\n    \"--now-container-card--font-style\": {\n        \"name\": \"containerCard.fontStyle\",\n        \"derived\": \"--now-container--font-style\"\n    },\n    \"--now-container-card--font-weight\": {\n        \"name\": \"containerCard.fontWeight\",\n        \"derived\": \"--now-container--font-weight\"\n    },\n    \"--now-container-card--primary_actionable--background-color\": {\n        \"name\": \"containerCard.primary.actionable.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-container-card--primary_actionable--background-color--active\": {\n        \"name\": \"containerCard.primary.actionable.backgroundColor.active\",\n        \"derived\": \"--now-container-card--primary_actionable--background-color\"\n    },\n    \"--now-container-card--primary_actionable--background-color--hover\": {\n        \"name\": \"containerCard.primary.actionable.backgroundColor.hover\",\n        \"derived\": \"--now-container-card--primary_actionable--background-color\"\n    },\n    \"--now-container-card--primary_actionable--background-color--selected\": {\n        \"name\": \"containerCard.primary.actionable.backgroundColor.selected\",\n        \"derived\": \"--now-container-card--primary_actionable--background-color\"\n    },\n    \"--now-container-card--primary_actionable--border-color\": {\n        \"name\": \"containerCard.primary.actionable.borderColor\",\n        \"derived\": \"--now-color_border--tertiary\"\n    },\n    \"--now-container-card--primary_actionable--border-color--active\": {\n        \"name\": \"containerCard.primary.actionable.borderColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-container-card--primary_actionable--border-color--hover\": {\n        \"name\": \"containerCard.primary.actionable.borderColor.hover\",\n        \"derived\": \"--now-color_border--secondary\"\n    },\n    \"--now-container-card--primary_actionable--border-color--selected\": {\n        \"name\": \"containerCard.primary.actionable.borderColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-container-card--primary_actionable--border-radius\": {\n        \"name\": \"containerCard.primary.actionable.borderRadius\",\n        \"derived\": \"--now-container-card--actionable--border-radius\"\n    },\n    \"--now-container-card--primary_actionable--border-width\": {\n        \"name\": \"containerCard.primary.actionable.borderWidth\",\n        \"derived\": \"--now-container-card--actionable--border-width\"\n    },\n    \"--now-container-card--primary_actionable--border-width--active\": {\n        \"name\": \"containerCard.primary.actionable.borderWidth.active\",\n        \"derived\": \"--now-container-card--actionable--border-width--active\"\n    },\n    \"--now-container-card--primary_actionable--border-width--hover\": {\n        \"name\": \"containerCard.primary.actionable.borderWidth.hover\",\n        \"derived\": \"--now-container-card--actionable--border-width--hover\"\n    },\n    \"--now-container-card--primary_actionable--border-width--selected\": {\n        \"name\": \"containerCard.primary.actionable.borderWidth.selected\",\n        \"derived\": \"--now-container-card--actionable--border-width--selected\"\n    },\n    \"--now-container-card--primary--background-color\": {\n        \"name\": \"containerCard.primary.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-container-card--primary--border-color\": {\n        \"name\": \"containerCard.primary.borderColor\",\n        \"derived\": \"--now-color_border--tertiary\"\n    },\n    \"--now-container-card--primary--border-radius\": {\n        \"name\": \"containerCard.primary.borderRadius\",\n        \"derived\": \"--now-container-card--border-radius\"\n    },\n    \"--now-container-card--primary--border-width\": {\n        \"name\": \"containerCard.primary.borderWidth\",\n        \"derived\": \"--now-container-card--border-width\"\n    },\n    \"--now-container-card--primary--color\": {\n        \"name\": \"containerCard.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-container-card--secondary--color\": {\n        \"name\": \"containerCard.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-container-card--tertiary--color\": {\n        \"name\": \"containerCard.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-container-card--text-transform\": {\n        \"name\": \"containerCard.textTransform\",\n        \"derived\": \"--now-container--text-transform\"\n    },\n    \"--now-display-type--body_label--color\": {\n        \"name\": \"displayType.body.label.color\",\n        \"derived\": \"--now-display-type_label--color\"\n    },\n    \"--now-display-type--body_label--font-family\": {\n        \"name\": \"displayType.body.label.fontFamily\",\n        \"derived\": \"--now-display-type_label--font-family\"\n    },\n    \"--now-display-type--body_label--font-style\": {\n        \"name\": \"displayType.body.label.fontStyle\",\n        \"derived\": \"--now-display-type_label--font-style\"\n    },\n    \"--now-display-type--body_label--font-weight\": {\n        \"name\": \"displayType.body.label.fontWeight\",\n        \"derived\": \"--now-display-type_label--font-weight\"\n    },\n    \"--now-display-type--body_label--text-transform\": {\n        \"name\": \"displayType.body.label.textTransform\",\n        \"derived\": \"--now-display-type_label--text-transform\"\n    },\n    \"--now-display-type--body_previous_delimiter--font-weight\": {\n        \"name\": \"displayType.body.previous.delimiter.fontWeight\",\n        \"initial\": \"600\"\n    },\n    \"--now-display-type--body_previous--color\": {\n        \"name\": \"displayType.body.previous.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-display-type--body_previous--font-style\": {\n        \"name\": \"displayType.body.previous.fontStyle\",\n        \"initial\": \"italic\"\n    },\n    \"--now-display-type--body_previous--font-weight\": {\n        \"name\": \"displayType.body.previous.fontWeight\",\n        \"initial\": \"normal\"\n    },\n    \"--now-display-type--body_previous--text-decoration\": {\n        \"name\": \"displayType.body.previous.textDecoration\",\n        \"initial\": \"line-through\"\n    },\n    \"--now-display-type--body_previous--text-transform\": {\n        \"name\": \"displayType.body.previous.textTransform\",\n        \"derived\": \"--now-display-type_value--text-transform\"\n    },\n    \"--now-display-type--body_value--color\": {\n        \"name\": \"displayType.body.value.color\",\n        \"derived\": \"--now-display-type_value--color\"\n    },\n    \"--now-display-type--body_value--font-family\": {\n        \"name\": \"displayType.body.value.fontFamily\",\n        \"derived\": \"--now-display-type_value--font-family\"\n    },\n    \"--now-display-type--body_value--font-style\": {\n        \"name\": \"displayType.body.value.fontStyle\",\n        \"derived\": \"--now-display-type_value--font-style\"\n    },\n    \"--now-display-type--body_value--font-weight\": {\n        \"name\": \"displayType.body.value.fontWeight\",\n        \"derived\": \"--now-display-type_value--font-weight\"\n    },\n    \"--now-display-type--body_value--text-transform\": {\n        \"name\": \"displayType.body.value.textTransform\",\n        \"derived\": \"--now-display-type_value--text-transform\"\n    },\n    \"--now-display-type--body-inline_label--color\": {\n        \"name\": \"displayType.bodyInline.label.color\",\n        \"derived\": \"--now-display-type--body-inline--color\"\n    },\n    \"--now-display-type--body-inline_label--font-family\": {\n        \"name\": \"displayType.bodyInline.label.fontFamily\",\n        \"derived\": \"--now-display-type--body_label--font-family\"\n    },\n    \"--now-display-type--body-inline_label--font-style\": {\n        \"name\": \"displayType.bodyInline.label.fontStyle\",\n        \"derived\": \"--now-display-type--body_label--font-style\"\n    },\n    \"--now-display-type--body-inline_label--font-weight\": {\n        \"name\": \"displayType.bodyInline.label.fontWeight\",\n        \"derived\": \"--now-display-type--body_label--font-weight\"\n    },\n    \"--now-display-type--body-inline_label--text-transform\": {\n        \"name\": \"displayType.bodyInline.label.textTransform\",\n        \"derived\": \"--now-display-type--body_label--text-transform\"\n    },\n    \"--now-display-type--body-inline_previous--color\": {\n        \"name\": \"displayType.bodyInline.previous.color\",\n        \"derived\": \"--now-display-type--body_previous--color\"\n    },\n    \"--now-display-type--body-inline_previous--font-style\": {\n        \"name\": \"displayType.bodyInline.previous.fontStyle\",\n        \"derived\": \"--now-display-type--body_previous--font-style\"\n    },\n    \"--now-display-type--body-inline_previous--font-weight\": {\n        \"name\": \"displayType.bodyInline.previous.fontWeight\",\n        \"derived\": \"--now-display-type--body_previous--font-weight\"\n    },\n    \"--now-display-type--body-inline_previous--text-decoration\": {\n        \"name\": \"displayType.bodyInline.previous.textDecoration\",\n        \"derived\": \"--now-display-type--body_previous--text-decoration\"\n    },\n    \"--now-display-type--body-inline_previous--text-transform\": {\n        \"name\": \"displayType.bodyInline.previous.textTransform\",\n        \"derived\": \"--now-display-type--body_previous--text-transform\"\n    },\n    \"--now-display-type--body-inline_value--color\": {\n        \"name\": \"displayType.bodyInline.value.color\",\n        \"derived\": \"--now-display-type--body-inline--color\"\n    },\n    \"--now-display-type--body-inline_value--font-family\": {\n        \"name\": \"displayType.bodyInline.value.fontFamily\",\n        \"derived\": \"--now-display-type--body_value--font-family\"\n    },\n    \"--now-display-type--body-inline_value--font-style\": {\n        \"name\": \"displayType.bodyInline.value.fontStyle\",\n        \"derived\": \"--now-display-type--body_value--font-style\"\n    },\n    \"--now-display-type--body-inline_value--font-weight\": {\n        \"name\": \"displayType.bodyInline.value.fontWeight\",\n        \"derived\": \"--now-display-type--body_value--font-weight\"\n    },\n    \"--now-display-type--body-inline_value--text-transform\": {\n        \"name\": \"displayType.bodyInline.value.textTransform\",\n        \"derived\": \"--now-display-type--body_value--text-transform\"\n    },\n    \"--now-display-type--body-inline--color\": {\n        \"name\": \"displayType.bodyInline.color\",\n        \"derived\": \"--now-display-type--body_label--color\"\n    },\n    \"--now-display-type--body-stacked_label--color\": {\n        \"name\": \"displayType.bodyStacked.label.color\",\n        \"derived\": \"--now-display-type--body_label--color\"\n    },\n    \"--now-display-type--body-stacked_label--font-family\": {\n        \"name\": \"displayType.bodyStacked.label.fontFamily\",\n        \"derived\": \"--now-display-type--body_label--font-family\"\n    },\n    \"--now-display-type--body-stacked_label--font-style\": {\n        \"name\": \"displayType.bodyStacked.label.fontStyle\",\n        \"derived\": \"--now-display-type--body_label--font-style\"\n    },\n    \"--now-display-type--body-stacked_label--font-weight\": {\n        \"name\": \"displayType.bodyStacked.label.fontWeight\",\n        \"derived\": \"--now-display-type--body_label--font-weight\"\n    },\n    \"--now-display-type--body-stacked_label--text-transform\": {\n        \"name\": \"displayType.bodyStacked.label.textTransform\",\n        \"derived\": \"--now-display-type--body_label--text-transform\"\n    },\n    \"--now-display-type--body-stacked_previous--color\": {\n        \"name\": \"displayType.bodyStacked.previous.color\",\n        \"derived\": \"--now-display-type--body_previous--color\"\n    },\n    \"--now-display-type--body-stacked_previous--font-style\": {\n        \"name\": \"displayType.bodyStacked.previous.fontStyle\",\n        \"derived\": \"--now-display-type--body_previous--font-style\"\n    },\n    \"--now-display-type--body-stacked_previous--font-weight\": {\n        \"name\": \"displayType.bodyStacked.previous.fontWeight\",\n        \"derived\": \"--now-display-type--body_previous--font-weight\"\n    },\n    \"--now-display-type--body-stacked_previous--text-decoration\": {\n        \"name\": \"displayType.bodyStacked.previous.textDecoration\",\n        \"derived\": \"--now-display-type--body_previous--text-decoration\"\n    },\n    \"--now-display-type--body-stacked_previous--text-transform\": {\n        \"name\": \"displayType.bodyStacked.previous.textTransform\",\n        \"derived\": \"--now-display-type--body_previous--text-transform\"\n    },\n    \"--now-display-type--body-stacked_value--color\": {\n        \"name\": \"displayType.bodyStacked.value.color\",\n        \"derived\": \"--now-display-type--body_value--color\"\n    },\n    \"--now-display-type--body-stacked_value--font-family\": {\n        \"name\": \"displayType.bodyStacked.value.fontFamily\",\n        \"derived\": \"--now-display-type--body_value--font-family\"\n    },\n    \"--now-display-type--body-stacked_value--font-style\": {\n        \"name\": \"displayType.bodyStacked.value.fontStyle\",\n        \"derived\": \"--now-display-type--body_value--font-style\"\n    },\n    \"--now-display-type--body-stacked_value--font-weight\": {\n        \"name\": \"displayType.bodyStacked.value.fontWeight\",\n        \"derived\": \"--now-display-type--body_value--font-weight\"\n    },\n    \"--now-display-type--body-stacked_value--text-transform\": {\n        \"name\": \"displayType.bodyStacked.value.textTransform\",\n        \"derived\": \"--now-display-type--body_value--text-transform\"\n    },\n    \"--now-display-type--body-tabbed_label--color\": {\n        \"name\": \"displayType.bodyTabbed.label.color\",\n        \"derived\": \"--now-display-type--body_label--color\"\n    },\n    \"--now-display-type--body-tabbed_label--font-family\": {\n        \"name\": \"displayType.bodyTabbed.label.fontFamily\",\n        \"derived\": \"--now-display-type--body_label--font-family\"\n    },\n    \"--now-display-type--body-tabbed_label--font-style\": {\n        \"name\": \"displayType.bodyTabbed.label.fontStyle\",\n        \"derived\": \"--now-display-type--body_label--font-style\"\n    },\n    \"--now-display-type--body-tabbed_label--font-weight\": {\n        \"name\": \"displayType.bodyTabbed.label.fontWeight\",\n        \"derived\": \"--now-display-type--body_label--font-weight\"\n    },\n    \"--now-display-type--body-tabbed_label--text-transform\": {\n        \"name\": \"displayType.bodyTabbed.label.textTransform\",\n        \"derived\": \"--now-display-type--body_label--text-transform\"\n    },\n    \"--now-display-type--body-tabbed_previous--color\": {\n        \"name\": \"displayType.bodyTabbed.previous.color\",\n        \"derived\": \"--now-display-type--body_previous--color\"\n    },\n    \"--now-display-type--body-tabbed_previous--font-style\": {\n        \"name\": \"displayType.bodyTabbed.previous.fontStyle\",\n        \"derived\": \"--now-display-type--body_previous--font-style\"\n    },\n    \"--now-display-type--body-tabbed_previous--font-weight\": {\n        \"name\": \"displayType.bodyTabbed.previous.fontWeight\",\n        \"derived\": \"--now-display-type--body_previous--font-weight\"\n    },\n    \"--now-display-type--body-tabbed_previous--text-decoration\": {\n        \"name\": \"displayType.bodyTabbed.previous.textDecoration\",\n        \"derived\": \"--now-display-type--body_previous--text-decoration\"\n    },\n    \"--now-display-type--body-tabbed_previous--text-transform\": {\n        \"name\": \"displayType.bodyTabbed.previous.textTransform\",\n        \"derived\": \"--now-display-type--body_previous--text-transform\"\n    },\n    \"--now-display-type--body-tabbed_value--color\": {\n        \"name\": \"displayType.bodyTabbed.value.color\",\n        \"derived\": \"--now-display-type--body_value--color\"\n    },\n    \"--now-display-type--body-tabbed_value--font-family\": {\n        \"name\": \"displayType.bodyTabbed.value.fontFamily\",\n        \"derived\": \"--now-display-type--body_value--font-family\"\n    },\n    \"--now-display-type--body-tabbed_value--font-style\": {\n        \"name\": \"displayType.bodyTabbed.value.fontStyle\",\n        \"derived\": \"--now-display-type--body_value--font-style\"\n    },\n    \"--now-display-type--body-tabbed_value--font-weight\": {\n        \"name\": \"displayType.bodyTabbed.value.fontWeight\",\n        \"derived\": \"--now-display-type--body_value--font-weight\"\n    },\n    \"--now-display-type--body-tabbed_value--text-transform\": {\n        \"name\": \"displayType.bodyTabbed.value.textTransform\",\n        \"derived\": \"--now-display-type--body_value--text-transform\"\n    },\n    \"--now-display-type--head-primary--color\": {\n        \"name\": \"displayType.headPrimary.color\",\n        \"derived\": \"--now-display-type--secondary--color\"\n    },\n    \"--now-display-type--head-primary--font-family\": {\n        \"name\": \"displayType.headPrimary.fontFamily\",\n        \"derived\": \"--now-display-type--header-primary--font-family\"\n    },\n    \"--now-display-type--head-primary--font-style\": {\n        \"name\": \"displayType.headPrimary.fontStyle\",\n        \"derived\": \"--now-display-type--header-primary--font-style\"\n    },\n    \"--now-display-type--head-primary--font-weight\": {\n        \"name\": \"displayType.headPrimary.fontWeight\",\n        \"derived\": \"--now-display-type--header-primary--font-weight\"\n    },\n    \"--now-display-type--head-primary--text-transform\": {\n        \"name\": \"displayType.headPrimary.textTransform\",\n        \"derived\": \"--now-display-type--header-primary--text-transform\"\n    },\n    \"--now-display-type--head-secondary--color\": {\n        \"name\": \"displayType.headSecondary.color\",\n        \"derived\": \"--now-display-type--secondary--color\"\n    },\n    \"--now-display-type--head-secondary--font-family\": {\n        \"name\": \"displayType.headSecondary.fontFamily\",\n        \"derived\": \"--now-display-type--header-secondary--font-family\"\n    },\n    \"--now-display-type--head-secondary--font-style\": {\n        \"name\": \"displayType.headSecondary.fontStyle\",\n        \"derived\": \"--now-display-type--header-secondary--font-style\"\n    },\n    \"--now-display-type--head-secondary--font-weight\": {\n        \"name\": \"displayType.headSecondary.fontWeight\",\n        \"derived\": \"--now-display-type--header-secondary--font-weight\"\n    },\n    \"--now-display-type--head-secondary--text-transform\": {\n        \"name\": \"displayType.headSecondary.textTransform\",\n        \"derived\": \"--now-display-type--header-secondary--text-transform\"\n    },\n    \"--now-display-type--head-tertiary--color\": {\n        \"name\": \"displayType.headTertiary.color\",\n        \"derived\": \"--now-display-type--secondary--color\"\n    },\n    \"--now-display-type--head-tertiary--font-family\": {\n        \"name\": \"displayType.headTertiary.fontFamily\",\n        \"derived\": \"--now-display-type--header-tertiary--font-family\"\n    },\n    \"--now-display-type--head-tertiary--font-style\": {\n        \"name\": \"displayType.headTertiary.fontStyle\",\n        \"derived\": \"--now-display-type--header-tertiary--font-style\"\n    },\n    \"--now-display-type--head-tertiary--font-weight\": {\n        \"name\": \"displayType.headTertiary.fontWeight\",\n        \"derived\": \"--now-display-type--header-tertiary--font-weight\"\n    },\n    \"--now-display-type--head-tertiary--text-transform\": {\n        \"name\": \"displayType.headTertiary.textTransform\",\n        \"derived\": \"--now-display-type--header-tertiary--text-transform\"\n    },\n    \"--now-display-type--subhead-primary--color\": {\n        \"name\": \"displayType.subheadPrimary.color\",\n        \"derived\": \"--now-display-type--primary--color\"\n    },\n    \"--now-display-type--subhead-primary--font-family\": {\n        \"name\": \"displayType.subheadPrimary.fontFamily\",\n        \"derived\": \"--now-display-type--title-primary--font-family\"\n    },\n    \"--now-display-type--subhead-primary--font-style\": {\n        \"name\": \"displayType.subheadPrimary.fontStyle\",\n        \"derived\": \"--now-display-type--title-primary--font-style\"\n    },\n    \"--now-display-type--subhead-primary--font-weight\": {\n        \"name\": \"displayType.subheadPrimary.fontWeight\",\n        \"derived\": \"--now-display-type--title-primary--font-weight\"\n    },\n    \"--now-display-type--subhead-primary--text-transform\": {\n        \"name\": \"displayType.subheadPrimary.textTransform\",\n        \"derived\": \"--now-display-type--title-primary--text-transform\"\n    },\n    \"--now-display-type--subhead-secondary--color\": {\n        \"name\": \"displayType.subheadSecondary.color\",\n        \"derived\": \"--now-display-type--secondary--color\"\n    },\n    \"--now-display-type--subhead-secondary--font-family\": {\n        \"name\": \"displayType.subheadSecondary.fontFamily\",\n        \"derived\": \"--now-display-type--title-secondary--font-family\"\n    },\n    \"--now-display-type--subhead-secondary--font-style\": {\n        \"name\": \"displayType.subheadSecondary.fontStyle\",\n        \"derived\": \"--now-display-type--title-secondary--font-style\"\n    },\n    \"--now-display-type--subhead-secondary--font-weight\": {\n        \"name\": \"displayType.subheadSecondary.fontWeight\",\n        \"derived\": \"--now-display-type--title-secondary--font-weight\"\n    },\n    \"--now-display-type--subhead-secondary--text-transform\": {\n        \"name\": \"displayType.subheadSecondary.textTransform\",\n        \"derived\": \"--now-display-type--title-secondary--text-transform\"\n    },\n    \"--now-display-type--subhead-tertiary--color\": {\n        \"name\": \"displayType.subheadTertiary.color\",\n        \"derived\": \"--now-display-type--tertiary--color\"\n    },\n    \"--now-display-type--subhead-tertiary--font-family\": {\n        \"name\": \"displayType.subheadTertiary.fontFamily\",\n        \"derived\": \"--now-display-type--title-tertiary--font-family\"\n    },\n    \"--now-display-type--subhead-tertiary--font-style\": {\n        \"name\": \"displayType.subheadTertiary.fontStyle\",\n        \"derived\": \"--now-display-type--title-tertiary--font-style\"\n    },\n    \"--now-display-type--subhead-tertiary--font-weight\": {\n        \"name\": \"displayType.subheadTertiary.fontWeight\",\n        \"derived\": \"--now-display-type--title-tertiary--font-weight\"\n    },\n    \"--now-display-type--subhead-tertiary--text-transform\": {\n        \"name\": \"displayType.subheadTertiary.textTransform\",\n        \"derived\": \"--now-display-type--title-tertiary--text-transform\"\n    },\n    \"--now-form-control_focus-halo--primary--border-width\": {\n        \"name\": \"formControl.focusHalo.primary.borderWidth\",\n        \"initial\": \"6px\"\n    },\n    \"--now-form-control_focus-halo--primary--color\": {\n        \"name\": \"formControl.focusHalo.primary.color\",\n        \"derived\": \"--now-color--focus-2\"\n    },\n    \"--now-form-control_focus-halo--primary--color--invalid\": {\n        \"name\": \"formControl.focusHalo.primary.color.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control_focus-halo--secondary--border-width\": {\n        \"name\": \"formControl.focusHalo.secondary.borderWidth\",\n        \"initial\": \"4px\"\n    },\n    \"--now-form-control_focus-halo--secondary--color\": {\n        \"name\": \"formControl.focusHalo.secondary.color\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-form-control_focus-halo--secondary--color--invalid\": {\n        \"name\": \"formControl.focusHalo.secondary.color.invalid\",\n        \"derived\": \"--now-form-control_focus-halo--secondary--color\"\n    },\n    \"--now-form-control_focus-ring--primary--border-width\": {\n        \"name\": \"formControl.focusRing.primary.borderWidth\",\n        \"initial\": \"2px\"\n    },\n    \"--now-form-control_focus-ring--primary--color\": {\n        \"name\": \"formControl.focusRing.primary.color\",\n        \"derived\": \"--now-color--focus-2\"\n    },\n    \"--now-form-control_focus-ring--primary--color--invalid\": {\n        \"name\": \"formControl.focusRing.primary.color.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control_focus-ring--secondary--border-width\": {\n        \"name\": \"formControl.focusRing.secondary.borderWidth\",\n        \"initial\": \"1px\"\n    },\n    \"--now-form-control_focus-ring--secondary--color\": {\n        \"name\": \"formControl.focusRing.secondary.color\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-form-control_focus-ring--secondary--color--invalid\": {\n        \"name\": \"formControl.focusRing.secondary.color.invalid\",\n        \"derived\": \"--now-form-control_focus-ring--secondary--color\"\n    },\n    \"--now-form-control_handle--background-color\": {\n        \"name\": \"formControl.handle.backgroundColor\",\n        \"derived\": \"--now-color--neutral-0\"\n    },\n    \"--now-form-control_handle--background-color--hover\": {\n        \"name\": \"formControl.handle.backgroundColor.hover\",\n        \"derived\": \"--now-color--neutral-3\"\n    },\n    \"--now-form-control_handle--background-color--selected\": {\n        \"name\": \"formControl.handle.backgroundColor.selected\",\n        \"derived\": \"--now-form-control_handle--background-color\"\n    },\n    \"--now-form-control_handle--background-color--selected_hover\": {\n        \"name\": \"formControl.handle.backgroundColor.selected.hover\",\n        \"derived\": \"--now-form-control_handle--background-color--hover\"\n    },\n    \"--now-form-control_handle--border-color\": {\n        \"name\": \"formControl.handle.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-form-control_handle--border-color--hover\": {\n        \"name\": \"formControl.handle.borderColor.hover\",\n        \"derived\": \"--now-form-control_handle--border-color\"\n    },\n    \"--now-form-control_handle--border-color--selected\": {\n        \"name\": \"formControl.handle.borderColor.selected\",\n        \"derived\": \"--now-form-control_handle--border-color\"\n    },\n    \"--now-form-control_handle--border-color--selected_hover\": {\n        \"name\": \"formControl.handle.borderColor.selected.hover\",\n        \"derived\": \"--now-form-control_handle--border-color\"\n    },\n    \"--now-form-control_label_icon--color--invalid\": {\n        \"name\": \"formControl.label.icon.color.invalid\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-form-control_label_icon--color--valid\": {\n        \"name\": \"formControl.label.icon.color.valid\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-form-control_label_icon--critical--color\": {\n        \"name\": \"formControl.label.icon.critical.color\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control_label_icon--primary--color\": {\n        \"name\": \"formControl.label.icon.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_label_icon--secondary--color\": {\n        \"name\": \"formControl.label.icon.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-form-control_label_icon--tertiary--color\": {\n        \"name\": \"formControl.label.icon.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control_label_icon--warning--color\": {\n        \"name\": \"formControl.label.icon.warning.color\",\n        \"derived\": \"--now-color_alert--high-3\"\n    },\n    \"--now-form-control_label--color--invalid\": {\n        \"name\": \"formControl.label.color.invalid\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-form-control_label--color--valid\": {\n        \"name\": \"formControl.label.color.valid\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-form-control_label--critical--color\": {\n        \"name\": \"formControl.label.critical.color\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control_label--critical--font-family\": {\n        \"name\": \"formControl.label.critical.fontFamily\",\n        \"derived\": \"--now-form-control_label--font-family\"\n    },\n    \"--now-form-control_label--critical--font-style\": {\n        \"name\": \"formControl.label.critical.fontStyle\",\n        \"derived\": \"--now-form-control_label--font-style\"\n    },\n    \"--now-form-control_label--critical--font-weight\": {\n        \"name\": \"formControl.label.critical.fontWeight\",\n        \"derived\": \"--now-form-control_label--font-weight\"\n    },\n    \"--now-form-control_label--critical--text-transform\": {\n        \"name\": \"formControl.label.critical.textTransform\",\n        \"derived\": \"--now-form-control_label--text-transform\"\n    },\n    \"--now-form-control_label--font-family\": {\n        \"name\": \"formControl.label.fontFamily\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control_label--font-family--invalid\": {\n        \"name\": \"formControl.label.fontFamily.invalid\",\n        \"derived\": \"--now-form-control_label--font-family\"\n    },\n    \"--now-form-control_label--font-family--valid\": {\n        \"name\": \"formControl.label.fontFamily.valid\",\n        \"derived\": \"--now-form-control_label--font-family\"\n    },\n    \"--now-form-control_label--font-style\": {\n        \"name\": \"formControl.label.fontStyle\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control_label--font-style--invalid\": {\n        \"name\": \"formControl.label.fontStyle.invalid\",\n        \"derived\": \"--now-form-control_label--font-style\"\n    },\n    \"--now-form-control_label--font-style--valid\": {\n        \"name\": \"formControl.label.fontStyle.valid\",\n        \"derived\": \"--now-form-control_label--font-style\"\n    },\n    \"--now-form-control_label--font-weight\": {\n        \"name\": \"formControl.label.fontWeight\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control_label--font-weight--invalid\": {\n        \"name\": \"formControl.label.fontWeight.invalid\",\n        \"derived\": \"--now-form-control_label--font-weight\"\n    },\n    \"--now-form-control_label--font-weight--valid\": {\n        \"name\": \"formControl.label.fontWeight.valid\",\n        \"derived\": \"--now-form-control_label--font-weight\"\n    },\n    \"--now-form-control_label--primary--color\": {\n        \"name\": \"formControl.label.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_label--primary--font-family\": {\n        \"name\": \"formControl.label.primary.fontFamily\",\n        \"derived\": \"--now-form-control_label--font-family\"\n    },\n    \"--now-form-control_label--primary--font-style\": {\n        \"name\": \"formControl.label.primary.fontStyle\",\n        \"derived\": \"--now-form-control_label--font-style\"\n    },\n    \"--now-form-control_label--primary--font-weight\": {\n        \"name\": \"formControl.label.primary.fontWeight\",\n        \"derived\": \"--now-form-control_label--font-weight\"\n    },\n    \"--now-form-control_label--primary--text-transform\": {\n        \"name\": \"formControl.label.primary.textTransform\",\n        \"derived\": \"--now-form-control_label--text-transform\"\n    },\n    \"--now-form-control_label--secondary--color\": {\n        \"name\": \"formControl.label.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-form-control_label--secondary--font-family\": {\n        \"name\": \"formControl.label.secondary.fontFamily\",\n        \"derived\": \"--now-form-control_label--font-family\"\n    },\n    \"--now-form-control_label--secondary--font-style\": {\n        \"name\": \"formControl.label.secondary.fontStyle\",\n        \"derived\": \"--now-form-control_label--font-style\"\n    },\n    \"--now-form-control_label--secondary--font-weight\": {\n        \"name\": \"formControl.label.secondary.fontWeight\",\n        \"derived\": \"--now-form-control_label--font-weight\"\n    },\n    \"--now-form-control_label--secondary--text-transform\": {\n        \"name\": \"formControl.label.secondary.textTransform\",\n        \"derived\": \"--now-form-control_label--text-transform\"\n    },\n    \"--now-form-control_label--tertiary--color\": {\n        \"name\": \"formControl.label.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control_label--tertiary--font-family\": {\n        \"name\": \"formControl.label.tertiary.fontFamily\",\n        \"derived\": \"--now-form-control_label--font-family\"\n    },\n    \"--now-form-control_label--tertiary--font-style\": {\n        \"name\": \"formControl.label.tertiary.fontStyle\",\n        \"derived\": \"--now-form-control_label--font-style\"\n    },\n    \"--now-form-control_label--tertiary--font-weight\": {\n        \"name\": \"formControl.label.tertiary.fontWeight\",\n        \"derived\": \"--now-form-control_label--font-weight\"\n    },\n    \"--now-form-control_label--tertiary--text-transform\": {\n        \"name\": \"formControl.label.tertiary.textTransform\",\n        \"derived\": \"--now-form-control_label--text-transform\"\n    },\n    \"--now-form-control_label--text-transform\": {\n        \"name\": \"formControl.label.textTransform\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-form-control_label--text-transform--invalid\": {\n        \"name\": \"formControl.label.textTransform.invalid\",\n        \"derived\": \"--now-form-control_label--text-transform\"\n    },\n    \"--now-form-control_label--text-transform--valid\": {\n        \"name\": \"formControl.label.textTransform.valid\",\n        \"derived\": \"--now-form-control_label--text-transform\"\n    },\n    \"--now-form-control_label--warning--color\": {\n        \"name\": \"formControl.label.warning.color\",\n        \"derived\": \"--now-color_alert--high-3\"\n    },\n    \"--now-form-control_label--warning--font-family\": {\n        \"name\": \"formControl.label.warning.fontFamily\",\n        \"derived\": \"--now-form-control_label--font-family\"\n    },\n    \"--now-form-control_label--warning--font-style\": {\n        \"name\": \"formControl.label.warning.fontStyle\",\n        \"derived\": \"--now-form-control_label--font-style\"\n    },\n    \"--now-form-control_label--warning--font-weight\": {\n        \"name\": \"formControl.label.warning.fontWeight\",\n        \"derived\": \"--now-form-control_label--font-weight\"\n    },\n    \"--now-form-control_label--warning--text-transform\": {\n        \"name\": \"formControl.label.warning.textTransform\",\n        \"derived\": \"--now-form-control_label--text-transform\"\n    },\n    \"--now-form-control_message_icon--critical--color\": {\n        \"name\": \"formControl.message.icon.critical.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_message_icon--info--color\": {\n        \"name\": \"formControl.message.icon.info.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_message_icon--positive--color\": {\n        \"name\": \"formControl.message.icon.positive.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_message_icon--suggestion--color\": {\n        \"name\": \"formControl.message.icon.suggestion.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control_message_icon--warning--color\": {\n        \"name\": \"formControl.message.icon.warning.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_message--border-radius\": {\n        \"name\": \"formControl.message.borderRadius\",\n        \"initial\": \"2px\"\n    },\n    \"--now-form-control_message--border-width\": {\n        \"name\": \"formControl.message.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-form-control_message--critical--background-color\": {\n        \"name\": \"formControl.message.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control_message--critical--border-color\": {\n        \"name\": \"formControl.message.critical.borderColor\",\n        \"derived\": \"--now-color_alert--critical-1\"\n    },\n    \"--now-form-control_message--critical--color\": {\n        \"name\": \"formControl.message.critical.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_message--font-family\": {\n        \"name\": \"formControl.message.fontFamily\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control_message--font-style\": {\n        \"name\": \"formControl.message.fontStyle\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control_message--font-weight\": {\n        \"name\": \"formControl.message.fontWeight\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control_message--info--background-color\": {\n        \"name\": \"formControl.message.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-0\"\n    },\n    \"--now-form-control_message--info--border-color\": {\n        \"name\": \"formControl.message.info.borderColor\",\n        \"derived\": \"--now-color_alert--info-1\"\n    },\n    \"--now-form-control_message--info--color\": {\n        \"name\": \"formControl.message.info.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_message--positive--background-color\": {\n        \"name\": \"formControl.message.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-0\"\n    },\n    \"--now-form-control_message--positive--border-color\": {\n        \"name\": \"formControl.message.positive.borderColor\",\n        \"derived\": \"--now-color_alert--positive-1\"\n    },\n    \"--now-form-control_message--positive--color\": {\n        \"name\": \"formControl.message.positive.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_message--primary--background-color-alpha\": {\n        \"name\": \"formControl.message.primary.backgroundColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-form-control_message--secondary--background-color-alpha\": {\n        \"name\": \"formControl.message.secondary.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-form-control_message--suggestion--background-color\": {\n        \"name\": \"formControl.message.suggestion.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-form-control_message--suggestion--border-color\": {\n        \"name\": \"formControl.message.suggestion.borderColor\",\n        \"derived\": \"--now-color_border--tertiary\"\n    },\n    \"--now-form-control_message--suggestion--color\": {\n        \"name\": \"formControl.message.suggestion.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control_message--text-transform\": {\n        \"name\": \"formControl.message.textTransform\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-form-control_message--warning--background-color\": {\n        \"name\": \"formControl.message.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-0\"\n    },\n    \"--now-form-control_message--warning--border-color\": {\n        \"name\": \"formControl.message.warning.borderColor\",\n        \"derived\": \"--now-color_alert--warning-1\"\n    },\n    \"--now-form-control_message--warning--color\": {\n        \"name\": \"formControl.message.warning.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_track--background-color\": {\n        \"name\": \"formControl.track.backgroundColor\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-form-control_track--background-color--hover\": {\n        \"name\": \"formControl.track.backgroundColor.hover\",\n        \"derived\": \"--now-form-control_track--background-color\"\n    },\n    \"--now-form-control_track--background-color--selected\": {\n        \"name\": \"formControl.track.backgroundColor.selected\",\n        \"derived\": \"--now-color--interactive-2\"\n    },\n    \"--now-form-control_track--background-color--selected_hover\": {\n        \"name\": \"formControl.track.backgroundColor.selected.hover\",\n        \"derived\": \"--now-form-control_track--background-color--selected\"\n    },\n    \"--now-form-control_track--border-color\": {\n        \"name\": \"formControl.track.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-form-control_track--border-color--hover\": {\n        \"name\": \"formControl.track.borderColor.hover\",\n        \"derived\": \"--now-form-control_track--border-color\"\n    },\n    \"--now-form-control_track--border-color--selected\": {\n        \"name\": \"formControl.track.borderColor.selected\",\n        \"derived\": \"--now-color--interactive-4\"\n    },\n    \"--now-form-control_track--border-color--selected_hover\": {\n        \"name\": \"formControl.track.borderColor.selected.hover\",\n        \"derived\": \"--now-form-control_track--border-color--selected\"\n    },\n    \"--now-form-control_value_icon--color--invalid\": {\n        \"name\": \"formControl.value.icon.color.invalid\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_value_icon--color--invalid_focus\": {\n        \"name\": \"formControl.value.icon.color.invalid.focus\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-form-control_value_icon--color--invalid_hover\": {\n        \"name\": \"formControl.value.icon.color.invalid.hover\",\n        \"derived\": \"--now-form-control_value_icon--color--invalid\"\n    },\n    \"--now-form-control_value_icon--color--readonly\": {\n        \"name\": \"formControl.value.icon.color.readonly\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_value_icon--placeholder_strong--color\": {\n        \"name\": \"formControl.value.icon.placeholder.strong.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_value_icon--placeholder_strong--color--focus\": {\n        \"name\": \"formControl.value.icon.placeholder.strong.color.focus\",\n        \"derived\": \"--now-form-control_value_icon--placeholder_strong--color\"\n    },\n    \"--now-form-control_value_icon--placeholder_strong--color--hover\": {\n        \"name\": \"formControl.value.icon.placeholder.strong.color.hover\",\n        \"derived\": \"--now-form-control_value_icon--placeholder_strong--color\"\n    },\n    \"--now-form-control_value_icon--placeholder--color\": {\n        \"name\": \"formControl.value.icon.placeholder.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control_value_icon--placeholder--color--focus\": {\n        \"name\": \"formControl.value.icon.placeholder.color.focus\",\n        \"derived\": \"--now-form-control_value_icon--placeholder--color\"\n    },\n    \"--now-form-control_value_icon--placeholder--color--hover\": {\n        \"name\": \"formControl.value.icon.placeholder.color.hover\",\n        \"derived\": \"--now-form-control_value_icon--placeholder--color\"\n    },\n    \"--now-form-control_value_icon--primary--color\": {\n        \"name\": \"formControl.value.icon.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_value_icon--primary--color--focus\": {\n        \"name\": \"formControl.value.icon.primary.color.focus\",\n        \"derived\": \"--now-form-control_value_icon--primary--color\"\n    },\n    \"--now-form-control_value_icon--primary--color--hover\": {\n        \"name\": \"formControl.value.icon.primary.color.hover\",\n        \"derived\": \"--now-form-control_value_icon--primary--color\"\n    },\n    \"--now-form-control_value_icon--secondary--color\": {\n        \"name\": \"formControl.value.icon.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-form-control_value_icon--secondary--color--focus\": {\n        \"name\": \"formControl.value.icon.secondary.color.focus\",\n        \"derived\": \"--now-form-control_value_icon--secondary--color\"\n    },\n    \"--now-form-control_value_icon--secondary--color--hover\": {\n        \"name\": \"formControl.value.icon.secondary.color.hover\",\n        \"derived\": \"--now-form-control_value_icon--secondary--color\"\n    },\n    \"--now-form-control_value_icon--tertiary--color\": {\n        \"name\": \"formControl.value.icon.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control_value_icon--tertiary--color--focus\": {\n        \"name\": \"formControl.value.icon.tertiary.color.focus\",\n        \"derived\": \"--now-form-control_value_icon--tertiary--color\"\n    },\n    \"--now-form-control_value_icon--tertiary--color--hover\": {\n        \"name\": \"formControl.value.icon.tertiary.color.hover\",\n        \"derived\": \"--now-form-control_value_icon--tertiary--color\"\n    },\n    \"--now-form-control_value--color--invalid\": {\n        \"name\": \"formControl.value.color.invalid\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_value--color--invalid_focus\": {\n        \"name\": \"formControl.value.color.invalid.focus\",\n        \"derived\": \"--now-form-control_value--color--invalid\"\n    },\n    \"--now-form-control_value--color--invalid_hover\": {\n        \"name\": \"formControl.value.color.invalid.hover\",\n        \"derived\": \"--now-form-control_value--color--invalid\"\n    },\n    \"--now-form-control_value--color--readonly\": {\n        \"name\": \"formControl.value.color.readonly\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_value--font-family--invalid\": {\n        \"name\": \"formControl.value.fontFamily.invalid\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control_value--font-family--readonly\": {\n        \"name\": \"formControl.value.fontFamily.readonly\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control_value--font-style--invalid\": {\n        \"name\": \"formControl.value.fontStyle.invalid\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control_value--font-style--readonly\": {\n        \"name\": \"formControl.value.fontStyle.readonly\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control_value--font-weight--invalid\": {\n        \"name\": \"formControl.value.fontWeight.invalid\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control_value--font-weight--readonly\": {\n        \"name\": \"formControl.value.fontWeight.readonly\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control_value--placeholder_strong--color\": {\n        \"name\": \"formControl.value.placeholder.strong.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_value--placeholder_strong--color--focus\": {\n        \"name\": \"formControl.value.placeholder.strong.color.focus\",\n        \"derived\": \"--now-form-control_value--placeholder_strong--color\"\n    },\n    \"--now-form-control_value--placeholder_strong--color--hover\": {\n        \"name\": \"formControl.value.placeholder.strong.color.hover\",\n        \"derived\": \"--now-form-control_value--placeholder_strong--color\"\n    },\n    \"--now-form-control_value--placeholder--color\": {\n        \"name\": \"formControl.value.placeholder.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control_value--placeholder--color--focus\": {\n        \"name\": \"formControl.value.placeholder.color.focus\",\n        \"derived\": \"--now-form-control_value--placeholder--color\"\n    },\n    \"--now-form-control_value--placeholder--color--hover\": {\n        \"name\": \"formControl.value.placeholder.color.hover\",\n        \"derived\": \"--now-form-control_value--placeholder--color\"\n    },\n    \"--now-form-control_value--placeholder--font-family\": {\n        \"name\": \"formControl.value.placeholder.fontFamily\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control_value--placeholder--font-style\": {\n        \"name\": \"formControl.value.placeholder.fontStyle\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control_value--placeholder--font-weight\": {\n        \"name\": \"formControl.value.placeholder.fontWeight\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control_value--placeholder--text-transform\": {\n        \"name\": \"formControl.value.placeholder.textTransform\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-form-control_value--primary--color\": {\n        \"name\": \"formControl.value.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control_value--primary--color--focus\": {\n        \"name\": \"formControl.value.primary.color.focus\",\n        \"derived\": \"--now-form-control_value--primary--color\"\n    },\n    \"--now-form-control_value--primary--color--hover\": {\n        \"name\": \"formControl.value.primary.color.hover\",\n        \"derived\": \"--now-form-control_value--primary--color\"\n    },\n    \"--now-form-control_value--primary--font-family\": {\n        \"name\": \"formControl.value.primary.fontFamily\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control_value--primary--font-style\": {\n        \"name\": \"formControl.value.primary.fontStyle\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control_value--primary--font-weight\": {\n        \"name\": \"formControl.value.primary.fontWeight\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control_value--primary--text-transform\": {\n        \"name\": \"formControl.value.primary.textTransform\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-form-control_value--secondary--color\": {\n        \"name\": \"formControl.value.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-form-control_value--secondary--color--focus\": {\n        \"name\": \"formControl.value.secondary.color.focus\",\n        \"derived\": \"--now-form-control_value--secondary--color\"\n    },\n    \"--now-form-control_value--secondary--color--hover\": {\n        \"name\": \"formControl.value.secondary.color.hover\",\n        \"derived\": \"--now-form-control_value--secondary--color\"\n    },\n    \"--now-form-control_value--secondary--font-family\": {\n        \"name\": \"formControl.value.secondary.fontFamily\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control_value--secondary--font-style\": {\n        \"name\": \"formControl.value.secondary.fontStyle\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control_value--secondary--font-weight\": {\n        \"name\": \"formControl.value.secondary.fontWeight\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control_value--secondary--text-transform\": {\n        \"name\": \"formControl.value.secondary.textTransform\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-form-control_value--selection--background-color\": {\n        \"name\": \"formControl.value.selection.backgroundColor\",\n        \"derived\": \"--now-color--focus-1\"\n    },\n    \"--now-form-control_value--selection--color\": {\n        \"name\": \"formControl.value.selection.color\",\n        \"derived\": \"--now-form-control_value--primary--color\"\n    },\n    \"--now-form-control_value--tertiary--color\": {\n        \"name\": \"formControl.value.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control_value--tertiary--color--focus\": {\n        \"name\": \"formControl.value.tertiary.color.focus\",\n        \"derived\": \"--now-form-control_value--tertiary--color\"\n    },\n    \"--now-form-control_value--tertiary--color--hover\": {\n        \"name\": \"formControl.value.tertiary.color.hover\",\n        \"derived\": \"--now-form-control_value--tertiary--color\"\n    },\n    \"--now-form-control_value--tertiary--font-family\": {\n        \"name\": \"formControl.value.tertiary.fontFamily\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control_value--tertiary--font-style\": {\n        \"name\": \"formControl.value.tertiary.fontStyle\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control_value--tertiary--font-weight\": {\n        \"name\": \"formControl.value.tertiary.fontWeight\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control_value--tertiary--text-transform\": {\n        \"name\": \"formControl.value.tertiary.textTransform\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-form-control_value--text-transform--invalid\": {\n        \"name\": \"formControl.value.textTransform.invalid\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-form-control_value--text-transform--readonly\": {\n        \"name\": \"formControl.value.textTransform.readonly\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-form-control--opacity--disabled\": {\n        \"name\": \"formControl.opacity.disabled\",\n        \"initial\": \"0.25\"\n    },\n    \"--now-form-control-input_inner-shadow--color-alpha\": {\n        \"name\": \"formControlInput.innerShadow.colorAlpha\",\n        \"initial\": \"0.1\"\n    },\n    \"--now-form-control-input_inner-shadow--info--color\": {\n        \"name\": \"formControlInput.innerShadow.info.color\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-form-control-input_inner-shadow--info--color--focus\": {\n        \"name\": \"formControlInput.innerShadow.info.color.focus\",\n        \"derived\": \"--now-form-control-input_inner-shadow--info--color\"\n    },\n    \"--now-form-control-input_inner-shadow--info--color--hover\": {\n        \"name\": \"formControlInput.innerShadow.info.color.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-form-control-input_inner-shadow--info--color--invalid\": {\n        \"name\": \"formControlInput.innerShadow.info.color.invalid\",\n        \"derived\": \"--now-form-control-input_inner-shadow--info--color\"\n    },\n    \"--now-form-control-input_inner-shadow--info--color--invalid_focus\": {\n        \"name\": \"formControlInput.innerShadow.info.color.invalid.focus\",\n        \"derived\": \"--now-form-control-input_inner-shadow--info--color--invalid\"\n    },\n    \"--now-form-control-input_inner-shadow--info--color--invalid_hover\": {\n        \"name\": \"formControlInput.innerShadow.info.color.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-form-control-input_inner-shadow--positive--color\": {\n        \"name\": \"formControlInput.innerShadow.positive.color\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-form-control-input_inner-shadow--positive--color--focus\": {\n        \"name\": \"formControlInput.innerShadow.positive.color.focus\",\n        \"derived\": \"--now-form-control-input_inner-shadow--positive--color\"\n    },\n    \"--now-form-control-input_inner-shadow--positive--color--hover\": {\n        \"name\": \"formControlInput.innerShadow.positive.color.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-form-control-input_inner-shadow--positive--color--invalid\": {\n        \"name\": \"formControlInput.innerShadow.positive.color.invalid\",\n        \"derived\": \"--now-form-control-input_inner-shadow--positive--color\"\n    },\n    \"--now-form-control-input_inner-shadow--positive--color--invalid_focus\": {\n        \"name\": \"formControlInput.innerShadow.positive.color.invalid.focus\",\n        \"derived\": \"--now-form-control-input_inner-shadow--positive--color--invalid\"\n    },\n    \"--now-form-control-input_inner-shadow--positive--color--invalid_hover\": {\n        \"name\": \"formControlInput.innerShadow.positive.color.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-form-control-input_inner-shadow--primary--color\": {\n        \"name\": \"formControlInput.innerShadow.primary.color\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-form-control-input_inner-shadow--primary--color--focus\": {\n        \"name\": \"formControlInput.innerShadow.primary.color.focus\",\n        \"derived\": \"--now-form-control-input_inner-shadow--primary--color\"\n    },\n    \"--now-form-control-input_inner-shadow--primary--color--hover\": {\n        \"name\": \"formControlInput.innerShadow.primary.color.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-form-control-input_inner-shadow--primary--color--invalid\": {\n        \"name\": \"formControlInput.innerShadow.primary.color.invalid\",\n        \"derived\": \"--now-form-control-input_inner-shadow--primary--color\"\n    },\n    \"--now-form-control-input_inner-shadow--primary--color--invalid_focus\": {\n        \"name\": \"formControlInput.innerShadow.primary.color.invalid.focus\",\n        \"derived\": \"--now-form-control-input_inner-shadow--primary--color--invalid\"\n    },\n    \"--now-form-control-input_inner-shadow--primary--color--invalid_hover\": {\n        \"name\": \"formControlInput.innerShadow.primary.color.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-form-control-input_inner-shadow--primary--color--opened\": {\n        \"name\": \"formControlInput.innerShadow.primary.color.opened\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-form-control-input_inner-shadow--warning--color\": {\n        \"name\": \"formControlInput.innerShadow.warning.color\",\n        \"derived\": \"--now-color--neutral-18\"\n    },\n    \"--now-form-control-input_inner-shadow--warning--color--focus\": {\n        \"name\": \"formControlInput.innerShadow.warning.color.focus\",\n        \"derived\": \"--now-form-control-input_inner-shadow--warning--color\"\n    },\n    \"--now-form-control-input_inner-shadow--warning--color--hover\": {\n        \"name\": \"formControlInput.innerShadow.warning.color.hover\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-form-control-input_inner-shadow--warning--color--invalid\": {\n        \"name\": \"formControlInput.innerShadow.warning.color.invalid\",\n        \"derived\": \"--now-form-control-input_inner-shadow--warning--color\"\n    },\n    \"--now-form-control-input_inner-shadow--warning--color--invalid_focus\": {\n        \"name\": \"formControlInput.innerShadow.warning.color.invalid.focus\",\n        \"derived\": \"--now-form-control-input_inner-shadow--warning--color--invalid\"\n    },\n    \"--now-form-control-input_inner-shadow--warning--color--invalid_hover\": {\n        \"name\": \"formControlInput.innerShadow.warning.color.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-form-control-input_trigger--primary--color\": {\n        \"name\": \"formControlInput.trigger.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control-input_trigger--primary--color--focus\": {\n        \"name\": \"formControlInput.trigger.primary.color.focus\",\n        \"derived\": \"--now-form-control-input_trigger--primary--color\"\n    },\n    \"--now-form-control-input_trigger--primary--color--hover\": {\n        \"name\": \"formControlInput.trigger.primary.color.hover\",\n        \"derived\": \"--now-form-control-input_trigger--primary--color\"\n    },\n    \"--now-form-control-input_trigger--primary--color--invalid\": {\n        \"name\": \"formControlInput.trigger.primary.color.invalid\",\n        \"derived\": \"--now-form-control-input_trigger--primary--color\"\n    },\n    \"--now-form-control-input_trigger--primary--color--invalid_focus\": {\n        \"name\": \"formControlInput.trigger.primary.color.invalid.focus\",\n        \"derived\": \"--now-form-control-input_trigger--primary--color--invalid\"\n    },\n    \"--now-form-control-input_trigger--primary--color--invalid_hover\": {\n        \"name\": \"formControlInput.trigger.primary.color.invalid.hover\",\n        \"derived\": \"--now-form-control-input_trigger--primary--color--invalid\"\n    },\n    \"--now-form-control-input_trigger--primary--color--opened\": {\n        \"name\": \"formControlInput.trigger.primary.color.opened\",\n        \"derived\": \"--now-form-control-input_trigger--primary--color\"\n    },\n    \"--now-form-control-input_trigger--primary--color--readonly\": {\n        \"name\": \"formControlInput.trigger.primary.color.readonly\",\n        \"derived\": \"--now-form-control-input_trigger--primary--color\"\n    },\n    \"--now-form-control-input--background-color-alpha\": {\n        \"name\": \"formControlInput.backgroundColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-form-control-input--info--background-color\": {\n        \"name\": \"formControlInput.info.backgroundColor\",\n        \"derived\": \"--now-color_grouped--blue-0\"\n    },\n    \"--now-form-control-input--info--background-color--focus\": {\n        \"name\": \"formControlInput.info.backgroundColor.focus\",\n        \"derived\": \"--now-form-control-input--info--background-color\"\n    },\n    \"--now-form-control-input--info--background-color--hover\": {\n        \"name\": \"formControlInput.info.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input--info--background-color--invalid\": {\n        \"name\": \"formControlInput.info.backgroundColor.invalid\",\n        \"derived\": \"--now-form-control-input--info--background-color\"\n    },\n    \"--now-form-control-input--info--background-color--invalid_focus\": {\n        \"name\": \"formControlInput.info.backgroundColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input--info--background-color--invalid\"\n    },\n    \"--now-form-control-input--info--background-color--invalid_hover\": {\n        \"name\": \"formControlInput.info.backgroundColor.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control-input--info--border-color\": {\n        \"name\": \"formControlInput.info.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-form-control-input--info--border-color--focus\": {\n        \"name\": \"formControlInput.info.borderColor.focus\",\n        \"derived\": \"--now-color--focus-2\"\n    },\n    \"--now-form-control-input--info--border-color--hover\": {\n        \"name\": \"formControlInput.info.borderColor.hover\",\n        \"derived\": \"--now-form-control-input--info--border-color\"\n    },\n    \"--now-form-control-input--info--border-color--invalid\": {\n        \"name\": \"formControlInput.info.borderColor.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input--info--border-color--invalid_focus\": {\n        \"name\": \"formControlInput.info.borderColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input--info--border-color--invalid\"\n    },\n    \"--now-form-control-input--info--border-color--invalid_hover\": {\n        \"name\": \"formControlInput.info.borderColor.invalid.hover\",\n        \"derived\": \"--now-form-control-input--info--border-color--invalid\"\n    },\n    \"--now-form-control-input--opacity--disabled\": {\n        \"name\": \"formControlInput.opacity.disabled\",\n        \"derived\": \"--now-form-control--opacity--disabled\"\n    },\n    \"--now-form-control-input--positive--background-color\": {\n        \"name\": \"formControlInput.positive.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-1\"\n    },\n    \"--now-form-control-input--positive--background-color--focus\": {\n        \"name\": \"formControlInput.positive.backgroundColor.focus\",\n        \"derived\": \"--now-form-control-input--positive--background-color\"\n    },\n    \"--now-form-control-input--positive--background-color--hover\": {\n        \"name\": \"formControlInput.positive.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input--positive--background-color--invalid\": {\n        \"name\": \"formControlInput.positive.backgroundColor.invalid\",\n        \"derived\": \"--now-form-control-input--positive--background-color\"\n    },\n    \"--now-form-control-input--positive--background-color--invalid_focus\": {\n        \"name\": \"formControlInput.positive.backgroundColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input--positive--background-color--invalid\"\n    },\n    \"--now-form-control-input--positive--background-color--invalid_hover\": {\n        \"name\": \"formControlInput.positive.backgroundColor.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control-input--positive--border-color\": {\n        \"name\": \"formControlInput.positive.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-form-control-input--positive--border-color--focus\": {\n        \"name\": \"formControlInput.positive.borderColor.focus\",\n        \"derived\": \"--now-color--focus-2\"\n    },\n    \"--now-form-control-input--positive--border-color--hover\": {\n        \"name\": \"formControlInput.positive.borderColor.hover\",\n        \"derived\": \"--now-form-control-input--positive--border-color\"\n    },\n    \"--now-form-control-input--positive--border-color--invalid\": {\n        \"name\": \"formControlInput.positive.borderColor.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input--positive--border-color--invalid_focus\": {\n        \"name\": \"formControlInput.positive.borderColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input--positive--border-color--focus\"\n    },\n    \"--now-form-control-input--positive--border-color--invalid_hover\": {\n        \"name\": \"formControlInput.positive.borderColor.invalid.hover\",\n        \"derived\": \"--now-form-control-input--positive--border-color--invalid\"\n    },\n    \"--now-form-control-input--primary--background-color\": {\n        \"name\": \"formControlInput.primary.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-form-control-input--primary--background-color--focus\": {\n        \"name\": \"formControlInput.primary.backgroundColor.focus\",\n        \"derived\": \"--now-form-control-input--primary--background-color\"\n    },\n    \"--now-form-control-input--primary--background-color--hover\": {\n        \"name\": \"formControlInput.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input--primary--background-color--invalid\": {\n        \"name\": \"formControlInput.primary.backgroundColor.invalid\",\n        \"derived\": \"--now-form-control-input--primary--background-color\"\n    },\n    \"--now-form-control-input--primary--background-color--invalid_focus\": {\n        \"name\": \"formControlInput.primary.backgroundColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input--primary--background-color--invalid\"\n    },\n    \"--now-form-control-input--primary--background-color--invalid_hover\": {\n        \"name\": \"formControlInput.primary.backgroundColor.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control-input--primary--background-color--invalid_readonly\": {\n        \"name\": \"formControlInput.primary.backgroundColor.invalid.readonly\",\n        \"derived\": \"--now-form-control-input--primary--background-color--readonly\"\n    },\n    \"--now-form-control-input--primary--background-color--opened\": {\n        \"name\": \"formControlInput.primary.backgroundColor.opened\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input--primary--background-color--readonly\": {\n        \"name\": \"formControlInput.primary.backgroundColor.readonly\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-form-control-input--primary--border-block-end-width\": {\n        \"name\": \"formControlInput.primary.borderWidth\",\n        \"initial\": \"1px\"\n    },\n    \"--now-form-control-input--primary--border-color\": {\n        \"name\": \"formControlInput.primary.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-form-control-input--primary--border-color--focus\": {\n        \"name\": \"formControlInput.primary.borderColor.focus\",\n        \"derived\": \"--now-color--focus-2\"\n    },\n    \"--now-form-control-input--primary--border-color--hover\": {\n        \"name\": \"formControlInput.primary.borderColor.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-input--primary--border-color--invalid\": {\n        \"name\": \"formControlInput.primary.borderColor.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input--primary--border-color--invalid_focus\": {\n        \"name\": \"formControlInput.primary.borderColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input--primary--border-color--invalid\"\n    },\n    \"--now-form-control-input--primary--border-color--invalid_hover\": {\n        \"name\": \"formControlInput.primary.borderColor.invalid.hover\",\n        \"derived\": \"--now-form-control-input--primary--border-color--invalid\"\n    },\n    \"--now-form-control-input--primary--border-color--invalid_readonly\": {\n        \"name\": \"formControlInput.primary.borderColor.invalid.readonly\",\n        \"derived\": \"--now-form-control-input--primary--border-color--invalid\"\n    },\n    \"--now-form-control-input--primary--border-color--opened\": {\n        \"name\": \"formControlInput.primary.borderColor.opened\",\n        \"derived\": \"--now-color--focus-2\"\n    },\n    \"--now-form-control-input--primary--border-color--readonly\": {\n        \"name\": \"formControlInput.primary.borderColor.readonly\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-form-control-input--primary--border-radius\": {\n        \"name\": \"formControlInput.primary.borderRadius\",\n        \"initial\": \"4px\"\n    },\n    \"--now-form-control-input--primary--border-width\": {\n        \"name\": \"formControlInput.primary.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-form-control-input--warning--background-color\": {\n        \"name\": \"formControlInput.warning.backgroundColor\",\n        \"derived\": \"--now-color_grouped--yellow-1\"\n    },\n    \"--now-form-control-input--warning--background-color--focus\": {\n        \"name\": \"formControlInput.warning.backgroundColor.focus\",\n        \"derived\": \"--now-form-control-input--warning--background-color\"\n    },\n    \"--now-form-control-input--warning--background-color--hover\": {\n        \"name\": \"formControlInput.warning.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input--warning--background-color--invalid\": {\n        \"name\": \"formControlInput.warning.backgroundColor.invalid\",\n        \"derived\": \"--now-form-control-input--warning--background-color\"\n    },\n    \"--now-form-control-input--warning--background-color--invalid_focus\": {\n        \"name\": \"formControlInput.warning.backgroundColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input--warning--background-color--invalid\"\n    },\n    \"--now-form-control-input--warning--background-color--invalid_hover\": {\n        \"name\": \"formControlInput.warning.backgroundColor.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control-input--warning--border-color\": {\n        \"name\": \"formControlInput.warning.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-form-control-input--warning--border-color--focus\": {\n        \"name\": \"formControlInput.warning.borderColor.focus\",\n        \"derived\": \"--now-color--focus-2\"\n    },\n    \"--now-form-control-input--warning--border-color--hover\": {\n        \"name\": \"formControlInput.warning.borderColor.hover\",\n        \"derived\": \"--now-form-control-input--warning--border-color\"\n    },\n    \"--now-form-control-input--warning--border-color--invalid\": {\n        \"name\": \"formControlInput.warning.borderColor.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input--warning--border-color--invalid_focus\": {\n        \"name\": \"formControlInput.warning.borderColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input--warning--border-color--invalid\"\n    },\n    \"--now-form-control-input--warning--border-color--invalid_hover\": {\n        \"name\": \"formControlInput.warning.borderColor.invalid.hover\",\n        \"derived\": \"--now-form-control-input--warning--border-color--invalid\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color--active\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color.active\",\n        \"derived\": \"--now-form-control-input-selection_indicator--primary--color\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color--focus\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color.focus\",\n        \"derived\": \"--now-form-control-input-selection_indicator--primary--color\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color--hover\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color.hover\",\n        \"derived\": \"--now-form-control-input-selection_indicator--primary--color\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color--invalid\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color.invalid\",\n        \"derived\": \"--now-form-control-input-selection_indicator--primary--color\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color--invalid_active\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color.invalid.active\",\n        \"derived\": \"--now-form-control-input-selection_indicator--primary--color--invalid\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color--invalid_focus\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection_indicator--primary--color--invalid\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color--invalid_hover\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color.invalid.hover\",\n        \"derived\": \"--now-form-control-input-selection_indicator--primary--color--invalid\"\n    },\n    \"--now-form-control-input-selection_indicator--primary--color--readonly\": {\n        \"name\": \"formControlInputSelection.indicator.primary.color.readonly\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color--active\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color.active\",\n        \"derived\": \"--now-form-control-input-selection_indicator--secondary--color\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color--focus\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color.focus\",\n        \"derived\": \"--now-form-control-input-selection_indicator--secondary--color\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color--hover\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color.hover\",\n        \"derived\": \"--now-form-control-input-selection_indicator--secondary--color\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color--invalid\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color.invalid\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color--invalid_active\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color.invalid.active\",\n        \"derived\": \"--now-form-control-input-selection_indicator--secondary--color--invalid\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color--invalid_focus\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection_indicator--secondary--color--invalid\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color--invalid_hover\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color.invalid.hover\",\n        \"derived\": \"--now-form-control-input-selection_indicator--secondary--color--invalid\"\n    },\n    \"--now-form-control-input-selection_indicator--secondary--color--readonly\": {\n        \"name\": \"formControlInputSelection.indicator.secondary.color.readonly\",\n        \"derived\": \"--now-form-control-input-selection_indicator--secondary--color\"\n    },\n    \"--now-form-control-input-selection--opacity--disabled\": {\n        \"name\": \"formControlInputSelection.opacity.disabled\",\n        \"derived\": \"--now-form-control--opacity--disabled\"\n    },\n    \"--now-form-control-input-selection--primary--background-color\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--active\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--focus\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.focus\",\n        \"derived\": \"--now-form-control-input-selection--primary--background-color\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--hover\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--invalid\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.invalid\",\n        \"derived\": \"--now-form-control-input-selection--primary--background-color\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--invalid_active\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.invalid.active\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--invalid_focus\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection--primary--background-color--invalid\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--invalid_hover\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--readonly\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.readonly\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected_active\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected.active\",\n        \"derived\": \"--now-form-control-input-selection--primary--background-color--selected\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected_focus\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected.focus\",\n        \"derived\": \"--now-form-control-input-selection--primary--background-color--selected\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected_hover\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected_invalid\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected.invalid\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected_invalid_active\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected.invalid.active\",\n        \"derived\": \"--now-form-control-input-selection--primary--background-color--selected_invalid\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected_invalid_focus\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection--primary--background-color--selected_invalid\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected_invalid_hover\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-form-control-input-selection--primary--background-color--selected_readonly\": {\n        \"name\": \"formControlInputSelection.primary.backgroundColor.selected.readonly\",\n        \"derived\": \"--now-form-control-input-selection--primary--background-color--readonly\"\n    },\n    \"--now-form-control-input-selection--primary--border-color\": {\n        \"name\": \"formControlInputSelection.primary.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--active\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--focus\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.focus\",\n        \"derived\": \"--now-color_focus-ring\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--hover\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--invalid\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--invalid_active\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.invalid.active\",\n        \"derived\": \"--now-form-control-input-selection--primary--border-color--invalid\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--invalid_focus\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection--primary--border-color--invalid\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--invalid_hover\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.invalid.hover\",\n        \"derived\": \"--now-form-control-input-selection--primary--border-color--invalid\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--readonly\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.readonly\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected_active\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected.active\",\n        \"derived\": \"--now-form-control-input-selection--primary--border-color--selected\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected_focus\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected.focus\",\n        \"derived\": \"--now-color--focus-2\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected_hover\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected_invalid\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected.invalid\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected_invalid_active\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected.invalid.active\",\n        \"derived\": \"--now-form-control-input-selection--primary--border-color--selected_invalid\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected_invalid_focus\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected.invalid.focus\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected_invalid_hover\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-form-control-input-selection--primary--border-color--selected_readonly\": {\n        \"name\": \"formControlInputSelection.primary.borderColor.selected.readonly\",\n        \"derived\": \"--now-form-control-input-selection--primary--border-color--readonly\"\n    },\n    \"--now-form-control-input-selection--primary--border-radius\": {\n        \"name\": \"formControlInputSelection.primary.borderRadius\",\n        \"initial\": \"2px\"\n    },\n    \"--now-form-control-input-selection--primary--border-width\": {\n        \"name\": \"formControlInputSelection.primary.borderWidth\",\n        \"initial\": \"1px\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--active\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--focus\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.focus\",\n        \"derived\": \"--now-color_background--secondary\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--hover\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--invalid\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.invalid\",\n        \"derived\": \"--now-form-control-input-selection--secondary--background-color\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--invalid_active\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.invalid.active\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--invalid_focus\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection--secondary--background-color--invalid\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--invalid_hover\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--readonly\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.readonly\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected\",\n        \"derived\": \"--now-form-control-input-selection--secondary--background-color\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected_active\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected.active\",\n        \"derived\": \"--now-form-control-input-selection--secondary--background-color--selected\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected_focus\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected.focus\",\n        \"derived\": \"--now-form-control-input-selection--secondary--background-color--focus\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected_hover\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color--secondary-0\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected_invalid\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected.invalid\",\n        \"derived\": \"--now-form-control-input-selection--secondary--background-color--selected\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected_invalid_active\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected.invalid.active\",\n        \"derived\": \"--now-color_alert--critical-1\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected_invalid_focus\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection--secondary--background-color--selected_focus\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected_invalid_hover\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected.invalid.hover\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-form-control-input-selection--secondary--background-color--selected_readonly\": {\n        \"name\": \"formControlInputSelection.secondary.backgroundColor.selected.readonly\",\n        \"derived\": \"--now-color--neutral-3\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--active\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.active\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--focus\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.focus\",\n        \"derived\": \"--now-color_focus-ring\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--hover\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--invalid\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--invalid_active\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.invalid.active\",\n        \"derived\": \"--now-form-control-input-selection--secondary--border-color--invalid\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--invalid_focus\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection--secondary--border-color--invalid\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--invalid_hover\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.invalid.hover\",\n        \"derived\": \"--now-form-control-input-selection--secondary--border-color--invalid\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--readonly\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.readonly\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected\",\n        \"derived\": \"--now-form-control-input-selection--secondary--border-color\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected_active\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected.active\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected_focus\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected.focus\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected_hover\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected_invalid\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected.invalid\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected_invalid_active\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected.invalid.active\",\n        \"derived\": \"--now-form-control-input-selection--secondary--border-color--selected_invalid\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected_invalid_focus\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected.invalid.focus\",\n        \"derived\": \"--now-form-control-input-selection--secondary--border-color--selected_invalid\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected_invalid_hover\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected.invalid.hover\",\n        \"derived\": \"--now-form-control-input-selection--secondary--border-color--selected_invalid\"\n    },\n    \"--now-form-control-input-selection--secondary--border-color--selected_readonly\": {\n        \"name\": \"formControlInputSelection.secondary.borderColor.selected.readonly\",\n        \"derived\": \"--now-form-control-input-selection--secondary--border-color\"\n    },\n    \"--now-form-control-input-selection--secondary--border-radius\": {\n        \"name\": \"formControlInputSelection.secondary.borderRadius\",\n        \"initial\": \"4px\"\n    },\n    \"--now-form-control-input-selection--secondary--border-width\": {\n        \"name\": \"formControlInputSelection.secondary.borderWidth\",\n        \"initial\": \"1px\"\n    },\n    \"--now-form-control-pill_action_icon--color\": {\n        \"name\": \"formControlPill.action.icon.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control-pill_action_icon--color--active\": {\n        \"name\": \"formControlPill.action.icon.color.active\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-pill_action_icon--color--hover\": {\n        \"name\": \"formControlPill.action.icon.color.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-pill_action_icon--color--selected\": {\n        \"name\": \"formControlPill.action.icon.color.selected\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-form-control-pill_action_icon--color--selected_active\": {\n        \"name\": \"formControlPill.action.icon.color.selected.active\",\n        \"derived\": \"--now-form-control-pill_action_icon--color--selected\"\n    },\n    \"--now-form-control-pill_action_icon--color--selected_hover\": {\n        \"name\": \"formControlPill.action.icon.color.selected.hover\",\n        \"derived\": \"--now-form-control-pill_action_icon--color--selected\"\n    },\n    \"--now-form-control-pill_action--border-radius\": {\n        \"name\": \"formControlPill.action.borderRadius\",\n        \"initial\": \"16px\"\n    },\n    \"--now-form-control-pill_action--border-width\": {\n        \"name\": \"formControlPill.action.borderWidth\",\n        \"initial\": \"0\"\n    },\n    \"--now-form-control-pill_identifier_icon--color\": {\n        \"name\": \"formControlPill.identifier.icon.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control-pill_identifier_icon--color--active\": {\n        \"name\": \"formControlPill.identifier.icon.color.active\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-pill_identifier_icon--color--hover\": {\n        \"name\": \"formControlPill.identifier.icon.color.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-pill_identifier_icon--color--selected\": {\n        \"name\": \"formControlPill.identifier.icon.color.selected\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-pill_identifier_icon--color--selected_active\": {\n        \"name\": \"formControlPill.identifier.icon.color.selected.active\",\n        \"derived\": \"--now-form-control-pill_identifier_icon--color--selected\"\n    },\n    \"--now-form-control-pill_identifier_icon--color--selected_hover\": {\n        \"name\": \"formControlPill.identifier.icon.color.selected.hover\",\n        \"derived\": \"--now-form-control-pill_identifier_icon--color--selected\"\n    },\n    \"--now-form-control-pill_identifier--background-color\": {\n        \"name\": \"formControlPill.identifier.backgroundColor\",\n        \"derived\": \"--now-form-control-pill--background-color\"\n    },\n    \"--now-form-control-pill_identifier--background-color--active\": {\n        \"name\": \"formControlPill.identifier.backgroundColor.active\",\n        \"derived\": \"--now-form-control-pill--background-color--active\"\n    },\n    \"--now-form-control-pill_identifier--background-color--hover\": {\n        \"name\": \"formControlPill.identifier.backgroundColor.hover\",\n        \"derived\": \"--now-form-control-pill--background-color--hover\"\n    },\n    \"--now-form-control-pill_identifier--background-color--selected\": {\n        \"name\": \"formControlPill.identifier.backgroundColor.selected\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-pill_identifier--background-color--selected_active\": {\n        \"name\": \"formControlPill.identifier.backgroundColor.selected.active\",\n        \"derived\": \"--now-form-control-pill_identifier--background-color--selected\"\n    },\n    \"--now-form-control-pill_identifier--background-color--selected_hover\": {\n        \"name\": \"formControlPill.identifier.backgroundColor.selected.hover\",\n        \"derived\": \"--now-form-control-pill_identifier--background-color--selected\"\n    },\n    \"--now-form-control-pill_identifier--border-color\": {\n        \"name\": \"formControlPill.identifier.borderColor\",\n        \"derived\": \"--now-color_border--secondary\"\n    },\n    \"--now-form-control-pill_identifier--border-color--active\": {\n        \"name\": \"formControlPill.identifier.borderColor.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-pill_identifier--border-color--hover\": {\n        \"name\": \"formControlPill.identifier.borderColor.hover\",\n        \"derived\": \"--now-form-control-pill_identifier--border-color\"\n    },\n    \"--now-form-control-pill_identifier--border-color--selected\": {\n        \"name\": \"formControlPill.identifier.borderColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-pill_identifier--border-color--selected_active\": {\n        \"name\": \"formControlPill.identifier.borderColor.selected.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-form-control-pill_identifier--border-color--selected_hover\": {\n        \"name\": \"formControlPill.identifier.borderColor.selected.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-pill_label--color\": {\n        \"name\": \"formControlPill.label.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-form-control-pill_label--color--active\": {\n        \"name\": \"formControlPill.label.color.active\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-pill_label--color--hover\": {\n        \"name\": \"formControlPill.label.color.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-pill_label--color--selected\": {\n        \"name\": \"formControlPill.label.color.selected\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-form-control-pill_label--color--selected_active\": {\n        \"name\": \"formControlPill.label.color.selected.active\",\n        \"derived\": \"--now-form-control-pill_label--color--selected\"\n    },\n    \"--now-form-control-pill_label--color--selected_hover\": {\n        \"name\": \"formControlPill.label.color.selected.hover\",\n        \"derived\": \"--now-form-control-pill_label--color--selected\"\n    },\n    \"--now-form-control-pill--background-color\": {\n        \"name\": \"formControlPill.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-form-control-pill--background-color--active\": {\n        \"name\": \"formControlPill.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-form-control-pill--background-color--hover\": {\n        \"name\": \"formControlPill.backgroundColor.hover\",\n        \"derived\": \"--now-color_background--secondary\"\n    },\n    \"--now-form-control-pill--background-color--selected\": {\n        \"name\": \"formControlPill.backgroundColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-pill--background-color--selected_active\": {\n        \"name\": \"formControlPill.backgroundColor.selected.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-form-control-pill--background-color--selected_hover\": {\n        \"name\": \"formControlPill.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-pill--border-color\": {\n        \"name\": \"formControlPill.borderColor\",\n        \"derived\": \"--now-color_border--secondary\"\n    },\n    \"--now-form-control-pill--border-color--active\": {\n        \"name\": \"formControlPill.borderColor.active\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-pill--border-color--hover\": {\n        \"name\": \"formControlPill.borderColor.hover\",\n        \"derived\": \"--now-form-control-pill--border-color\"\n    },\n    \"--now-form-control-pill--border-color--selected\": {\n        \"name\": \"formControlPill.borderColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-form-control-pill--border-color--selected_active\": {\n        \"name\": \"formControlPill.borderColor.selected.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-form-control-pill--border-color--selected_hover\": {\n        \"name\": \"formControlPill.borderColor.selected.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-form-control-pill--border-radius\": {\n        \"name\": \"formControlPill.borderRadius\",\n        \"initial\": \"16px\"\n    },\n    \"--now-form-control-pill--border-width\": {\n        \"name\": \"formControlPill.borderWidth\",\n        \"initial\": \"1px\"\n    },\n    \"--now-form-control-pill--font-family\": {\n        \"name\": \"formControlPill.fontFamily\",\n        \"derived\": \"--now-form-control--font-family\"\n    },\n    \"--now-form-control-pill--font-style\": {\n        \"name\": \"formControlPill.fontStyle\",\n        \"derived\": \"--now-form-control--font-style\"\n    },\n    \"--now-form-control-pill--font-weight\": {\n        \"name\": \"formControlPill.fontWeight\",\n        \"derived\": \"--now-form-control--font-weight\"\n    },\n    \"--now-form-control-pill--opacity--disabled\": {\n        \"name\": \"formControlPill.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-form-control-pill--text-transform\": {\n        \"name\": \"formControlPill.textTransform\",\n        \"derived\": \"--now-form-control--text-transform\"\n    },\n    \"--now-identifier-user_icon--color\": {\n        \"name\": \"identifierUser.icon.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-identifier-user_label--color\": {\n        \"name\": \"identifierUser.label.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-identifier-user--background-color\": {\n        \"name\": \"identifierUser.backgroundColor\",\n        \"derived\": \"--now-color_background--secondary\"\n    },\n    \"--now-identifier-user--border-color\": {\n        \"name\": \"identifierUser.borderColor\",\n        \"derived\": \"--now-color_border--tertiary\"\n    },\n    \"--now-identifier-user--border-radius\": {\n        \"name\": \"identifierUser.borderRadius\",\n        \"initial\": \"50%\"\n    },\n    \"--now-identifier-user--border-width\": {\n        \"name\": \"identifierUser.borderWidth\",\n        \"derived\": \"--now-identifier--border-width\"\n    },\n    \"--now-identifier-user--font-family\": {\n        \"name\": \"identifierUser.fontFamily\",\n        \"derived\": \"--now-identifier--font-family\"\n    },\n    \"--now-identifier-user--font-style\": {\n        \"name\": \"identifierUser.fontStyle\",\n        \"derived\": \"--now-identifier--font-style\"\n    },\n    \"--now-identifier-user--font-weight\": {\n        \"name\": \"identifierUser.fontWeight\",\n        \"derived\": \"--now-identifier--font-weight\"\n    },\n    \"--now-identifier-user--text-transform\": {\n        \"name\": \"identifierUser.textTransform\",\n        \"initial\": \"uppercase\"\n    },\n    \"--now-indicator_icon--primary_blue--color\": {\n        \"name\": \"indicator.icon.primary.blue.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_brown--color\": {\n        \"name\": \"indicator.icon.primary.brown.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_critical--color\": {\n        \"name\": \"indicator.icon.primary.critical.color\",\n        \"derived\": \"--now-indicator_icon--primary--color\"\n    },\n    \"--now-indicator_icon--primary_gray--color\": {\n        \"name\": \"indicator.icon.primary.gray.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_green--color\": {\n        \"name\": \"indicator.icon.primary.green.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_green-yellow--color\": {\n        \"name\": \"indicator.icon.primary.greenYellow.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_high--color\": {\n        \"name\": \"indicator.icon.primary.high.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_info--color\": {\n        \"name\": \"indicator.icon.primary.info.color\",\n        \"derived\": \"--now-indicator_icon--primary--color\"\n    },\n    \"--now-indicator_icon--primary_low--color\": {\n        \"name\": \"indicator.icon.primary.low.color\",\n        \"derived\": \"--now-indicator_icon--primary--color\"\n    },\n    \"--now-indicator_icon--primary_magenta--color\": {\n        \"name\": \"indicator.icon.primary.magenta.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_moderate--color\": {\n        \"name\": \"indicator.icon.primary.moderate.color\",\n        \"derived\": \"--now-indicator_icon--primary--color\"\n    },\n    \"--now-indicator_icon--primary_orange--color\": {\n        \"name\": \"indicator.icon.primary.orange.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_pink--color\": {\n        \"name\": \"indicator.icon.primary.pink.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_positive--color\": {\n        \"name\": \"indicator.icon.primary.positive.color\",\n        \"derived\": \"--now-indicator_icon--primary--color\"\n    },\n    \"--now-indicator_icon--primary_purple--color\": {\n        \"name\": \"indicator.icon.primary.purple.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_teal--color\": {\n        \"name\": \"indicator.icon.primary.teal.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_warning--color\": {\n        \"name\": \"indicator.icon.primary.warning.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary_yellow--color\": {\n        \"name\": \"indicator.icon.primary.yellow.color\",\n        \"derived\": \"--now-indicator_icon--secondary--color\"\n    },\n    \"--now-indicator_icon--primary--color\": {\n        \"name\": \"indicator.icon.primary.color\",\n        \"derived\": \"--now-color--neutral-0\"\n    },\n    \"--now-indicator_icon--secondary_blue--color\": {\n        \"name\": \"indicator.icon.secondary.blue.color\",\n        \"derived\": \"--now-color_grouped--blue-5\"\n    },\n    \"--now-indicator_icon--secondary_brown--color\": {\n        \"name\": \"indicator.icon.secondary.brown.color\",\n        \"derived\": \"--now-color_grouped--brown-5\"\n    },\n    \"--now-indicator_icon--secondary_critical--color\": {\n        \"name\": \"indicator.icon.secondary.critical.color\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-indicator_icon--secondary_gray--color\": {\n        \"name\": \"indicator.icon.secondary.gray.color\",\n        \"derived\": \"--now-color_grouped--gray-5\"\n    },\n    \"--now-indicator_icon--secondary_green--color\": {\n        \"name\": \"indicator.icon.secondary.green.color\",\n        \"derived\": \"--now-color_grouped--green-5\"\n    },\n    \"--now-indicator_icon--secondary_green-yellow--color\": {\n        \"name\": \"indicator.icon.secondary.greenYellow.color\",\n        \"derived\": \"--now-color_grouped--green-yellow-5\"\n    },\n    \"--now-indicator_icon--secondary_high--color\": {\n        \"name\": \"indicator.icon.secondary.high.color\",\n        \"derived\": \"--now-color_alert--high-4\"\n    },\n    \"--now-indicator_icon--secondary_info--color\": {\n        \"name\": \"indicator.icon.secondary.info.color\",\n        \"derived\": \"--now-color_alert--info-4\"\n    },\n    \"--now-indicator_icon--secondary_low--color\": {\n        \"name\": \"indicator.icon.secondary.low.color\",\n        \"derived\": \"--now-color_alert--low-4\"\n    },\n    \"--now-indicator_icon--secondary_magenta--color\": {\n        \"name\": \"indicator.icon.secondary.magenta.color\",\n        \"derived\": \"--now-color_grouped--magenta-5\"\n    },\n    \"--now-indicator_icon--secondary_moderate--color\": {\n        \"name\": \"indicator.icon.secondary.moderate.color\",\n        \"derived\": \"--now-color_alert--moderate-4\"\n    },\n    \"--now-indicator_icon--secondary_orange--color\": {\n        \"name\": \"indicator.icon.secondary.orange.color\",\n        \"derived\": \"--now-color_grouped--orange-5\"\n    },\n    \"--now-indicator_icon--secondary_pink--color\": {\n        \"name\": \"indicator.icon.secondary.pink.color\",\n        \"derived\": \"--now-color_grouped--pink-5\"\n    },\n    \"--now-indicator_icon--secondary_positive--color\": {\n        \"name\": \"indicator.icon.secondary.positive.color\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-indicator_icon--secondary_purple--color\": {\n        \"name\": \"indicator.icon.secondary.purple.color\",\n        \"derived\": \"--now-color_grouped--purple-5\"\n    },\n    \"--now-indicator_icon--secondary_teal--color\": {\n        \"name\": \"indicator.icon.secondary.teal.color\",\n        \"derived\": \"--now-color_grouped--teal-5\"\n    },\n    \"--now-indicator_icon--secondary_warning--color\": {\n        \"name\": \"indicator.icon.secondary.warning.color\",\n        \"derived\": \"--now-color_alert--warning-4\"\n    },\n    \"--now-indicator_icon--secondary_yellow--color\": {\n        \"name\": \"indicator.icon.secondary.yellow.color\",\n        \"derived\": \"--now-color_grouped--yellow-5\"\n    },\n    \"--now-indicator_icon--secondary--color\": {\n        \"name\": \"indicator.icon.secondary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-indicator_icon--tertiary_blue--color\": {\n        \"name\": \"indicator.icon.tertiary.blue.color\",\n        \"derived\": \"--now-color_grouped--blue-4\"\n    },\n    \"--now-indicator_icon--tertiary_brown--color\": {\n        \"name\": \"indicator.icon.tertiary.brown.color\",\n        \"derived\": \"--now-color_grouped--brown-4\"\n    },\n    \"--now-indicator_icon--tertiary_critical--color\": {\n        \"name\": \"indicator.icon.tertiary.critical.color\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-indicator_icon--tertiary_gray--color\": {\n        \"name\": \"indicator.icon.tertiary.gray.color\",\n        \"derived\": \"--now-color_grouped--gray-4\"\n    },\n    \"--now-indicator_icon--tertiary_green--color\": {\n        \"name\": \"indicator.icon.tertiary.green.color\",\n        \"derived\": \"--now-color_grouped--green-4\"\n    },\n    \"--now-indicator_icon--tertiary_green-yellow--color\": {\n        \"name\": \"indicator.icon.tertiary.greenYellow.color\",\n        \"derived\": \"--now-color_grouped--green-yellow-4\"\n    },\n    \"--now-indicator_icon--tertiary_high--color\": {\n        \"name\": \"indicator.icon.tertiary.high.color\",\n        \"derived\": \"--now-color_alert--high-4\"\n    },\n    \"--now-indicator_icon--tertiary_info--color\": {\n        \"name\": \"indicator.icon.tertiary.info.color\",\n        \"derived\": \"--now-color_alert--info-4\"\n    },\n    \"--now-indicator_icon--tertiary_low--color\": {\n        \"name\": \"indicator.icon.tertiary.low.color\",\n        \"derived\": \"--now-color_alert--low-4\"\n    },\n    \"--now-indicator_icon--tertiary_magenta--color\": {\n        \"name\": \"indicator.icon.tertiary.magenta.color\",\n        \"derived\": \"--now-color_grouped--magenta-4\"\n    },\n    \"--now-indicator_icon--tertiary_moderate--color\": {\n        \"name\": \"indicator.icon.tertiary.moderate.color\",\n        \"derived\": \"--now-color_alert--moderate-4\"\n    },\n    \"--now-indicator_icon--tertiary_orange--color\": {\n        \"name\": \"indicator.icon.tertiary.orange.color\",\n        \"derived\": \"--now-color_grouped--orange-4\"\n    },\n    \"--now-indicator_icon--tertiary_pink--color\": {\n        \"name\": \"indicator.icon.tertiary.pink.color\",\n        \"derived\": \"--now-color_grouped--pink-4\"\n    },\n    \"--now-indicator_icon--tertiary_positive--color\": {\n        \"name\": \"indicator.icon.tertiary.positive.color\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-indicator_icon--tertiary_purple--color\": {\n        \"name\": \"indicator.icon.tertiary.purple.color\",\n        \"derived\": \"--now-color_grouped--purple-4\"\n    },\n    \"--now-indicator_icon--tertiary_teal--color\": {\n        \"name\": \"indicator.icon.tertiary.teal.color\",\n        \"derived\": \"--now-color_grouped--teal-4\"\n    },\n    \"--now-indicator_icon--tertiary_warning--color\": {\n        \"name\": \"indicator.icon.tertiary.warning.color\",\n        \"derived\": \"--now-color_alert--warning-4\"\n    },\n    \"--now-indicator_icon--tertiary_yellow--color\": {\n        \"name\": \"indicator.icon.tertiary.yellow.color\",\n        \"derived\": \"--now-color_grouped--yellow-4\"\n    },\n    \"--now-indicator_icon--tertiary--color\": {\n        \"name\": \"indicator.icon.tertiary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-indicator_label--primary_blue--color\": {\n        \"name\": \"indicator.label.primary.blue.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_brown--color\": {\n        \"name\": \"indicator.label.primary.brown.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_critical--color\": {\n        \"name\": \"indicator.label.primary.critical.color\",\n        \"derived\": \"--now-indicator_label--primary--color\"\n    },\n    \"--now-indicator_label--primary_gray--color\": {\n        \"name\": \"indicator.label.primary.gray.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_green--color\": {\n        \"name\": \"indicator.label.primary.green.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_green-yellow--color\": {\n        \"name\": \"indicator.label.primary.greenYellow.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_high--color\": {\n        \"name\": \"indicator.label.primary.high.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_info--color\": {\n        \"name\": \"indicator.label.primary.info.color\",\n        \"derived\": \"--now-indicator_label--primary--color\"\n    },\n    \"--now-indicator_label--primary_low--color\": {\n        \"name\": \"indicator.label.primary.low.color\",\n        \"derived\": \"--now-indicator_label--primary--color\"\n    },\n    \"--now-indicator_label--primary_magenta--color\": {\n        \"name\": \"indicator.label.primary.magenta.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_moderate--color\": {\n        \"name\": \"indicator.label.primary.moderate.color\",\n        \"derived\": \"--now-indicator_label--primary--color\"\n    },\n    \"--now-indicator_label--primary_orange--color\": {\n        \"name\": \"indicator.label.primary.orange.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_pink--color\": {\n        \"name\": \"indicator.label.primary.pink.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_positive--color\": {\n        \"name\": \"indicator.label.primary.positive.color\",\n        \"derived\": \"--now-indicator_label--primary--color\"\n    },\n    \"--now-indicator_label--primary_purple--color\": {\n        \"name\": \"indicator.label.primary.purple.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_teal--color\": {\n        \"name\": \"indicator.label.primary.teal.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_warning--color\": {\n        \"name\": \"indicator.label.primary.warning.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary_yellow--color\": {\n        \"name\": \"indicator.label.primary.yellow.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--primary--color\": {\n        \"name\": \"indicator.label.primary.color\",\n        \"derived\": \"--now-color--neutral-0\"\n    },\n    \"--now-indicator_label--secondary_blue--color\": {\n        \"name\": \"indicator.label.secondary.blue.color\",\n        \"derived\": \"--now-color_grouped--blue-5\"\n    },\n    \"--now-indicator_label--secondary_brown--color\": {\n        \"name\": \"indicator.label.secondary.brown.color\",\n        \"derived\": \"--now-color_grouped--brown-5\"\n    },\n    \"--now-indicator_label--secondary_critical--color\": {\n        \"name\": \"indicator.label.secondary.critical.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--secondary_gray--color\": {\n        \"name\": \"indicator.label.secondary.gray.color\",\n        \"derived\": \"--now-color_grouped--gray-5\"\n    },\n    \"--now-indicator_label--secondary_green--color\": {\n        \"name\": \"indicator.label.secondary.green.color\",\n        \"derived\": \"--now-color_grouped--green-5\"\n    },\n    \"--now-indicator_label--secondary_green-yellow--color\": {\n        \"name\": \"indicator.label.secondary.greenYellow.color\",\n        \"derived\": \"--now-color_grouped--green-yellow-5\"\n    },\n    \"--now-indicator_label--secondary_high--color\": {\n        \"name\": \"indicator.label.secondary.high.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--secondary_info--color\": {\n        \"name\": \"indicator.label.secondary.info.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--secondary_low--color\": {\n        \"name\": \"indicator.label.secondary.low.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--secondary_magenta--color\": {\n        \"name\": \"indicator.label.secondary.magenta.color\",\n        \"derived\": \"--now-color_grouped--magenta-5\"\n    },\n    \"--now-indicator_label--secondary_moderate--color\": {\n        \"name\": \"indicator.label.secondary.moderate.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--secondary_orange--color\": {\n        \"name\": \"indicator.label.secondary.orange.color\",\n        \"derived\": \"--now-color_grouped--orange-5\"\n    },\n    \"--now-indicator_label--secondary_pink--color\": {\n        \"name\": \"indicator.label.secondary.pink.color\",\n        \"derived\": \"--now-color_grouped--pink-5\"\n    },\n    \"--now-indicator_label--secondary_positive--color\": {\n        \"name\": \"indicator.label.secondary.positive.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--secondary_purple--color\": {\n        \"name\": \"indicator.label.secondary.purple.color\",\n        \"derived\": \"--now-color_grouped--purple-5\"\n    },\n    \"--now-indicator_label--secondary_teal--color\": {\n        \"name\": \"indicator.label.secondary.teal.color\",\n        \"derived\": \"--now-color_grouped--teal-5\"\n    },\n    \"--now-indicator_label--secondary_warning--color\": {\n        \"name\": \"indicator.label.secondary.warning.color\",\n        \"derived\": \"--now-indicator_label--secondary--color\"\n    },\n    \"--now-indicator_label--secondary_yellow--color\": {\n        \"name\": \"indicator.label.secondary.yellow.color\",\n        \"derived\": \"--now-color_grouped--yellow-5\"\n    },\n    \"--now-indicator_label--secondary--color\": {\n        \"name\": \"indicator.label.secondary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-indicator_label--tertiary_blue--color\": {\n        \"name\": \"indicator.label.tertiary.blue.color\",\n        \"derived\": \"--now-color_grouped--blue-5\"\n    },\n    \"--now-indicator_label--tertiary_brown--color\": {\n        \"name\": \"indicator.label.tertiary.brown.color\",\n        \"derived\": \"--now-color_grouped--brown-5\"\n    },\n    \"--now-indicator_label--tertiary_critical--color\": {\n        \"name\": \"indicator.label.tertiary.critical.color\",\n        \"derived\": \"--now-indicator_label--tertiary--color\"\n    },\n    \"--now-indicator_label--tertiary_gray--color\": {\n        \"name\": \"indicator.label.tertiary.gray.color\",\n        \"derived\": \"--now-color_grouped--gray-5\"\n    },\n    \"--now-indicator_label--tertiary_green--color\": {\n        \"name\": \"indicator.label.tertiary.green.color\",\n        \"derived\": \"--now-color_grouped--green-5\"\n    },\n    \"--now-indicator_label--tertiary_green-yellow--color\": {\n        \"name\": \"indicator.label.tertiary.greenYellow.color\",\n        \"derived\": \"--now-color_grouped--green-yellow-5\"\n    },\n    \"--now-indicator_label--tertiary_high--color\": {\n        \"name\": \"indicator.label.tertiary.high.color\",\n        \"derived\": \"--now-indicator_label--tertiary--color\"\n    },\n    \"--now-indicator_label--tertiary_info--color\": {\n        \"name\": \"indicator.label.tertiary.info.color\",\n        \"derived\": \"--now-indicator_label--tertiary--color\"\n    },\n    \"--now-indicator_label--tertiary_low--color\": {\n        \"name\": \"indicator.label.tertiary.low.color\",\n        \"derived\": \"--now-indicator_label--tertiary--color\"\n    },\n    \"--now-indicator_label--tertiary_magenta--color\": {\n        \"name\": \"indicator.label.tertiary.magenta.color\",\n        \"derived\": \"--now-color_grouped--magenta-5\"\n    },\n    \"--now-indicator_label--tertiary_moderate--color\": {\n        \"name\": \"indicator.label.tertiary.moderate.color\",\n        \"derived\": \"--now-indicator_label--tertiary--color\"\n    },\n    \"--now-indicator_label--tertiary_orange--color\": {\n        \"name\": \"indicator.label.tertiary.orange.color\",\n        \"derived\": \"--now-color_grouped--orange-5\"\n    },\n    \"--now-indicator_label--tertiary_pink--color\": {\n        \"name\": \"indicator.label.tertiary.pink.color\",\n        \"derived\": \"--now-color_grouped--pink-5\"\n    },\n    \"--now-indicator_label--tertiary_positive--color\": {\n        \"name\": \"indicator.label.tertiary.positive.color\",\n        \"derived\": \"--now-indicator_label--tertiary--color\"\n    },\n    \"--now-indicator_label--tertiary_purple--color\": {\n        \"name\": \"indicator.label.tertiary.purple.color\",\n        \"derived\": \"--now-color_grouped--purple-5\"\n    },\n    \"--now-indicator_label--tertiary_teal--color\": {\n        \"name\": \"indicator.label.tertiary.teal.color\",\n        \"derived\": \"--now-color_grouped--teal-5\"\n    },\n    \"--now-indicator_label--tertiary_warning--color\": {\n        \"name\": \"indicator.label.tertiary.warning.color\",\n        \"derived\": \"--now-indicator_label--tertiary--color\"\n    },\n    \"--now-indicator_label--tertiary_yellow--color\": {\n        \"name\": \"indicator.label.tertiary.yellow.color\",\n        \"derived\": \"--now-color_grouped--yellow-5\"\n    },\n    \"--now-indicator_label--tertiary--color\": {\n        \"name\": \"indicator.label.tertiary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-indicator--primary_blue--background-color\": {\n        \"name\": \"indicator.primary.blue.backgroundColor\",\n        \"derived\": \"--now-color_grouped--blue-2\"\n    },\n    \"--now-indicator--primary_blue--border-color\": {\n        \"name\": \"indicator.primary.blue.borderColor\",\n        \"derived\": \"--now-color_grouped--blue-3\"\n    },\n    \"--now-indicator--primary_brown--background-color\": {\n        \"name\": \"indicator.primary.brown.backgroundColor\",\n        \"derived\": \"--now-color_grouped--brown-2\"\n    },\n    \"--now-indicator--primary_brown--border-color\": {\n        \"name\": \"indicator.primary.brown.borderColor\",\n        \"derived\": \"--now-color_grouped--brown-3\"\n    },\n    \"--now-indicator--primary_critical--background-color\": {\n        \"name\": \"indicator.primary.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-indicator--primary_critical--border-color\": {\n        \"name\": \"indicator.primary.critical.borderColor\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-indicator--primary_gray--background-color\": {\n        \"name\": \"indicator.primary.gray.backgroundColor\",\n        \"derived\": \"--now-color_grouped--gray-2\"\n    },\n    \"--now-indicator--primary_gray--border-color\": {\n        \"name\": \"indicator.primary.gray.borderColor\",\n        \"derived\": \"--now-color_grouped--gray-3\"\n    },\n    \"--now-indicator--primary_green--background-color\": {\n        \"name\": \"indicator.primary.green.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-2\"\n    },\n    \"--now-indicator--primary_green--border-color\": {\n        \"name\": \"indicator.primary.green.borderColor\",\n        \"derived\": \"--now-color_grouped--green-3\"\n    },\n    \"--now-indicator--primary_green-yellow--background-color\": {\n        \"name\": \"indicator.primary.greenYellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-2\"\n    },\n    \"--now-indicator--primary_green-yellow--border-color\": {\n        \"name\": \"indicator.primary.greenYellow.borderColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-3\"\n    },\n    \"--now-indicator--primary_high--background-color\": {\n        \"name\": \"indicator.primary.high.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-2\"\n    },\n    \"--now-indicator--primary_high--border-color\": {\n        \"name\": \"indicator.primary.high.borderColor\",\n        \"derived\": \"--now-color_alert--high-3\"\n    },\n    \"--now-indicator--primary_info--background-color\": {\n        \"name\": \"indicator.primary.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-2\"\n    },\n    \"--now-indicator--primary_info--border-color\": {\n        \"name\": \"indicator.primary.info.borderColor\",\n        \"derived\": \"--now-color_alert--info-3\"\n    },\n    \"--now-indicator--primary_low--background-color\": {\n        \"name\": \"indicator.primary.low.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-2\"\n    },\n    \"--now-indicator--primary_low--border-color\": {\n        \"name\": \"indicator.primary.low.borderColor\",\n        \"derived\": \"--now-color_alert--low-3\"\n    },\n    \"--now-indicator--primary_magenta--background-color\": {\n        \"name\": \"indicator.primary.magenta.backgroundColor\",\n        \"derived\": \"--now-color_grouped--magenta-2\"\n    },\n    \"--now-indicator--primary_magenta--border-color\": {\n        \"name\": \"indicator.primary.magenta.borderColor\",\n        \"derived\": \"--now-color_grouped--magenta-3\"\n    },\n    \"--now-indicator--primary_moderate--background-color\": {\n        \"name\": \"indicator.primary.moderate.backgroundColor\",\n        \"derived\": \"--now-color_alert--moderate-2\"\n    },\n    \"--now-indicator--primary_moderate--border-color\": {\n        \"name\": \"indicator.primary.moderate.borderColor\",\n        \"derived\": \"--now-color_alert--moderate-3\"\n    },\n    \"--now-indicator--primary_orange--background-color\": {\n        \"name\": \"indicator.primary.orange.backgroundColor\",\n        \"derived\": \"--now-color_grouped--orange-2\"\n    },\n    \"--now-indicator--primary_orange--border-color\": {\n        \"name\": \"indicator.primary.orange.borderColor\",\n        \"derived\": \"--now-color_grouped--orange-3\"\n    },\n    \"--now-indicator--primary_pink--background-color\": {\n        \"name\": \"indicator.primary.pink.backgroundColor\",\n        \"derived\": \"--now-color_grouped--pink-2\"\n    },\n    \"--now-indicator--primary_pink--border-color\": {\n        \"name\": \"indicator.primary.pink.borderColor\",\n        \"derived\": \"--now-color_grouped--pink-3\"\n    },\n    \"--now-indicator--primary_positive--background-color\": {\n        \"name\": \"indicator.primary.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-2\"\n    },\n    \"--now-indicator--primary_positive--border-color\": {\n        \"name\": \"indicator.primary.positive.borderColor\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-indicator--primary_purple--background-color\": {\n        \"name\": \"indicator.primary.purple.backgroundColor\",\n        \"derived\": \"--now-color_grouped--purple-2\"\n    },\n    \"--now-indicator--primary_purple--border-color\": {\n        \"name\": \"indicator.primary.purple.borderColor\",\n        \"derived\": \"--now-color_grouped--purple-3\"\n    },\n    \"--now-indicator--primary_teal--background-color\": {\n        \"name\": \"indicator.primary.teal.backgroundColor\",\n        \"derived\": \"--now-color_grouped--teal-2\"\n    },\n    \"--now-indicator--primary_teal--border-color\": {\n        \"name\": \"indicator.primary.teal.borderColor\",\n        \"derived\": \"--now-color_grouped--teal-3\"\n    },\n    \"--now-indicator--primary_warning--background-color\": {\n        \"name\": \"indicator.primary.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-2\"\n    },\n    \"--now-indicator--primary_warning--border-color\": {\n        \"name\": \"indicator.primary.warning.borderColor\",\n        \"derived\": \"--now-color_alert--warning-3\"\n    },\n    \"--now-indicator--primary_yellow--background-color\": {\n        \"name\": \"indicator.primary.yellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--yellow-2\"\n    },\n    \"--now-indicator--primary_yellow--border-color\": {\n        \"name\": \"indicator.primary.yellow.borderColor\",\n        \"derived\": \"--now-color_grouped--yellow-3\"\n    },\n    \"--now-indicator--primary--border-radius\": {\n        \"name\": \"indicator.primary.borderRadius\",\n        \"derived\": \"--now-indicator--border-radius\"\n    },\n    \"--now-indicator--primary--border-width\": {\n        \"name\": \"indicator.primary.borderWidth\",\n        \"derived\": \"--now-indicator--border-width\"\n    },\n    \"--now-indicator--primary--font-family\": {\n        \"name\": \"indicator.primary.fontFamily\",\n        \"derived\": \"--now-indicator--font-family\"\n    },\n    \"--now-indicator--primary--font-style\": {\n        \"name\": \"indicator.primary.fontStyle\",\n        \"derived\": \"--now-indicator--font-style\"\n    },\n    \"--now-indicator--primary--font-weight\": {\n        \"name\": \"indicator.primary.fontWeight\",\n        \"derived\": \"--now-indicator--font-weight\"\n    },\n    \"--now-indicator--primary--text-transform\": {\n        \"name\": \"indicator.primary.textTransform\",\n        \"derived\": \"--now-indicator--text-transform\"\n    },\n    \"--now-indicator--secondary_blue--background-color\": {\n        \"name\": \"indicator.secondary.blue.backgroundColor\",\n        \"derived\": \"--now-color_grouped--blue-1\"\n    },\n    \"--now-indicator--secondary_blue--border-color\": {\n        \"name\": \"indicator.secondary.blue.borderColor\",\n        \"derived\": \"--now-color_grouped--blue-2\"\n    },\n    \"--now-indicator--secondary_brown--background-color\": {\n        \"name\": \"indicator.secondary.brown.backgroundColor\",\n        \"derived\": \"--now-color_grouped--brown-1\"\n    },\n    \"--now-indicator--secondary_brown--border-color\": {\n        \"name\": \"indicator.secondary.brown.borderColor\",\n        \"derived\": \"--now-color_grouped--brown-2\"\n    },\n    \"--now-indicator--secondary_critical--background-color\": {\n        \"name\": \"indicator.secondary.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-1\"\n    },\n    \"--now-indicator--secondary_critical--border-color\": {\n        \"name\": \"indicator.secondary.critical.borderColor\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-indicator--secondary_gray--background-color\": {\n        \"name\": \"indicator.secondary.gray.backgroundColor\",\n        \"derived\": \"--now-color_grouped--gray-1\"\n    },\n    \"--now-indicator--secondary_gray--border-color\": {\n        \"name\": \"indicator.secondary.gray.borderColor\",\n        \"derived\": \"--now-color_grouped--gray-2\"\n    },\n    \"--now-indicator--secondary_green--background-color\": {\n        \"name\": \"indicator.secondary.green.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-1\"\n    },\n    \"--now-indicator--secondary_green--border-color\": {\n        \"name\": \"indicator.secondary.green.borderColor\",\n        \"derived\": \"--now-color_grouped--green-2\"\n    },\n    \"--now-indicator--secondary_green-yellow--background-color\": {\n        \"name\": \"indicator.secondary.greenYellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-1\"\n    },\n    \"--now-indicator--secondary_green-yellow--border-color\": {\n        \"name\": \"indicator.secondary.greenYellow.borderColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-2\"\n    },\n    \"--now-indicator--secondary_high--background-color\": {\n        \"name\": \"indicator.secondary.high.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-1\"\n    },\n    \"--now-indicator--secondary_high--border-color\": {\n        \"name\": \"indicator.secondary.high.borderColor\",\n        \"derived\": \"--now-color_alert--high-2\"\n    },\n    \"--now-indicator--secondary_info--background-color\": {\n        \"name\": \"indicator.secondary.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-1\"\n    },\n    \"--now-indicator--secondary_info--border-color\": {\n        \"name\": \"indicator.secondary.info.borderColor\",\n        \"derived\": \"--now-color_alert--info-2\"\n    },\n    \"--now-indicator--secondary_low--background-color\": {\n        \"name\": \"indicator.secondary.low.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-1\"\n    },\n    \"--now-indicator--secondary_low--border-color\": {\n        \"name\": \"indicator.secondary.low.borderColor\",\n        \"derived\": \"--now-color_alert--low-2\"\n    },\n    \"--now-indicator--secondary_magenta--background-color\": {\n        \"name\": \"indicator.secondary.magenta.backgroundColor\",\n        \"derived\": \"--now-color_grouped--magenta-1\"\n    },\n    \"--now-indicator--secondary_magenta--border-color\": {\n        \"name\": \"indicator.secondary.magenta.borderColor\",\n        \"derived\": \"--now-color_grouped--magenta-2\"\n    },\n    \"--now-indicator--secondary_moderate--background-color\": {\n        \"name\": \"indicator.secondary.moderate.backgroundColor\",\n        \"derived\": \"--now-color_alert--moderate-1\"\n    },\n    \"--now-indicator--secondary_moderate--border-color\": {\n        \"name\": \"indicator.secondary.moderate.borderColor\",\n        \"derived\": \"--now-color_alert--moderate-2\"\n    },\n    \"--now-indicator--secondary_orange--background-color\": {\n        \"name\": \"indicator.secondary.orange.backgroundColor\",\n        \"derived\": \"--now-color_grouped--orange-1\"\n    },\n    \"--now-indicator--secondary_orange--border-color\": {\n        \"name\": \"indicator.secondary.orange.borderColor\",\n        \"derived\": \"--now-color_grouped--orange-2\"\n    },\n    \"--now-indicator--secondary_pink--background-color\": {\n        \"name\": \"indicator.secondary.pink.backgroundColor\",\n        \"derived\": \"--now-color_grouped--pink-1\"\n    },\n    \"--now-indicator--secondary_pink--border-color\": {\n        \"name\": \"indicator.secondary.pink.borderColor\",\n        \"derived\": \"--now-color_grouped--pink-2\"\n    },\n    \"--now-indicator--secondary_positive--background-color\": {\n        \"name\": \"indicator.secondary.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-1\"\n    },\n    \"--now-indicator--secondary_positive--border-color\": {\n        \"name\": \"indicator.secondary.positive.borderColor\",\n        \"derived\": \"--now-color_alert--positive-2\"\n    },\n    \"--now-indicator--secondary_purple--background-color\": {\n        \"name\": \"indicator.secondary.purple.backgroundColor\",\n        \"derived\": \"--now-color_grouped--purple-1\"\n    },\n    \"--now-indicator--secondary_purple--border-color\": {\n        \"name\": \"indicator.secondary.purple.borderColor\",\n        \"derived\": \"--now-color_grouped--purple-2\"\n    },\n    \"--now-indicator--secondary_teal--background-color\": {\n        \"name\": \"indicator.secondary.teal.backgroundColor\",\n        \"derived\": \"--now-color_grouped--teal-1\"\n    },\n    \"--now-indicator--secondary_teal--border-color\": {\n        \"name\": \"indicator.secondary.teal.borderColor\",\n        \"derived\": \"--now-color_grouped--teal-2\"\n    },\n    \"--now-indicator--secondary_warning--background-color\": {\n        \"name\": \"indicator.secondary.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-1\"\n    },\n    \"--now-indicator--secondary_warning--border-color\": {\n        \"name\": \"indicator.secondary.warning.borderColor\",\n        \"derived\": \"--now-color_alert--warning-2\"\n    },\n    \"--now-indicator--secondary_yellow--background-color\": {\n        \"name\": \"indicator.secondary.yellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--yellow-1\"\n    },\n    \"--now-indicator--secondary_yellow--border-color\": {\n        \"name\": \"indicator.secondary.yellow.borderColor\",\n        \"derived\": \"--now-color_grouped--yellow-2\"\n    },\n    \"--now-indicator--secondary--border-radius\": {\n        \"name\": \"indicator.secondary.borderRadius\",\n        \"derived\": \"--now-indicator--border-radius\"\n    },\n    \"--now-indicator--secondary--border-width\": {\n        \"name\": \"indicator.secondary.borderWidth\",\n        \"derived\": \"--now-indicator--border-width\"\n    },\n    \"--now-indicator--secondary--font-family\": {\n        \"name\": \"indicator.secondary.fontFamily\",\n        \"derived\": \"--now-indicator--font-family\"\n    },\n    \"--now-indicator--secondary--font-style\": {\n        \"name\": \"indicator.secondary.fontStyle\",\n        \"derived\": \"--now-indicator--font-style\"\n    },\n    \"--now-indicator--secondary--font-weight\": {\n        \"name\": \"indicator.secondary.fontWeight\",\n        \"derived\": \"--now-indicator--font-weight\"\n    },\n    \"--now-indicator--secondary--text-transform\": {\n        \"name\": \"indicator.secondary.textTransform\",\n        \"derived\": \"--now-indicator--text-transform\"\n    },\n    \"--now-indicator--tertiary_blue--background-color\": {\n        \"name\": \"indicator.tertiary.blue.backgroundColor\",\n        \"derived\": \"--now-color_grouped--blue-0\"\n    },\n    \"--now-indicator--tertiary_blue--border-color\": {\n        \"name\": \"indicator.tertiary.blue.borderColor\",\n        \"derived\": \"--now-color_grouped--blue-1\"\n    },\n    \"--now-indicator--tertiary_brown--background-color\": {\n        \"name\": \"indicator.tertiary.brown.backgroundColor\",\n        \"derived\": \"--now-color_grouped--brown-0\"\n    },\n    \"--now-indicator--tertiary_brown--border-color\": {\n        \"name\": \"indicator.tertiary.brown.borderColor\",\n        \"derived\": \"--now-color_grouped--brown-1\"\n    },\n    \"--now-indicator--tertiary_critical--background-color\": {\n        \"name\": \"indicator.tertiary.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-indicator--tertiary_critical--border-color\": {\n        \"name\": \"indicator.tertiary.critical.borderColor\",\n        \"derived\": \"--now-color_alert--critical-1\"\n    },\n    \"--now-indicator--tertiary_gray--background-color\": {\n        \"name\": \"indicator.tertiary.gray.backgroundColor\",\n        \"derived\": \"--now-color_grouped--gray-0\"\n    },\n    \"--now-indicator--tertiary_gray--border-color\": {\n        \"name\": \"indicator.tertiary.gray.borderColor\",\n        \"derived\": \"--now-color_grouped--gray-1\"\n    },\n    \"--now-indicator--tertiary_green--background-color\": {\n        \"name\": \"indicator.tertiary.green.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-0\"\n    },\n    \"--now-indicator--tertiary_green--border-color\": {\n        \"name\": \"indicator.tertiary.green.borderColor\",\n        \"derived\": \"--now-color_grouped--green-1\"\n    },\n    \"--now-indicator--tertiary_green-yellow--background-color\": {\n        \"name\": \"indicator.tertiary.greenYellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-0\"\n    },\n    \"--now-indicator--tertiary_green-yellow--border-color\": {\n        \"name\": \"indicator.tertiary.greenYellow.borderColor\",\n        \"derived\": \"--now-color_grouped--green-yellow-1\"\n    },\n    \"--now-indicator--tertiary_high--background-color\": {\n        \"name\": \"indicator.tertiary.high.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-0\"\n    },\n    \"--now-indicator--tertiary_high--border-color\": {\n        \"name\": \"indicator.tertiary.high.borderColor\",\n        \"derived\": \"--now-color_alert--high-1\"\n    },\n    \"--now-indicator--tertiary_info--background-color\": {\n        \"name\": \"indicator.tertiary.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-0\"\n    },\n    \"--now-indicator--tertiary_info--border-color\": {\n        \"name\": \"indicator.tertiary.info.borderColor\",\n        \"derived\": \"--now-color_alert--info-1\"\n    },\n    \"--now-indicator--tertiary_low--background-color\": {\n        \"name\": \"indicator.tertiary.low.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-0\"\n    },\n    \"--now-indicator--tertiary_low--border-color\": {\n        \"name\": \"indicator.tertiary.low.borderColor\",\n        \"derived\": \"--now-color_alert--low-1\"\n    },\n    \"--now-indicator--tertiary_magenta--background-color\": {\n        \"name\": \"indicator.tertiary.magenta.backgroundColor\",\n        \"derived\": \"--now-color_grouped--magenta-0\"\n    },\n    \"--now-indicator--tertiary_magenta--border-color\": {\n        \"name\": \"indicator.tertiary.magenta.borderColor\",\n        \"derived\": \"--now-color_grouped--magenta-1\"\n    },\n    \"--now-indicator--tertiary_moderate--background-color\": {\n        \"name\": \"indicator.tertiary.moderate.backgroundColor\",\n        \"derived\": \"--now-color_alert--moderate-0\"\n    },\n    \"--now-indicator--tertiary_moderate--border-color\": {\n        \"name\": \"indicator.tertiary.moderate.borderColor\",\n        \"derived\": \"--now-color_alert--moderate-1\"\n    },\n    \"--now-indicator--tertiary_orange--background-color\": {\n        \"name\": \"indicator.tertiary.orange.backgroundColor\",\n        \"derived\": \"--now-color_grouped--orange-0\"\n    },\n    \"--now-indicator--tertiary_orange--border-color\": {\n        \"name\": \"indicator.tertiary.orange.borderColor\",\n        \"derived\": \"--now-color_grouped--orange-1\"\n    },\n    \"--now-indicator--tertiary_pink--background-color\": {\n        \"name\": \"indicator.tertiary.pink.backgroundColor\",\n        \"derived\": \"--now-color_grouped--pink-0\"\n    },\n    \"--now-indicator--tertiary_pink--border-color\": {\n        \"name\": \"indicator.tertiary.pink.borderColor\",\n        \"derived\": \"--now-color_grouped--pink-1\"\n    },\n    \"--now-indicator--tertiary_positive--background-color\": {\n        \"name\": \"indicator.tertiary.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-0\"\n    },\n    \"--now-indicator--tertiary_positive--border-color\": {\n        \"name\": \"indicator.tertiary.positive.borderColor\",\n        \"derived\": \"--now-color_alert--positive-1\"\n    },\n    \"--now-indicator--tertiary_purple--background-color\": {\n        \"name\": \"indicator.tertiary.purple.backgroundColor\",\n        \"derived\": \"--now-color_grouped--purple-0\"\n    },\n    \"--now-indicator--tertiary_purple--border-color\": {\n        \"name\": \"indicator.tertiary.purple.borderColor\",\n        \"derived\": \"--now-color_grouped--purple-1\"\n    },\n    \"--now-indicator--tertiary_teal--background-color\": {\n        \"name\": \"indicator.tertiary.teal.backgroundColor\",\n        \"derived\": \"--now-color_grouped--teal-0\"\n    },\n    \"--now-indicator--tertiary_teal--border-color\": {\n        \"name\": \"indicator.tertiary.teal.borderColor\",\n        \"derived\": \"--now-color_grouped--teal-1\"\n    },\n    \"--now-indicator--tertiary_warning--background-color\": {\n        \"name\": \"indicator.tertiary.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-0\"\n    },\n    \"--now-indicator--tertiary_warning--border-color\": {\n        \"name\": \"indicator.tertiary.warning.borderColor\",\n        \"derived\": \"--now-color_alert--warning-1\"\n    },\n    \"--now-indicator--tertiary_yellow--background-color\": {\n        \"name\": \"indicator.tertiary.yellow.backgroundColor\",\n        \"derived\": \"--now-color_grouped--yellow-0\"\n    },\n    \"--now-indicator--tertiary_yellow--border-color\": {\n        \"name\": \"indicator.tertiary.yellow.borderColor\",\n        \"derived\": \"--now-color_grouped--yellow-1\"\n    },\n    \"--now-indicator--tertiary--border-radius\": {\n        \"name\": \"indicator.tertiary.borderRadius\",\n        \"derived\": \"--now-indicator--border-radius\"\n    },\n    \"--now-indicator--tertiary--border-width\": {\n        \"name\": \"indicator.tertiary.borderWidth\",\n        \"derived\": \"--now-indicator--border-width\"\n    },\n    \"--now-indicator--tertiary--font-family\": {\n        \"name\": \"indicator.tertiary.fontFamily\",\n        \"derived\": \"--now-indicator--font-family\"\n    },\n    \"--now-indicator--tertiary--font-style\": {\n        \"name\": \"indicator.tertiary.fontStyle\",\n        \"derived\": \"--now-indicator--font-style\"\n    },\n    \"--now-indicator--tertiary--font-weight\": {\n        \"name\": \"indicator.tertiary.fontWeight\",\n        \"derived\": \"--now-indicator--font-weight\"\n    },\n    \"--now-indicator--tertiary--text-transform\": {\n        \"name\": \"indicator.tertiary.textTransform\",\n        \"derived\": \"--now-indicator--text-transform\"\n    },\n    \"--now-loading_indicator--color\": {\n        \"name\": \"loading.indicator.color\",\n        \"derived\": \"--now-color--neutral-12\"\n    },\n    \"--now-loading_indicator--font-family\": {\n        \"name\": \"loading.indicator.fontFamily\",\n        \"derived\": \"--now-loading_label--primary--font-family\"\n    },\n    \"--now-loading_indicator--font-style\": {\n        \"name\": \"loading.indicator.fontStyle\",\n        \"derived\": \"--now-loading_label--primary--font-style\"\n    },\n    \"--now-loading_indicator--font-weight\": {\n        \"name\": \"loading.indicator.fontWeight\",\n        \"derived\": \"--now-loading_label--primary--font-weight\"\n    },\n    \"--now-loading_indicator--primary--color\": {\n        \"name\": \"loading.indicator.primary.color\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-loading_indicator--text-transform\": {\n        \"name\": \"loading.indicator.textTransform\",\n        \"derived\": \"--now-loading_label--primary--text-transform\"\n    },\n    \"--now-loading_label--primary--color\": {\n        \"name\": \"loading.label.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-loading_label--primary--font-family\": {\n        \"name\": \"loading.label.primary.fontFamily\",\n        \"derived\": \"--now-loading--font-family\"\n    },\n    \"--now-loading_label--primary--font-style\": {\n        \"name\": \"loading.label.primary.fontStyle\",\n        \"derived\": \"--now-loading--font-style\"\n    },\n    \"--now-loading_label--primary--font-weight\": {\n        \"name\": \"loading.label.primary.fontWeight\",\n        \"derived\": \"--now-loading--font-weight\"\n    },\n    \"--now-loading_label--primary--text-transform\": {\n        \"name\": \"loading.label.primary.textTransform\",\n        \"derived\": \"--now-loading--text-transform\"\n    },\n    \"--now-loading_label--secondary--color\": {\n        \"name\": \"loading.label.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-loading_label--secondary--font-family\": {\n        \"name\": \"loading.label.secondary.fontFamily\",\n        \"derived\": \"--now-loading--font-family\"\n    },\n    \"--now-loading_label--secondary--font-style\": {\n        \"name\": \"loading.label.secondary.fontStyle\",\n        \"derived\": \"--now-loading--font-style\"\n    },\n    \"--now-loading_label--secondary--font-weight\": {\n        \"name\": \"loading.label.secondary.fontWeight\",\n        \"derived\": \"--now-loading--font-weight\"\n    },\n    \"--now-loading_label--secondary--text-transform\": {\n        \"name\": \"loading.label.secondary.textTransform\",\n        \"derived\": \"--now-loading--text-transform\"\n    },\n    \"--now-loading_label--tertiary--color\": {\n        \"name\": \"loading.label.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-loading_label--tertiary--font-family\": {\n        \"name\": \"loading.label.tertiary.fontFamily\",\n        \"derived\": \"--now-loading--font-family\"\n    },\n    \"--now-loading_label--tertiary--font-style\": {\n        \"name\": \"loading.label.tertiary.fontStyle\",\n        \"derived\": \"--now-loading--font-style\"\n    },\n    \"--now-loading_label--tertiary--font-weight\": {\n        \"name\": \"loading.label.tertiary.fontWeight\",\n        \"derived\": \"--now-loading--font-weight\"\n    },\n    \"--now-loading_label--tertiary--text-transform\": {\n        \"name\": \"loading.label.tertiary.textTransform\",\n        \"derived\": \"--now-loading--text-transform\"\n    },\n    \"--now-loading_placeholder--background-color\": {\n        \"name\": \"loading.placeholder.backgroundColor\",\n        \"derived\": \"--now-color_surface--neutral-4\"\n    },\n    \"--now-loading_progress_bar--alert--background-color\": {\n        \"name\": \"loading.progress.bar.alert.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-3\"\n    },\n    \"--now-loading_progress_bar--alert--border-color\": {\n        \"name\": \"loading.progress.bar.alert.borderColor\",\n        \"derived\": \"--now-color_alert--high-4\"\n    },\n    \"--now-loading_progress_bar--background-color\": {\n        \"name\": \"loading.progress.bar.backgroundColor\",\n        \"derived\": \"--now-loading--initial--background-color\"\n    },\n    \"--now-loading_progress_bar--border-color\": {\n        \"name\": \"loading.progress.bar.borderColor\",\n        \"derived\": \"--now-loading--initial--border-color\"\n    },\n    \"--now-loading_progress_bar--border-radius\": {\n        \"name\": \"loading.progress.bar.borderRadius\",\n        \"derived\": \"--now-loading--border-radius\"\n    },\n    \"--now-loading_progress_bar--border-width\": {\n        \"name\": \"loading.progress.bar.borderWidth\",\n        \"derived\": \"--now-loading--border-width\"\n    },\n    \"--now-loading_progress_bar--error--background-color\": {\n        \"name\": \"loading.progress.bar.error.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-loading_progress_bar--error--border-color\": {\n        \"name\": \"loading.progress.bar.error.borderColor\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-loading_progress_bar--gray--background-color\": {\n        \"name\": \"loading.progress.bar.gray.backgroundColor\",\n        \"derived\": \"--now-color_grouped--gray-2\"\n    },\n    \"--now-loading_progress_bar--gray--border-color\": {\n        \"name\": \"loading.progress.bar.gray.borderColor\",\n        \"derived\": \"--now-color_grouped--gray-3\"\n    },\n    \"--now-loading_progress_bar--green--background-color\": {\n        \"name\": \"loading.progress.bar.green.backgroundColor\",\n        \"derived\": \"--now-color_grouped--green-2\"\n    },\n    \"--now-loading_progress_bar--green--border-color\": {\n        \"name\": \"loading.progress.bar.green.borderColor\",\n        \"derived\": \"--now-color_grouped--green-3\"\n    },\n    \"--now-loading_progress_bar--inactive--background-color\": {\n        \"name\": \"loading.progress.bar.inactive.backgroundColor\",\n        \"derived\": \"--now-loading_progress_track--background-color\"\n    },\n    \"--now-loading_progress_bar--inactive--border-color\": {\n        \"name\": \"loading.progress.bar.inactive.borderColor\",\n        \"derived\": \"--now-color--neutral-11\"\n    },\n    \"--now-loading_progress_bar--orange--background-color\": {\n        \"name\": \"loading.progress.bar.orange.backgroundColor\",\n        \"derived\": \"--now-color_grouped--orange-2\"\n    },\n    \"--now-loading_progress_bar--orange--border-color\": {\n        \"name\": \"loading.progress.bar.orange.borderColor\",\n        \"derived\": \"--now-color_grouped--orange-3\"\n    },\n    \"--now-loading_progress_bar--pink--background-color\": {\n        \"name\": \"loading.progress.bar.pink.backgroundColor\",\n        \"derived\": \"--now-color_grouped--pink-2\"\n    },\n    \"--now-loading_progress_bar--pink--border-color\": {\n        \"name\": \"loading.progress.bar.pink.borderColor\",\n        \"derived\": \"--now-color_grouped--pink-3\"\n    },\n    \"--now-loading_progress_bar--positive--background-color\": {\n        \"name\": \"loading.progress.bar.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-loading_progress_bar--positive--border-color\": {\n        \"name\": \"loading.progress.bar.positive.borderColor\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-loading_progress_bar-marker--border-width\": {\n        \"name\": \"loading.progress.barMarker.borderWidth\",\n        \"initial\": \"2px\"\n    },\n    \"--now-loading_progress_bar-marker--color\": {\n        \"name\": \"loading.progress.barMarker.color\",\n        \"derived\": \"--now-color_border--primary-actionable\"\n    },\n    \"--now-loading_progress_track--background-color\": {\n        \"name\": \"loading.progress.track.backgroundColor\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-loading_progress_track--border-color\": {\n        \"name\": \"loading.progress.track.borderColor\",\n        \"derived\": \"--now-color_border--primary\"\n    },\n    \"--now-loading_progress_track--border-radius\": {\n        \"name\": \"loading.progress.track.borderRadius\",\n        \"derived\": \"--now-loading--border-radius\"\n    },\n    \"--now-loading_progress_track--border-width\": {\n        \"name\": \"loading.progress.track.borderWidth\",\n        \"derived\": \"--now-loading--border-width\"\n    },\n    \"--now-loading_progress--font-family\": {\n        \"name\": \"loading.progress.fontFamily\",\n        \"derived\": \"--now-loading_label--primary--font-family\"\n    },\n    \"--now-loading_progress--font-style\": {\n        \"name\": \"loading.progress.fontStyle\",\n        \"derived\": \"--now-loading_label--primary--font-style\"\n    },\n    \"--now-loading_progress--font-weight\": {\n        \"name\": \"loading.progress.fontWeight\",\n        \"derived\": \"--now-loading_label--primary--font-weight\"\n    },\n    \"--now-loading_progress--text-transform\": {\n        \"name\": \"loading.progress.textTransform\",\n        \"derived\": \"--now-loading_label--primary--text-transform\"\n    },\n    \"--now-menu_container--primary--background-color\": {\n        \"name\": \"menu.container.primary.backgroundColor\",\n        \"derived\": \"--now-menu--background-color\"\n    },\n    \"--now-menu_container--primary--border-color\": {\n        \"name\": \"menu.container.primary.borderColor\",\n        \"derived\": \"--now-menu--border-color\"\n    },\n    \"--now-menu_container--primary--border-radius\": {\n        \"name\": \"menu.container.primary.borderRadius\",\n        \"derived\": \"--now-menu--border-radius\"\n    },\n    \"--now-menu_container--primary--border-width\": {\n        \"name\": \"menu.container.primary.borderWidth\",\n        \"derived\": \"--now-menu--border-width\"\n    },\n    \"--now-menu_input_placeholder--primary--color\": {\n        \"name\": \"menu.input.placeholder.primary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-menu_input_value--primary--color\": {\n        \"name\": \"menu.input.value.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-menu_input--primary--background-color\": {\n        \"name\": \"menu.input.primary.backgroundColor\",\n        \"derived\": \"--now-menu--background-color\"\n    },\n    \"--now-menu_input--primary--background-color--hover\": {\n        \"name\": \"menu.input.primary.backgroundColor.hover\",\n        \"derived\": \"--now-form-control-input--primary--background-color--hover\"\n    },\n    \"--now-menu_input--primary--border-color\": {\n        \"name\": \"menu.input.primary.borderColor\",\n        \"derived\": \"--now-menu--border-color\"\n    },\n    \"--now-menu_input--primary--border-width\": {\n        \"name\": \"menu.input.primary.borderWidth\",\n        \"initial\": \"1px\"\n    },\n    \"--now-menu_input--primary--font-family\": {\n        \"name\": \"menu.input.primary.fontFamily\",\n        \"derived\": \"--now-form-control_value--primary--font-family\"\n    },\n    \"--now-menu_input--primary--font-style\": {\n        \"name\": \"menu.input.primary.fontStyle\",\n        \"derived\": \"--now-form-control_value--primary--font-style\"\n    },\n    \"--now-menu_input--primary--font-weight\": {\n        \"name\": \"menu.input.primary.fontWeight\",\n        \"derived\": \"--now-form-control_value--primary--font-weight\"\n    },\n    \"--now-menu_input--primary--text-transform\": {\n        \"name\": \"menu.input.primary.textTransform\",\n        \"derived\": \"--now-form-control_value--primary--text-transform\"\n    },\n    \"--now-menu-contextual_container_label--primary--color\": {\n        \"name\": \"menuContextual.container.label.primary.color\",\n        \"derived\": \"--now-color--neutral-0\"\n    },\n    \"--now-menu-contextual_container--primary--background-color\": {\n        \"name\": \"menuContextual.container.primary.backgroundColor\",\n        \"derived\": \"--now-color--neutral-19\"\n    },\n    \"--now-menu-contextual_container--primary--background-color-alpha\": {\n        \"name\": \"menuContextual.container.primary.backgroundColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-menu-contextual_container--primary--border-color\": {\n        \"name\": \"menuContextual.container.primary.borderColor\",\n        \"derived\": \"--now-menu--border-color\"\n    },\n    \"--now-menu-contextual_container--primary--border-radius\": {\n        \"name\": \"menuContextual.container.primary.borderRadius\",\n        \"derived\": \"--now-menu--border-radius\"\n    },\n    \"--now-menu-contextual_container--primary--border-width\": {\n        \"name\": \"menuContextual.container.primary.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-menu-contextual_container--primary--font-family\": {\n        \"name\": \"menuContextual.container.primary.fontFamily\",\n        \"derived\": \"--now-menu--font-family\"\n    },\n    \"--now-menu-contextual_container--primary--font-style\": {\n        \"name\": \"menuContextual.container.primary.fontStyle\",\n        \"derived\": \"--now-menu--font-style\"\n    },\n    \"--now-menu-contextual_container--primary--font-weight\": {\n        \"name\": \"menuContextual.container.primary.fontWeight\",\n        \"derived\": \"--now-menu--font-weight\"\n    },\n    \"--now-menu-contextual_container--primary--text-transform\": {\n        \"name\": \"menuContextual.container.primary.textTransform\",\n        \"derived\": \"--now-menu--text-transform\"\n    },\n    \"--now-menu-list_divider--primary--color\": {\n        \"name\": \"menuList.divider.primary.color\",\n        \"derived\": \"--now-color_divider--primary\"\n    },\n    \"--now-menu-list_divider--primary--width\": {\n        \"name\": \"menuList.divider.primary.width\",\n        \"derived\": \"--now-menu_divider--width\"\n    },\n    \"--now-menu-list_divider--secondary--color\": {\n        \"name\": \"menuList.divider.secondary.color\",\n        \"derived\": \"--now-color_divider--secondary\"\n    },\n    \"--now-menu-list_divider--secondary--width\": {\n        \"name\": \"menuList.divider.secondary.width\",\n        \"derived\": \"--now-menu_divider--width\"\n    },\n    \"--now-menu-list_divider--tertiary--color\": {\n        \"name\": \"menuList.divider.tertiary.color\",\n        \"derived\": \"--now-menu_divider--color\"\n    },\n    \"--now-menu-list_divider--tertiary--width\": {\n        \"name\": \"menuList.divider.tertiary.width\",\n        \"derived\": \"--now-menu_divider--width\"\n    },\n    \"--now-menu-list_header--primary--background-color\": {\n        \"name\": \"menuList.header.primary.backgroundColor\",\n        \"derived\": \"--now-color_background--secondary\"\n    },\n    \"--now-menu-list_header--primary--color\": {\n        \"name\": \"menuList.header.primary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-menu-list_header--primary--font-family\": {\n        \"name\": \"menuList.header.primary.fontFamily\",\n        \"derived\": \"--now-menu_heading--font-family\"\n    },\n    \"--now-menu-list_header--primary--font-style\": {\n        \"name\": \"menuList.header.primary.fontStyle\",\n        \"derived\": \"--now-menu_heading--font-style\"\n    },\n    \"--now-menu-list_header--primary--font-weight\": {\n        \"name\": \"menuList.header.primary.fontWeight\",\n        \"derived\": \"--now-menu_heading--font-weight\"\n    },\n    \"--now-menu-list_header--primary--text-transform\": {\n        \"name\": \"menuList.header.primary.textTransform\",\n        \"derived\": \"--now-menu_heading--text-transform\"\n    },\n    \"--now-menu-list_icon--primary--color\": {\n        \"name\": \"menuList.icon.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-menu-list_icon--primary--color--focus\": {\n        \"name\": \"menuList.icon.primary.color.focus\",\n        \"derived\": \"--now-menu-list_icon--primary--color\"\n    },\n    \"--now-menu-list_icon--primary--color--selected\": {\n        \"name\": \"menuList.icon.primary.color.selected\",\n        \"derived\": \"--now-menu-list_icon--primary--color\"\n    },\n    \"--now-menu-list_label--primary--background-color--highlighted\": {\n        \"name\": \"menuList.label.primary.backgroundColor.highlighted\",\n        \"derived\": \"--now-color_alert--warning-0\"\n    },\n    \"--now-menu-list_label--primary--color\": {\n        \"name\": \"menuList.label.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-menu-list_label--primary--color--active\": {\n        \"name\": \"menuList.label.primary.color.active\",\n        \"derived\": \"--now-menu-list_label--primary--color\"\n    },\n    \"--now-menu-list_label--primary--color--disabled\": {\n        \"name\": \"menuList.label.primary.color.disabled\",\n        \"derived\": \"--now-menu-list_label--primary--color\"\n    },\n    \"--now-menu-list_label--primary--color--focus\": {\n        \"name\": \"menuList.label.primary.color.focus\",\n        \"derived\": \"--now-menu-list_label--primary--color\"\n    },\n    \"--now-menu-list_label--primary--color--highlighted\": {\n        \"name\": \"menuList.label.primary.color.highlighted\",\n        \"derived\": \"--now-menu-list_label--primary--color\"\n    },\n    \"--now-menu-list_label--primary--color--hover\": {\n        \"name\": \"menuList.label.primary.color.hover\",\n        \"derived\": \"--now-menu-list_label--primary--color\"\n    },\n    \"--now-menu-list_label--primary--color--selected\": {\n        \"name\": \"menuList.label.primary.color.selected\",\n        \"derived\": \"--now-menu-list_label--primary--color\"\n    },\n    \"--now-menu-list_label--primary--font-family\": {\n        \"name\": \"menuList.label.primary.fontFamily\",\n        \"derived\": \"--now-menu--font-family\"\n    },\n    \"--now-menu-list_label--primary--font-style\": {\n        \"name\": \"menuList.label.primary.fontStyle\",\n        \"derived\": \"--now-menu--font-style\"\n    },\n    \"--now-menu-list_label--primary--font-weight\": {\n        \"name\": \"menuList.label.primary.fontWeight\",\n        \"derived\": \"--now-menu--font-weight\"\n    },\n    \"--now-menu-list_label--primary--text-transform\": {\n        \"name\": \"menuList.label.primary.textTransform\",\n        \"derived\": \"--now-menu--text-transform\"\n    },\n    \"--now-menu-list_selection--primary--color\": {\n        \"name\": \"menuList.selection.primary.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-menu-list_selection--primary--color--focus\": {\n        \"name\": \"menuList.selection.primary.color.focus\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-menu-list_sublabel--primary--color\": {\n        \"name\": \"menuList.sublabel.primary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-menu-list_sublabel--primary--color--focus\": {\n        \"name\": \"menuList.sublabel.primary.color.focus\",\n        \"derived\": \"--now-menu-list_sublabel--primary--color\"\n    },\n    \"--now-menu-list_sublabel--primary--color--selected\": {\n        \"name\": \"menuList.sublabel.primary.color.selected\",\n        \"derived\": \"--now-menu-list_sublabel--primary--color\"\n    },\n    \"--now-menu-list_sublabel--primary--font-family\": {\n        \"name\": \"menuList.sublabel.primary.fontFamily\",\n        \"derived\": \"--now-menu_sublabel--font-family\"\n    },\n    \"--now-menu-list_sublabel--primary--font-style\": {\n        \"name\": \"menuList.sublabel.primary.fontStyle\",\n        \"derived\": \"--now-menu_sublabel--font-style\"\n    },\n    \"--now-menu-list_sublabel--primary--font-weight\": {\n        \"name\": \"menuList.sublabel.primary.fontWeight\",\n        \"derived\": \"--now-menu_sublabel--font-weight\"\n    },\n    \"--now-menu-list_sublabel--primary--text-transform\": {\n        \"name\": \"menuList.sublabel.primary.textTransform\",\n        \"derived\": \"--now-menu_sublabel--text-transform\"\n    },\n    \"--now-menu-list--primary--background-color\": {\n        \"name\": \"menuList.primary.backgroundColor\",\n        \"derived\": \"--now-menu--background-color\"\n    },\n    \"--now-menu-list--primary--background-color--active\": {\n        \"name\": \"menuList.primary.backgroundColor.active\",\n        \"derived\": \"--now-color--interactive-0\"\n    },\n    \"--now-menu-list--primary--background-color--disabled\": {\n        \"name\": \"menuList.primary.backgroundColor.disabled\",\n        \"derived\": \"--now-menu-list--primary--background-color\"\n    },\n    \"--now-menu-list--primary--background-color--focus\": {\n        \"name\": \"menuList.primary.backgroundColor.focus\",\n        \"derived\": \"--now-color--interactive-0\"\n    },\n    \"--now-menu-list--primary--background-color--hover\": {\n        \"name\": \"menuList.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color--interactive-0\"\n    },\n    \"--now-menu-list--primary--background-color--selected\": {\n        \"name\": \"menuList.primary.backgroundColor.selected\",\n        \"derived\": \"--now-menu-list--primary--background-color\"\n    },\n    \"--now-menu-list--primary--background-color-alpha--focus\": {\n        \"name\": \"menuList.primary.backgroundColorAlpha.focus\",\n        \"derived\": \"--now-opacity--mid\"\n    },\n    \"--now-menu-list--primary--opacity--disabled\": {\n        \"name\": \"menuList.primary.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-menu-picker_cell_header--background-color\": {\n        \"name\": \"menuPicker.cell.header.backgroundColor\",\n        \"derived\": \"--now-menu-picker_cell--background-color\"\n    },\n    \"--now-menu-picker_cell_header--color\": {\n        \"name\": \"menuPicker.cell.header.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-menu-picker_cell_header--font-family\": {\n        \"name\": \"menuPicker.cell.header.fontFamily\",\n        \"derived\": \"--now-menu-picker_cell--font-family\"\n    },\n    \"--now-menu-picker_cell_header--font-style\": {\n        \"name\": \"menuPicker.cell.header.fontStyle\",\n        \"derived\": \"--now-menu-picker_cell--font-style\"\n    },\n    \"--now-menu-picker_cell_header--font-weight\": {\n        \"name\": \"menuPicker.cell.header.fontWeight\",\n        \"initial\": \"normal\"\n    },\n    \"--now-menu-picker_cell_header--text-transform\": {\n        \"name\": \"menuPicker.cell.header.textTransform\",\n        \"derived\": \"--now-menu-picker_cell--text-transform\"\n    },\n    \"--now-menu-picker_cell_label--color\": {\n        \"name\": \"menuPicker.cell.label.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-menu-picker_cell_label--color--active\": {\n        \"name\": \"menuPicker.cell.label.color.active\",\n        \"derived\": \"--now-menu-picker_cell_label--color\"\n    },\n    \"--now-menu-picker_cell_label--color--adjacent\": {\n        \"name\": \"menuPicker.cell.label.color.adjacent\",\n        \"derived\": \"--now-menu-picker_cell_label--color\"\n    },\n    \"--now-menu-picker_cell_label--color--adjacent_active\": {\n        \"name\": \"menuPicker.cell.label.color.adjacent.active\",\n        \"derived\": \"--now-menu-picker_cell_label--color--adjacent\"\n    },\n    \"--now-menu-picker_cell_label--color--adjacent_hover\": {\n        \"name\": \"menuPicker.cell.label.color.adjacent.hover\",\n        \"derived\": \"--now-menu-picker_cell_label--color--adjacent\"\n    },\n    \"--now-menu-picker_cell_label--color--hover\": {\n        \"name\": \"menuPicker.cell.label.color.hover\",\n        \"derived\": \"--now-menu-picker_cell_label--color\"\n    },\n    \"--now-menu-picker_cell_label--color--now\": {\n        \"name\": \"menuPicker.cell.label.color.now\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell_label--color--now_active\": {\n        \"name\": \"menuPicker.cell.label.color.now.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-menu-picker_cell_label--color--now_hover\": {\n        \"name\": \"menuPicker.cell.label.color.now.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-menu-picker_cell_label--color--preview\": {\n        \"name\": \"menuPicker.cell.label.color.preview\",\n        \"derived\": \"--now-menu-picker_cell_label--color\"\n    },\n    \"--now-menu-picker_cell_label--color--range\": {\n        \"name\": \"menuPicker.cell.label.color.range\",\n        \"derived\": \"--now-menu-picker_cell_label--color\"\n    },\n    \"--now-menu-picker_cell_label--color--range_active\": {\n        \"name\": \"menuPicker.cell.label.color.range.active\",\n        \"derived\": \"--now-menu-picker_cell_label--color--range\"\n    },\n    \"--now-menu-picker_cell_label--color--range_hover\": {\n        \"name\": \"menuPicker.cell.label.color.range.hover\",\n        \"derived\": \"--now-menu-picker_cell_label--color--range\"\n    },\n    \"--now-menu-picker_cell_label--color--selected\": {\n        \"name\": \"menuPicker.cell.label.color.selected\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-menu-picker_cell_label--color--selected_active\": {\n        \"name\": \"menuPicker.cell.label.color.selected.active\",\n        \"derived\": \"--now-menu-picker_cell_label--color--selected\"\n    },\n    \"--now-menu-picker_cell_label--color--selected_hover\": {\n        \"name\": \"menuPicker.cell.label.color.selected.hover\",\n        \"derived\": \"--now-menu-picker_cell_label--color--selected\"\n    },\n    \"--now-menu-picker_cell_label--color--series-preview\": {\n        \"name\": \"menuPicker.cell.label.color.seriesPreview\",\n        \"derived\": \"--now-menu-picker_cell_label--color\"\n    },\n    \"--now-menu-picker_cell_label--color--series-preview_active\": {\n        \"name\": \"menuPicker.cell.label.color.seriesPreview.active\",\n        \"derived\": \"--now-menu-picker_cell_label--color--series-preview\"\n    },\n    \"--now-menu-picker_cell_label--color--series-preview_hover\": {\n        \"name\": \"menuPicker.cell.label.color.seriesPreview.hover\",\n        \"derived\": \"--now-menu-picker_cell_label--color--series-preview\"\n    },\n    \"--now-menu-picker_cell_label--color--series-range\": {\n        \"name\": \"menuPicker.cell.label.color.seriesRange\",\n        \"derived\": \"--now-menu-picker_cell_label--color\"\n    },\n    \"--now-menu-picker_cell_label--color--series-range_active\": {\n        \"name\": \"menuPicker.cell.label.color.seriesRange.active\",\n        \"derived\": \"--now-menu-picker_cell_label--color--series-range\"\n    },\n    \"--now-menu-picker_cell_label--color--series-range_hover\": {\n        \"name\": \"menuPicker.cell.label.color.seriesRange.hover\",\n        \"derived\": \"--now-menu-picker_cell_label--color--series-range\"\n    },\n    \"--now-menu-picker_cell--background-color\": {\n        \"name\": \"menuPicker.cell.backgroundColor\",\n        \"derived\": \"--now-menu--background-color\"\n    },\n    \"--now-menu-picker_cell--background-color--active\": {\n        \"name\": \"menuPicker.cell.backgroundColor.active\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--adjacent\": {\n        \"name\": \"menuPicker.cell.backgroundColor.adjacent\",\n        \"derived\": \"--now-menu-picker_cell--background-color\"\n    },\n    \"--now-menu-picker_cell--background-color--adjacent_active\": {\n        \"name\": \"menuPicker.cell.backgroundColor.adjacent.active\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--adjacent_hover\": {\n        \"name\": \"menuPicker.cell.backgroundColor.adjacent.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--hover\": {\n        \"name\": \"menuPicker.cell.backgroundColor.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--now\": {\n        \"name\": \"menuPicker.cell.backgroundColor.now\",\n        \"derived\": \"--now-menu-picker_cell--background-color\"\n    },\n    \"--now-menu-picker_cell--background-color--now_active\": {\n        \"name\": \"menuPicker.cell.backgroundColor.now.active\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--now_hover\": {\n        \"name\": \"menuPicker.cell.backgroundColor.now.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--preview\": {\n        \"name\": \"menuPicker.cell.backgroundColor.preview\",\n        \"derived\": \"--now-color_selection--secondary-0\"\n    },\n    \"--now-menu-picker_cell--background-color--range\": {\n        \"name\": \"menuPicker.cell.backgroundColor.range\",\n        \"derived\": \"--now-color_selection--secondary-0\"\n    },\n    \"--now-menu-picker_cell--background-color--range_active\": {\n        \"name\": \"menuPicker.cell.backgroundColor.range.active\",\n        \"derived\": \"--now-color_selection--secondary-2\"\n    },\n    \"--now-menu-picker_cell--background-color--range_hover\": {\n        \"name\": \"menuPicker.cell.backgroundColor.range.hover\",\n        \"derived\": \"--now-color_selection--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--selected\": {\n        \"name\": \"menuPicker.cell.backgroundColor.selected\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--selected_active\": {\n        \"name\": \"menuPicker.cell.backgroundColor.selected.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-menu-picker_cell--background-color--selected_hover\": {\n        \"name\": \"menuPicker.cell.backgroundColor.selected.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-menu-picker_cell--background-color--series\": {\n        \"name\": \"menuPicker.cell.backgroundColor.series\",\n        \"derived\": \"--now-menu-picker_cell--background-color\"\n    },\n    \"--now-menu-picker_cell--background-color--series-preview\": {\n        \"name\": \"menuPicker.cell.backgroundColor.seriesPreview\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--background-color--series-preview_active\": {\n        \"name\": \"menuPicker.cell.backgroundColor.seriesPreview.active\",\n        \"derived\": \"--now-menu-picker_cell--background-color--series-preview\"\n    },\n    \"--now-menu-picker_cell--background-color--series-preview_hover\": {\n        \"name\": \"menuPicker.cell.backgroundColor.seriesPreview.hover\",\n        \"derived\": \"--now-menu-picker_cell--background-color--series-preview\"\n    },\n    \"--now-menu-picker_cell--background-color--series-range\": {\n        \"name\": \"menuPicker.cell.backgroundColor.seriesRange\",\n        \"derived\": \"--now-color--interactive-0\"\n    },\n    \"--now-menu-picker_cell--background-color--series-range_active\": {\n        \"name\": \"menuPicker.cell.backgroundColor.seriesRange.active\",\n        \"derived\": \"--now-menu-picker_cell--background-color--series-range\"\n    },\n    \"--now-menu-picker_cell--background-color--series-range_hover\": {\n        \"name\": \"menuPicker.cell.backgroundColor.seriesRange.hover\",\n        \"derived\": \"--now-menu-picker_cell--background-color--series-range\"\n    },\n    \"--now-menu-picker_cell--background-color--week\": {\n        \"name\": \"menuPicker.cell.backgroundColor.week\",\n        \"derived\": \"--now-menu-picker_cell--background-color\"\n    },\n    \"--now-menu-picker_cell--background-color-alpha--week\": {\n        \"name\": \"menuPicker.cell.backgroundColorAlpha.week\",\n        \"initial\": \"0\"\n    },\n    \"--now-menu-picker_cell--border-color\": {\n        \"name\": \"menuPicker.cell.borderColor\",\n        \"derived\": \"--now-menu--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--active\": {\n        \"name\": \"menuPicker.cell.borderColor.active\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--adjacent\": {\n        \"name\": \"menuPicker.cell.borderColor.adjacent\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--adjacent_active\": {\n        \"name\": \"menuPicker.cell.borderColor.adjacent.active\",\n        \"derived\": \"--now-menu-picker_cell--border-color--adjacent\"\n    },\n    \"--now-menu-picker_cell--border-color--adjacent_hover\": {\n        \"name\": \"menuPicker.cell.borderColor.adjacent.hover\",\n        \"derived\": \"--now-menu-picker_cell--border-color--adjacent\"\n    },\n    \"--now-menu-picker_cell--border-color--hover\": {\n        \"name\": \"menuPicker.cell.borderColor.hover\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--now\": {\n        \"name\": \"menuPicker.cell.borderColor.now\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-menu-picker_cell--border-color--now_active\": {\n        \"name\": \"menuPicker.cell.borderColor.now.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-menu-picker_cell--border-color--now_hover\": {\n        \"name\": \"menuPicker.cell.borderColor.now.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-menu-picker_cell--border-color--preview\": {\n        \"name\": \"menuPicker.cell.borderColor.preview\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--range\": {\n        \"name\": \"menuPicker.cell.borderColor.range\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--range_active\": {\n        \"name\": \"menuPicker.cell.borderColor.range.active\",\n        \"derived\": \"--now-menu-picker_cell--border-color--range\"\n    },\n    \"--now-menu-picker_cell--border-color--range_hover\": {\n        \"name\": \"menuPicker.cell.borderColor.range.hover\",\n        \"derived\": \"--now-menu-picker_cell--border-color--range\"\n    },\n    \"--now-menu-picker_cell--border-color--selected\": {\n        \"name\": \"menuPicker.cell.borderColor.selected\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--selected_active\": {\n        \"name\": \"menuPicker.cell.borderColor.selected.active\",\n        \"derived\": \"--now-menu-picker_cell--border-color--selected\"\n    },\n    \"--now-menu-picker_cell--border-color--selected_hover\": {\n        \"name\": \"menuPicker.cell.borderColor.selected.hover\",\n        \"derived\": \"--now-menu-picker_cell--border-color--selected\"\n    },\n    \"--now-menu-picker_cell--border-color--series\": {\n        \"name\": \"menuPicker.cell.borderColor.series\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--series-preview\": {\n        \"name\": \"menuPicker.cell.borderColor.seriesPreview\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--series-preview_active\": {\n        \"name\": \"menuPicker.cell.borderColor.seriesPreview.active\",\n        \"derived\": \"--now-menu-picker_cell--border-color--series-preview\"\n    },\n    \"--now-menu-picker_cell--border-color--series-preview_hover\": {\n        \"name\": \"menuPicker.cell.borderColor.seriesPreview.hover\",\n        \"derived\": \"--now-menu-picker_cell--border-color--series-preview\"\n    },\n    \"--now-menu-picker_cell--border-color--series-range\": {\n        \"name\": \"menuPicker.cell.borderColor.seriesRange\",\n        \"derived\": \"--now-menu-picker_cell--border-color\"\n    },\n    \"--now-menu-picker_cell--border-color--series-range_active\": {\n        \"name\": \"menuPicker.cell.borderColor.seriesRange.active\",\n        \"derived\": \"--now-menu-picker_cell--border-color--series-range\"\n    },\n    \"--now-menu-picker_cell--border-color--series-range_hover\": {\n        \"name\": \"menuPicker.cell.borderColor.seriesRange.hover\",\n        \"derived\": \"--now-menu-picker_cell--border-color--series-range\"\n    },\n    \"--now-menu-picker_cell--border-radius\": {\n        \"name\": \"menuPicker.cell.borderRadius\",\n        \"initial\": \"4px\"\n    },\n    \"--now-menu-picker_cell--border-radius--adjacent\": {\n        \"name\": \"menuPicker.cell.borderRadius.adjacent\",\n        \"derived\": \"--now-menu-picker_cell--border-radius\"\n    },\n    \"--now-menu-picker_cell--border-radius--now\": {\n        \"name\": \"menuPicker.cell.borderRadius.now\",\n        \"derived\": \"--now-menu-picker_cell--border-radius\"\n    },\n    \"--now-menu-picker_cell--border-radius--preview\": {\n        \"name\": \"menuPicker.cell.borderRadius.preview\",\n        \"derived\": \"--now-menu-picker_cell--border-radius\"\n    },\n    \"--now-menu-picker_cell--border-radius--range\": {\n        \"name\": \"menuPicker.cell.borderRadius.range\",\n        \"derived\": \"--now-menu-picker_cell--border-radius\"\n    },\n    \"--now-menu-picker_cell--border-radius--selected\": {\n        \"name\": \"menuPicker.cell.borderRadius.selected\",\n        \"derived\": \"--now-menu-picker_cell--border-radius\"\n    },\n    \"--now-menu-picker_cell--border-radius--series\": {\n        \"name\": \"menuPicker.cell.borderRadius.series\",\n        \"derived\": \"--now-menu-picker_cell--border-radius\"\n    },\n    \"--now-menu-picker_cell--border-radius--series-preview\": {\n        \"name\": \"menuPicker.cell.borderRadius.seriesPreview\",\n        \"derived\": \"--now-menu-picker_cell--border-radius\"\n    },\n    \"--now-menu-picker_cell--border-radius--series-range\": {\n        \"name\": \"menuPicker.cell.borderRadius.seriesRange\",\n        \"derived\": \"--now-menu-picker_cell--border-radius\"\n    },\n    \"--now-menu-picker_cell--border-width\": {\n        \"name\": \"menuPicker.cell.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-menu-picker_cell--border-width--adjacent\": {\n        \"name\": \"menuPicker.cell.borderWidth.adjacent\",\n        \"derived\": \"--now-menu-picker_cell--border-width\"\n    },\n    \"--now-menu-picker_cell--border-width--now\": {\n        \"name\": \"menuPicker.cell.borderWidth.now\",\n        \"initial\": \"1px\"\n    },\n    \"--now-menu-picker_cell--border-width--preview\": {\n        \"name\": \"menuPicker.cell.borderWidth.preview\",\n        \"derived\": \"--now-menu-picker_cell--border-width\"\n    },\n    \"--now-menu-picker_cell--border-width--range\": {\n        \"name\": \"menuPicker.cell.borderWidth.range\",\n        \"derived\": \"--now-menu-picker_cell--border-width\"\n    },\n    \"--now-menu-picker_cell--border-width--selected\": {\n        \"name\": \"menuPicker.cell.borderWidth.selected\",\n        \"derived\": \"--now-menu-picker_cell--border-width\"\n    },\n    \"--now-menu-picker_cell--border-width--series\": {\n        \"name\": \"menuPicker.cell.borderWidth.series\",\n        \"derived\": \"--now-menu-picker_cell--border-width\"\n    },\n    \"--now-menu-picker_cell--border-width--series-preview\": {\n        \"name\": \"menuPicker.cell.borderWidth.seriesPreview\",\n        \"derived\": \"--now-menu-picker_cell--border-width\"\n    },\n    \"--now-menu-picker_cell--border-width--series-range\": {\n        \"name\": \"menuPicker.cell.borderWidth.seriesRange\",\n        \"derived\": \"--now-menu-picker_cell--border-width\"\n    },\n    \"--now-menu-picker_cell--color--series\": {\n        \"name\": \"menuPicker.cell.color.series\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-menu-picker_cell--color--week\": {\n        \"name\": \"menuPicker.cell.color.week\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-menu-picker_cell--font-family\": {\n        \"name\": \"menuPicker.cell.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_cell--font-family--adjacent\": {\n        \"name\": \"menuPicker.cell.fontFamily.adjacent\",\n        \"derived\": \"--now-menu-picker_cell--font-family\"\n    },\n    \"--now-menu-picker_cell--font-family--week\": {\n        \"name\": \"menuPicker.cell.fontFamily.week\",\n        \"derived\": \"--now-menu-picker_cell--font-family\"\n    },\n    \"--now-menu-picker_cell--font-style\": {\n        \"name\": \"menuPicker.cell.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_cell--font-style--adjacent\": {\n        \"name\": \"menuPicker.cell.fontStyle.adjacent\",\n        \"derived\": \"--now-menu-picker_cell--font-style\"\n    },\n    \"--now-menu-picker_cell--font-style--week\": {\n        \"name\": \"menuPicker.cell.fontStyle.week\",\n        \"derived\": \"--now-menu-picker_cell--font-style\"\n    },\n    \"--now-menu-picker_cell--font-weight\": {\n        \"name\": \"menuPicker.cell.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-menu-picker_cell--font-weight--adjacent\": {\n        \"name\": \"menuPicker.cell.fontWeight.adjacent\",\n        \"initial\": \"normal\"\n    },\n    \"--now-menu-picker_cell--font-weight--week\": {\n        \"name\": \"menuPicker.cell.fontWeight.week\",\n        \"derived\": \"--now-menu-picker_cell--font-weight\"\n    },\n    \"--now-menu-picker_cell--opacity--disabled\": {\n        \"name\": \"menuPicker.cell.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-menu-picker_cell--text-transform\": {\n        \"name\": \"menuPicker.cell.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker_cell--text-transform--adjacent\": {\n        \"name\": \"menuPicker.cell.textTransform.adjacent\",\n        \"derived\": \"--now-menu-picker_cell--text-transform\"\n    },\n    \"--now-menu-picker_cell--text-transform--week\": {\n        \"name\": \"menuPicker.cell.textTransform.week\",\n        \"derived\": \"--now-menu-picker_cell--text-transform\"\n    },\n    \"--now-menu-picker_container_divider--color\": {\n        \"name\": \"menuPicker.container.divider.color\",\n        \"derived\": \"--now-menu_divider--color\"\n    },\n    \"--now-menu-picker_container_divider--width\": {\n        \"name\": \"menuPicker.container.divider.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-menu-picker_container--background-color\": {\n        \"name\": \"menuPicker.container.backgroundColor\",\n        \"derived\": \"--now-menu_container--primary--background-color\"\n    },\n    \"--now-menu-picker_container--border-color\": {\n        \"name\": \"menuPicker.container.borderColor\",\n        \"derived\": \"--now-menu_container--primary--border-color\"\n    },\n    \"--now-menu-picker_container--border-radius\": {\n        \"name\": \"menuPicker.container.borderRadius\",\n        \"derived\": \"--now-menu_container--primary--border-radius\"\n    },\n    \"--now-menu-picker_container--border-width\": {\n        \"name\": \"menuPicker.container.borderWidth\",\n        \"derived\": \"--now-menu_container--primary--border-width\"\n    },\n    \"--now-menu-picker_footer_divider--color\": {\n        \"name\": \"menuPicker.footer.divider.color\",\n        \"derived\": \"--now-menu_divider--color\"\n    },\n    \"--now-menu-picker_footer_divider--width\": {\n        \"name\": \"menuPicker.footer.divider.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-menu-picker_footer--background-color\": {\n        \"name\": \"menuPicker.footer.backgroundColor\",\n        \"derived\": \"--now-menu--background-color\"\n    },\n    \"--now-menu-picker_footer--font-family\": {\n        \"name\": \"menuPicker.footer.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_footer--font-style\": {\n        \"name\": \"menuPicker.footer.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_footer--font-weight\": {\n        \"name\": \"menuPicker.footer.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-menu-picker_footer--text-transform\": {\n        \"name\": \"menuPicker.footer.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker_header_divider--primary--color\": {\n        \"name\": \"menuPicker.header.divider.primary.color\",\n        \"derived\": \"--now-menu_divider--color\"\n    },\n    \"--now-menu-picker_header_divider--primary--width\": {\n        \"name\": \"menuPicker.header.divider.primary.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-menu-picker_header_divider--secondary--color\": {\n        \"name\": \"menuPicker.header.divider.secondary.color\",\n        \"derived\": \"--now-menu_divider--color\"\n    },\n    \"--now-menu-picker_header_divider--secondary--width\": {\n        \"name\": \"menuPicker.header.divider.secondary.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-menu-picker_header--primary--background-color\": {\n        \"name\": \"menuPicker.header.primary.backgroundColor\",\n        \"derived\": \"--now-menu--background-color\"\n    },\n    \"--now-menu-picker_header--primary--color\": {\n        \"name\": \"menuPicker.header.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-menu-picker_header--primary--font-family\": {\n        \"name\": \"menuPicker.header.primary.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_header--primary--font-style\": {\n        \"name\": \"menuPicker.header.primary.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_header--primary--font-weight\": {\n        \"name\": \"menuPicker.header.primary.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-menu-picker_header--primary--text-transform\": {\n        \"name\": \"menuPicker.header.primary.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker_header--secondary--background-color\": {\n        \"name\": \"menuPicker.header.secondary.backgroundColor\",\n        \"derived\": \"--now-color_background--secondary\"\n    },\n    \"--now-menu-picker_header--secondary--color\": {\n        \"name\": \"menuPicker.header.secondary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-menu-picker_header--secondary--font-family\": {\n        \"name\": \"menuPicker.header.secondary.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_header--secondary--font-style\": {\n        \"name\": \"menuPicker.header.secondary.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_header--secondary--font-weight\": {\n        \"name\": \"menuPicker.header.secondary.fontWeight\",\n        \"derived\": \"--now-menu-picker--font-weight\"\n    },\n    \"--now-menu-picker_header--secondary--text-transform\": {\n        \"name\": \"menuPicker.header.secondary.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker_item_label--primary--color\": {\n        \"name\": \"menuPicker.item.label.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-menu-picker_item_label--primary--color--focus\": {\n        \"name\": \"menuPicker.item.label.primary.color.focus\",\n        \"derived\": \"--now-menu-picker_item_label--primary--color\"\n    },\n    \"--now-menu-picker_item_label--primary--color--hover\": {\n        \"name\": \"menuPicker.item.label.primary.color.hover\",\n        \"derived\": \"--now-menu-picker_item_label--primary--color\"\n    },\n    \"--now-menu-picker_item_label--primary--color--selected\": {\n        \"name\": \"menuPicker.item.label.primary.color.selected\",\n        \"derived\": \"--now-menu-picker_item_label--primary--color\"\n    },\n    \"--now-menu-picker_item_label--secondary--color\": {\n        \"name\": \"menuPicker.item.label.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-menu-picker_item_label--secondary--color--focus\": {\n        \"name\": \"menuPicker.item.label.secondary.color.focus\",\n        \"derived\": \"--now-menu-picker_item_label--secondary--color\"\n    },\n    \"--now-menu-picker_item_label--secondary--color--hover\": {\n        \"name\": \"menuPicker.item.label.secondary.color.hover\",\n        \"derived\": \"--now-menu-picker_item_label--secondary--color\"\n    },\n    \"--now-menu-picker_item_label--secondary--color--selected\": {\n        \"name\": \"menuPicker.item.label.secondary.color.selected\",\n        \"derived\": \"--now-menu-picker_item_label--secondary--color\"\n    },\n    \"--now-menu-picker_item_label--tertiary--color\": {\n        \"name\": \"menuPicker.item.label.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-menu-picker_item_label--tertiary--color--focus\": {\n        \"name\": \"menuPicker.item.label.tertiary.color.focus\",\n        \"derived\": \"--now-menu-picker_item_label--tertiary--color\"\n    },\n    \"--now-menu-picker_item_label--tertiary--color--hover\": {\n        \"name\": \"menuPicker.item.label.tertiary.color.hover\",\n        \"derived\": \"--now-menu-picker_item_label--tertiary--color\"\n    },\n    \"--now-menu-picker_item_label--tertiary--color--selected\": {\n        \"name\": \"menuPicker.item.label.tertiary.color.selected\",\n        \"derived\": \"--now-menu-picker_item_label--tertiary--color\"\n    },\n    \"--now-menu-picker_item_selection--color\": {\n        \"name\": \"menuPicker.item.selection.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-menu-picker_item_selection--color--focus\": {\n        \"name\": \"menuPicker.item.selection.color.focus\",\n        \"derived\": \"--now-menu-picker_item_selection--color\"\n    },\n    \"--now-menu-picker_item_selection--color--hover\": {\n        \"name\": \"menuPicker.item.selection.color.hover\",\n        \"derived\": \"--now-menu-picker_item_selection--color\"\n    },\n    \"--now-menu-picker_item_selection--color--selected\": {\n        \"name\": \"menuPicker.item.selection.color.selected\",\n        \"derived\": \"--now-menu-picker_item_selection--color\"\n    },\n    \"--now-menu-picker_item--background-color\": {\n        \"name\": \"menuPicker.item.backgroundColor\",\n        \"derived\": \"--now-menu--background-color\"\n    },\n    \"--now-menu-picker_item--background-color--hover\": {\n        \"name\": \"menuPicker.item.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--secondary-0\"\n    },\n    \"--now-menu-picker_item--background-color--selected\": {\n        \"name\": \"menuPicker.item.backgroundColor.selected\",\n        \"derived\": \"--now-menu-picker_item--background-color\"\n    },\n    \"--now-menu-picker_item--border-color\": {\n        \"name\": \"menuPicker.item.borderColor\",\n        \"derived\": \"--now-menu--border-color\"\n    },\n    \"--now-menu-picker_item--border-color--focus\": {\n        \"name\": \"menuPicker.item.borderColor.focus\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-menu-picker_item--border-color--hover\": {\n        \"name\": \"menuPicker.item.borderColor.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-menu-picker_item--border-color--selected\": {\n        \"name\": \"menuPicker.item.borderColor.selected\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-menu-picker_item--border-radius\": {\n        \"name\": \"menuPicker.item.borderRadius\",\n        \"derived\": \"--now-menu--border-radius\"\n    },\n    \"--now-menu-picker_item--border-width\": {\n        \"name\": \"menuPicker.item.borderWidth\",\n        \"derived\": \"--now-menu--border-width\"\n    },\n    \"--now-menu-picker_item--color-alpha--hover\": {\n        \"name\": \"menuPicker.item.colorAlpha.hover\",\n        \"initial\": \"1\"\n    },\n    \"--now-menu-picker_item--font-family\": {\n        \"name\": \"menuPicker.item.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_item--font-style\": {\n        \"name\": \"menuPicker.item.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_item--font-weight\": {\n        \"name\": \"menuPicker.item.fontWeight\",\n        \"derived\": \"--now-menu-picker--font-weight\"\n    },\n    \"--now-menu-picker_item--text-transform\": {\n        \"name\": \"menuPicker.item.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker_label--primary--color\": {\n        \"name\": \"menuPicker.label.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-menu-picker_label--primary--font-family\": {\n        \"name\": \"menuPicker.label.primary.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_label--primary--font-style\": {\n        \"name\": \"menuPicker.label.primary.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_label--primary--font-weight\": {\n        \"name\": \"menuPicker.label.primary.fontWeight\",\n        \"derived\": \"--now-menu-picker--font-weight\"\n    },\n    \"--now-menu-picker_label--primary--text-transform\": {\n        \"name\": \"menuPicker.label.primary.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker_label--secondary--color\": {\n        \"name\": \"menuPicker.label.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-menu-picker_label--secondary--font-family\": {\n        \"name\": \"menuPicker.label.secondary.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_label--secondary--font-style\": {\n        \"name\": \"menuPicker.label.secondary.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_label--secondary--font-weight\": {\n        \"name\": \"menuPicker.label.secondary.fontWeight\",\n        \"derived\": \"--now-menu-picker--font-weight\"\n    },\n    \"--now-menu-picker_label--secondary--text-transform\": {\n        \"name\": \"menuPicker.label.secondary.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker_label--tertiary--color\": {\n        \"name\": \"menuPicker.label.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-menu-picker_label--tertiary--font-family\": {\n        \"name\": \"menuPicker.label.tertiary.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_label--tertiary--font-style\": {\n        \"name\": \"menuPicker.label.tertiary.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_label--tertiary--font-weight\": {\n        \"name\": \"menuPicker.label.tertiary.fontWeight\",\n        \"derived\": \"--now-menu-picker--font-weight\"\n    },\n    \"--now-menu-picker_label--tertiary--text-transform\": {\n        \"name\": \"menuPicker.label.tertiary.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker_select_item--border-color\": {\n        \"name\": \"menuPicker.select.item.borderColor\",\n        \"derived\": \"--now-menu--border-color\"\n    },\n    \"--now-menu-picker_select_item--border-radius\": {\n        \"name\": \"menuPicker.select.item.borderRadius\",\n        \"derived\": \"--now-menu--border-radius\"\n    },\n    \"--now-menu-picker_select_item--border-width\": {\n        \"name\": \"menuPicker.select.item.borderWidth\",\n        \"derived\": \"--now-menu--border-width\"\n    },\n    \"--now-menu-picker_select_trigger--background-color--hover\": {\n        \"name\": \"menuPicker.select.trigger.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-menu-picker_select_trigger--border-color\": {\n        \"name\": \"menuPicker.select.trigger.borderColor\",\n        \"derived\": \"--now-menu--border-color\"\n    },\n    \"--now-menu-picker_select_trigger--border-color--focus\": {\n        \"name\": \"menuPicker.select.trigger.borderColor.focus\",\n        \"derived\": \"--now-color_focus-ring\"\n    },\n    \"--now-menu-picker_select_trigger--border-color--hover\": {\n        \"name\": \"menuPicker.select.trigger.borderColor.hover\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-menu-picker_select_trigger--border-radius\": {\n        \"name\": \"menuPicker.select.trigger.borderRadius\",\n        \"derived\": \"--now-menu--border-radius\"\n    },\n    \"--now-menu-picker_select_trigger--border-width\": {\n        \"name\": \"menuPicker.select.trigger.borderWidth\",\n        \"derived\": \"--now-menu--border-width\"\n    },\n    \"--now-menu-picker_status_icon--critical--color\": {\n        \"name\": \"menuPicker.status.icon.critical.color\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-menu-picker_status_icon--info--color\": {\n        \"name\": \"menuPicker.status.icon.info.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-menu-picker_status_icon--positive--color\": {\n        \"name\": \"menuPicker.status.icon.positive.color\",\n        \"derived\": \"--now-color_alert--positive-2\"\n    },\n    \"--now-menu-picker_track--border-radius\": {\n        \"name\": \"menuPicker.track.borderRadius\",\n        \"initial\": \"2px\"\n    },\n    \"--now-menu-picker_trigger_item--border-color\": {\n        \"name\": \"menuPicker.trigger.item.borderColor\",\n        \"derived\": \"--now-menu--border-color\"\n    },\n    \"--now-menu-picker_trigger_item--border-radius\": {\n        \"name\": \"menuPicker.trigger.item.borderRadius\",\n        \"derived\": \"--now-menu--border-radius\"\n    },\n    \"--now-menu-picker_trigger_item--border-width\": {\n        \"name\": \"menuPicker.trigger.item.borderWidth\",\n        \"derived\": \"--now-menu--border-width\"\n    },\n    \"--now-menu-picker_trigger--border-color\": {\n        \"name\": \"menuPicker.trigger.borderColor\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-menu-picker_trigger--border-color--focus\": {\n        \"name\": \"menuPicker.trigger.borderColor.focus\",\n        \"derived\": \"--now-menu-picker_trigger--border-color\"\n    },\n    \"--now-menu-picker_trigger--border-color--hover\": {\n        \"name\": \"menuPicker.trigger.borderColor.hover\",\n        \"derived\": \"--now-menu-picker_trigger--border-color\"\n    },\n    \"--now-menu-picker_trigger--border-radius\": {\n        \"name\": \"menuPicker.trigger.borderRadius\",\n        \"derived\": \"--now-menu--border-radius\"\n    },\n    \"--now-menu-picker_trigger--border-width\": {\n        \"name\": \"menuPicker.trigger.borderWidth\",\n        \"derived\": \"--now-menu--border-width\"\n    },\n    \"--now-menu-picker_trigger--font-family\": {\n        \"name\": \"menuPicker.trigger.fontFamily\",\n        \"derived\": \"--now-menu-picker--font-family\"\n    },\n    \"--now-menu-picker_trigger--font-style\": {\n        \"name\": \"menuPicker.trigger.fontStyle\",\n        \"derived\": \"--now-menu-picker--font-style\"\n    },\n    \"--now-menu-picker_trigger--font-weight\": {\n        \"name\": \"menuPicker.trigger.fontWeight\",\n        \"derived\": \"--now-menu-picker--font-weight\"\n    },\n    \"--now-menu-picker_trigger--text-transform\": {\n        \"name\": \"menuPicker.trigger.textTransform\",\n        \"derived\": \"--now-menu-picker--text-transform\"\n    },\n    \"--now-menu-picker--color-alpha\": {\n        \"name\": \"menuPicker.colorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-menu-picker--color-alpha--active\": {\n        \"name\": \"menuPicker.colorAlpha.active\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-menu-picker--color-alpha--adjacent\": {\n        \"name\": \"menuPicker.colorAlpha.adjacent\",\n        \"initial\": \"0.6\"\n    },\n    \"--now-menu-picker--color-alpha--hover\": {\n        \"name\": \"menuPicker.colorAlpha.hover\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-menu-picker--color-alpha--preview\": {\n        \"name\": \"menuPicker.colorAlpha.preview\",\n        \"initial\": \"1\"\n    },\n    \"--now-menu-picker--color-alpha--range\": {\n        \"name\": \"menuPicker.colorAlpha.range\",\n        \"initial\": \"1\"\n    },\n    \"--now-menu-picker--color-alpha--selected\": {\n        \"name\": \"menuPicker.colorAlpha.selected\",\n        \"initial\": \"1\"\n    },\n    \"--now-menu-picker--color-alpha--series\": {\n        \"name\": \"menuPicker.colorAlpha.series\",\n        \"derived\": \"--now-menu-picker--color-alpha\"\n    },\n    \"--now-menu-picker--color-alpha--series-preview\": {\n        \"name\": \"menuPicker.colorAlpha.seriesPreview\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-menu-picker--font-family\": {\n        \"name\": \"menuPicker.fontFamily\",\n        \"derived\": \"--now-menu--font-family\"\n    },\n    \"--now-menu-picker--font-style\": {\n        \"name\": \"menuPicker.fontStyle\",\n        \"derived\": \"--now-menu--font-style\"\n    },\n    \"--now-menu-picker--font-weight\": {\n        \"name\": \"menuPicker.fontWeight\",\n        \"derived\": \"--now-menu--font-weight\"\n    },\n    \"--now-menu-picker--opacity--disabled\": {\n        \"name\": \"menuPicker.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-menu-picker--text-transform\": {\n        \"name\": \"menuPicker.textTransform\",\n        \"derived\": \"--now-menu--text-transform\"\n    },\n    \"--now-messaging_action_icon--primary_bare_critical--color\": {\n        \"name\": \"messaging.action.icon.primary.bare.critical.color\",\n        \"derived\": \"--now-color_alert--critical-3\"\n    },\n    \"--now-messaging_action_icon--primary_bare_critical--color--active\": {\n        \"name\": \"messaging.action.icon.primary.bare.critical.color.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-messaging_action_icon--primary_bare_critical--color--hover\": {\n        \"name\": \"messaging.action.icon.primary.bare.critical.color.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-messaging_action_icon--primary_bare_high--color\": {\n        \"name\": \"messaging.action.icon.primary.bare.high.color\",\n        \"derived\": \"--now-color_alert--high-3\"\n    },\n    \"--now-messaging_action_icon--primary_bare_high--color--active\": {\n        \"name\": \"messaging.action.icon.primary.bare.high.color.active\",\n        \"derived\": \"--now-color_alert--high-5\"\n    },\n    \"--now-messaging_action_icon--primary_bare_high--color--hover\": {\n        \"name\": \"messaging.action.icon.primary.bare.high.color.hover\",\n        \"derived\": \"--now-color_alert--high-4\"\n    },\n    \"--now-messaging_action_icon--primary_bare_info--color\": {\n        \"name\": \"messaging.action.icon.primary.bare.info.color\",\n        \"derived\": \"--now-color_alert--info-3\"\n    },\n    \"--now-messaging_action_icon--primary_bare_info--color--active\": {\n        \"name\": \"messaging.action.icon.primary.bare.info.color.active\",\n        \"derived\": \"--now-color_alert--info-5\"\n    },\n    \"--now-messaging_action_icon--primary_bare_info--color--hover\": {\n        \"name\": \"messaging.action.icon.primary.bare.info.color.hover\",\n        \"derived\": \"--now-color_alert--info-4\"\n    },\n    \"--now-messaging_action_icon--primary_bare_low--color\": {\n        \"name\": \"messaging.action.icon.primary.bare.low.color\",\n        \"derived\": \"--now-color_alert--low-3\"\n    },\n    \"--now-messaging_action_icon--primary_bare_low--color--active\": {\n        \"name\": \"messaging.action.icon.primary.bare.low.color.active\",\n        \"derived\": \"--now-color_alert--low-5\"\n    },\n    \"--now-messaging_action_icon--primary_bare_low--color--hover\": {\n        \"name\": \"messaging.action.icon.primary.bare.low.color.hover\",\n        \"derived\": \"--now-color_alert--low-4\"\n    },\n    \"--now-messaging_action_icon--primary_bare_moderate--color\": {\n        \"name\": \"messaging.action.icon.primary.bare.moderate.color\",\n        \"derived\": \"--now-color_alert--moderate-3\"\n    },\n    \"--now-messaging_action_icon--primary_bare_moderate--color--active\": {\n        \"name\": \"messaging.action.icon.primary.bare.moderate.color.active\",\n        \"derived\": \"--now-color_alert--moderate-5\"\n    },\n    \"--now-messaging_action_icon--primary_bare_moderate--color--hover\": {\n        \"name\": \"messaging.action.icon.primary.bare.moderate.color.hover\",\n        \"derived\": \"--now-color_alert--moderate-4\"\n    },\n    \"--now-messaging_action_icon--primary_bare_positive--color\": {\n        \"name\": \"messaging.action.icon.primary.bare.positive.color\",\n        \"derived\": \"--now-color_alert--positive-3\"\n    },\n    \"--now-messaging_action_icon--primary_bare_positive--color--active\": {\n        \"name\": \"messaging.action.icon.primary.bare.positive.color.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-messaging_action_icon--primary_bare_positive--color--hover\": {\n        \"name\": \"messaging.action.icon.primary.bare.positive.color.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-messaging_action_icon--primary_bare_warning--color\": {\n        \"name\": \"messaging.action.icon.primary.bare.warning.color\",\n        \"derived\": \"--now-color_alert--warning-4\"\n    },\n    \"--now-messaging_action_icon--primary_bare_warning--color--active\": {\n        \"name\": \"messaging.action.icon.primary.bare.warning.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-messaging_action_icon--primary_bare_warning--color--hover\": {\n        \"name\": \"messaging.action.icon.primary.bare.warning.color.hover\",\n        \"derived\": \"--now-color_alert--warning-5\"\n    },\n    \"--now-messaging_action_icon--primary_bare--color\": {\n        \"name\": \"messaging.action.icon.primary.bare.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-messaging_action_icon--primary_bare--color--active\": {\n        \"name\": \"messaging.action.icon.primary.bare.color.active\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-messaging_action_icon--primary_bare--color--hover\": {\n        \"name\": \"messaging.action.icon.primary.bare.color.hover\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-messaging_action_label--primary_critical--color\": {\n        \"name\": \"messaging.action.label.primary.critical.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging_action_label--primary_critical--color--active\": {\n        \"name\": \"messaging.action.label.primary.critical.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging_action_label--primary_critical--color--hover\": {\n        \"name\": \"messaging.action.label.primary.critical.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging_action_label--primary_high--color\": {\n        \"name\": \"messaging.action.label.primary.high.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging_action_label--primary_high--color--active\": {\n        \"name\": \"messaging.action.label.primary.high.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging_action_label--primary_high--color--hover\": {\n        \"name\": \"messaging.action.label.primary.high.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging_action_label--primary_info--color\": {\n        \"name\": \"messaging.action.label.primary.info.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging_action_label--primary_info--color--active\": {\n        \"name\": \"messaging.action.label.primary.info.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging_action_label--primary_info--color--hover\": {\n        \"name\": \"messaging.action.label.primary.info.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging_action_label--primary_low--color\": {\n        \"name\": \"messaging.action.label.primary.low.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging_action_label--primary_low--color--active\": {\n        \"name\": \"messaging.action.label.primary.low.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging_action_label--primary_low--color--hover\": {\n        \"name\": \"messaging.action.label.primary.low.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging_action_label--primary_moderate--color\": {\n        \"name\": \"messaging.action.label.primary.moderate.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging_action_label--primary_moderate--color--active\": {\n        \"name\": \"messaging.action.label.primary.moderate.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging_action_label--primary_moderate--color--hover\": {\n        \"name\": \"messaging.action.label.primary.moderate.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging_action_label--primary_positive--color\": {\n        \"name\": \"messaging.action.label.primary.positive.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging_action_label--primary_positive--color--active\": {\n        \"name\": \"messaging.action.label.primary.positive.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging_action_label--primary_positive--color--hover\": {\n        \"name\": \"messaging.action.label.primary.positive.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging_action_label--primary_warning--color\": {\n        \"name\": \"messaging.action.label.primary.warning.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging_action_label--primary_warning--color--active\": {\n        \"name\": \"messaging.action.label.primary.warning.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging_action_label--primary_warning--color--hover\": {\n        \"name\": \"messaging.action.label.primary.warning.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging_action_label--primary--color\": {\n        \"name\": \"messaging.action.label.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-messaging_action_label--primary--color--active\": {\n        \"name\": \"messaging.action.label.primary.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-messaging_action_label--primary--color--hover\": {\n        \"name\": \"messaging.action.label.primary.color.hover\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-messaging_action--primary_bare_critical--background-color--active\": {\n        \"name\": \"messaging.action.primary.bare.critical.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--active\"\n    },\n    \"--now-messaging_action--primary_bare_critical--background-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.critical.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_bare_critical--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.critical.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_critical--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.critical.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_critical--border-color--active\": {\n        \"name\": \"messaging.action.primary.bare.critical.borderColor.active\",\n        \"derived\": \"--now-color_alert--critical-5\"\n    },\n    \"--now-messaging_action--primary_bare_critical--border-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.critical.borderColor.hover\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-messaging_action--primary_bare_critical--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.critical.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_critical--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.critical.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_high--background-color--active\": {\n        \"name\": \"messaging.action.primary.bare.high.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--active\"\n    },\n    \"--now-messaging_action--primary_bare_high--background-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.high.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_bare_high--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.high.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_high--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.high.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_high--border-color--active\": {\n        \"name\": \"messaging.action.primary.bare.high.borderColor.active\",\n        \"derived\": \"--now-color_alert--high-5\"\n    },\n    \"--now-messaging_action--primary_bare_high--border-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.high.borderColor.hover\",\n        \"derived\": \"--now-color_alert--high-4\"\n    },\n    \"--now-messaging_action--primary_bare_high--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.high.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_high--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.high.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_info--background-color--active\": {\n        \"name\": \"messaging.action.primary.bare.info.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--active\"\n    },\n    \"--now-messaging_action--primary_bare_info--background-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.info.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_bare_info--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.info.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_info--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.info.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_info--border-color--active\": {\n        \"name\": \"messaging.action.primary.bare.info.borderColor.active\",\n        \"derived\": \"--now-color_alert--info-5\"\n    },\n    \"--now-messaging_action--primary_bare_info--border-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.info.borderColor.hover\",\n        \"derived\": \"--now-color_alert--info-4\"\n    },\n    \"--now-messaging_action--primary_bare_info--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.info.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_info--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.info.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_low--background-color--active\": {\n        \"name\": \"messaging.action.primary.bare.low.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--active\"\n    },\n    \"--now-messaging_action--primary_bare_low--background-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.low.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_bare_low--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.low.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_low--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.low.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_low--border-color--active\": {\n        \"name\": \"messaging.action.primary.bare.low.borderColor.active\",\n        \"derived\": \"--now-color_alert--low-5\"\n    },\n    \"--now-messaging_action--primary_bare_low--border-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.low.borderColor.hover\",\n        \"derived\": \"--now-color_alert--low-4\"\n    },\n    \"--now-messaging_action--primary_bare_low--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.low.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_low--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.low.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_moderate--background-color--active\": {\n        \"name\": \"messaging.action.primary.bare.moderate.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--active\"\n    },\n    \"--now-messaging_action--primary_bare_moderate--background-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.moderate.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_bare_moderate--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.moderate.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_moderate--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.moderate.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_moderate--border-color--active\": {\n        \"name\": \"messaging.action.primary.bare.moderate.borderColor.active\",\n        \"derived\": \"--now-color_alert--moderate-5\"\n    },\n    \"--now-messaging_action--primary_bare_moderate--border-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.moderate.borderColor.hover\",\n        \"derived\": \"--now-color_alert--moderate-4\"\n    },\n    \"--now-messaging_action--primary_bare_moderate--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.moderate.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_moderate--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.moderate.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_positive--background-color--active\": {\n        \"name\": \"messaging.action.primary.bare.positive.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--active\"\n    },\n    \"--now-messaging_action--primary_bare_positive--background-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.positive.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_bare_positive--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.positive.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_positive--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.positive.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_positive--border-color--active\": {\n        \"name\": \"messaging.action.primary.bare.positive.borderColor.active\",\n        \"derived\": \"--now-color_alert--positive-5\"\n    },\n    \"--now-messaging_action--primary_bare_positive--border-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.positive.borderColor.hover\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-messaging_action--primary_bare_positive--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.positive.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_positive--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.positive.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_warning--background-color--active\": {\n        \"name\": \"messaging.action.primary.bare.warning.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--active\"\n    },\n    \"--now-messaging_action--primary_bare_warning--background-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.warning.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_bare_warning--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.warning.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_warning--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.warning.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare_warning--border-color--active\": {\n        \"name\": \"messaging.action.primary.bare.warning.borderColor.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-messaging_action--primary_bare_warning--border-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.warning.borderColor.hover\",\n        \"derived\": \"--now-color_alert--warning-5\"\n    },\n    \"--now-messaging_action--primary_bare_warning--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.warning.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_bare_warning--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.warning.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_bare--background-color--active\": {\n        \"name\": \"messaging.action.primary.bare.backgroundColor.active\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-messaging_action--primary_bare--background-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.backgroundColor.hover\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-messaging_action--primary_bare--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.backgroundColorAlpha.active\",\n        \"initial\": \"0\"\n    },\n    \"--now-messaging_action--primary_bare--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.backgroundColorAlpha.hover\",\n        \"initial\": \"0\"\n    },\n    \"--now-messaging_action--primary_bare--border-color--active\": {\n        \"name\": \"messaging.action.primary.bare.borderColor.active\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-messaging_action--primary_bare--border-color--hover\": {\n        \"name\": \"messaging.action.primary.bare.borderColor.hover\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-messaging_action--primary_bare--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.bare.borderColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-messaging_action--primary_bare--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.bare.borderColorAlpha.active\",\n        \"initial\": \"0\"\n    },\n    \"--now-messaging_action--primary_bare--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.bare.borderColorAlpha.hover\",\n        \"initial\": \"0\"\n    },\n    \"--now-messaging_action--primary_bare--border-radius\": {\n        \"name\": \"messaging.action.primary.bare.borderRadius\",\n        \"derived\": \"--now-messaging--border-radius\"\n    },\n    \"--now-messaging_action--primary_bare--border-width\": {\n        \"name\": \"messaging.action.primary.bare.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-messaging_action--primary_critical--background-color\": {\n        \"name\": \"messaging.action.primary.critical.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging_action--primary_critical--background-color--active\": {\n        \"name\": \"messaging.action.primary.critical.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging_action--primary_critical--background-color--hover\": {\n        \"name\": \"messaging.action.primary.critical.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_critical--background-color-alpha\": {\n        \"name\": \"messaging.action.primary.critical.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging_action--primary_critical--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.critical.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_critical--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.critical.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_critical--border-color\": {\n        \"name\": \"messaging.action.primary.critical.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging_action--primary_critical--border-color--active\": {\n        \"name\": \"messaging.action.primary.critical.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging_action--primary_critical--border-color--hover\": {\n        \"name\": \"messaging.action.primary.critical.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging_action--primary_critical--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.critical.borderColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha\"\n    },\n    \"--now-messaging_action--primary_critical--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.critical.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_critical--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.critical.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_high--background-color\": {\n        \"name\": \"messaging.action.primary.high.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging_action--primary_high--background-color--active\": {\n        \"name\": \"messaging.action.primary.high.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging_action--primary_high--background-color--hover\": {\n        \"name\": \"messaging.action.primary.high.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_high--background-color-alpha\": {\n        \"name\": \"messaging.action.primary.high.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging_action--primary_high--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.high.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_high--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.high.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_high--border-color\": {\n        \"name\": \"messaging.action.primary.high.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging_action--primary_high--border-color--active\": {\n        \"name\": \"messaging.action.primary.high.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging_action--primary_high--border-color--hover\": {\n        \"name\": \"messaging.action.primary.high.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging_action--primary_high--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.high.borderColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha\"\n    },\n    \"--now-messaging_action--primary_high--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.high.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_high--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.high.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_info--background-color\": {\n        \"name\": \"messaging.action.primary.info.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging_action--primary_info--background-color--active\": {\n        \"name\": \"messaging.action.primary.info.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging_action--primary_info--background-color--hover\": {\n        \"name\": \"messaging.action.primary.info.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_info--background-color-alpha\": {\n        \"name\": \"messaging.action.primary.info.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging_action--primary_info--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.info.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_info--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.info.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_info--border-color\": {\n        \"name\": \"messaging.action.primary.info.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging_action--primary_info--border-color--active\": {\n        \"name\": \"messaging.action.primary.info.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging_action--primary_info--border-color--hover\": {\n        \"name\": \"messaging.action.primary.info.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging_action--primary_info--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.info.borderColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha\"\n    },\n    \"--now-messaging_action--primary_info--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.info.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_info--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.info.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_low--background-color\": {\n        \"name\": \"messaging.action.primary.low.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging_action--primary_low--background-color--active\": {\n        \"name\": \"messaging.action.primary.low.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging_action--primary_low--background-color--hover\": {\n        \"name\": \"messaging.action.primary.low.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_low--background-color-alpha\": {\n        \"name\": \"messaging.action.primary.low.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging_action--primary_low--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.low.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_low--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.low.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_low--border-color\": {\n        \"name\": \"messaging.action.primary.low.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging_action--primary_low--border-color--active\": {\n        \"name\": \"messaging.action.primary.low.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging_action--primary_low--border-color--hover\": {\n        \"name\": \"messaging.action.primary.low.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging_action--primary_low--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.low.borderColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha\"\n    },\n    \"--now-messaging_action--primary_low--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.low.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_low--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.low.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_moderate--background-color\": {\n        \"name\": \"messaging.action.primary.moderate.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging_action--primary_moderate--background-color--active\": {\n        \"name\": \"messaging.action.primary.moderate.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging_action--primary_moderate--background-color--hover\": {\n        \"name\": \"messaging.action.primary.moderate.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_moderate--background-color-alpha\": {\n        \"name\": \"messaging.action.primary.moderate.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging_action--primary_moderate--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.moderate.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_moderate--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.moderate.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_moderate--border-color\": {\n        \"name\": \"messaging.action.primary.moderate.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging_action--primary_moderate--border-color--active\": {\n        \"name\": \"messaging.action.primary.moderate.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging_action--primary_moderate--border-color--hover\": {\n        \"name\": \"messaging.action.primary.moderate.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging_action--primary_moderate--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.moderate.borderColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha\"\n    },\n    \"--now-messaging_action--primary_moderate--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.moderate.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_moderate--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.moderate.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_positive--background-color\": {\n        \"name\": \"messaging.action.primary.positive.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging_action--primary_positive--background-color--active\": {\n        \"name\": \"messaging.action.primary.positive.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging_action--primary_positive--background-color--hover\": {\n        \"name\": \"messaging.action.primary.positive.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_positive--background-color-alpha\": {\n        \"name\": \"messaging.action.primary.positive.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging_action--primary_positive--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.positive.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_positive--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.positive.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_positive--border-color\": {\n        \"name\": \"messaging.action.primary.positive.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging_action--primary_positive--border-color--active\": {\n        \"name\": \"messaging.action.primary.positive.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging_action--primary_positive--border-color--hover\": {\n        \"name\": \"messaging.action.primary.positive.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging_action--primary_positive--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.positive.borderColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha\"\n    },\n    \"--now-messaging_action--primary_positive--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.positive.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_positive--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.positive.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_warning--background-color\": {\n        \"name\": \"messaging.action.primary.warning.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging_action--primary_warning--background-color--active\": {\n        \"name\": \"messaging.action.primary.warning.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging_action--primary_warning--background-color--hover\": {\n        \"name\": \"messaging.action.primary.warning.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging_action--primary_warning--background-color-alpha\": {\n        \"name\": \"messaging.action.primary.warning.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging_action--primary_warning--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.warning.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_warning--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.warning.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary_warning--border-color\": {\n        \"name\": \"messaging.action.primary.warning.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging_action--primary_warning--border-color--active\": {\n        \"name\": \"messaging.action.primary.warning.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging_action--primary_warning--border-color--hover\": {\n        \"name\": \"messaging.action.primary.warning.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging_action--primary_warning--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.warning.borderColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha\"\n    },\n    \"--now-messaging_action--primary_warning--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.warning.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--active\"\n    },\n    \"--now-messaging_action--primary_warning--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.warning.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--hover\"\n    },\n    \"--now-messaging_action--primary--background-color\": {\n        \"name\": \"messaging.action.primary.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-messaging_action--primary--background-color--active\": {\n        \"name\": \"messaging.action.primary.backgroundColor.active\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-messaging_action--primary--background-color--hover\": {\n        \"name\": \"messaging.action.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-messaging_action--primary--background-color-alpha\": {\n        \"name\": \"messaging.action.primary.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-messaging_action--primary--background-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--more\"\n    },\n    \"--now-messaging_action--primary--background-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-messaging_action--primary--border-color\": {\n        \"name\": \"messaging.action.primary.borderColor\",\n        \"derived\": \"--now-color_border--tertiary-actionable\"\n    },\n    \"--now-messaging_action--primary--border-color--active\": {\n        \"name\": \"messaging.action.primary.borderColor.active\",\n        \"derived\": \"--now-color_border--tertiary-actionable\"\n    },\n    \"--now-messaging_action--primary--border-color--hover\": {\n        \"name\": \"messaging.action.primary.borderColor.hover\",\n        \"derived\": \"--now-color_border--tertiary-actionable\"\n    },\n    \"--now-messaging_action--primary--border-color-alpha\": {\n        \"name\": \"messaging.action.primary.borderColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-messaging_action--primary--border-color-alpha--active\": {\n        \"name\": \"messaging.action.primary.borderColorAlpha.active\",\n        \"initial\": \"1\"\n    },\n    \"--now-messaging_action--primary--border-color-alpha--hover\": {\n        \"name\": \"messaging.action.primary.borderColorAlpha.hover\",\n        \"initial\": \"1\"\n    },\n    \"--now-messaging_action--primary--border-radius\": {\n        \"name\": \"messaging.action.primary.borderRadius\",\n        \"derived\": \"--now-messaging--border-radius\"\n    },\n    \"--now-messaging_action--primary--border-width\": {\n        \"name\": \"messaging.action.primary.borderWidth\",\n        \"derived\": \"--now-messaging--border-width\"\n    },\n    \"--now-messaging_header--primary_critical--color\": {\n        \"name\": \"messaging.header.primary.critical.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_header--primary_high--color\": {\n        \"name\": \"messaging.header.primary.high.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_header--primary_info--color\": {\n        \"name\": \"messaging.header.primary.info.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_header--primary_low--color\": {\n        \"name\": \"messaging.header.primary.low.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_header--primary_moderate--color\": {\n        \"name\": \"messaging.header.primary.moderate.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_header--primary_positive--color\": {\n        \"name\": \"messaging.header.primary.positive.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_header--primary_warning--color\": {\n        \"name\": \"messaging.header.primary.warning.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_header--primary--font-family\": {\n        \"name\": \"messaging.header.primary.fontFamily\",\n        \"derived\": \"--now-messaging--font-family\"\n    },\n    \"--now-messaging_header--primary--font-style\": {\n        \"name\": \"messaging.header.primary.fontStyle\",\n        \"derived\": \"--now-messaging--font-style\"\n    },\n    \"--now-messaging_header--primary--font-weight\": {\n        \"name\": \"messaging.header.primary.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-messaging_header--primary--text-transform\": {\n        \"name\": \"messaging.header.primary.textTransform\",\n        \"derived\": \"--now-messaging--text-transform\"\n    },\n    \"--now-messaging_icon--primary_critical--color\": {\n        \"name\": \"messaging.icon.primary.critical.color\",\n        \"derived\": \"--now-messaging_icon--primary--color\"\n    },\n    \"--now-messaging_icon--primary_high--color\": {\n        \"name\": \"messaging.icon.primary.high.color\",\n        \"derived\": \"--now-messaging_icon--primary--color\"\n    },\n    \"--now-messaging_icon--primary_info--color\": {\n        \"name\": \"messaging.icon.primary.info.color\",\n        \"derived\": \"--now-messaging_icon--primary--color\"\n    },\n    \"--now-messaging_icon--primary_low--color\": {\n        \"name\": \"messaging.icon.primary.low.color\",\n        \"derived\": \"--now-messaging_icon--primary--color\"\n    },\n    \"--now-messaging_icon--primary_moderate--color\": {\n        \"name\": \"messaging.icon.primary.moderate.color\",\n        \"derived\": \"--now-messaging_icon--primary--color\"\n    },\n    \"--now-messaging_icon--primary_positive--color\": {\n        \"name\": \"messaging.icon.primary.positive.color\",\n        \"derived\": \"--now-messaging_icon--primary--color\"\n    },\n    \"--now-messaging_icon--primary_warning--color\": {\n        \"name\": \"messaging.icon.primary.warning.color\",\n        \"derived\": \"--now-messaging_icon--primary--color\"\n    },\n    \"--now-messaging_icon--primary--color\": {\n        \"name\": \"messaging.icon.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-messaging_icon--secondary--color\": {\n        \"name\": \"messaging.icon.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-messaging_icon--tertiary--color\": {\n        \"name\": \"messaging.icon.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-messaging_label--primary--color\": {\n        \"name\": \"messaging.label.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-messaging_label--secondary--color\": {\n        \"name\": \"messaging.label.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-messaging_label--tertiary--color\": {\n        \"name\": \"messaging.label.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-messaging_link--primary--color\": {\n        \"name\": \"messaging.link.primary.color\",\n        \"derived\": \"--now-color--link-3\"\n    },\n    \"--now-messaging_link--primary--color--active\": {\n        \"name\": \"messaging.link.primary.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-messaging_link--primary--color--hover\": {\n        \"name\": \"messaging.link.primary.color.hover\",\n        \"derived\": \"--now-color--link-4\"\n    },\n    \"--now-messaging_message--primary_critical--color\": {\n        \"name\": \"messaging.message.primary.critical.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_message--primary_high--color\": {\n        \"name\": \"messaging.message.primary.high.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_message--primary_info--color\": {\n        \"name\": \"messaging.message.primary.info.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_message--primary_low--color\": {\n        \"name\": \"messaging.message.primary.low.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_message--primary_moderate--color\": {\n        \"name\": \"messaging.message.primary.moderate.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_message--primary_positive--color\": {\n        \"name\": \"messaging.message.primary.positive.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_message--primary_warning--color\": {\n        \"name\": \"messaging.message.primary.warning.color\",\n        \"derived\": \"--now-messaging_label--primary--color\"\n    },\n    \"--now-messaging_message--primary--font-family\": {\n        \"name\": \"messaging.message.primary.fontFamily\",\n        \"derived\": \"--now-messaging--font-family\"\n    },\n    \"--now-messaging_message--primary--font-style\": {\n        \"name\": \"messaging.message.primary.fontStyle\",\n        \"derived\": \"--now-messaging--font-style\"\n    },\n    \"--now-messaging_message--primary--font-weight\": {\n        \"name\": \"messaging.message.primary.fontWeight\",\n        \"derived\": \"--now-messaging--font-weight\"\n    },\n    \"--now-messaging_message--primary--text-transform\": {\n        \"name\": \"messaging.message.primary.textTransform\",\n        \"derived\": \"--now-messaging--text-transform\"\n    },\n    \"--now-messaging_progress-bar_label--primary_critical--color\": {\n        \"name\": \"messaging.progressBar.label.primary.critical.color\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-messaging_progress-bar_label--primary_high--color\": {\n        \"name\": \"messaging.progressBar.label.primary.high.color\",\n        \"derived\": \"--now-color_alert--high-4\"\n    },\n    \"--now-messaging_progress-bar_label--primary_info--color\": {\n        \"name\": \"messaging.progressBar.label.primary.info.color\",\n        \"derived\": \"--now-color_alert--info-4\"\n    },\n    \"--now-messaging_progress-bar_label--primary_low--color\": {\n        \"name\": \"messaging.progressBar.label.primary.low.color\",\n        \"derived\": \"--now-color_alert--low-4\"\n    },\n    \"--now-messaging_progress-bar_label--primary_moderate--color\": {\n        \"name\": \"messaging.progressBar.label.primary.moderate.color\",\n        \"derived\": \"--now-color_alert--moderate-4\"\n    },\n    \"--now-messaging_progress-bar_label--primary_positive--color\": {\n        \"name\": \"messaging.progressBar.label.primary.positive.color\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-messaging_progress-bar_label--primary_warning--color\": {\n        \"name\": \"messaging.progressBar.label.primary.warning.color\",\n        \"derived\": \"--now-color_alert--warning-5\"\n    },\n    \"--now-messaging_progress-bar--primary_critical--background-color\": {\n        \"name\": \"messaging.progressBar.primary.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-4\"\n    },\n    \"--now-messaging_progress-bar--primary_high--background-color\": {\n        \"name\": \"messaging.progressBar.primary.high.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-4\"\n    },\n    \"--now-messaging_progress-bar--primary_info--background-color\": {\n        \"name\": \"messaging.progressBar.primary.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-4\"\n    },\n    \"--now-messaging_progress-bar--primary_low--background-color\": {\n        \"name\": \"messaging.progressBar.primary.low.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-4\"\n    },\n    \"--now-messaging_progress-bar--primary_moderate--background-color\": {\n        \"name\": \"messaging.progressBar.primary.moderate.backgroundColor\",\n        \"derived\": \"--now-color_alert--moderate-4\"\n    },\n    \"--now-messaging_progress-bar--primary_positive--background-color\": {\n        \"name\": \"messaging.progressBar.primary.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-4\"\n    },\n    \"--now-messaging_progress-bar--primary_warning--background-color\": {\n        \"name\": \"messaging.progressBar.primary.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-5\"\n    },\n    \"--now-messaging--primary_critical--background-color\": {\n        \"name\": \"messaging.primary.critical.backgroundColor\",\n        \"derived\": \"--now-color_alert--critical-0\"\n    },\n    \"--now-messaging--primary_critical--border-color\": {\n        \"name\": \"messaging.primary.critical.borderColor\",\n        \"derived\": \"--now-color_alert--critical-1\"\n    },\n    \"--now-messaging--primary_high--background-color\": {\n        \"name\": \"messaging.primary.high.backgroundColor\",\n        \"derived\": \"--now-color_alert--high-0\"\n    },\n    \"--now-messaging--primary_high--border-color\": {\n        \"name\": \"messaging.primary.high.borderColor\",\n        \"derived\": \"--now-color_alert--high-1\"\n    },\n    \"--now-messaging--primary_info--background-color\": {\n        \"name\": \"messaging.primary.info.backgroundColor\",\n        \"derived\": \"--now-color_alert--info-0\"\n    },\n    \"--now-messaging--primary_info--border-color\": {\n        \"name\": \"messaging.primary.info.borderColor\",\n        \"derived\": \"--now-color_alert--info-1\"\n    },\n    \"--now-messaging--primary_low--background-color\": {\n        \"name\": \"messaging.primary.low.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-0\"\n    },\n    \"--now-messaging--primary_low--border-color\": {\n        \"name\": \"messaging.primary.low.borderColor\",\n        \"derived\": \"--now-color_alert--low-1\"\n    },\n    \"--now-messaging--primary_moderate--background-color\": {\n        \"name\": \"messaging.primary.moderate.backgroundColor\",\n        \"derived\": \"--now-color_alert--moderate-0\"\n    },\n    \"--now-messaging--primary_moderate--border-color\": {\n        \"name\": \"messaging.primary.moderate.borderColor\",\n        \"derived\": \"--now-color_alert--moderate-1\"\n    },\n    \"--now-messaging--primary_positive--background-color\": {\n        \"name\": \"messaging.primary.positive.backgroundColor\",\n        \"derived\": \"--now-color_alert--positive-0\"\n    },\n    \"--now-messaging--primary_positive--border-color\": {\n        \"name\": \"messaging.primary.positive.borderColor\",\n        \"derived\": \"--now-color_alert--positive-1\"\n    },\n    \"--now-messaging--primary_warning--background-color\": {\n        \"name\": \"messaging.primary.warning.backgroundColor\",\n        \"derived\": \"--now-color_alert--warning-0\"\n    },\n    \"--now-messaging--primary_warning--border-color\": {\n        \"name\": \"messaging.primary.warning.borderColor\",\n        \"derived\": \"--now-color_alert--warning-1\"\n    },\n    \"--now-messaging-controller_action_label--color\": {\n        \"name\": \"messagingController.action.label.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging-controller_action_label--color--active\": {\n        \"name\": \"messagingController.action.label.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging-controller_action_label--color--hover\": {\n        \"name\": \"messagingController.action.label.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging-controller_action--background-color\": {\n        \"name\": \"messagingController.action.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging-controller_action--background-color--active\": {\n        \"name\": \"messagingController.action.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging-controller_action--background-color--hover\": {\n        \"name\": \"messagingController.action.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging-controller_action--background-color-alpha\": {\n        \"name\": \"messagingController.action.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging-controller_action--background-color-alpha--active\": {\n        \"name\": \"messagingController.action.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging-controller_action--background-color-alpha--hover\": {\n        \"name\": \"messagingController.action.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging-controller_action--border-color\": {\n        \"name\": \"messagingController.action.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging-controller_action--border-color--active\": {\n        \"name\": \"messagingController.action.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging-controller_action--border-color--hover\": {\n        \"name\": \"messagingController.action.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging-controller_action--border-color-alpha\": {\n        \"name\": \"messagingController.action.borderColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha\"\n    },\n    \"--now-messaging-controller_action--border-color-alpha--active\": {\n        \"name\": \"messagingController.action.borderColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--active\"\n    },\n    \"--now-messaging-controller_action--border-color-alpha--hover\": {\n        \"name\": \"messagingController.action.borderColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color-alpha--hover\"\n    },\n    \"--now-messaging-controller_toggle_label--color\": {\n        \"name\": \"messagingController.toggle.label.color\",\n        \"derived\": \"--now-messaging_action_label--primary--color\"\n    },\n    \"--now-messaging-controller_toggle_label--color--active\": {\n        \"name\": \"messagingController.toggle.label.color.active\",\n        \"derived\": \"--now-messaging_action_label--primary--color--active\"\n    },\n    \"--now-messaging-controller_toggle_label--color--hover\": {\n        \"name\": \"messagingController.toggle.label.color.hover\",\n        \"derived\": \"--now-messaging_action_label--primary--color--hover\"\n    },\n    \"--now-messaging-controller_toggle--background-color\": {\n        \"name\": \"messagingController.toggle.backgroundColor\",\n        \"derived\": \"--now-messaging_action--primary--background-color\"\n    },\n    \"--now-messaging-controller_toggle--background-color--active\": {\n        \"name\": \"messagingController.toggle.backgroundColor.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color--active\"\n    },\n    \"--now-messaging-controller_toggle--background-color--hover\": {\n        \"name\": \"messagingController.toggle.backgroundColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color--hover\"\n    },\n    \"--now-messaging-controller_toggle--background-color-alpha\": {\n        \"name\": \"messagingController.toggle.backgroundColorAlpha\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha\"\n    },\n    \"--now-messaging-controller_toggle--background-color-alpha--active\": {\n        \"name\": \"messagingController.toggle.backgroundColorAlpha.active\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--active\"\n    },\n    \"--now-messaging-controller_toggle--background-color-alpha--hover\": {\n        \"name\": \"messagingController.toggle.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-messaging_action--primary--background-color-alpha--hover\"\n    },\n    \"--now-messaging-controller_toggle--border-color\": {\n        \"name\": \"messagingController.toggle.borderColor\",\n        \"derived\": \"--now-messaging_action--primary--border-color\"\n    },\n    \"--now-messaging-controller_toggle--border-color--active\": {\n        \"name\": \"messagingController.toggle.borderColor.active\",\n        \"derived\": \"--now-messaging_action--primary--border-color--active\"\n    },\n    \"--now-messaging-controller_toggle--border-color--hover\": {\n        \"name\": \"messagingController.toggle.borderColor.hover\",\n        \"derived\": \"--now-messaging_action--primary--border-color--hover\"\n    },\n    \"--now-messaging-controller_toggle--border-radius\": {\n        \"name\": \"messagingController.toggle.borderRadius\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-radius\"\n    },\n    \"--now-messaging-controller_toggle--border-width\": {\n        \"name\": \"messagingController.toggle.borderWidth\",\n        \"derived\": \"--now-messaging_action--primary_bare--border-width\"\n    },\n    \"--now-messaging-controller--background-color\": {\n        \"name\": \"messagingController.backgroundColor\",\n        \"derived\": \"--now-color_alert--low-0\"\n    },\n    \"--now-messaging-controller--border-color\": {\n        \"name\": \"messagingController.borderColor\",\n        \"derived\": \"--now-color_alert--low-1\"\n    },\n    \"--now-messaging-controller--border-radius\": {\n        \"name\": \"messagingController.borderRadius\",\n        \"derived\": \"--now-messaging--border-radius\"\n    },\n    \"--now-messaging-controller--border-width\": {\n        \"name\": \"messagingController.borderWidth\",\n        \"derived\": \"--now-messaging--border-width\"\n    },\n    \"--now-messaging-controller--font-family\": {\n        \"name\": \"messagingController.fontFamily\",\n        \"derived\": \"--now-messaging--font-family\"\n    },\n    \"--now-messaging-controller--font-style\": {\n        \"name\": \"messagingController.fontStyle\",\n        \"derived\": \"--now-messaging--font-style\"\n    },\n    \"--now-messaging-controller--font-weight\": {\n        \"name\": \"messagingController.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-messaging-controller--text-transform\": {\n        \"name\": \"messagingController.textTransform\",\n        \"derived\": \"--now-messaging--text-transform\"\n    },\n    \"--now-navigation--primary--color\": {\n        \"name\": \"navigation.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-navigation--secondary--color\": {\n        \"name\": \"navigation.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-navigation--tertiary--color\": {\n        \"name\": \"navigation.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-navigation-page_tabs_container--primary--background-color\": {\n        \"name\": \"navigationPage.tabs.container.primary.backgroundColor\",\n        \"derived\": \"--now-navigation-page_tabs--primary--background-color\"\n    },\n    \"--now-navigation-page_tabs_container--primary--border-start-end-radius\": {\n        \"name\": \"navigationPage.tabs.container.primary.borderStartEndRadius\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-page_tabs_container--primary--border-start-start-radius\": {\n        \"name\": \"navigationPage.tabs.container.primary.borderStartStartRadius\",\n        \"initial\": \"8px\"\n    },\n    \"--now-navigation-page_tabs_container--secondary--background-color\": {\n        \"name\": \"navigationPage.tabs.container.secondary.backgroundColor\",\n        \"derived\": \"--now-navigation-page_tabs--secondary--background-color\"\n    },\n    \"--now-navigation-page_tabs_parent--primary--background-color\": {\n        \"name\": \"navigationPage.tabs.parent.primary.backgroundColor\",\n        \"derived\": \"--now-color_background--secondary\"\n    },\n    \"--now-navigation-page_tabs--primary--background-color\": {\n        \"name\": \"navigationPage.tabs.primary.backgroundColor\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-navigation-page_tabs--primary--background-color--hover\": {\n        \"name\": \"navigationPage.tabs.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-navigation-page_tabs--primary--background-color--selected\": {\n        \"name\": \"navigationPage.tabs.primary.backgroundColor.selected\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-page_tabs--primary--border-start-end-radius\": {\n        \"name\": \"navigationPage.tabs.primary.borderStartEndRadius\",\n        \"initial\": \"4px\"\n    },\n    \"--now-navigation-page_tabs--primary--border-start-start-radius\": {\n        \"name\": \"navigationPage.tabs.primary.borderStartStartRadius\",\n        \"initial\": \"4px\"\n    },\n    \"--now-navigation-page_tabs--secondary--background-color\": {\n        \"name\": \"navigationPage.tabs.secondary.backgroundColor\",\n        \"derived\": \"--now-color_background--secondary\"\n    },\n    \"--now-navigation-page_tabs--secondary--background-color--hover\": {\n        \"name\": \"navigationPage.tabs.secondary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-0\"\n    },\n    \"--now-navigation-page_tabs--secondary--background-color--selected\": {\n        \"name\": \"navigationPage.tabs.secondary.backgroundColor.selected\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-page_tabs--secondary--border-color--selected\": {\n        \"name\": \"navigationPage.tabs.secondary.borderColor.selected\",\n        \"derived\": \"--now-color_divider--primary\"\n    },\n    \"--now-navigation-page_tabs--secondary--border-start-end-radius\": {\n        \"name\": \"navigationPage.tabs.secondary.borderStartEndRadius\",\n        \"initial\": \"4px\"\n    },\n    \"--now-navigation-page_tabs--secondary--border-start-start-radius\": {\n        \"name\": \"navigationPage.tabs.secondary.borderStartStartRadius\",\n        \"initial\": \"4px\"\n    },\n    \"--now-navigation-page_tabs--secondary--border-width--selected\": {\n        \"name\": \"navigationPage.tabs.secondary.borderWidth.selected\",\n        \"initial\": \"1px\"\n    },\n    \"--now-navigation-path_dropdown--background-color--active\": {\n        \"name\": \"navigationPath.dropdown.backgroundColor.active\",\n        \"derived\": \"--now-color_background--tertiary-actionable\"\n    },\n    \"--now-navigation-path_dropdown--background-color--hover\": {\n        \"name\": \"navigationPath.dropdown.backgroundColor.hover\",\n        \"derived\": \"--now-color_background--tertiary-actionable\"\n    },\n    \"--now-navigation-path_dropdown--background-color-alpha--active\": {\n        \"name\": \"navigationPath.dropdown.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-navigation-path_dropdown--background-color-alpha--hover\": {\n        \"name\": \"navigationPath.dropdown.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-navigation-path_dropdown--color\": {\n        \"name\": \"navigationPath.dropdown.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-path_dropdown--color--active\": {\n        \"name\": \"navigationPath.dropdown.color.active\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-path_dropdown--color--hover\": {\n        \"name\": \"navigationPath.dropdown.color.hover\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-path_icon--color\": {\n        \"name\": \"navigationPath.icon.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-path_icon--color--current\": {\n        \"name\": \"navigationPath.icon.color.current\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-path_icon--color--hover\": {\n        \"name\": \"navigationPath.icon.color.hover\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-path_label--color\": {\n        \"name\": \"navigationPath.label.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-path_label--color--current\": {\n        \"name\": \"navigationPath.label.color.current\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-path_label--color--hover\": {\n        \"name\": \"navigationPath.label.color.hover\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-path--background-color\": {\n        \"name\": \"navigationPath.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-path--background-color--current\": {\n        \"name\": \"navigationPath.backgroundColor.current\",\n        \"derived\": \"--now-navigation-path--background-color\"\n    },\n    \"--now-navigation-path--background-color--hover\": {\n        \"name\": \"navigationPath.backgroundColor.hover\",\n        \"derived\": \"--now-navigation-path--background-color\"\n    },\n    \"--now-navigation-path--background-color-alpha\": {\n        \"name\": \"navigationPath.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-path--background-color-alpha--current\": {\n        \"name\": \"navigationPath.backgroundColorAlpha.current\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-path--background-color-alpha--hover\": {\n        \"name\": \"navigationPath.backgroundColorAlpha.hover\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-path--font-family\": {\n        \"name\": \"navigationPath.fontFamily\",\n        \"derived\": \"--now-actionable--font-family\"\n    },\n    \"--now-navigation-path--font-style\": {\n        \"name\": \"navigationPath.fontStyle\",\n        \"derived\": \"--now-actionable--font-style\"\n    },\n    \"--now-navigation-path--font-weight\": {\n        \"name\": \"navigationPath.fontWeight\",\n        \"derived\": \"--now-actionable--font-weight\"\n    },\n    \"--now-navigation-path--font-weight--current\": {\n        \"name\": \"navigationPath.fontWeight.current\",\n        \"initial\": \"bold\"\n    },\n    \"--now-navigation-path--text-transform\": {\n        \"name\": \"navigationPath.textTransform\",\n        \"derived\": \"--now-actionable--text-transform\"\n    },\n    \"--now-navigation-progress_divider--color\": {\n        \"name\": \"navigationProgress.divider.color\",\n        \"derived\": \"--now-color_divider--tertiary\"\n    },\n    \"--now-navigation-progress_icon--current--color\": {\n        \"name\": \"navigationProgress.icon.current.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-progress_icon--current--color--active\": {\n        \"name\": \"navigationProgress.icon.current.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress_icon--current--color--hover\": {\n        \"name\": \"navigationProgress.icon.current.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress_icon--done--color\": {\n        \"name\": \"navigationProgress.icon.done.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-progress_icon--done--color--active\": {\n        \"name\": \"navigationProgress.icon.done.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress_icon--done--color--hover\": {\n        \"name\": \"navigationProgress.icon.done.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress_icon--none--color\": {\n        \"name\": \"navigationProgress.icon.none.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress_icon--none--color--active\": {\n        \"name\": \"navigationProgress.icon.none.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress_icon--none--color--hover\": {\n        \"name\": \"navigationProgress.icon.none.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress_icon--partial--color\": {\n        \"name\": \"navigationProgress.icon.partial.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress_icon--partial--color--active\": {\n        \"name\": \"navigationProgress.icon.partial.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress_icon--partial--color--hover\": {\n        \"name\": \"navigationProgress.icon.partial.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress_label--current--color\": {\n        \"name\": \"navigationProgress.label.current.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-progress_label--current--color--active\": {\n        \"name\": \"navigationProgress.label.current.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress_label--current--color--hover\": {\n        \"name\": \"navigationProgress.label.current.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress_label--current--font-weight\": {\n        \"name\": \"navigationProgress.label.current.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-navigation-progress_label--done--color\": {\n        \"name\": \"navigationProgress.label.done.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-progress_label--done--color--active\": {\n        \"name\": \"navigationProgress.label.done.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress_label--done--color--hover\": {\n        \"name\": \"navigationProgress.label.done.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress_label--done--font-weight\": {\n        \"name\": \"navigationProgress.label.done.fontWeight\",\n        \"derived\": \"--now-navigation-progress--font-weight\"\n    },\n    \"--now-navigation-progress_label--font-family\": {\n        \"name\": \"navigationProgress.label.fontFamily\",\n        \"derived\": \"--now-navigation-progress--font-family\"\n    },\n    \"--now-navigation-progress_label--font-style\": {\n        \"name\": \"navigationProgress.label.fontStyle\",\n        \"derived\": \"--now-navigation-progress--font-style\"\n    },\n    \"--now-navigation-progress_label--font-weight\": {\n        \"name\": \"navigationProgress.label.fontWeight\",\n        \"derived\": \"--now-navigation-progress--font-weight\"\n    },\n    \"--now-navigation-progress_label--none--color\": {\n        \"name\": \"navigationProgress.label.none.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-progress_label--none--color--active\": {\n        \"name\": \"navigationProgress.label.none.color.active\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress_label--none--color--hover\": {\n        \"name\": \"navigationProgress.label.none.color.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress_label--none--font-weight\": {\n        \"name\": \"navigationProgress.label.none.fontWeight\",\n        \"derived\": \"--now-navigation-progress--font-weight\"\n    },\n    \"--now-navigation-progress_label--partial--color\": {\n        \"name\": \"navigationProgress.label.partial.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-progress_label--partial--color--active\": {\n        \"name\": \"navigationProgress.label.partial.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress_label--partial--color--hover\": {\n        \"name\": \"navigationProgress.label.partial.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress_label--partial--font-weight\": {\n        \"name\": \"navigationProgress.label.partial.fontWeight\",\n        \"derived\": \"--now-navigation-progress--font-weight\"\n    },\n    \"--now-navigation-progress_label--text-transform\": {\n        \"name\": \"navigationProgress.label.textTransform\",\n        \"derived\": \"--now-navigation-progress--text-transform\"\n    },\n    \"--now-navigation-progress_sublabel--current--color\": {\n        \"name\": \"navigationProgress.sublabel.current.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-progress_sublabel--current--color--active\": {\n        \"name\": \"navigationProgress.sublabel.current.color.active\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-navigation-progress_sublabel--current--color--hover\": {\n        \"name\": \"navigationProgress.sublabel.current.color.hover\",\n        \"derived\": \"--now-navigation-progress_sublabel--current--color\"\n    },\n    \"--now-navigation-progress_sublabel--done--color\": {\n        \"name\": \"navigationProgress.sublabel.done.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-progress_sublabel--done--color--active\": {\n        \"name\": \"navigationProgress.sublabel.done.color.active\",\n        \"derived\": \"--now-navigation-progress_sublabel--done--color\"\n    },\n    \"--now-navigation-progress_sublabel--done--color--hover\": {\n        \"name\": \"navigationProgress.sublabel.done.color.hover\",\n        \"derived\": \"--now-navigation-progress_sublabel--done--color\"\n    },\n    \"--now-navigation-progress_sublabel--font-family\": {\n        \"name\": \"navigationProgress.sublabel.fontFamily\",\n        \"derived\": \"--now-navigation-progress--font-family\"\n    },\n    \"--now-navigation-progress_sublabel--font-style\": {\n        \"name\": \"navigationProgress.sublabel.fontStyle\",\n        \"derived\": \"--now-navigation-progress--font-style\"\n    },\n    \"--now-navigation-progress_sublabel--font-weight\": {\n        \"name\": \"navigationProgress.sublabel.fontWeight\",\n        \"derived\": \"--now-navigation-progress--font-weight\"\n    },\n    \"--now-navigation-progress_sublabel--none--color\": {\n        \"name\": \"navigationProgress.sublabel.none.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-progress_sublabel--none--color--active\": {\n        \"name\": \"navigationProgress.sublabel.none.color.active\",\n        \"derived\": \"--now-navigation-progress_sublabel--none--color\"\n    },\n    \"--now-navigation-progress_sublabel--none--color--hover\": {\n        \"name\": \"navigationProgress.sublabel.none.color.hover\",\n        \"derived\": \"--now-navigation-progress_sublabel--none--color\"\n    },\n    \"--now-navigation-progress_sublabel--partial--color\": {\n        \"name\": \"navigationProgress.sublabel.partial.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-progress_sublabel--partial--color--active\": {\n        \"name\": \"navigationProgress.sublabel.partial.color.active\",\n        \"derived\": \"--now-navigation-progress_sublabel--partial--color\"\n    },\n    \"--now-navigation-progress_sublabel--partial--color--hover\": {\n        \"name\": \"navigationProgress.sublabel.partial.color.hover\",\n        \"derived\": \"--now-navigation-progress_sublabel--partial--color\"\n    },\n    \"--now-navigation-progress_sublabel--text-transform\": {\n        \"name\": \"navigationProgress.sublabel.textTransform\",\n        \"derived\": \"--now-navigation-progress--text-transform\"\n    },\n    \"--now-navigation-progress--border-width\": {\n        \"name\": \"navigationProgress.borderWidth\",\n        \"initial\": \"2px\"\n    },\n    \"--now-navigation-progress--current--background-color\": {\n        \"name\": \"navigationProgress.current.backgroundColor\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress--current--background-color--active\": {\n        \"name\": \"navigationProgress.current.backgroundColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress--current--background-color--hover\": {\n        \"name\": \"navigationProgress.current.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress--current--border-color\": {\n        \"name\": \"navigationProgress.current.borderColor\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress--current--border-color--active\": {\n        \"name\": \"navigationProgress.current.borderColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress--current--border-color--hover\": {\n        \"name\": \"navigationProgress.current.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress--current--border-width\": {\n        \"name\": \"navigationProgress.current.borderWidth\",\n        \"derived\": \"--now-navigation-progress--border-width\"\n    },\n    \"--now-navigation-progress--current--color\": {\n        \"name\": \"navigationProgress.current.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-navigation-progress--current--color--active\": {\n        \"name\": \"navigationProgress.current.color.active\",\n        \"derived\": \"--now-navigation-progress--current--color\"\n    },\n    \"--now-navigation-progress--current--color--hover\": {\n        \"name\": \"navigationProgress.current.color.hover\",\n        \"derived\": \"--now-navigation-progress--current--color\"\n    },\n    \"--now-navigation-progress--current--font-weight\": {\n        \"name\": \"navigationProgress.current.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-navigation-progress--done--background-color\": {\n        \"name\": \"navigationProgress.done.backgroundColor\",\n        \"derived\": \"--now-color_selection--primary-0\"\n    },\n    \"--now-navigation-progress--done--background-color--active\": {\n        \"name\": \"navigationProgress.done.backgroundColor.active\",\n        \"derived\": \"--now-navigation-progress--done--background-color\"\n    },\n    \"--now-navigation-progress--done--background-color--hover\": {\n        \"name\": \"navigationProgress.done.backgroundColor.hover\",\n        \"derived\": \"--now-navigation-progress--done--background-color\"\n    },\n    \"--now-navigation-progress--done--border-color\": {\n        \"name\": \"navigationProgress.done.borderColor\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress--done--border-color--active\": {\n        \"name\": \"navigationProgress.done.borderColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress--done--border-color--hover\": {\n        \"name\": \"navigationProgress.done.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress--done--border-width\": {\n        \"name\": \"navigationProgress.done.borderWidth\",\n        \"derived\": \"--now-navigation-progress--border-width\"\n    },\n    \"--now-navigation-progress--done--color\": {\n        \"name\": \"navigationProgress.done.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress--done--color--active\": {\n        \"name\": \"navigationProgress.done.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress--done--color--hover\": {\n        \"name\": \"navigationProgress.done.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress--done--font-weight\": {\n        \"name\": \"navigationProgress.done.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-navigation-progress--font-family\": {\n        \"name\": \"navigationProgress.fontFamily\",\n        \"derived\": \"--now-navigation--font-family\"\n    },\n    \"--now-navigation-progress--font-style\": {\n        \"name\": \"navigationProgress.fontStyle\",\n        \"derived\": \"--now-navigation--font-style\"\n    },\n    \"--now-navigation-progress--font-weight\": {\n        \"name\": \"navigationProgress.fontWeight\",\n        \"derived\": \"--now-navigation--font-weight\"\n    },\n    \"--now-navigation-progress--none--background-color\": {\n        \"name\": \"navigationProgress.none.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-progress--none--background-color--active\": {\n        \"name\": \"navigationProgress.none.backgroundColor.active\",\n        \"derived\": \"--now-navigation-progress--none--background-color\"\n    },\n    \"--now-navigation-progress--none--background-color--hover\": {\n        \"name\": \"navigationProgress.none.backgroundColor.hover\",\n        \"derived\": \"--now-navigation-progress--none--background-color\"\n    },\n    \"--now-navigation-progress--none--border-color\": {\n        \"name\": \"navigationProgress.none.borderColor\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-progress--none--border-color--active\": {\n        \"name\": \"navigationProgress.none.borderColor.active\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress--none--border-color--hover\": {\n        \"name\": \"navigationProgress.none.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress--none--border-width\": {\n        \"name\": \"navigationProgress.none.borderWidth\",\n        \"initial\": \"1px\"\n    },\n    \"--now-navigation-progress--none--color\": {\n        \"name\": \"navigationProgress.none.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-progress--none--color--active\": {\n        \"name\": \"navigationProgress.none.color.active\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress--none--color--hover\": {\n        \"name\": \"navigationProgress.none.color.hover\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress--none--font-weight\": {\n        \"name\": \"navigationProgress.none.fontWeight\",\n        \"derived\": \"--now-navigation-progress--font-weight\"\n    },\n    \"--now-navigation-progress--opacity--disabled\": {\n        \"name\": \"navigationProgress.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-navigation-progress--partial--background-color\": {\n        \"name\": \"navigationProgress.partial.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-progress--partial--background-color--active\": {\n        \"name\": \"navigationProgress.partial.backgroundColor.active\",\n        \"derived\": \"--now-navigation-progress--partial--background-color\"\n    },\n    \"--now-navigation-progress--partial--background-color--hover\": {\n        \"name\": \"navigationProgress.partial.backgroundColor.hover\",\n        \"derived\": \"--now-navigation-progress--partial--background-color\"\n    },\n    \"--now-navigation-progress--partial--border-color\": {\n        \"name\": \"navigationProgress.partial.borderColor\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress--partial--border-color--active\": {\n        \"name\": \"navigationProgress.partial.borderColor.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress--partial--border-color--hover\": {\n        \"name\": \"navigationProgress.partial.borderColor.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress--partial--border-width\": {\n        \"name\": \"navigationProgress.partial.borderWidth\",\n        \"derived\": \"--now-navigation-progress--border-width\"\n    },\n    \"--now-navigation-progress--partial--color\": {\n        \"name\": \"navigationProgress.partial.color\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-progress--partial--color--active\": {\n        \"name\": \"navigationProgress.partial.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-progress--partial--color--hover\": {\n        \"name\": \"navigationProgress.partial.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-progress--partial--font-weight\": {\n        \"name\": \"navigationProgress.partial.fontWeight\",\n        \"initial\": \"bold\"\n    },\n    \"--now-navigation-progress--text-transform\": {\n        \"name\": \"navigationProgress.textTransform\",\n        \"derived\": \"--now-navigation--text-transform\"\n    },\n    \"--now-navigation-tabs_container--background--border-radius\": {\n        \"name\": \"navigationTabs.container.background.borderRadius\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs_container--background--border-width\": {\n        \"name\": \"navigationTabs.container.background.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs_container--background-color\": {\n        \"name\": \"navigationTabs.container.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-tabs_container--background-color-alpha\": {\n        \"name\": \"navigationTabs.container.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs_divider--color\": {\n        \"name\": \"navigationTabs.divider.color\",\n        \"derived\": \"--now-color_divider--secondary\"\n    },\n    \"--now-navigation-tabs_divider--width\": {\n        \"name\": \"navigationTabs.divider.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-navigation-tabs_icon--color\": {\n        \"name\": \"navigationTabs.icon.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-tabs_icon--color--active\": {\n        \"name\": \"navigationTabs.icon.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-tabs_icon--color--hover\": {\n        \"name\": \"navigationTabs.icon.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-tabs_icon--color--selected\": {\n        \"name\": \"navigationTabs.icon.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-tabs_label--color\": {\n        \"name\": \"navigationTabs.label.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-tabs_label--color--active\": {\n        \"name\": \"navigationTabs.label.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-tabs_label--color--hover\": {\n        \"name\": \"navigationTabs.label.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-tabs_label--color--selected\": {\n        \"name\": \"navigationTabs.label.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-tabs--background-color\": {\n        \"name\": \"navigationTabs.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-tabs--background-color--active\": {\n        \"name\": \"navigationTabs.backgroundColor.active\",\n        \"derived\": \"--now-navigation-tabs--background-color\"\n    },\n    \"--now-navigation-tabs--background-color--hover\": {\n        \"name\": \"navigationTabs.backgroundColor.hover\",\n        \"derived\": \"--now-navigation-tabs--background-color\"\n    },\n    \"--now-navigation-tabs--background-color--selected\": {\n        \"name\": \"navigationTabs.backgroundColor.selected\",\n        \"derived\": \"--now-navigation-tabs--background-color\"\n    },\n    \"--now-navigation-tabs--background-color-alpha\": {\n        \"name\": \"navigationTabs.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs--background-color-alpha--active\": {\n        \"name\": \"navigationTabs.backgroundColorAlpha.active\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs--background-color-alpha--hover\": {\n        \"name\": \"navigationTabs.backgroundColorAlpha.hover\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs--background-color-alpha--selected\": {\n        \"name\": \"navigationTabs.backgroundColorAlpha.selected\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs--font-family\": {\n        \"name\": \"navigationTabs.fontFamily\",\n        \"derived\": \"--now-navigation--font-family\"\n    },\n    \"--now-navigation-tabs--font-style\": {\n        \"name\": \"navigationTabs.fontStyle\",\n        \"derived\": \"--now-navigation--font-style\"\n    },\n    \"--now-navigation-tabs--font-style--selected\": {\n        \"name\": \"navigationTabs.fontStyle.selected\",\n        \"derived\": \"--now-navigation--font-style\"\n    },\n    \"--now-navigation-tabs--font-weight\": {\n        \"name\": \"navigationTabs.fontWeight\",\n        \"derived\": \"--now-navigation--font-weight\"\n    },\n    \"--now-navigation-tabs--font-weight--selected\": {\n        \"name\": \"navigationTabs.fontWeight.selected\",\n        \"derived\": \"--now-navigation--font-weight\"\n    },\n    \"--now-navigation-tabs--opacity--disabled\": {\n        \"name\": \"navigationTabs.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-navigation-tabs--selection--border-radius\": {\n        \"name\": \"navigationTabs.selection.borderRadius\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs--selection--border-width\": {\n        \"name\": \"navigationTabs.selection.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs--selection--border-width--active\": {\n        \"name\": \"navigationTabs.selection.borderWidth.active\",\n        \"initial\": \"2px\"\n    },\n    \"--now-navigation-tabs--selection--border-width--hover\": {\n        \"name\": \"navigationTabs.selection.borderWidth.hover\",\n        \"initial\": \"2px\"\n    },\n    \"--now-navigation-tabs--selection--border-width--selected\": {\n        \"name\": \"navigationTabs.selection.borderWidth.selected\",\n        \"initial\": \"2px\"\n    },\n    \"--now-navigation-tabs--selection--color\": {\n        \"name\": \"navigationTabs.selection.color\",\n        \"derived\": \"--now-color_divider--secondary\"\n    },\n    \"--now-navigation-tabs--selection--color--active\": {\n        \"name\": \"navigationTabs.selection.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-tabs--selection--color--hover\": {\n        \"name\": \"navigationTabs.selection.color.hover\",\n        \"derived\": \"--now-color_divider--secondary\"\n    },\n    \"--now-navigation-tabs--selection--color--selected\": {\n        \"name\": \"navigationTabs.selection.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-tabs--selection--color-alpha\": {\n        \"name\": \"navigationTabs.selection.colorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-navigation-tabs--selection--color-alpha--active\": {\n        \"name\": \"navigationTabs.selection.colorAlpha.active\",\n        \"initial\": \"1\"\n    },\n    \"--now-navigation-tabs--selection--color-alpha--hover\": {\n        \"name\": \"navigationTabs.selection.colorAlpha.hover\",\n        \"initial\": \"1\"\n    },\n    \"--now-navigation-tabs--selection--color-alpha--selected\": {\n        \"name\": \"navigationTabs.selection.colorAlpha.selected\",\n        \"initial\": \"1\"\n    },\n    \"--now-navigation-tabs--text-transform\": {\n        \"name\": \"navigationTabs.textTransform\",\n        \"derived\": \"--now-navigation--text-transform\"\n    },\n    \"--now-navigation-tabs--text-transform--selected\": {\n        \"name\": \"navigationTabs.textTransform.selected\",\n        \"derived\": \"--now-navigation--text-transform\"\n    },\n    \"--now-navigation-tabs-vertical_container_icon--background-color\": {\n        \"name\": \"navigationTabsVertical.container.icon.backgroundColor\",\n        \"derived\": \"--now-navigation-tabs-vertical_container--background-color\"\n    },\n    \"--now-navigation-tabs-vertical_container_icon--border-radius\": {\n        \"name\": \"navigationTabsVertical.container.icon.borderRadius\",\n        \"initial\": \"50%\"\n    },\n    \"--now-navigation-tabs-vertical_container_icon--border-width\": {\n        \"name\": \"navigationTabsVertical.container.icon.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs-vertical_container--background-color\": {\n        \"name\": \"navigationTabsVertical.container.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-tabs-vertical_container--background-color-alpha\": {\n        \"name\": \"navigationTabsVertical.container.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs-vertical_container--border-radius\": {\n        \"name\": \"navigationTabsVertical.container.borderRadius\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs-vertical_container--border-width\": {\n        \"name\": \"navigationTabsVertical.container.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs-vertical_divider--color\": {\n        \"name\": \"navigationTabsVertical.divider.color\",\n        \"derived\": \"--now-color_divider--secondary\"\n    },\n    \"--now-navigation-tabs-vertical_divider--width\": {\n        \"name\": \"navigationTabsVertical.divider.width\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs-vertical_icon--color\": {\n        \"name\": \"navigationTabsVertical.icon.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-tabs-vertical_icon--color--active\": {\n        \"name\": \"navigationTabsVertical.icon.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-tabs-vertical_icon--color--hover\": {\n        \"name\": \"navigationTabsVertical.icon.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-tabs-vertical_icon--color--selected\": {\n        \"name\": \"navigationTabsVertical.icon.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-tabs-vertical_label--color\": {\n        \"name\": \"navigationTabsVertical.label.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-tabs-vertical_label--color--active\": {\n        \"name\": \"navigationTabsVertical.label.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-tabs-vertical_label--color--hover\": {\n        \"name\": \"navigationTabsVertical.label.color.hover\",\n        \"derived\": \"--now-color_selection--primary-3\"\n    },\n    \"--now-navigation-tabs-vertical_label--color--selected\": {\n        \"name\": \"navigationTabsVertical.label.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-tabs-vertical--background-color\": {\n        \"name\": \"navigationTabsVertical.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-tabs-vertical--background-color--active\": {\n        \"name\": \"navigationTabsVertical.backgroundColor.active\",\n        \"derived\": \"--now-navigation-tabs-vertical--background-color\"\n    },\n    \"--now-navigation-tabs-vertical--background-color--hover\": {\n        \"name\": \"navigationTabsVertical.backgroundColor.hover\",\n        \"derived\": \"--now-navigation-tabs-vertical--background-color\"\n    },\n    \"--now-navigation-tabs-vertical--background-color--selected\": {\n        \"name\": \"navigationTabsVertical.backgroundColor.selected\",\n        \"derived\": \"--now-navigation-tabs-vertical--background-color\"\n    },\n    \"--now-navigation-tabs-vertical--background-color-alpha\": {\n        \"name\": \"navigationTabsVertical.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs-vertical--background-color-alpha--active\": {\n        \"name\": \"navigationTabsVertical.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--most\"\n    },\n    \"--now-navigation-tabs-vertical--background-color-alpha--hover\": {\n        \"name\": \"navigationTabsVertical.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--more\"\n    },\n    \"--now-navigation-tabs-vertical--background-color-alpha--selected\": {\n        \"name\": \"navigationTabsVertical.backgroundColorAlpha.selected\",\n        \"initial\": \"1\"\n    },\n    \"--now-navigation-tabs-vertical--font-family\": {\n        \"name\": \"navigationTabsVertical.fontFamily\",\n        \"derived\": \"--now-navigation--font-family\"\n    },\n    \"--now-navigation-tabs-vertical--font-style\": {\n        \"name\": \"navigationTabsVertical.fontStyle\",\n        \"derived\": \"--now-navigation--font-style\"\n    },\n    \"--now-navigation-tabs-vertical--font-style--selected\": {\n        \"name\": \"navigationTabsVertical.fontStyle.selected\",\n        \"derived\": \"--now-navigation--font-style\"\n    },\n    \"--now-navigation-tabs-vertical--font-weight\": {\n        \"name\": \"navigationTabsVertical.fontWeight\",\n        \"derived\": \"--now-navigation--font-weight\"\n    },\n    \"--now-navigation-tabs-vertical--font-weight--selected\": {\n        \"name\": \"navigationTabsVertical.fontWeight.selected\",\n        \"derived\": \"--now-navigation--font-weight\"\n    },\n    \"--now-navigation-tabs-vertical--opacity--disabled\": {\n        \"name\": \"navigationTabsVertical.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-navigation-tabs-vertical--selection--border-radius\": {\n        \"name\": \"navigationTabsVertical.selection.borderRadius\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs-vertical--selection--border-width\": {\n        \"name\": \"navigationTabsVertical.selection.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-navigation-tabs-vertical--selection--border-width--active\": {\n        \"name\": \"navigationTabsVertical.selection.borderWidth.active\",\n        \"initial\": \"2px\"\n    },\n    \"--now-navigation-tabs-vertical--selection--border-width--hover\": {\n        \"name\": \"navigationTabsVertical.selection.borderWidth.hover\",\n        \"initial\": \"2px\"\n    },\n    \"--now-navigation-tabs-vertical--selection--border-width--selected\": {\n        \"name\": \"navigationTabsVertical.selection.borderWidth.selected\",\n        \"initial\": \"2px\"\n    },\n    \"--now-navigation-tabs-vertical--selection--color\": {\n        \"name\": \"navigationTabsVertical.selection.color\",\n        \"derived\": \"--now-color_divider--secondary\"\n    },\n    \"--now-navigation-tabs-vertical--selection--color--active\": {\n        \"name\": \"navigationTabsVertical.selection.color.active\",\n        \"derived\": \"--now-color_selection--primary-4\"\n    },\n    \"--now-navigation-tabs-vertical--selection--color--hover\": {\n        \"name\": \"navigationTabsVertical.selection.color.hover\",\n        \"derived\": \"--now-navigation-tabs-vertical--selection--color\"\n    },\n    \"--now-navigation-tabs-vertical--selection--color--selected\": {\n        \"name\": \"navigationTabsVertical.selection.color.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-tabs-vertical--selection--color-alpha\": {\n        \"name\": \"navigationTabsVertical.selection.colorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-navigation-tabs-vertical--selection--color-alpha--active\": {\n        \"name\": \"navigationTabsVertical.selection.colorAlpha.active\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs-vertical--selection--color-alpha--hover\": {\n        \"name\": \"navigationTabsVertical.selection.colorAlpha.hover\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tabs-vertical--selection--color-alpha--selected\": {\n        \"name\": \"navigationTabsVertical.selection.colorAlpha.selected\",\n        \"initial\": \"1\"\n    },\n    \"--now-navigation-tabs-vertical--text-transform\": {\n        \"name\": \"navigationTabsVertical.textTransform\",\n        \"derived\": \"--now-navigation--text-transform\"\n    },\n    \"--now-navigation-tabs-vertical--text-transform--selected\": {\n        \"name\": \"navigationTabsVertical.textTransform.selected\",\n        \"derived\": \"--now-navigation--text-transform\"\n    },\n    \"--now-navigation-tree_divider--color\": {\n        \"name\": \"navigationTree.divider.color\",\n        \"derived\": \"--now-color_divider--tertiary\"\n    },\n    \"--now-navigation-tree_dragdrop--background-color\": {\n        \"name\": \"navigationTree.dragdrop.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-tree_dragdrop--color\": {\n        \"name\": \"navigationTree.dragdrop.color\",\n        \"derived\": \"--now-color_alert--info-2\"\n    },\n    \"--now-navigation-tree_drop-target-parent--border-color\": {\n        \"name\": \"navigationTree.dropTargetParent.borderColor\",\n        \"derived\": \"--now-color_alert--info-2\"\n    },\n    \"--now-navigation-tree_icon--color\": {\n        \"name\": \"navigationTree.icon.color\",\n        \"derived\": \"--now-navigation-tree_label--color\"\n    },\n    \"--now-navigation-tree_icon--color--error\": {\n        \"name\": \"navigationTree.icon.color.error\",\n        \"derived\": \"--now-color_alert--critical-2\"\n    },\n    \"--now-navigation-tree_icon--color--loading\": {\n        \"name\": \"navigationTree.icon.color.loading\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-navigation-tree_label--color\": {\n        \"name\": \"navigationTree.label.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-tree_label--color--error\": {\n        \"name\": \"navigationTree.label.color.error\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-tree_label--color--hover\": {\n        \"name\": \"navigationTree.label.color.hover\",\n        \"derived\": \"--now-navigation-tree_label--color\"\n    },\n    \"--now-navigation-tree_label--color--loading\": {\n        \"name\": \"navigationTree.label.color.loading\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-navigation-tree_label--color--selected\": {\n        \"name\": \"navigationTree.label.color.selected\",\n        \"derived\": \"--now-navigation-tree_label--color\"\n    },\n    \"--now-navigation-tree_label--color--selected-child\": {\n        \"name\": \"navigationTree.label.color.selectedChild\",\n        \"derived\": \"--now-navigation-tree_label--color\"\n    },\n    \"--now-navigation-tree_placeholder_icon--color\": {\n        \"name\": \"navigationTree.placeholder.icon.color\",\n        \"derived\": \"--now-navigation-tree_placeholder--color\"\n    },\n    \"--now-navigation-tree_placeholder--color\": {\n        \"name\": \"navigationTree.placeholder.color\",\n        \"derived\": \"--now-navigation--primary--color\"\n    },\n    \"--now-navigation-tree_placeholder--color--active\": {\n        \"name\": \"navigationTree.placeholder.color.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-navigation-tree_placeholder--color--hover\": {\n        \"name\": \"navigationTree.placeholder.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-navigation-tree_placeholder--color--selected\": {\n        \"name\": \"navigationTree.placeholder.color.selected\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-navigation-tree_placeholder--font-family\": {\n        \"name\": \"navigationTree.placeholder.fontFamily\",\n        \"derived\": \"--now-navigation--font-family\"\n    },\n    \"--now-navigation-tree_placeholder--font-style\": {\n        \"name\": \"navigationTree.placeholder.fontStyle\",\n        \"initial\": \"italic\"\n    },\n    \"--now-navigation-tree_placeholder--font-weight\": {\n        \"name\": \"navigationTree.placeholder.fontWeight\",\n        \"initial\": \"600\"\n    },\n    \"--now-navigation-tree_placeholder--text-transform\": {\n        \"name\": \"navigationTree.placeholder.textTransform\",\n        \"derived\": \"--now-navigation--text-transform\"\n    },\n    \"--now-navigation-tree_sublabel--color\": {\n        \"name\": \"navigationTree.sublabel.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-tree_sublabel--font-family\": {\n        \"name\": \"navigationTree.sublabel.fontFamily\",\n        \"derived\": \"--now-navigation--font-family\"\n    },\n    \"--now-navigation-tree_sublabel--font-style\": {\n        \"name\": \"navigationTree.sublabel.fontStyle\",\n        \"derived\": \"--now-navigation--font-style\"\n    },\n    \"--now-navigation-tree_sublabel--font-weight\": {\n        \"name\": \"navigationTree.sublabel.fontWeight\",\n        \"derived\": \"--now-navigation--font-weight\"\n    },\n    \"--now-navigation-tree_sublabel--text-transform\": {\n        \"name\": \"navigationTree.sublabel.textTransform\",\n        \"derived\": \"--now-navigation--text-transform\"\n    },\n    \"--now-navigation-tree_trigger-icon--background-color--active\": {\n        \"name\": \"navigationTree.triggerIcon.backgroundColor.active\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-navigation-tree_trigger-icon--background-color--hover\": {\n        \"name\": \"navigationTree.triggerIcon.backgroundColor.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-navigation-tree_trigger-icon--background-color-alpha--active\": {\n        \"name\": \"navigationTree.triggerIcon.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-navigation-tree_trigger-icon--background-color-alpha--hover\": {\n        \"name\": \"navigationTree.triggerIcon.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-navigation-tree_trigger-icon--color\": {\n        \"name\": \"navigationTree.triggerIcon.color\",\n        \"derived\": \"--now-navigation--tertiary--color\"\n    },\n    \"--now-navigation-tree_trigger-icon--color--active\": {\n        \"name\": \"navigationTree.triggerIcon.color.active\",\n        \"derived\": \"--now-navigation-tree_trigger-icon--color\"\n    },\n    \"--now-navigation-tree_trigger-icon--color--hover\": {\n        \"name\": \"navigationTree.triggerIcon.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-navigation-tree--background-color\": {\n        \"name\": \"navigationTree.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-navigation-tree--background-color--hover\": {\n        \"name\": \"navigationTree.backgroundColor.hover\",\n        \"derived\": \"--now-color_selection--primary-0\"\n    },\n    \"--now-navigation-tree--background-color--selected\": {\n        \"name\": \"navigationTree.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-0\"\n    },\n    \"--now-navigation-tree--background-color--selected-child\": {\n        \"name\": \"navigationTree.backgroundColor.selectedChild\",\n        \"derived\": \"--now-color--neutral-9\"\n    },\n    \"--now-navigation-tree--background-color-alpha\": {\n        \"name\": \"navigationTree.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-navigation-tree--background-color-alpha--hover\": {\n        \"name\": \"navigationTree.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-navigation-tree--background-color-alpha--selected\": {\n        \"name\": \"navigationTree.backgroundColorAlpha.selected\",\n        \"initial\": \"1\"\n    },\n    \"--now-navigation-tree--background-color-alpha--selected-child\": {\n        \"name\": \"navigationTree.backgroundColorAlpha.selectedChild\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-navigation-tree--font-family\": {\n        \"name\": \"navigationTree.fontFamily\",\n        \"derived\": \"--now-navigation--font-family\"\n    },\n    \"--now-navigation-tree--font-style\": {\n        \"name\": \"navigationTree.fontStyle\",\n        \"derived\": \"--now-navigation--font-style\"\n    },\n    \"--now-navigation-tree--font-weight\": {\n        \"name\": \"navigationTree.fontWeight\",\n        \"derived\": \"--now-navigation--font-weight\"\n    },\n    \"--now-navigation-tree--opacity--disabled\": {\n        \"name\": \"navigationTree.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-navigation-tree--selection--background-color--selected\": {\n        \"name\": \"navigationTree.selection.backgroundColor.selected\",\n        \"derived\": \"--now-color_selection--primary-2\"\n    },\n    \"--now-navigation-tree--selection--background-color--selected-child\": {\n        \"name\": \"navigationTree.selection.backgroundColor.selectedChild\",\n        \"derived\": \"--now-navigation-tree--selection--background-color--selected\"\n    },\n    \"--now-navigation-tree--text-transform\": {\n        \"name\": \"navigationTree.textTransform\",\n        \"derived\": \"--now-navigation--text-transform\"\n    },\n    \"--now-view-control_action_icon--primary--color\": {\n        \"name\": \"viewControl.action.icon.primary.color\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-view-control_action_icon--primary--color--active\": {\n        \"name\": \"viewControl.action.icon.primary.color.active\",\n        \"derived\": \"--now-view-control_action_icon--primary--color\"\n    },\n    \"--now-view-control_action_icon--primary--color--hover\": {\n        \"name\": \"viewControl.action.icon.primary.color.hover\",\n        \"derived\": \"--now-view-control_action_icon--primary--color\"\n    },\n    \"--now-view-control_action_icon--secondary--color\": {\n        \"name\": \"viewControl.action.icon.secondary.color\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-view-control_action_icon--secondary--color--active\": {\n        \"name\": \"viewControl.action.icon.secondary.color.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-view-control_action_icon--secondary--color--hover\": {\n        \"name\": \"viewControl.action.icon.secondary.color.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-view-control_action_icon--tertiary--color\": {\n        \"name\": \"viewControl.action.icon.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-view-control_action_icon--tertiary--color--active\": {\n        \"name\": \"viewControl.action.icon.tertiary.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control_action_icon--tertiary--color--hover\": {\n        \"name\": \"viewControl.action.icon.tertiary.color.hover\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-view-control_action_label--bare_primary--color\": {\n        \"name\": \"viewControl.action.label.bare.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control_action_label--bare_primary--color--active\": {\n        \"name\": \"viewControl.action.label.bare.primary.color.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-view-control_action_label--bare_primary--color--hover\": {\n        \"name\": \"viewControl.action.label.bare.primary.color.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-view-control_action_trigger-icon--bare_primary--color\": {\n        \"name\": \"viewControl.action.triggerIcon.bare.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control_action_trigger-icon--bare_primary--color--active\": {\n        \"name\": \"viewControl.action.triggerIcon.bare.primary.color.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-view-control_action_trigger-icon--bare_primary--color--hover\": {\n        \"name\": \"viewControl.action.triggerIcon.bare.primary.color.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-view-control_action--bare_primary--background-color--active\": {\n        \"name\": \"viewControl.action.bare.primary.backgroundColor.active\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control_action--bare_primary--background-color--hover\": {\n        \"name\": \"viewControl.action.bare.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control_action--bare_primary--background-color-alpha--active\": {\n        \"name\": \"viewControl.action.bare.primary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-view-control_action--bare--background-color-alpha--active\"\n    },\n    \"--now-view-control_action--bare_primary--background-color-alpha--hover\": {\n        \"name\": \"viewControl.action.bare.primary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-view-control_action--bare--background-color-alpha--hover\"\n    },\n    \"--now-view-control_action--bare_primary--border-color--active\": {\n        \"name\": \"viewControl.action.bare.primary.borderColor.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-view-control_action--bare_primary--border-color--hover\": {\n        \"name\": \"viewControl.action.bare.primary.borderColor.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-view-control_action--bare_primary--border-color-alpha\": {\n        \"name\": \"viewControl.action.bare.primary.borderColorAlpha\",\n        \"derived\": \"--now-view-control_action--bare--border-color-alpha\"\n    },\n    \"--now-view-control_action--bare_primary--border-color-alpha--active\": {\n        \"name\": \"viewControl.action.bare.primary.borderColorAlpha.active\",\n        \"derived\": \"--now-view-control_action--bare_primary--border-color-alpha\"\n    },\n    \"--now-view-control_action--bare_primary--border-color-alpha--hover\": {\n        \"name\": \"viewControl.action.bare.primary.borderColorAlpha.hover\",\n        \"derived\": \"--now-view-control_action--bare_primary--border-color-alpha\"\n    },\n    \"--now-view-control_action--bare_primary--border-radius\": {\n        \"name\": \"viewControl.action.bare.primary.borderRadius\",\n        \"derived\": \"--now-view-control_action--border-radius\"\n    },\n    \"--now-view-control_action--bare_primary--border-width\": {\n        \"name\": \"viewControl.action.bare.primary.borderWidth\",\n        \"derived\": \"--now-view-control_action--border-width\"\n    },\n    \"--now-view-control_action--bare_primary--font-family\": {\n        \"name\": \"viewControl.action.bare.primary.fontFamily\",\n        \"derived\": \"--now-view-control_action--font-family\"\n    },\n    \"--now-view-control_action--bare_primary--font-style\": {\n        \"name\": \"viewControl.action.bare.primary.fontStyle\",\n        \"derived\": \"--now-view-control_action--font-style\"\n    },\n    \"--now-view-control_action--bare_primary--font-weight\": {\n        \"name\": \"viewControl.action.bare.primary.fontWeight\",\n        \"derived\": \"--now-view-control_action--font-weight\"\n    },\n    \"--now-view-control_action--bare_primary--text-transform\": {\n        \"name\": \"viewControl.action.bare.primary.textTransform\",\n        \"derived\": \"--now-view-control_action--text-transform\"\n    },\n    \"--now-view-control_action--bare--background-color-alpha\": {\n        \"name\": \"viewControl.action.bare.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-view-control_action--bare--background-color-alpha--active\": {\n        \"name\": \"viewControl.action.bare.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-view-control_action--bare--background-color-alpha--hover\": {\n        \"name\": \"viewControl.action.bare.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-view-control_action--bare--border-color-alpha\": {\n        \"name\": \"viewControl.action.bare.borderColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-view-control_action--bare--border-radius\": {\n        \"name\": \"viewControl.action.bare.borderRadius\",\n        \"derived\": \"--now-actionable--bare--border-radius\"\n    },\n    \"--now-view-control_action--bare--border-width\": {\n        \"name\": \"viewControl.action.bare.borderWidth\",\n        \"derived\": \"--now-actionable--bare--border-width\"\n    },\n    \"--now-view-control_action--border-radius\": {\n        \"name\": \"viewControl.action.borderRadius\",\n        \"derived\": \"--now-view-control--border-radius\"\n    },\n    \"--now-view-control_action--border-width\": {\n        \"name\": \"viewControl.action.borderWidth\",\n        \"derived\": \"--now-view-control--border-width\"\n    },\n    \"--now-view-control_action--contained--border-radius\": {\n        \"name\": \"viewControl.action.contained.borderRadius\",\n        \"initial\": \"0px\"\n    },\n    \"--now-view-control_action--contained--border-width\": {\n        \"name\": \"viewControl.action.contained.borderWidth\",\n        \"initial\": \"0px\"\n    },\n    \"--now-view-control_action--font-family\": {\n        \"name\": \"viewControl.action.fontFamily\",\n        \"derived\": \"--now-view-control--font-family\"\n    },\n    \"--now-view-control_action--font-style\": {\n        \"name\": \"viewControl.action.fontStyle\",\n        \"derived\": \"--now-view-control--font-style\"\n    },\n    \"--now-view-control_action--font-weight\": {\n        \"name\": \"viewControl.action.fontWeight\",\n        \"derived\": \"--now-view-control--font-weight\"\n    },\n    \"--now-view-control_action--primary--background-color\": {\n        \"name\": \"viewControl.action.primary.backgroundColor\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-view-control_action--primary--background-color--active\": {\n        \"name\": \"viewControl.action.primary.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-view-control_action--primary--background-color--hover\": {\n        \"name\": \"viewControl.action.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-view-control_action--primary--background-color-alpha\": {\n        \"name\": \"viewControl.action.primary.backgroundColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_action--primary--background-color-alpha--active\": {\n        \"name\": \"viewControl.action.primary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-view-control_action--primary--background-color-alpha\"\n    },\n    \"--now-view-control_action--primary--background-color-alpha--hover\": {\n        \"name\": \"viewControl.action.primary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-view-control_action--primary--background-color-alpha\"\n    },\n    \"--now-view-control_action--primary--border-color\": {\n        \"name\": \"viewControl.action.primary.borderColor\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-view-control_action--primary--border-color--active\": {\n        \"name\": \"viewControl.action.primary.borderColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-view-control_action--primary--border-color--hover\": {\n        \"name\": \"viewControl.action.primary.borderColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-view-control_action--primary--border-color-alpha\": {\n        \"name\": \"viewControl.action.primary.borderColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-view-control_action--primary--border-color-alpha--active\": {\n        \"name\": \"viewControl.action.primary.borderColorAlpha.active\",\n        \"derived\": \"--now-view-control_action--primary--border-color-alpha\"\n    },\n    \"--now-view-control_action--primary--border-color-alpha--hover\": {\n        \"name\": \"viewControl.action.primary.borderColorAlpha.hover\",\n        \"derived\": \"--now-view-control_action--primary--border-color-alpha\"\n    },\n    \"--now-view-control_action--primary--border-radius\": {\n        \"name\": \"viewControl.action.primary.borderRadius\",\n        \"derived\": \"--now-view-control_action--contained--border-radius\"\n    },\n    \"--now-view-control_action--primary--border-width\": {\n        \"name\": \"viewControl.action.primary.borderWidth\",\n        \"derived\": \"--now-view-control_action--contained--border-width\"\n    },\n    \"--now-view-control_action--primary--opacity--disabled\": {\n        \"name\": \"viewControl.action.primary.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-view-control_action--secondary--background-color\": {\n        \"name\": \"viewControl.action.secondary.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-view-control_action--secondary--background-color--active\": {\n        \"name\": \"viewControl.action.secondary.backgroundColor.active\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-view-control_action--secondary--background-color--hover\": {\n        \"name\": \"viewControl.action.secondary.backgroundColor.hover\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-view-control_action--secondary--background-color-alpha\": {\n        \"name\": \"viewControl.action.secondary.backgroundColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_action--secondary--background-color-alpha--active\": {\n        \"name\": \"viewControl.action.secondary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-view-control_action--secondary--background-color-alpha\"\n    },\n    \"--now-view-control_action--secondary--background-color-alpha--hover\": {\n        \"name\": \"viewControl.action.secondary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-view-control_action--secondary--background-color-alpha\"\n    },\n    \"--now-view-control_action--secondary--border-color\": {\n        \"name\": \"viewControl.action.secondary.borderColor\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-view-control_action--secondary--border-color--active\": {\n        \"name\": \"viewControl.action.secondary.borderColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-view-control_action--secondary--border-color--hover\": {\n        \"name\": \"viewControl.action.secondary.borderColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-view-control_action--secondary--border-color-alpha\": {\n        \"name\": \"viewControl.action.secondary.borderColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_action--secondary--border-color-alpha--active\": {\n        \"name\": \"viewControl.action.secondary.borderColorAlpha.active\",\n        \"derived\": \"--now-view-control_action--secondary--border-color-alpha\"\n    },\n    \"--now-view-control_action--secondary--border-color-alpha--hover\": {\n        \"name\": \"viewControl.action.secondary.borderColorAlpha.hover\",\n        \"derived\": \"--now-view-control_action--secondary--border-color-alpha\"\n    },\n    \"--now-view-control_action--secondary--border-radius\": {\n        \"name\": \"viewControl.action.secondary.borderRadius\",\n        \"derived\": \"--now-view-control_action--contained--border-radius\"\n    },\n    \"--now-view-control_action--secondary--border-width\": {\n        \"name\": \"viewControl.action.secondary.borderWidth\",\n        \"derived\": \"--now-view-control_action--contained--border-width\"\n    },\n    \"--now-view-control_action--secondary--opacity--disabled\": {\n        \"name\": \"viewControl.action.secondary.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-view-control_action--tertiary--background-color\": {\n        \"name\": \"viewControl.action.tertiary.backgroundColor\",\n        \"derived\": \"--now-color_background--secondary-actionable\"\n    },\n    \"--now-view-control_action--tertiary--background-color--active\": {\n        \"name\": \"viewControl.action.tertiary.backgroundColor.active\",\n        \"derived\": \"--now-view-control_action--tertiary--background-color\"\n    },\n    \"--now-view-control_action--tertiary--background-color--hover\": {\n        \"name\": \"viewControl.action.tertiary.backgroundColor.hover\",\n        \"derived\": \"--now-view-control_action--tertiary--background-color\"\n    },\n    \"--now-view-control_action--tertiary--background-color-alpha\": {\n        \"name\": \"viewControl.action.tertiary.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-view-control_action--tertiary--background-color-alpha--active\": {\n        \"name\": \"viewControl.action.tertiary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-view-control_action--tertiary--background-color-alpha--hover\": {\n        \"name\": \"viewControl.action.tertiary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-view-control_action--tertiary--border-color\": {\n        \"name\": \"viewControl.action.tertiary.borderColor\",\n        \"derived\": \"--now-color_border--tertiary-actionable\"\n    },\n    \"--now-view-control_action--tertiary--border-color--active\": {\n        \"name\": \"viewControl.action.tertiary.borderColor.active\",\n        \"derived\": \"--now-color_border--secondary-actionable\"\n    },\n    \"--now-view-control_action--tertiary--border-color--hover\": {\n        \"name\": \"viewControl.action.tertiary.borderColor.hover\",\n        \"derived\": \"--now-color_border--primary-actionable\"\n    },\n    \"--now-view-control_action--tertiary--border-color-alpha\": {\n        \"name\": \"viewControl.action.tertiary.borderColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-view-control_action--tertiary--border-color-alpha--active\": {\n        \"name\": \"viewControl.action.tertiary.borderColorAlpha.active\",\n        \"derived\": \"--now-view-control_action--tertiary--border-color-alpha\"\n    },\n    \"--now-view-control_action--tertiary--border-color-alpha--hover\": {\n        \"name\": \"viewControl.action.tertiary.borderColorAlpha.hover\",\n        \"derived\": \"--now-view-control_action--tertiary--border-color-alpha\"\n    },\n    \"--now-view-control_action--tertiary--border-radius\": {\n        \"name\": \"viewControl.action.tertiary.borderRadius\",\n        \"derived\": \"--now-view-control_action--bare--border-radius\"\n    },\n    \"--now-view-control_action--tertiary--border-width\": {\n        \"name\": \"viewControl.action.tertiary.borderWidth\",\n        \"derived\": \"--now-view-control_action--bare--border-width\"\n    },\n    \"--now-view-control_action--tertiary--opacity--disabled\": {\n        \"name\": \"viewControl.action.tertiary.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-view-control_action--text-transform\": {\n        \"name\": \"viewControl.action.textTransform\",\n        \"derived\": \"--now-view-control--text-transform\"\n    },\n    \"--now-view-control_header--font-family\": {\n        \"name\": \"viewControl.header.fontFamily\",\n        \"derived\": \"--now-display-type--header-primary--font-family\"\n    },\n    \"--now-view-control_header--font-style\": {\n        \"name\": \"viewControl.header.fontStyle\",\n        \"derived\": \"--now-display-type--header-primary--font-style\"\n    },\n    \"--now-view-control_header--font-weight\": {\n        \"name\": \"viewControl.header.fontWeight\",\n        \"derived\": \"--now-display-type--header-primary--font-weight\"\n    },\n    \"--now-view-control_header--primary--color\": {\n        \"name\": \"viewControl.header.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control_header--secondary--color\": {\n        \"name\": \"viewControl.header.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-view-control_header--tertiary--color\": {\n        \"name\": \"viewControl.header.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-view-control_header--text-transform\": {\n        \"name\": \"viewControl.header.textTransform\",\n        \"derived\": \"--now-display-type--header-primary--text-transform\"\n    },\n    \"--now-view-control_item_label--primary--color\": {\n        \"name\": \"viewControl.item.label.primary.color\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-view-control_item_label--primary--color--active\": {\n        \"name\": \"viewControl.item.label.primary.color.active\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-view-control_item_label--primary--color--hover\": {\n        \"name\": \"viewControl.item.label.primary.color.hover\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-view-control_item_label--primary--color--selected\": {\n        \"name\": \"viewControl.item.label.primary.color.selected\",\n        \"derived\": \"--now-color_text--primary-actionable\"\n    },\n    \"--now-view-control_item_label--primary--color--selected_active\": {\n        \"name\": \"viewControl.item.label.primary.color.selected.active\",\n        \"derived\": \"--now-view-control_item_label--primary--color--selected\"\n    },\n    \"--now-view-control_item_label--primary--color--selected_hover\": {\n        \"name\": \"viewControl.item.label.primary.color.selected.hover\",\n        \"derived\": \"--now-view-control_item_label--primary--color--selected\"\n    },\n    \"--now-view-control_item_label--primary--font-family\": {\n        \"name\": \"viewControl.item.label.primary.fontFamily\",\n        \"derived\": \"--now-view-control--font-family\"\n    },\n    \"--now-view-control_item_label--primary--font-style\": {\n        \"name\": \"viewControl.item.label.primary.fontStyle\",\n        \"derived\": \"--now-view-control--font-style\"\n    },\n    \"--now-view-control_item_label--primary--font-style--selected\": {\n        \"name\": \"viewControl.item.label.primary.fontStyle.selected\",\n        \"derived\": \"--now-view-control_item_label--primary--font-style\"\n    },\n    \"--now-view-control_item_label--primary--font-weight\": {\n        \"name\": \"viewControl.item.label.primary.fontWeight\",\n        \"derived\": \"--now-view-control--font-weight\"\n    },\n    \"--now-view-control_item_label--primary--font-weight--selected\": {\n        \"name\": \"viewControl.item.label.primary.fontWeight.selected\",\n        \"initial\": \"bold\"\n    },\n    \"--now-view-control_item_label--primary--text-transform\": {\n        \"name\": \"viewControl.item.label.primary.textTransform\",\n        \"derived\": \"--now-view-control--text-transform\"\n    },\n    \"--now-view-control_item_label--primary--text-transform--selected\": {\n        \"name\": \"viewControl.item.label.primary.textTransform.selected\",\n        \"derived\": \"--now-view-control_item_label--primary--text-transform\"\n    },\n    \"--now-view-control_item_label--secondary--color\": {\n        \"name\": \"viewControl.item.label.secondary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control_item_label--secondary--color--active\": {\n        \"name\": \"viewControl.item.label.secondary.color.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-view-control_item_label--secondary--color--hover\": {\n        \"name\": \"viewControl.item.label.secondary.color.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-view-control_item_label--secondary--color--selected\": {\n        \"name\": \"viewControl.item.label.secondary.color.selected\",\n        \"derived\": \"--now-view-control_item_label--secondary--color\"\n    },\n    \"--now-view-control_item_label--secondary--color--selected_active\": {\n        \"name\": \"viewControl.item.label.secondary.color.selected.active\",\n        \"derived\": \"--now-view-control_item_label--secondary--color--active\"\n    },\n    \"--now-view-control_item_label--secondary--color--selected_hover\": {\n        \"name\": \"viewControl.item.label.secondary.color.selected.hover\",\n        \"derived\": \"--now-view-control_item_label--secondary--color--hover\"\n    },\n    \"--now-view-control_item_label--secondary--font-family\": {\n        \"name\": \"viewControl.item.label.secondary.fontFamily\",\n        \"derived\": \"--now-view-control--font-family\"\n    },\n    \"--now-view-control_item_label--secondary--font-style\": {\n        \"name\": \"viewControl.item.label.secondary.fontStyle\",\n        \"derived\": \"--now-view-control--font-style\"\n    },\n    \"--now-view-control_item_label--secondary--font-style--selected\": {\n        \"name\": \"viewControl.item.label.secondary.fontStyle.selected\",\n        \"derived\": \"--now-view-control_item_label--secondary--font-style\"\n    },\n    \"--now-view-control_item_label--secondary--font-weight\": {\n        \"name\": \"viewControl.item.label.secondary.fontWeight\",\n        \"derived\": \"--now-view-control--font-weight\"\n    },\n    \"--now-view-control_item_label--secondary--font-weight--selected\": {\n        \"name\": \"viewControl.item.label.secondary.fontWeight.selected\",\n        \"initial\": \"bold\"\n    },\n    \"--now-view-control_item_label--secondary--text-transform\": {\n        \"name\": \"viewControl.item.label.secondary.textTransform\",\n        \"derived\": \"--now-view-control--text-transform\"\n    },\n    \"--now-view-control_item_label--secondary--text-transform--selected\": {\n        \"name\": \"viewControl.item.label.secondary.textTransform.selected\",\n        \"derived\": \"--now-view-control_item_label--secondary--text-transform\"\n    },\n    \"--now-view-control_item--bare--border-radius\": {\n        \"name\": \"viewControl.item.bare.borderRadius\",\n        \"derived\": \"--now-actionable--bare--border-radius\"\n    },\n    \"--now-view-control_item--bare--border-width\": {\n        \"name\": \"viewControl.item.bare.borderWidth\",\n        \"derived\": \"--now-actionable--bare--border-width\"\n    },\n    \"--now-view-control_item--border-radius\": {\n        \"name\": \"viewControl.item.borderRadius\",\n        \"initial\": \"0px\"\n    },\n    \"--now-view-control_item--border-width\": {\n        \"name\": \"viewControl.item.borderWidth\",\n        \"initial\": \"1px\"\n    },\n    \"--now-view-control_item--primary--background-color\": {\n        \"name\": \"viewControl.item.primary.backgroundColor\",\n        \"derived\": \"--now-color_background--primary\"\n    },\n    \"--now-view-control_item--primary--background-color--active\": {\n        \"name\": \"viewControl.item.primary.backgroundColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-view-control_item--primary--background-color--focus\": {\n        \"name\": \"viewControl.item.primary.backgroundColor.focus\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-view-control_item--primary--background-color--hover\": {\n        \"name\": \"viewControl.item.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-view-control_item--primary--background-color--selected\": {\n        \"name\": \"viewControl.item.primary.backgroundColor.selected\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-view-control_item--primary--background-color--selected_active\": {\n        \"name\": \"viewControl.item.primary.backgroundColor.selected.active\",\n        \"derived\": \"--now-view-control_item--primary--background-color--selected\"\n    },\n    \"--now-view-control_item--primary--background-color--selected_hover\": {\n        \"name\": \"viewControl.item.primary.backgroundColor.selected.hover\",\n        \"derived\": \"--now-view-control_item--primary--background-color--selected\"\n    },\n    \"--now-view-control_item--primary--background-color-alpha\": {\n        \"name\": \"viewControl.item.primary.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-view-control_item--primary--background-color-alpha--active\": {\n        \"name\": \"viewControl.item.primary.backgroundColorAlpha.active\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_item--primary--background-color-alpha--focus\": {\n        \"name\": \"viewControl.item.primary.backgroundColorAlpha.focus\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_item--primary--background-color-alpha--hover\": {\n        \"name\": \"viewControl.item.primary.backgroundColorAlpha.hover\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_item--primary--background-color-alpha--selected\": {\n        \"name\": \"viewControl.item.primary.backgroundColorAlpha.selected\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_item--primary--background-color-alpha--selected_active\": {\n        \"name\": \"viewControl.item.primary.backgroundColorAlpha.selected.active\",\n        \"derived\": \"--now-view-control_item--primary--background-color-alpha--selected\"\n    },\n    \"--now-view-control_item--primary--background-color-alpha--selected_hover\": {\n        \"name\": \"viewControl.item.primary.backgroundColorAlpha.selected.hover\",\n        \"derived\": \"--now-view-control_item--primary--background-color-alpha--selected\"\n    },\n    \"--now-view-control_item--primary--border-color\": {\n        \"name\": \"viewControl.item.primary.borderColor\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-view-control_item--primary--border-color--active\": {\n        \"name\": \"viewControl.item.primary.borderColor.active\",\n        \"derived\": \"--now-color--primary-3\"\n    },\n    \"--now-view-control_item--primary--border-color--focus\": {\n        \"name\": \"viewControl.item.primary.borderColor.focus\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-view-control_item--primary--border-color--hover\": {\n        \"name\": \"viewControl.item.primary.borderColor.hover\",\n        \"derived\": \"--now-color--primary-2\"\n    },\n    \"--now-view-control_item--primary--border-color--selected\": {\n        \"name\": \"viewControl.item.primary.borderColor.selected\",\n        \"derived\": \"--now-view-control_item--primary--border-color\"\n    },\n    \"--now-view-control_item--primary--border-color--selected_active\": {\n        \"name\": \"viewControl.item.primary.borderColor.selected.active\",\n        \"derived\": \"--now-view-control_item--primary--border-color--selected\"\n    },\n    \"--now-view-control_item--primary--border-color--selected_hover\": {\n        \"name\": \"viewControl.item.primary.borderColor.selected.hover\",\n        \"derived\": \"--now-view-control_item--primary--border-color--selected\"\n    },\n    \"--now-view-control_item--primary--border-color-alpha\": {\n        \"name\": \"viewControl.item.primary.borderColorAlpha\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_item--primary--border-color-alpha--active\": {\n        \"name\": \"viewControl.item.primary.borderColorAlpha.active\",\n        \"derived\": \"--now-view-control_item--primary--border-color-alpha\"\n    },\n    \"--now-view-control_item--primary--border-color-alpha--focus\": {\n        \"name\": \"viewControl.item.primary.borderColorAlpha.focus\",\n        \"derived\": \"--now-view-control_item--primary--border-color-alpha\"\n    },\n    \"--now-view-control_item--primary--border-color-alpha--hover\": {\n        \"name\": \"viewControl.item.primary.borderColorAlpha.hover\",\n        \"derived\": \"--now-view-control_item--primary--border-color-alpha\"\n    },\n    \"--now-view-control_item--primary--border-color-alpha--selected\": {\n        \"name\": \"viewControl.item.primary.borderColorAlpha.selected\",\n        \"derived\": \"--now-view-control_item--primary--border-color-alpha\"\n    },\n    \"--now-view-control_item--primary--border-color-alpha--selected_active\": {\n        \"name\": \"viewControl.item.primary.borderColorAlpha.selected.active\",\n        \"derived\": \"--now-view-control_item--primary--border-color-alpha\"\n    },\n    \"--now-view-control_item--primary--border-color-alpha--selected_hover\": {\n        \"name\": \"viewControl.item.primary.borderColorAlpha.selected.hover\",\n        \"derived\": \"--now-view-control_item--primary--border-color-alpha\"\n    },\n    \"--now-view-control_item--primary--border-radius\": {\n        \"name\": \"viewControl.item.primary.borderRadius\",\n        \"derived\": \"--now-view-control_item--border-radius\"\n    },\n    \"--now-view-control_item--primary--border-radius--selected\": {\n        \"name\": \"viewControl.item.primary.borderRadius.selected\",\n        \"derived\": \"--now-view-control_item--border-radius\"\n    },\n    \"--now-view-control_item--primary--border-width\": {\n        \"name\": \"viewControl.item.primary.borderWidth\",\n        \"derived\": \"--now-view-control--border-width\"\n    },\n    \"--now-view-control_item--primary--border-width--active\": {\n        \"name\": \"viewControl.item.primary.borderWidth.active\",\n        \"derived\": \"--now-view-control_item--primary--border-width\"\n    },\n    \"--now-view-control_item--primary--border-width--focus\": {\n        \"name\": \"viewControl.item.primary.borderWidth.focus\",\n        \"derived\": \"--now-view-control_item--primary--border-width\"\n    },\n    \"--now-view-control_item--primary--border-width--hover\": {\n        \"name\": \"viewControl.item.primary.borderWidth.hover\",\n        \"derived\": \"--now-view-control_item--primary--border-width\"\n    },\n    \"--now-view-control_item--primary--border-width--selected\": {\n        \"name\": \"viewControl.item.primary.borderWidth.selected\",\n        \"derived\": \"--now-view-control_item--primary--border-width\"\n    },\n    \"--now-view-control_item--secondary--background-color\": {\n        \"name\": \"viewControl.item.secondary.backgroundColor\",\n        \"derived\": \"--now-color_background--secondary\"\n    },\n    \"--now-view-control_item--secondary--background-color--active\": {\n        \"name\": \"viewControl.item.secondary.backgroundColor.active\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-view-control_item--secondary--background-color--focus\": {\n        \"name\": \"viewControl.item.secondary.backgroundColor.focus\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-view-control_item--secondary--background-color--hover\": {\n        \"name\": \"viewControl.item.secondary.backgroundColor.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-view-control_item--secondary--background-color--selected\": {\n        \"name\": \"viewControl.item.secondary.backgroundColor.selected\",\n        \"derived\": \"--now-color_background--tertiary\"\n    },\n    \"--now-view-control_item--secondary--background-color--selected_active\": {\n        \"name\": \"viewControl.item.secondary.backgroundColor.selected.active\",\n        \"derived\": \"--now-view-control_item--secondary--background-color--selected\"\n    },\n    \"--now-view-control_item--secondary--background-color--selected_hover\": {\n        \"name\": \"viewControl.item.secondary.backgroundColor.selected.hover\",\n        \"derived\": \"--now-view-control_item--secondary--background-color--selected\"\n    },\n    \"--now-view-control_item--secondary--background-color-alpha\": {\n        \"name\": \"viewControl.item.secondary.backgroundColorAlpha\",\n        \"initial\": \"0\"\n    },\n    \"--now-view-control_item--secondary--background-color-alpha--active\": {\n        \"name\": \"viewControl.item.secondary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-view-control_item--secondary--background-color-alpha--focus\": {\n        \"name\": \"viewControl.item.secondary.backgroundColorAlpha.focus\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_item--secondary--background-color-alpha--hover\": {\n        \"name\": \"viewControl.item.secondary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-view-control_item--secondary--background-color-alpha--selected\": {\n        \"name\": \"viewControl.item.secondary.backgroundColorAlpha.selected\",\n        \"initial\": \"1\"\n    },\n    \"--now-view-control_item--secondary--background-color-alpha--selected_active\": {\n        \"name\": \"viewControl.item.secondary.backgroundColorAlpha.selected.active\",\n        \"derived\": \"--now-view-control_item--secondary--background-color-alpha--selected\"\n    },\n    \"--now-view-control_item--secondary--background-color-alpha--selected_hover\": {\n        \"name\": \"viewControl.item.secondary.backgroundColorAlpha.selected.hover\",\n        \"derived\": \"--now-view-control_item--secondary--background-color-alpha--selected\"\n    },\n    \"--now-view-control_item--secondary--border-color\": {\n        \"name\": \"viewControl.item.secondary.borderColor\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control_item--secondary--border-color--active\": {\n        \"name\": \"viewControl.item.secondary.borderColor.active\",\n        \"derived\": \"--now-color--secondary-3\"\n    },\n    \"--now-view-control_item--secondary--border-color--focus\": {\n        \"name\": \"viewControl.item.secondary.borderColor.focus\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-view-control_item--secondary--border-color--hover\": {\n        \"name\": \"viewControl.item.secondary.borderColor.hover\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-view-control_item--secondary--border-color--selected\": {\n        \"name\": \"viewControl.item.secondary.borderColor.selected\",\n        \"derived\": \"--now-view-control_item--secondary--border-color\"\n    },\n    \"--now-view-control_item--secondary--border-color--selected_active\": {\n        \"name\": \"viewControl.item.secondary.borderColor.selected.active\",\n        \"derived\": \"--now-view-control_item--secondary--border-color--selected\"\n    },\n    \"--now-view-control_item--secondary--border-color--selected_hover\": {\n        \"name\": \"viewControl.item.secondary.borderColor.selected.hover\",\n        \"derived\": \"--now-view-control_item--secondary--border-color--selected\"\n    },\n    \"--now-view-control_item--secondary--border-color-alpha\": {\n        \"name\": \"viewControl.item.secondary.borderColorAlpha\",\n        \"derived\": \"--now-view-control_action--bare--border-color-alpha\"\n    },\n    \"--now-view-control_item--secondary--border-color-alpha--active\": {\n        \"name\": \"viewControl.item.secondary.borderColorAlpha.active\",\n        \"derived\": \"--now-view-control_item--secondary--border-color-alpha\"\n    },\n    \"--now-view-control_item--secondary--border-color-alpha--focus\": {\n        \"name\": \"viewControl.item.secondary.borderColorAlpha.focus\",\n        \"derived\": \"--now-view-control_item--secondary--border-color-alpha\"\n    },\n    \"--now-view-control_item--secondary--border-color-alpha--hover\": {\n        \"name\": \"viewControl.item.secondary.borderColorAlpha.hover\",\n        \"derived\": \"--now-view-control_item--secondary--border-color-alpha\"\n    },\n    \"--now-view-control_item--secondary--border-color-alpha--selected\": {\n        \"name\": \"viewControl.item.secondary.borderColorAlpha.selected\",\n        \"derived\": \"--now-view-control_item--secondary--border-color-alpha\"\n    },\n    \"--now-view-control_item--secondary--border-color-alpha--selected_active\": {\n        \"name\": \"viewControl.item.secondary.borderColorAlpha.selected.active\",\n        \"derived\": \"--now-view-control_item--secondary--border-color-alpha\"\n    },\n    \"--now-view-control_item--secondary--border-color-alpha--selected_hover\": {\n        \"name\": \"viewControl.item.secondary.borderColorAlpha.selected.hover\",\n        \"derived\": \"--now-view-control_item--secondary--border-color-alpha\"\n    },\n    \"--now-view-control_item--secondary--border-radius\": {\n        \"name\": \"viewControl.item.secondary.borderRadius\",\n        \"derived\": \"--now-view-control_item--border-radius\"\n    },\n    \"--now-view-control_item--secondary--border-radius--selected\": {\n        \"name\": \"viewControl.item.secondary.borderRadius.selected\",\n        \"derived\": \"--now-view-control_item--secondary--border-radius\"\n    },\n    \"--now-view-control_item--secondary--border-width\": {\n        \"name\": \"viewControl.item.secondary.borderWidth\",\n        \"derived\": \"--now-view-control_action--bare--border-width\"\n    },\n    \"--now-view-control_item--secondary--border-width--active\": {\n        \"name\": \"viewControl.item.secondary.borderWidth.active\",\n        \"derived\": \"--now-view-control_item--secondary--border-width\"\n    },\n    \"--now-view-control_item--secondary--border-width--focus\": {\n        \"name\": \"viewControl.item.secondary.borderWidth.focus\",\n        \"derived\": \"--now-view-control_item--secondary--border-width\"\n    },\n    \"--now-view-control_item--secondary--border-width--hover\": {\n        \"name\": \"viewControl.item.secondary.borderWidth.hover\",\n        \"derived\": \"--now-view-control_item--secondary--border-width\"\n    },\n    \"--now-view-control_item--secondary--border-width--selected\": {\n        \"name\": \"viewControl.item.secondary.borderWidth.selected\",\n        \"derived\": \"--now-view-control_item--secondary--border-width\"\n    },\n    \"--now-view-control_label--font-family\": {\n        \"name\": \"viewControl.label.fontFamily\",\n        \"derived\": \"--now-view-control--font-family\"\n    },\n    \"--now-view-control_label--font-style\": {\n        \"name\": \"viewControl.label.fontStyle\",\n        \"derived\": \"--now-view-control--font-style\"\n    },\n    \"--now-view-control_label--font-weight\": {\n        \"name\": \"viewControl.label.fontWeight\",\n        \"derived\": \"--now-view-control--font-weight\"\n    },\n    \"--now-view-control_label--primary--color\": {\n        \"name\": \"viewControl.label.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control_label--secondary--color\": {\n        \"name\": \"viewControl.label.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-view-control_label--tertiary--color\": {\n        \"name\": \"viewControl.label.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-view-control_label--text-transform\": {\n        \"name\": \"viewControl.label.textTransform\",\n        \"derived\": \"--now-view-control--text-transform\"\n    },\n    \"--now-view-control_subheader--font-family\": {\n        \"name\": \"viewControl.subheader.fontFamily\",\n        \"derived\": \"--now-display-type--title-primary--font-family\"\n    },\n    \"--now-view-control_subheader--font-style\": {\n        \"name\": \"viewControl.subheader.fontStyle\",\n        \"derived\": \"--now-display-type--title-primary--font-style\"\n    },\n    \"--now-view-control_subheader--font-weight\": {\n        \"name\": \"viewControl.subheader.fontWeight\",\n        \"derived\": \"--now-display-type--title-primary--font-weight\"\n    },\n    \"--now-view-control_subheader--primary--color\": {\n        \"name\": \"viewControl.subheader.primary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control_subheader--secondary--color\": {\n        \"name\": \"viewControl.subheader.secondary.color\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-view-control_subheader--tertiary--color\": {\n        \"name\": \"viewControl.subheader.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-view-control_subheader--text-transform\": {\n        \"name\": \"viewControl.subheader.textTransform\",\n        \"derived\": \"--now-display-type--title-primary--text-transform\"\n    },\n    \"--now-view-control--opacity--disabled\": {\n        \"name\": \"viewControl.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-view-control-collapse_divider--primary--color\": {\n        \"name\": \"viewControlCollapse.divider.primary.color\",\n        \"derived\": \"--now-color_divider--primary\"\n    },\n    \"--now-view-control-collapse_divider--primary--width\": {\n        \"name\": \"viewControlCollapse.divider.primary.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-view-control-collapse_divider--secondary--color\": {\n        \"name\": \"viewControlCollapse.divider.secondary.color\",\n        \"derived\": \"--now-color_divider--secondary\"\n    },\n    \"--now-view-control-collapse_divider--secondary--width\": {\n        \"name\": \"viewControlCollapse.divider.secondary.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-view-control-collapse_divider--tertiary--color\": {\n        \"name\": \"viewControlCollapse.divider.tertiary.color\",\n        \"derived\": \"--now-color_divider--tertiary\"\n    },\n    \"--now-view-control-collapse_divider--tertiary--width\": {\n        \"name\": \"viewControlCollapse.divider.tertiary.width\",\n        \"initial\": \"1px\"\n    },\n    \"--now-view-control-collapse_header_icon--color\": {\n        \"name\": \"viewControlCollapse.header.icon.color\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse_header_icon--color--hover\": {\n        \"name\": \"viewControlCollapse.header.icon.color.hover\",\n        \"derived\": \"--now-view-control-collapse_header_icon--color\"\n    },\n    \"--now-view-control-collapse_header--font-family\": {\n        \"name\": \"viewControlCollapse.header.fontFamily\",\n        \"derived\": \"--now-view-control_header--font-family\"\n    },\n    \"--now-view-control-collapse_header--font-style\": {\n        \"name\": \"viewControlCollapse.header.fontStyle\",\n        \"derived\": \"--now-view-control_header--font-style\"\n    },\n    \"--now-view-control-collapse_header--font-weight\": {\n        \"name\": \"viewControlCollapse.header.fontWeight\",\n        \"derived\": \"--now-view-control_header--font-weight\"\n    },\n    \"--now-view-control-collapse_header--primary--color\": {\n        \"name\": \"viewControlCollapse.header.primary.color\",\n        \"derived\": \"--now-view-control_header--primary--color\"\n    },\n    \"--now-view-control-collapse_header--primary--color--hover\": {\n        \"name\": \"viewControlCollapse.header.primary.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse_header--secondary--color\": {\n        \"name\": \"viewControlCollapse.header.secondary.color\",\n        \"derived\": \"--now-view-control_header--secondary--color\"\n    },\n    \"--now-view-control-collapse_header--secondary--color--hover\": {\n        \"name\": \"viewControlCollapse.header.secondary.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse_header--tertiary--color\": {\n        \"name\": \"viewControlCollapse.header.tertiary.color\",\n        \"derived\": \"--now-view-control_header--tertiary--color\"\n    },\n    \"--now-view-control-collapse_header--tertiary--color--hover\": {\n        \"name\": \"viewControlCollapse.header.tertiary.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse_header--text-transform\": {\n        \"name\": \"viewControlCollapse.header.textTransform\",\n        \"derived\": \"--now-view-control_header--text-transform\"\n    },\n    \"--now-view-control-collapse_label--color\": {\n        \"name\": \"viewControlCollapse.label.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-view-control-collapse_label--color--active\": {\n        \"name\": \"viewControlCollapse.label.color.active\",\n        \"derived\": \"--now-color--secondary-2\"\n    },\n    \"--now-view-control-collapse_label--color--hover\": {\n        \"name\": \"viewControlCollapse.label.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse_subheader--font-family\": {\n        \"name\": \"viewControlCollapse.subheader.fontFamily\",\n        \"derived\": \"--now-view-control_subheader--font-family\"\n    },\n    \"--now-view-control-collapse_subheader--font-style\": {\n        \"name\": \"viewControlCollapse.subheader.fontStyle\",\n        \"derived\": \"--now-view-control_subheader--font-style\"\n    },\n    \"--now-view-control-collapse_subheader--font-weight\": {\n        \"name\": \"viewControlCollapse.subheader.fontWeight\",\n        \"derived\": \"--now-view-control_subheader--font-weight\"\n    },\n    \"--now-view-control-collapse_subheader--primary--color\": {\n        \"name\": \"viewControlCollapse.subheader.primary.color\",\n        \"derived\": \"--now-view-control_subheader--primary--color\"\n    },\n    \"--now-view-control-collapse_subheader--primary--color--hover\": {\n        \"name\": \"viewControlCollapse.subheader.primary.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse_subheader--secondary--color\": {\n        \"name\": \"viewControlCollapse.subheader.secondary.color\",\n        \"derived\": \"--now-view-control_subheader--secondary--color\"\n    },\n    \"--now-view-control-collapse_subheader--secondary--color--hover\": {\n        \"name\": \"viewControlCollapse.subheader.secondary.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse_subheader--tertiary--color\": {\n        \"name\": \"viewControlCollapse.subheader.tertiary.color\",\n        \"derived\": \"--now-view-control_subheader--tertiary--color\"\n    },\n    \"--now-view-control-collapse_subheader--tertiary--color--hover\": {\n        \"name\": \"viewControlCollapse.subheader.tertiary.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse_subheader--text-transform\": {\n        \"name\": \"viewControlCollapse.subheader.textTransform\",\n        \"derived\": \"--now-view-control_subheader--text-transform\"\n    },\n    \"--now-view-control-collapse_trigger-icon--color\": {\n        \"name\": \"viewControlCollapse.triggerIcon.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-view-control-collapse_trigger-icon--color--hover\": {\n        \"name\": \"viewControlCollapse.triggerIcon.color.hover\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-view-control-collapse--font-family\": {\n        \"name\": \"viewControlCollapse.fontFamily\",\n        \"derived\": \"--now-view-control--font-family\"\n    },\n    \"--now-view-control-collapse--font-style\": {\n        \"name\": \"viewControlCollapse.fontStyle\",\n        \"derived\": \"--now-view-control--font-style\"\n    },\n    \"--now-view-control-collapse--font-weight\": {\n        \"name\": \"viewControlCollapse.fontWeight\",\n        \"derived\": \"--now-view-control--font-weight\"\n    },\n    \"--now-view-control-collapse--opacity--disabled\": {\n        \"name\": \"viewControlCollapse.opacity.disabled\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-view-control-collapse--text-transform\": {\n        \"name\": \"viewControlCollapse.textTransform\",\n        \"derived\": \"--now-view-control--text-transform\"\n    },\n    \"--now-window_header_action-icon--primary_focus-ring--color\": {\n        \"name\": \"window.header.actionIcon.primary.focusRing.color\",\n        \"derived\": \"--now-color_focus-ring\"\n    },\n    \"--now-window_header_action-icon--primary--background-color--active\": {\n        \"name\": \"window.header.actionIcon.primary.backgroundColor.active\",\n        \"derived\": \"--now-color_chrome--brand-4\"\n    },\n    \"--now-window_header_action-icon--primary--background-color--hover\": {\n        \"name\": \"window.header.actionIcon.primary.backgroundColor.hover\",\n        \"derived\": \"--now-color_chrome--brand-4\"\n    },\n    \"--now-window_header_action-icon--primary--background-color-alpha--active\": {\n        \"name\": \"window.header.actionIcon.primary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--most\"\n    },\n    \"--now-window_header_action-icon--primary--background-color-alpha--hover\": {\n        \"name\": \"window.header.actionIcon.primary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--most\"\n    },\n    \"--now-window_header_action-icon--primary--color\": {\n        \"name\": \"window.header.actionIcon.primary.color\",\n        \"derived\": \"--now-color--neutral-0\"\n    },\n    \"--now-window_header_action-icon--primary--color--active\": {\n        \"name\": \"window.header.actionIcon.primary.color.active\",\n        \"derived\": \"--now-window_header_action-icon--primary--color\"\n    },\n    \"--now-window_header_action-icon--primary--color--hover\": {\n        \"name\": \"window.header.actionIcon.primary.color.hover\",\n        \"derived\": \"--now-window_header_action-icon--primary--color\"\n    },\n    \"--now-window_header_action-icon--secondary_focus-ring--color\": {\n        \"name\": \"window.header.actionIcon.secondary.focusRing.color\",\n        \"derived\": \"--now-color--focus-1\"\n    },\n    \"--now-window_header_action-icon--secondary--background-color--active\": {\n        \"name\": \"window.header.actionIcon.secondary.backgroundColor.active\",\n        \"derived\": \"--now-color_chrome--brand-4\"\n    },\n    \"--now-window_header_action-icon--secondary--background-color--hover\": {\n        \"name\": \"window.header.actionIcon.secondary.backgroundColor.hover\",\n        \"derived\": \"--now-color_chrome--brand-4\"\n    },\n    \"--now-window_header_action-icon--secondary--background-color-alpha--active\": {\n        \"name\": \"window.header.actionIcon.secondary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--most\"\n    },\n    \"--now-window_header_action-icon--secondary--background-color-alpha--hover\": {\n        \"name\": \"window.header.actionIcon.secondary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--most\"\n    },\n    \"--now-window_header_action-icon--secondary--color\": {\n        \"name\": \"window.header.actionIcon.secondary.color\",\n        \"derived\": \"--now-color--neutral-0\"\n    },\n    \"--now-window_header_action-icon--secondary--color--active\": {\n        \"name\": \"window.header.actionIcon.secondary.color.active\",\n        \"derived\": \"--now-window_header_action-icon--secondary--color\"\n    },\n    \"--now-window_header_action-icon--secondary--color--hover\": {\n        \"name\": \"window.header.actionIcon.secondary.color.hover\",\n        \"derived\": \"--now-window_header_action-icon--secondary--color\"\n    },\n    \"--now-window_header_action-icon--tertiary_focus-ring--color\": {\n        \"name\": \"window.header.actionIcon.tertiary.focusRing.color\",\n        \"derived\": \"--now-color_focus-ring\"\n    },\n    \"--now-window_header_action-icon--tertiary--background-color--active\": {\n        \"name\": \"window.header.actionIcon.tertiary.backgroundColor.active\",\n        \"derived\": \"--now-color_background--secondary-actionable\"\n    },\n    \"--now-window_header_action-icon--tertiary--background-color--hover\": {\n        \"name\": \"window.header.actionIcon.tertiary.backgroundColor.hover\",\n        \"derived\": \"--now-color_background--secondary-actionable\"\n    },\n    \"--now-window_header_action-icon--tertiary--background-color-alpha--active\": {\n        \"name\": \"window.header.actionIcon.tertiary.backgroundColorAlpha.active\",\n        \"derived\": \"--now-opacity--less\"\n    },\n    \"--now-window_header_action-icon--tertiary--background-color-alpha--hover\": {\n        \"name\": \"window.header.actionIcon.tertiary.backgroundColorAlpha.hover\",\n        \"derived\": \"--now-opacity--least\"\n    },\n    \"--now-window_header_action-icon--tertiary--color\": {\n        \"name\": \"window.header.actionIcon.tertiary.color\",\n        \"derived\": \"--now-color_text--tertiary\"\n    },\n    \"--now-window_header_action-icon--tertiary--color--active\": {\n        \"name\": \"window.header.actionIcon.tertiary.color.active\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-window_header_action-icon--tertiary--color--hover\": {\n        \"name\": \"window.header.actionIcon.tertiary.color.hover\",\n        \"derived\": \"--now-color_text--secondary\"\n    },\n    \"--now-window_header_icon--primary--color\": {\n        \"name\": \"window.header.icon.primary.color\",\n        \"derived\": \"--now-color--primary-1\"\n    },\n    \"--now-window_header_icon--secondary--color\": {\n        \"name\": \"window.header.icon.secondary.color\",\n        \"derived\": \"--now-color--secondary-1\"\n    },\n    \"--now-window_header_icon--tertiary--color\": {\n        \"name\": \"window.header.icon.tertiary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-window_header_label--primary--color\": {\n        \"name\": \"window.header.label.primary.color\",\n        \"derived\": \"--now-color--neutral-0\"\n    },\n    \"--now-window_header_label--secondary--color\": {\n        \"name\": \"window.header.label.secondary.color\",\n        \"derived\": \"--now-color--neutral-0\"\n    },\n    \"--now-window_header_label--tertiary--color\": {\n        \"name\": \"window.header.label.tertiary.color\",\n        \"derived\": \"--now-color_text--primary\"\n    },\n    \"--now-window_header--font-family\": {\n        \"name\": \"window.header.fontFamily\",\n        \"derived\": \"--now-display-type--header-primary--font-family\"\n    },\n    \"--now-window_header--font-style\": {\n        \"name\": \"window.header.fontStyle\",\n        \"derived\": \"--now-display-type--header-primary--font-style\"\n    },\n    \"--now-window_header--font-weight\": {\n        \"name\": \"window.header.fontWeight\",\n        \"derived\": \"--now-display-type--header-primary--font-weight\"\n    },\n    \"--now-window_header--primary--background-color\": {\n        \"name\": \"window.header.primary.backgroundColor\",\n        \"derived\": \"--now-color_chrome--brand-10\"\n    },\n    \"--now-window_header--secondary--background-color\": {\n        \"name\": \"window.header.secondary.backgroundColor\",\n        \"derived\": \"--now-color_chrome--brand-5\"\n    },\n    \"--now-window_header--tertiary--background-color\": {\n        \"name\": \"window.header.tertiary.backgroundColor\",\n        \"derived\": \"--now-window--background-color\"\n    },\n    \"--now-window_header--text-transform\": {\n        \"name\": \"window.header.textTransform\",\n        \"derived\": \"--now-display-type--header-primary--text-transform\"\n    },\n    \"--now-window_overlay--background-color\": {\n        \"name\": \"window.overlay.backgroundColor\",\n        \"derived\": \"--now-color--neutral-21\"\n    },\n    \"--now-window_overlay--background-color-alpha\": {\n        \"name\": \"window.overlay.backgroundColorAlpha\",\n        \"derived\": \"--now-opacity--mid\"\n    },\n    \"--now-window--primary--background-color\": {\n        \"name\": \"window.primary.backgroundColor\",\n        \"derived\": \"--now-window--background-color\"\n    },\n    \"--now-window--primary--border-color\": {\n        \"name\": \"window.primary.borderColor\",\n        \"derived\": \"--now-window--border-color\"\n    },\n    \"--now-window--secondary--background-color\": {\n        \"name\": \"window.secondary.backgroundColor\",\n        \"derived\": \"--now-window--background-color\"\n    },\n    \"--now-window--secondary--border-color\": {\n        \"name\": \"window.secondary.borderColor\",\n        \"derived\": \"--now-window--border-color\"\n    },\n    \"--now-window--tertiary--background-color\": {\n        \"name\": \"window.tertiary.backgroundColor\",\n        \"derived\": \"--now-window--background-color\"\n    },\n    \"--now-window--tertiary--border-color\": {\n        \"name\": \"window.tertiary.borderColor\",\n        \"derived\": \"--now-window--border-color\"\n    }\n}","/* eslint-disable no-console */\nimport {UXF_THEME_UPDATED} from '@devsnc/library-uxf/src/factory/constants.js';\nimport baseHooks from './hooks';\nimport {get, set, has} from 'lodash';\nimport systemTokens from './hooks/systemTokens';\n\nconst INFO_DENSITY = {\n\tKEY: 'infodensity',\n\tCOMPACT: 'compact',\n\tDEFAULT: 'default',\n\tPROP: 'userPreferenceInfoDensity',\n};\nlet stashedProcessedValues = {};\nlet themeData = {};\nlet subscribers = new Map();\nconst cachedValues = new Map();\nconst DEFAULT_THEMES = {\n\tCORAL: 'fad87d2ca304121029a4d1aed31e610f',\n\tPOLARIS: '31bf91ae07203010e03948f78ad30095',\n};\nconst ALLOWED_THEMES = [DEFAULT_THEMES.CORAL, DEFAULT_THEMES.POLARIS];\n\nfunction getCSSVariableNamesFromBase(base) {\n\tconst matches = Object.keys(themeData).filter(\n\t\t(key) => key.indexOf(base) === 0,\n\t);\n\treturn matches;\n}\nfunction extractKeys(obj) {\n\tconst keySet = new Set();\n\tfor (const key in obj) {\n\t\tkeySet.add(key);\n\t}\n\treturn keySet;\n}\nfunction setGlobalThemeData() {\n\tif (window?.ux_globals?.theme?.theme) {\n\t\tconst allThemeData = window.ux_globals.theme.theme;\n\t\tconst tokensToRemove = extractKeys(systemTokens);\n\t\tthemeData = {};\n\t\tfor (const key in allThemeData) {\n\t\t\tif (!tokensToRemove.has(key)) {\n\t\t\t\tthemeData[key] = allThemeData[key];\n\t\t\t}\n\t\t}\n\n\t\t// if it is undefined, assume we are in local dev and should fake a theme with sass vars on the page\n\t} else if (window.ux_globals === undefined) {\n\t\twindow.ux_globals = {theme: {theme: {}, parsedFromStyleSheets: true}};\n\t\t//this does not return list of variable names in :root\n\t\tconst styles = window.getComputedStyle(document.body);\n\t\t//need complete list to support css variable groups feature --now-colors*\n\t\tconst [varNames, overrides] = getCSSVariablesFromStyleSheet();\n\t\tfor (const name of varNames) {\n\t\t\twindow.ux_globals.theme.theme[name] =\n\t\t\t\toverrides[name] ?? styles.getPropertyValue(name).trim();\n\t\t}\n\t\tthemeData = window.ux_globals.theme.theme;\n\n\t\t// else we must be on an instance but there is no theme; fall back to defaults in the hooks.\n\t} else {\n\t\tthemeData = {};\n\t}\n}\nsetGlobalThemeData();\n\nfunction checkNextPath(hookName, unresolved, paths, nextPath, hasBeenResolved) {\n\t// if the path leads us to something already in our chain,\n\t// we have a problem\n\tif (paths.has(nextPath)) {\n\t\tconst joined = [hookName, ...paths].join(', ');\n\n\t\tconsole.error(`-[${joined}] forms a circular reference`);\n\t\treturn true;\n\t}\n\n\t// Make sure that the path exists somewhere\n\treturn !(hasBeenResolved || has(unresolved, nextPath));\n}\n\n//TODO: consolidate with @devsnc/analyser-theme, import not intended for production\nfunction isValidPixelString(value) {\n\treturn /^[0-9]+px$/.test(value) || value === '0';\n}\n//TODO: consolidate with @devsnc/analyser-theme, import not intended for production\nfunction isValidPercentString(value) {\n\treturn /^[0-9]{1,3}%$/.test(value);\n}\n\nfunction logFailure(name) {\n\tconsole.warn(`-${name} failed to resolve`);\n}\n\nfunction resolveDerivedHooks(hookName, hook, resolved, unresolved, paths) {\n\tconst derivedPath = get(hook, 'derived');\n\tconst hasBeenResolved = has(resolved, derivedPath);\n\tconst failure = checkNextPath(\n\t\thookName,\n\t\tunresolved,\n\t\tpaths,\n\t\tderivedPath,\n\t\thasBeenResolved,\n\t);\n\n\tif (failure) {\n\t\tlogFailure(hookName);\n\t\tsetVariable(resolved, hookName, hook, null);\n\t\treturn null;\n\t}\n\n\tpaths.add(hookName);\n\n\t// if we already know this derived, set it,\n\t// otherwise recursively walk the chain\n\tconst fbValue = hasBeenResolved\n\t\t? get(resolved, derivedPath)\n\t\t: resolveRemainingHooks(\n\t\t\t\tderivedPath,\n\t\t\t\tunresolved[derivedPath],\n\t\t\t\tresolved,\n\t\t\t\tunresolved,\n\t\t\t\tpaths,\n\t\t\t);\n\n\tif (!fbValue) {\n\t\tlogFailure(hookName);\n\t}\n\n\tpaths.delete(hookName);\n\tsetVariable(resolved, hookName, hook, fbValue);\n\treturn fbValue;\n}\n\nfunction createRemSizeObj(value) {\n\tconst rem = parseFloat(value);\n\tconst rootFontSize = parseInt(\n\t\twindow.getComputedStyle(document.documentElement).fontSize,\n\t\t10,\n\t);\n\treturn {\n\t\trem,\n\t\tpx: rem * rootFontSize,\n\t};\n}\n\nfunction createPxSizeObj(value) {\n\tconst px = parseFloat(value);\n\tconst rootFontSize = parseInt(\n\t\twindow.getComputedStyle(document.documentElement).fontSize,\n\t\t10,\n\t);\n\tif (rootFontSize <= 0) {\n\t\treturn {\n\t\t\tpx,\n\t\t\trem: px,\n\t\t};\n\t}\n\treturn {\n\t\tpx,\n\t\trem: px / rootFontSize,\n\t};\n}\n\nfunction isValidRemString(value) {\n\treturn /^[0-9]*.[0-9]*rem$/.test(value) || value === '0';\n}\n\nfunction isPxSize(value) {\n\treturn isValidPixelString(value) || isValidPercentString(value);\n}\nfunction isRemSize(value) {\n\treturn isValidRemString(value);\n}\n\nfunction processValue(value) {\n\tif (stashedProcessedValues[value]) {\n\t\treturn stashedProcessedValues[value];\n\t}\n\n\tconst schema = isValidRgbString(value)\n\t\t? 'color'\n\t\t: isPxSize(value)\n\t\t\t? 'pxSize'\n\t\t\t: isRemSize(value)\n\t\t\t\t? 'remSize'\n\t\t\t\t: false;\n\n\tif (!schema) {\n\t\treturn value;\n\t}\n\n\tif (schema === 'color') {\n\t\tconst c = createColorObj(value);\n\t\tstashedProcessedValues[value] = c;\n\t\treturn c;\n\t}\n\n\tif (schema === 'pxSize') {\n\t\tconst s = createPxSizeObj(value);\n\t\tstashedProcessedValues[value] = s;\n\t\treturn s;\n\t}\n\n\tif (schema === 'remSize') {\n\t\tconst s = createRemSizeObj(value);\n\t\tstashedProcessedValues[value] = s;\n\t\treturn s;\n\t}\n\n\treturn value;\n}\nfunction resolveRemainingHooks(\n\thookName,\n\thook,\n\tresolved,\n\tunresolved,\n\tpaths = new Set(),\n) {\n\t// hook is defined in the application theme\n\tif (hookName && themeData[hookName]) {\n\t\tconst value = resolveCSSVariable(hookName);\n\t\tsetVariable(resolved, hookName, hook, value);\n\t\treturn value;\n\t}\n\t// hook has a value\n\tif (has(hook, 'initial')) {\n\t\tconst value = processValue(hook.initial);\n\t\tsetVariable(resolved, hookName, hook, value);\n\t\treturn value;\n\t}\n\treturn resolveDerivedHooks(hookName, hook, resolved, unresolved, paths);\n}\nfunction isCSSVariable(name) {\n\treturn name.startsWith('--');\n}\nfunction processItems(items, hooks) {\n\tlet entries;\n\tlet result = [];\n\tfor (const item of items) {\n\t\tif (item.endsWith('*')) {\n\t\t\tconst base = item.slice(0, item.length - 1);\n\t\t\tif (isCSSVariable(base)) {\n\t\t\t\tconst matches = getCSSVariableNamesFromBase(base);\n\t\t\t\tresult = [...result, ...matches];\n\t\t\t} else {\n\t\t\t\tentries = entries || Object.entries(hooks);\n\t\t\t\tfor (const [h, v] of entries) {\n\t\t\t\t\tif (v.name.indexOf(base) === 0) {\n\t\t\t\t\t\tresult.push(h);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (item === INFO_DENSITY.KEY) {\n\t\t\tresult.push(item);\n\t\t} else {\n\t\t\tif (isCSSVariable(item)) {\n\t\t\t\tresult.push(item);\n\t\t\t} else {\n\t\t\t\tentries = entries || Object.entries(hooks);\n\t\t\t\tfor (const [h, v] of entries) {\n\t\t\t\t\tif (v.name === item) {\n\t\t\t\t\t\tresult.push(h);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn result;\n}\nfunction handler() {\n\tcachedValues.clear();\n\tsetGlobalThemeData();\n\tsubscribers.forEach(function (value, element) {\n\t\tif (localStorage.getItem('GLOBAL') !== null) {\n\t\t\tlocalStorage.removeItem('GLOBAL');\n\t\t}\n\t\tif (localStorage.getItem(element.tagName) !== null) {\n\t\t\tlocalStorage.removeItem(element.tagName);\n\t\t}\n\t\tconst {config, fn} = value;\n\t\tconst values = getValues(element, config);\n\t\tfn(element.localName, values);\n\t});\n}\nfunction safeJsonParse(jsonString, fallback = null) {\n\tif (!jsonString || typeof jsonString !== 'string') {\n\t\treturn fallback;\n\t}\n\n\ttry {\n\t\treturn JSON.parse(jsonString);\n\t} catch (e) {\n\t\treturn fallback;\n\t}\n}\n\nfunction setVariable(resolved, hookName, {name}, value) {\n\tconst val = value ? JSON.stringify(value) : value;\n\tconst parsedValue = safeJsonParse(val, value);\n\tset(resolved, hookName, parsedValue);\n\tset(resolved, name, parsedValue);\n}\n\nfunction getCSSVariablesFromStyleSheet() {\n\tconst headacheVals = new Set(['inherit', 'initial', 'unset']);\n\tconst troublesomeDefs = {};\n\tconst stylesheets = Array.from(document.styleSheets).filter(\n\t\t(sheet) => sheet.href === null,\n\t);\n\tconst root = stylesheets.reduce(\n\t\t(acc, sheet) =>\n\t\t\t(acc = [\n\t\t\t\t...acc,\n\t\t\t\t...Array.from(sheet.cssRules).reduce((def, rule) => {\n\t\t\t\t\tif (rule.selectorText !== ':root') {\n\t\t\t\t\t\treturn def;\n\t\t\t\t\t}\n\t\t\t\t\tconst vars = Array.from(rule.style).filter((n) => n.startsWith('--'));\n\n\t\t\t\t\tfor (const v of vars) {\n\t\t\t\t\t\tif (headacheVals.has(rule.style.getPropertyValue(v).trim())) {\n\t\t\t\t\t\t\ttroublesomeDefs[v] = rule.style.getPropertyValue(v).trim();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn [...def, ...vars];\n\t\t\t\t}, []),\n\t\t\t]),\n\t\t[],\n\t);\n\treturn [root, troublesomeDefs];\n}\nfunction __donotuse_temporary_isInUIBStage(element) {\n\tif (typeof element.dispatchEvent != 'function') return false;\n\n\tconst uibID = 'sn-uxf-renderer-theme-with-overrides';\n\tconst time = Date.now();\n\tconst str = Math.random().toString(36).substring(2, 15);\n\tconst uniqueEventName = `check_if_uib_stage_${time}_${str}`;\n\tlet isUIBStage = false;\n\tconst fn = (evt) => {\n\t\tconst nodes = evt.composedPath();\n\t\tfor (const n of nodes) {\n\t\t\tif (n.nodeType === 1 && n.getAttribute('id') === uibID) {\n\t\t\t\tisUIBStage = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t};\n\n\tconst e = new CustomEvent(uniqueEventName, {\n\t\tcomposed: true,\n\t\tbubbles: true,\n\t\tcancelable: true,\n\t});\n\tdocument.addEventListener(uniqueEventName, fn, {once: true});\n\telement.dispatchEvent(e);\n\treturn isUIBStage;\n}\n\n//TODO: consolidate with @devsnc/analyser-theme/src/utils/color\nfunction createColorObj(value) {\n\tconst [rs, gs, bs] = value.split(',');\n\tconst r = Number(rs) / 255;\n\tconst g = Number(gs) / 255;\n\tconst b = Number(bs) / 255;\n\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\n\tlet h = 0,\n\t\ts = 0,\n\t\tl = ((max + min) / 2) * 100;\n\n\tif (delta !== 0) {\n\t\ts = l > 50 ? (delta / (2 - max - min)) * 100 : (delta / (max + min)) * 100;\n\n\t\tswitch (max) {\n\t\t\tcase r:\n\t\t\t\th = (g - b) / delta;\n\t\t\t\tbreak;\n\n\t\t\tcase g:\n\t\t\t\th = 2 + (b - r) / delta;\n\t\t\t\tbreak;\n\n\t\t\tcase b:\n\t\t\t\th = 4 + (r - g) / delta;\n\t\t\t\tbreak;\n\t\t}\n\n\t\th = h < 0 ? h * 60 + 360 : h * 60;\n\t}\n\n\th = Math.round(h);\n\ts = Math.round(s);\n\tl = Math.round(l);\n\treturn {\n\t\thsl: `hsl(${h},${s}%,${l}%)`,\n\t\thslValues: `${h},${s}%,${l}%`,\n\t\trgb: `rgb(${rs},${gs},${bs})`,\n\t\trgbValues: `${rs},${gs},${bs}`,\n\t};\n}\n//taken from @devsnc/analyser-theme, import not intended for production\n//TODO: have analyzer-theme import from @servicenow/behavior-theme ?\nfunction isValidRgbString(value) {\n\treturn (\n\t\t/^[0-9]{1,3}[ ]?,[ ]?[0-9]{1,3}[ ]?,[ ]?[0-9]{1,3}$/.test(value) &&\n\t\t!value.split(',').some((v) => parseInt(v) > 255)\n\t);\n}\n\nexport function getValues(element, config = {}) {\n\tif (!element) {\n\t\tif (process.env.NODE_ENV === 'development') {\n\t\t\tconsole.warn('getValues must be called with an HTMLElement');\n\t\t}\n\t\treturn;\n\t}\n\tconst themeOptions = window?.ux_globals?.theme?.themeOptions ?? {};\n\tconst themeId = themeOptions?.themeId ?? '';\n\tconst variantId = themeOptions?.userPreferenceVariant ?? '';\n\tconst themeKey = variantId\n\t\t? `${themeId}_${variantId}`\n\t\t: themeId === ''\n\t\t\t? 'LEGACY'\n\t\t\t: themeId;\n\n\tconst {items} = config;\n\tconst isGlobal = !items?.length;\n\t//Set a key only for components without any options\n\tconst key = isGlobal ? 'GLOBAL' : element?.tagName;\n\n\t// Check memory cache(fastest)\n\tconst memoryCached = key ? cachedValues.get(key) : null;\n\tif (memoryCached && memoryCached?.themeKey === themeKey) {\n\t\treturn memoryCached?.data;\n\t}\n\t// Check localStorage\n\tconst localCached = key ? localStorage.getItem(key) : null;\n\tif (localCached) {\n\t\tconst parsed = safeJsonParse(localCached);\n\t\tif (parsed?.themeKey === themeKey) {\n\t\t\tcachedValues.set(key, parsed);\n\t\t\treturn parsed?.data;\n\t\t}\n\t}\n\n\tconst requestedItems = items?.length\n\t\t? processItems(items, baseHooks)\n\t\t: new Set([...Object.keys(baseHooks), ...Object.keys(themeData)]);\n\n\tconst resolvedHooks = resolveHooks(baseHooks, requestedItems, element);\n\tconst cacheObject = {data: resolvedHooks, themeKey};\n\t/*\n\tAll the custom themes created from Theme builder will be V2\n\tWhich means they'll have theme options (including polaris and coral)\n\tFor legacy themes, it will not have theme options. This is the only way\n\tI can distinguish between custom themes and legacy themes.\n\t*/\n\n\tif (\n\t\t(key === 'GLOBAL' && ALLOWED_THEMES.includes(themeId)) ||\n\t\tthemeKey === 'LEGACY'\n\t) {\n\t\tlocalStorage.setItem(key, JSON.stringify(cacheObject));\n\t\tcachedValues.set(key, cacheObject);\n\t}\n\treturn resolvedHooks;\n}\n/**\n * Resolves all hooks to values defined in the application theme or to derived\n * if no value or inherited value is defined.\n * @param {Object[]} hooks - Hook definitions\n * @param {Object} themeData - Object containing application theme values\n */\nfunction resolveHooks(hooks, items, element) {\n\tconst resolved = {};\n\t// Then keep iterating over the unresolved list and recursively resolve each entry.\n\tfor (const item of items) {\n\t\tif (has(resolved, item)) continue;\n\n\t\tif (themeData[item]) {\n\t\t\tconst value = resolveCSSVariable(item);\n\t\t\t// We have to do this to avoid circular references\n\t\t\t// in the resolved object.\n\t\t\tconst val = value ? JSON.stringify(value) : value;\n\t\t\tconst parsedValue = safeJsonParse(val, value);\n\t\t\tset(resolved, item, parsedValue);\n\t\t\tif (hooks[item] && hooks[item]?.name) {\n\t\t\t\t// required to fix DEF0479038\n\t\t\t\tif (hooks[item].name === 'color.focusRing.shadow') {\n\t\t\t\t\tset(resolved, 'color.focusRingShadow', value);\n\t\t\t\t} else {\n\t\t\t\t\tset(resolved, hooks[item].name, parsedValue);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (item === INFO_DENSITY.KEY) {\n\t\t\t\tlet themeOptions;\n\t\t\t\tif (\n\t\t\t\t\twindow?.__donotuse_temporary_uib_stage_theme?.themeOptions &&\n\t\t\t\t\t__donotuse_temporary_isInUIBStage(element)\n\t\t\t\t) {\n\t\t\t\t\tthemeOptions =\n\t\t\t\t\t\twindow.__donotuse_temporary_uib_stage_theme.themeOptions;\n\t\t\t\t} else if (window?.ux_globals?.theme?.themeOptions) {\n\t\t\t\t\tthemeOptions = window.ux_globals.theme.themeOptions;\n\t\t\t\t} else {\n\t\t\t\t\tthemeOptions = {};\n\t\t\t\t}\n\t\t\t\tconst mode = themeOptions[INFO_DENSITY.PROP] || INFO_DENSITY.DEFAULT;\n\t\t\t\tset(resolved, item, mode);\n\t\t\t} else if (!hooks[item]) {\n\t\t\t\tif (process.env.NODE_ENV === 'development') {\n\t\t\t\t\tconsole.warn(`${item} does not exist`);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresolveRemainingHooks(item, hooks[item], resolved, hooks);\n\t\t\t}\n\t\t}\n\t}\n\treturn resolved;\n}\n\nfunction resolveCSSVariable(cssVariableName, circular = new Set()) {\n\tconst value = themeData[cssVariableName];\n\tif (!value) {\n\t\treturn console.warn(\n\t\t\t`the css variable: ${cssVariableName} does not exist in themeData`,\n\t\t);\n\t}\n\tif (isCSSVariable(value)) {\n\t\tif (circular.has(value)) {\n\t\t\tconst joined = [cssVariableName, ...circular].join(', ');\n\t\t\treturn console.error(`${joined} forms a circular reference`);\n\t\t}\n\t\tcircular.add(value);\n\t\treturn resolveCSSVariable(value, circular);\n\t}\n\n\treturn processValue(value);\n}\n\n//TODO: consolidate with @devsnc/analyser-theme/src/utils/color\nfunction listen() {\n\tdocument.removeEventListener(UXF_THEME_UPDATED, handler);\n\tdocument.addEventListener(UXF_THEME_UPDATED, handler);\n}\n\nexport function subscribe(...args) {\n\tlisten();\n\tlet element, config, fn;\n\tif (args.length === 2) {\n\t\telement = args[0];\n\t\tconfig = {};\n\t\tfn = args[1];\n\t}\n\tif (args.length === 3) {\n\t\telement = args[0];\n\t\tconfig = args[1];\n\t\tfn = args[2];\n\t}\n\n\tif (!config || !fn) {\n\t\tif (process.env.NODE_ENV === 'development') {\n\t\t\tconsole.error(\n\t\t\t\t`subscribe must be called with one of the following: subscribe(function) or subscribe(element, function), or subscribe(element, config, function)`,\n\t\t\t);\n\t\t}\n\t\treturn;\n\t}\n\n\tif (subscribers.has(element)) {\n\t\tif (process.env.NODE_ENV === 'development') {\n\t\t\tconsole.warn(\n\t\t\t\t'Cannot call subscribe on an element with an active subscription, each element should subscribe only once',\n\t\t\t);\n\t\t}\n\t\treturn;\n\t}\n\t/*\n\tThis function seems to be redundant as its getting called twice.\n\tFirst setInitialState gets called, which calls getValues. Then COMPONENT_CONNECTED is triggered\n\twhich calls subscribe, which calls getValues again.What it does it it triggers PRIVATE#THEME_CHANGED and sets the state.\n\tBut the state has already been set with the same values in setInitialState.So this will cause unnecessary re-renders.\n\tFor now just to be safe, i've added a flag where it will not re-render but will still dispatch the event.\n\t*/\n\t//call fn with initial theme values\n\tconst values = getValues(element, config);\n\tfn(element.localName, values, false);\n\n\t// add to the subscribers list to notify of future updates\n\tsubscribers.set(element, {config, fn});\n}\nexport function unsubscribe(element) {\n\tif (subscribers.has(element)) {\n\t\tsubscribers.delete(element);\n\t} else {\n\t\tif (process.env.NODE_ENV === 'development') {\n\t\t\tconsole.warn(\n\t\t\t\t'Cannot call unsubscribe on an element without an active subscription',\n\t\t\t);\n\t\t}\n\t}\n}\n","import {actionTypes} from '@servicenow/ui-core';\nimport {getValues, subscribe, unsubscribe} from './theme';\n\nconst {COMPONENT_CONNECTED, COMPONENT_DISCONNECTED} = actionTypes;\nconst BEHAVIOR_NAME = 'theme';\n\n//higher order function to make host available to callback\nconst wrapper = (host, updateState) => {\n\treturn (name, values, shouldRender = true) => {\n\t\tif (host.localName === name) {\n\t\t\thost.dispatch('PRIVATE#THEME_CHANGED');\n\t\t\tupdateState(() => {\n\t\t\t\treturn {\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tpath: `behaviors.${BEHAVIOR_NAME}`,\n\t\t\t\t\tvalue: values,\n\t\t\t\t\tshouldRender: shouldRender,\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\t};\n};\n\nexport default {\n\tname: BEHAVIOR_NAME,\n\tsetInitialState: ({host, options}) => {\n\t\treturn getValues(host, options);\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_CONNECTED]: ({updateState, host, action: {payload}}) => {\n\t\t\tconst config = payload.options;\n\t\t\tsubscribe(host, config, wrapper(host, updateState));\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({host}) => {\n\t\t\tunsubscribe(host);\n\t\t},\n\t\t'PRIVATE#THEME_CHANGED': {\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n};\n","import amb from 'amb-client-js';\n\nlet ambClient;\nlet clientUrl;\nexport default function getAMBClient(url = null) {\n\tif (!ambClient) {\n\t\tclientUrl = url;\n\t\tambClient = amb.getClient(clientUrl);\n\t}\n\tif (clientUrl !== url) throw new Error('Subsequent amb client request has different url');\n\treturn ambClient;\n}\n","import {guid} from '@servicenow/ui-internal';\n\nexport default function createSubscriptionId() {\n\treturn guid();\n}\n","export default function createRegistryId(containerId, subscriptionId) {\n\treturn `${containerId}-${subscriptionId}`;\n}\n","import pathToRegexp from 'path-to-regexp';\n\nexport default function replaceChannelParameters(\n\tchannelId,\n\tchannelParams = {},\n\tencodeURIComponentForChannelId = true\n) {\n\tconst toPath = pathToRegexp.compile(channelId, {sensitive: true, whitelist: './'});\n\tconst toPathOptions = encodeURIComponentForChannelId === false ? {encode: str => str} : {};\n\treturn toPath(channelParams, toPathOptions);\n}\n","/**\n * Module that just exports window.setInterval to make it easier to mock and test\n */\n\nexport default setInterval;\n","import {getConfigItem} from '@servicenow/ui-config';\nimport {DISCONNECTED_TIME} from '@servicenow/ui-internal';\nimport setInterval from './utils/setInterval';\n\nconst garbageCollectors = [];\nexport const GARBAGE_COLLECTOR_INTERVAL = getConfigItem('ambGC.GARBAGE_COLLECTOR_INTERVAL') || 5000;\nexport const TIME_TO_WAIT_AFTER_DISCONNECT =\n\tgetConfigItem('ambGC.TIME_TO_WAIT_AFTER_DISCONNECT') || 1000;\n\nsetInterval(() => {\n\tgarbageCollectors.forEach(garbageCollector => {\n\t\tgarbageCollector.__map.forEach((value, key) => {\n\t\t\tif (!value.host.isConnected) {\n\t\t\t\t// Component has disconnected. To avoid unsubscribing a component that may\n\t\t\t\t// immediately reconnect, flag the component for removal in the next interval if\n\t\t\t\t// the component has not already been flagged. If it is already flagged and enough time\n\t\t\t\t// has passed, remove it.\n\t\t\t\tif (!value.host[DISCONNECTED_TIME]) value.host[DISCONNECTED_TIME] = Date.now();\n\t\t\t\telse if (Date.now() - value.host[DISCONNECTED_TIME] > TIME_TO_WAIT_AFTER_DISCONNECT)\n\t\t\t\t\tgarbageCollector.delete(key);\n\t\t\t}\n\t\t});\n\t});\n}, GARBAGE_COLLECTOR_INTERVAL);\n\nexport default function createGarbageCollectorMap(cleanup) {\n\tconst map = new Map();\n\n\tfunction remove(key) {\n\t\tif (map.has(key)) {\n\t\t\tcleanup(key, map.get(key).value);\n\t\t\tmap.delete(key);\n\t\t}\n\t}\n\n\tconst garbageCollectorMap = {\n\t\tset(key, value, host) {\n\t\t\tremove(key);\n\t\t\tmap.set(key, {value, host});\n\t\t},\n\t\thas(key) {\n\t\t\treturn map.has(key);\n\t\t},\n\t\tget(key) {\n\t\t\tconst mapValue = map.get(key);\n\n\t\t\treturn mapValue && mapValue.value;\n\t\t},\n\t\tdelete(key) {\n\t\t\tremove(key);\n\t\t},\n\t\tforEach(callback, thisArg) {\n\t\t\tmap.forEach((entry, key) => callback(entry.value, key), thisArg);\n\t\t},\n\t\t__map: map\n\t};\n\n\tgarbageCollectors.push(garbageCollectorMap);\n\n\treturn garbageCollectorMap;\n}\n","import getAMBClient from './getAMBClient';\nimport {createSubscriptionId, createRegistryId, replaceChannelParameters} from './utils';\nimport {get, defer} from '@servicenow/ui-internal';\nimport createGarbageCollectorMap from './createGarbageCollectorMap';\n\nconst ambChannelRegistry = createGarbageCollectorMap((registryId, channelListener) => {\n\tchannelListener.unsubscribe(channelListener.getCallback());\n});\n\nfunction createSubscriptionCallback(dispatch, successActionType, errorActionType, actionMetaData) {\n\t// use setTimeout (defer) because of an AMB client subscription timing issue\n\treturn response =>\n\t\tdefer(() => {\n\t\t\tif (response.successful) {\n\t\t\t\tdispatch(successActionType, {response}, actionMetaData);\n\t\t\t} else {\n\t\t\t\tconst {error} = response;\n\t\t\t\tdispatch(errorActionType, error, actionMetaData, true);\n\t\t\t}\n\t\t});\n}\n\nfunction createSubscriptionOptionsCallback(options) {\n\treturn () => options || {};\n}\n\nexport const AMB_CHANNEL_SUBSCRIBE_STARTED = 'AMB_CHANNEL_SUBSCRIBE_STARTED';\nexport const AMB_CHANNEL_SUBSCRIBE_SUCCEEDED = 'AMB_CHANNEL_SUBSCRIBE_SUCCEEDED';\nexport const AMB_CHANNEL_SUBSCRIBE_FAILED = 'AMB_CHANNEL_SUBSCRIBE_FAILED';\nexport const AMB_CHANNEL_UNSUBSCRIBE_SUCCEEDED = 'AMB_CHANNEL_UNSUBSCRIBE_SUCCEEDED';\nexport const AMB_MESSAGE_RECEIVED = 'AMB_MESSAGE_RECEIVED';\n\nexport function ambSubscriptionEffect(\n\tambClient,\n\tsubscriptionId,\n\tambChannelRegistry,\n\tchannelId,\n\toptions = {},\n\tcoeffects\n) {\n\tconst {\n\t\tsubscribeStartedActionType = AMB_CHANNEL_SUBSCRIBE_STARTED,\n\t\tsubscribeSucceededActionType = AMB_CHANNEL_SUBSCRIBE_SUCCEEDED,\n\t\tsubscribeFailedActionType = AMB_CHANNEL_SUBSCRIBE_FAILED,\n\t\tunsubscribeSucceededActionType = AMB_CHANNEL_UNSUBSCRIBE_SUCCEEDED,\n\t\tmessageReceivedActionType = AMB_MESSAGE_RECEIVED,\n\t\tencodeURIComponentForChannelId = true,\n\t\tsubscriptionOptions = {}\n\t} = options;\n\tconst {\n\t\taction,\n\t\taction: {\n\t\t\tmeta: {id: containerId}\n\t\t},\n\t\tdispatch,\n\t\thost\n\t} = coeffects;\n\tconst registryId = createRegistryId(containerId, subscriptionId);\n\tconst resolvedChannel = replaceChannelParameters(\n\t\tchannelId,\n\t\taction.payload,\n\t\tencodeURIComponentForChannelId\n\t);\n\tconst metaData = {...action.meta, channelId: resolvedChannel};\n\tconst shouldSubscribe = get(action, 'payload.subscribe', false);\n\tconst subscriptionCallback = createSubscriptionCallback(\n\t\tdispatch,\n\t\tsubscribeSucceededActionType,\n\t\tsubscribeFailedActionType,\n\t\tmetaData\n\t);\n\tconst subscribeOptionsCallback = createSubscriptionOptionsCallback(subscriptionOptions);\n\n\tif (!ambChannelRegistry.has(registryId)) {\n\t\tambChannelRegistry.set(\n\t\t\tregistryId,\n\t\t\tambClient.getChannel(resolvedChannel, {\n\t\t\t\tsubscriptionCallback,\n\t\t\t\tsubscribeOptionsCallback\n\t\t\t}),\n\t\t\thost\n\t\t);\n\t}\n\n\tlet channelListener = ambChannelRegistry.get(registryId);\n\tconst channelIdChanged = resolvedChannel !== channelListener.getName();\n\tif (channelIdChanged) {\n\t\tambChannelRegistry.set(\n\t\t\tregistryId,\n\t\t\tambClient.getChannel(resolvedChannel, {\n\t\t\t\tsubscriptionCallback,\n\t\t\t\tsubscribeOptionsCallback\n\t\t\t}),\n\t\t\thost\n\t\t);\n\t\tchannelListener = ambChannelRegistry.get(registryId);\n\t}\n\n\tconst isSubscribed = channelListener.getCallback() !== undefined;\n\tconst listenerFn = message => {\n\t\tdispatch(messageReceivedActionType, message, metaData);\n\t};\n\tif (!isSubscribed && shouldSubscribe) {\n\t\tdispatch(subscribeStartedActionType, {}, metaData);\n\t\tchannelListener.subscribe(listenerFn);\n\t} else if (isSubscribed && !shouldSubscribe) {\n\t\tambChannelRegistry.delete(registryId);\n\t\tchannelListener.unsubscribe(channelListener.getCallback());\n\t\tdispatch(unsubscribeSucceededActionType, {}, metaData);\n\t}\n}\n\n/**\n * Effect to manage an an amb channel subscription.\n *\n * @function createAmbSubscriptionEffect\n * @example\n * import {createAmbSubscriptionEffect} from '@servicenow/ui-effect-amb';\n *\n * const recordWatcherHandler = createAmbSubscriptionEffect('/rw/default/:table/:filter', {\n *      subscribeStartedActionType: 'RECORD_WATCHER_SUBSCRIBE_STARTED',\n *      subscribeSucceededActionType: 'RECORD_WATCHER_SUBSCRIBED',\n *      subscribeFailedActionType: 'RECORD_WATCHER_SUBSCRIBE_FAILED',\n *      unsubscribeSucceededActionType: 'RECORD_WATCHER_UNSUBSCRIBED',\n *      messageReceivedActionType: 'RECORD_WATCHER_ITEM_CHANGED',\n *      subscriptionOptions: {foo: 'bar'}\n * });\n *\n * const recordItemComponent = createCustomElement('sn-record-item', {\n *      renderer: {\n *          view: (state, dispatch) => {\n *              const {table, filter} = state.properties;\n *              function subscribe() {\n *                  dispatch('RECORD_WATCHER_SUBSCRIPTION_CHANGED', {\n *                      table,\n *                      filter,\n *                      subscribe: true\n *                  });\n *              }\n *\n *              function unsubscribe() {\n *                  dispatch('RECORD_WATCHER_SUBSCRIPTION_CHANGED', {\n *                      table,\n *                      filter,\n *                      subscribe: false\n *                  });\n *              }\n *\n *              return (\n *                  <div>\n *                      <button on-click='subscribe'>Subscribe</button>\n *                      <button on-click='unsubscribe'>Unsubscribe</button>\n *                  </div>\n *              );\n *          }\n *      },\n *\t    properties: {\n *          table: {},\n *          filter: {}\n *\t    },\n *      actionHandlers: {\n *\t\t    'RECORD_WATCHER_SUBSCRIPTION_CHANGED': recordWatcherHandler\n *\t\t}\n * });\n *\n * @param {String} channelId - AMB Channel ID\n * @param {Object} options\n * @param {String} options.subscribeStartedActionType - Action dispatched when an amb subscription is started\n * @param {String} options.subscribeSucceededActionType - Action dispatched if an amb subscription succeeds\n * @param {String} options.subscribeFailedActionType - Action dispatched if an amb subscription fails\n * @param {String} options.unsubscribeSucceededActionType - Action dispatched when an amb unsubscribe is successful\n * @param {String} options.messageReceivedActionType - Action dispatched when a message is received on a channel\n * @param {Boolean} options.encodeURIComponentForChannelId - Encode channel id URL (default: true)\n * @param {Object} options.subscriptionOptions - Arbitary key/value pass through object (default: {})\n *\n * @return {Object} AMB Subscription Effect Descriptor\n */\nexport default function createAmbSubscriptionEffect(channelId, options) {\n\treturn {\n\t\teffect: ambSubscriptionEffect,\n\t\targs: [getAMBClient(), createSubscriptionId(), ambChannelRegistry, channelId, options]\n\t};\n}\n","import getAMBClient from './getAMBClient';\nimport {replaceChannelParameters} from './utils';\n\nexport const AMB_MESSAGE_PUBLISHED = 'AMB_MESSAGE_PUBLISHED';\n\nexport function ambPublishEffect(ambClient, channelId, options = {}, coeffects) {\n\tconst {\n\t\tmessagePublishedActionType = AMB_MESSAGE_PUBLISHED,\n\t\tencodeURIComponentForChannelId = true\n\t} = options;\n\tconst {action, dispatch} = coeffects;\n\tconst resolvedChannel = replaceChannelParameters(\n\t\tchannelId,\n\t\taction.payload,\n\t\tencodeURIComponentForChannelId\n\t);\n\n\t// Should be able to publish messages even if not subscribed to channel\n\tconst channelListener = ambClient.getChannel(resolvedChannel);\n\n\tif (channelListener) {\n\t\tconst {payload: message = {}} = action;\n\t\tchannelListener.publish(message);\n\t\tdispatch(messagePublishedActionType, message, {...action.meta, channelId: resolvedChannel});\n\t}\n}\n\n/**\n * Effect to publish messages over an amb channel.\n *\n * @function createAmbPublishEffect\n * @example\n * import {createAmbPublishEffect} from '@servicenow/ui-effect-amb';\n *\n * const chatMessagePublishedEffect = createAmbPublishEffect('/chat/messages', {\n *     messagePublishedActionType: 'CHAT_MESSAGE_PUBLISH_COMPLETED'\n * });\n *\n * const chatComponent = createCustomElement('sn-chat', {\n *      renderer: {\n *          view: (state, dispatch) => {\n *              function sendMessage() {\n *                  dispatch('CHAT_MESSAGE_PUBLISHED', {\n *                     text: 'Hello World'\n *                  });\n *              }\n *\n *              return <button on-click=\"sendMessage\">Send Message</button>\n *          }\n *      },\n *      actionHandlers: {\n *\t\t    'CHAT_MESSAGE_PUBLISHED': chatMessagePublishedEffect\n *\t\t}\n * });\n *\n * @param {String} channelId - AMB Channel ID\n * @param {Object} options\n * @param {Object} options.messagePublishedActionType = Action dispatched when an amb message publish completes\n * @param {Boolean} options.encodeURIComponentForChannelId - Encode channel id URL (default: true)\n * @return {Object} AMB Publish Effect Descriptor\n */\nexport default function createAmbPublishEffect(channelId, options) {\n\treturn {\n\t\teffect: ambPublishEffect,\n\t\targs: [getAMBClient(), channelId, options]\n\t};\n}\n","import getAMBClient from './getAMBClient';\nimport {createSubscriptionId} from './utils';\nimport {get, toUpper} from '@servicenow/ui-internal';\nimport createGarbageCollectorMap from './createGarbageCollectorMap';\n\nconst eventSubscriptionRegistry = createGarbageCollectorMap((subscriptionId, eventIds) => {\n\teventIds.forEach(id => getAMBClient().unsubscribeFromEvent(id));\n});\n\nexport function ambEventEffect(subscriptionId, ambClient, eventSubscriptionRegistry, coeffects) {\n\tconst {action, dispatch, host} = coeffects;\n\tconst shouldSubscribe = get(action, 'payload.subscribe', false);\n\tif (!eventSubscriptionRegistry.has(subscriptionId) && shouldSubscribe) {\n\t\tconst eventMap = ambClient.getEvents();\n\t\tconst eventIds = [];\n\t\tfor (const key in eventMap) {\n\t\t\teventIds.push(\n\t\t\t\tambClient.subscribeToEvent(eventMap[key], () => dispatch(toUpper(`AMB_EVENT_${key}`)))\n\t\t\t);\n\t\t}\n\n\t\teventSubscriptionRegistry.set(subscriptionId, eventIds, host);\n\t} else if (eventSubscriptionRegistry.has(subscriptionId) && !shouldSubscribe) {\n\t\teventSubscriptionRegistry.delete(subscriptionId);\n\t}\n}\n\n/**\n * Effect to subscribe to AMB events.\n *\n * Dispatches the following actions when the corresponding AMB event occurs:\n *  * AMB_EVENT_CONNECTION_INITIALIZED\n *  * AMB_EVENT_CONNECTION_OPENED\n *  * AMB_EVENT_CONNECTION_CLOSED\n *  * AMB_EVENT_CONNECTION_BROKEN\n *  * AMB_EVENT_SESSION_LOGGED_IN\n *  * AMB_EVENT_SESSION_LOGGED_OUT\n *  * AMB_EVENT_SESSION_INVALIDATED\n *\n * @function createAmbEventEffect\n * @example\n * import {createCustomElement} from '@servicenow/ui-core';\n * import {createAmbEventEffect} from '@servicenow/ui-effect-amb';\n *\n * import {\n *  AMB_EVENT_SUBSCRIPTION_CHANGED,\n *  AMB_EVENT_SESSION_LOGGED_IN,\n *  AMB_EVENT_SESSION_LOGGED_OUT\n * } from './actions';\n *\n * createCustomElement('user-status', {\n *  renderer: {\n *      view(state) {\n *          if(state.loggedIn)\n *              return <h1>Logged In</h1>\n *          else\n *              return <h1>Logged Out</h1>\n *      }\n *  },\n *  actionHandlers: {\n *      [COMPONENT_CONNECTED]: () => {\n *          dispatch(AMB_EVENT_SUBSCRIPTION_CHANGED, {subscribe: true});\n *      },\n *      [COMPONENT_DISCONNECTED]: () => {\n *          dispatch(AMB_EVENT_SUBSCRIPTION_CHANGED, {subscribe: false});\n *      },\n *      [AMB_EVENT_SUBSCRIPTION_CHANGED]: createAmbEventEffect(),\n *      [AMB_EVENT_SESSION_LOGGED_IN]: ({updateState}) => updateState({loggedIn: true}),\n *      [AMB_EVENT_SESSION_LOGGED_OUT]: ({updateState}) => updateState({loggedIn: false})\n *  }\n * });\n *\n * @return {Object} AMB Event Effect Descriptor\n */\nexport default function createAmbEventEffect() {\n\treturn {\n\t\teffect: ambEventEffect,\n\t\targs: [createSubscriptionId(), getAMBClient(), eventSubscriptionRegistry]\n\t};\n}\n","const popoverSelfServicePrefix = 'NOW_REQ_CHAT_POPOVER_OR_SELF_SERVICE#';\n\nexport const UNREAD_FETCH_REQUESTED = `${popoverSelfServicePrefix}UNREAD_FETCH_REQUESTED`;\nexport const UNREAD_FETCH_SUCCEEDED = `${popoverSelfServicePrefix}UNREAD_FETCH_SUCCEEDED`;\nexport const DIALOG_OPENED = `${popoverSelfServicePrefix}DIALOG_OPENED`;\nexport const DIALOG_CLOSED = `${popoverSelfServicePrefix}DIALOG_CLOSED`;\nexport const CLEAR_NOTIFICATIONS = `${popoverSelfServicePrefix}CLEAR_NOTIFICATIONS`;\nexport const FETCH_FEATURE_STATUS = `${popoverSelfServicePrefix}FETCH_MESSAGE_PREVIEW_REQUESTED`;\nexport const FETCH_FEATURE_STATUS_SUCCEEDED = `${popoverSelfServicePrefix}FETCH_MESSAGE_PREVIEW_SUCCEEDED`;\nexport const UNREAD_FETCH_FAILED = `${popoverSelfServicePrefix}UNREAD_FETCH_FAILED`;\nexport const FETCH_FEATURE_STATUS_FAILED = `${popoverSelfServicePrefix}FETCH_MESSAGE_PREVIEW_FAILED`;\nexport const NEW_MESSAGE_RECEIVED = `${popoverSelfServicePrefix}NEW_MESSAGE_RECEIVED`;\nexport const UPDATE_LAST_MESSAGE = 'NOW_POPOVER#UPDATE_LAST_MESSAGE';\nexport const FETCH_CONTEXT_REQUESTED = 'NOW_POPOVER#FETCH_CONTEXT_REQUESTED';\nexport const FETCH_CONTEXT_SUCCEEDED = 'NOW_POPOVER#FETCH_CONTEXT_SUCCEEDED';\nexport const FETCH_CONTEXT_FAILED = 'NOW_POPOVER#FETCH_CONTEXT_FAILED';\nexport const GET_ACTION_REQUESTED = 'NOW_POPOVER#GET_ACTION_REQUESTED';\nexport const GET_ACTION_SUCCEEDED = 'NOW_POPOVER#GET_ACTION_SUCCEEDED';\nexport const GET_ACTION_FAILED = 'NOW_POPOVER#GET_ACTION_FAILED';\nexport const PROACTIVE_TRIGGER_CHANGED = 'NOW_POPOVER#PROACTIVE_TRIGGER_CHANGED';\nexport const PROACTIVE_TRIGGER_NEW_MESSAGE = 'NOW_POPOVER#PROACTIVE_NEW_MESSAGE';\nexport const PROACTIVE_TRIGGER_SUBSCRIBE_START = 'NOW_POPOVER#PROACTIVE_SUBSCRIBE_START';\nexport const PROACTIVE_TRIGGER_SUBSCRIBE_SUCCESS = 'NOW_POPOVER#PROACTIVE_SUBSCRIBE_SUCCESS';\nexport const PROACTIVE_TRIGGER_SUBSCRIBE_FAILED = 'NOW_POPOVER#PROACTIVE_SUBSCRIBE_FAILED';\nexport const FADEOUT_TIME = 10000;\nexport const LIVE_AGENT_ONLY = 'live_agent_only';\nexport const ACTIVE_CONVERSATION_STATUS_CODE = '205';\nexport const TRIGGER_GET_ACTION_DEBOUNCED = 'NOW_POPOVER#TRIGGER_GET_ACTION_DEBOUNCED';\nexport const START_UNREAD_MESSAGE_LOOP = 'NOW_POPOVER#START_UNREAD_MESSAGE_LOOP';\nexport const RESTART_UNREAD_MESSAGE_LOOP = 'NOW_POPOVER#RESTART_UNREAD_MESSAGE_LOOP';\nexport const AGENT_CHAT = 'AGENT_CHAT';\nexport const VIRTUAL_AGENT = 'VIRTUAL_AGENT';\nexport const PROACTIVE = 'PROACTIVE';\nexport const PREVIEW = 'PREVIEW';\nexport const PROACTIVE_FADEOUT_TIME = 20000;\nexport const SUCCESSFUL_ACTION_STATUS_CODE = '200';\nexport const NO_CONTENT_STATUS_CODE = '204';\nexport const MESSAGE_TYPE_HTML = 'html';\nexport const BRANDING_KEY = 'branding_key';\nexport const DEFAULT_BRANDING = 'default_branding';\nexport const AMB_EVENTS = {\n\tAMB_EVENT_SUBSCRIPTION_CHANGED: 'NOW_POPOVER#AMB_EVENT_SUBSCRIPTION_CHANGED',\n\tAMB_EVENT_SESSION_LOGGED_OUT: 'NOW_POPOVER#AMB_EVENT_SESSION_LOGGED_OUT',\n\tAMB_EVENT_SESSION_INVALIDATED: 'NOW_POPOVER#AMB_EVENT_SESSION_INVALIDATED',\n\tAMB_EVENT_CONNECTION_INITIALIZED: 'NOW_POPOVER#AMB_EVENT_CONNECTION_INITIALIZED'\n};\nexport const CONSUMER_ACCOUNT_CONTEXT = 'consumer_account_context';\nexport const PORTAL = 'portal';\n","/* eslint-disable camelcase */\n/* eslint-disable import/no-extraneous-dependencies */\nimport {actionTypes, modifierTypes} from '@servicenow/ui-core';\nimport {createAmbEventEffect, createAmbSubscriptionEffect} from '@servicenow/ui-effect-amb';\nimport {dangerouslyCreateElementFromString} from '@servicenow/ui-renderer-snabbdom';\nimport {normalizeFeatureStatus, pickPreviewMessage} from '@chat-components/common/src/unread-utils';\nimport debounce from 'lodash/debounce';\nimport {snHttpFactory} from 'sn-http-request';\nimport {\n\tACTIVE_CONVERSATION_STATUS_CODE,\n\tAGENT_CHAT,\n\tAMB_EVENTS,\n\tBRANDING_KEY,\n\tCLEAR_NOTIFICATIONS,\n\tDEFAULT_BRANDING,\n\tFADEOUT_TIME,\n\tFETCH_CONTEXT_FAILED,\n\tFETCH_CONTEXT_REQUESTED,\n\tFETCH_CONTEXT_SUCCEEDED,\n\tFETCH_FEATURE_STATUS_FAILED,\n\tFETCH_FEATURE_STATUS,\n\tFETCH_FEATURE_STATUS_SUCCEEDED,\n\tGET_ACTION_FAILED,\n\tGET_ACTION_REQUESTED,\n\tGET_ACTION_SUCCEEDED,\n\tLIVE_AGENT_ONLY,\n\tMESSAGE_TYPE_HTML,\n\tNEW_MESSAGE_RECEIVED,\n\tNO_CONTENT_STATUS_CODE,\n\tPREVIEW,\n\tPROACTIVE,\n\tPROACTIVE_FADEOUT_TIME,\n\tPROACTIVE_TRIGGER_CHANGED,\n\tPROACTIVE_TRIGGER_NEW_MESSAGE,\n\tPROACTIVE_TRIGGER_SUBSCRIBE_FAILED,\n\tPROACTIVE_TRIGGER_SUBSCRIBE_START,\n\tPROACTIVE_TRIGGER_SUBSCRIBE_SUCCESS,\n\tSTART_UNREAD_MESSAGE_LOOP,\n\tRESTART_UNREAD_MESSAGE_LOOP,\n\tSUCCESSFUL_ACTION_STATUS_CODE,\n\tTRIGGER_GET_ACTION_DEBOUNCED,\n\tUNREAD_FETCH_FAILED,\n\tUNREAD_FETCH_REQUESTED,\n\tUNREAD_FETCH_SUCCEEDED,\n\tUPDATE_LAST_MESSAGE,\n\tVIRTUAL_AGENT\n} from '../constants';\n\nconst {COMPONENT_CONNECTED, COMPONENT_DOM_READY, COMPONENT_DISCONNECTED} = actionTypes;\n\nexport const actionHandlerFactory = (\n\tunreadMessageURL,\n\tshouldFetchProactiveAndPreviewMsgOnCurrentPage,\n\tgetAdditionalUnreadQueryParams\n) => {\n\t/** START OF TEMPORARY CODE */\n\t// TEMPORARY: create own http effect, until such time that Seismic supports this\n\t// DEP: ### // TODO add the DEP number when I get items\n\tconst client = snHttpFactory({\n\t\txsrfToken: window.g_ck,\n\t\txTransactionSource: window.transaction_source,\n\t\tmaxConcurrent: 1,\n\t\tbatching: false\n\t});\n\n\tasync function httpEffect(url, options, coeffects) {\n\t\tconst {dispatch, properties, action} = coeffects;\n\t\tconst {instance} = properties;\n\t\tconst {payload} = action;\n\n\t\ttry {\n\t\t\tconst {headers = {}, method, onUploadProgress = () => {}} = options;\n\t\t\tconst result = await client.request(url, method, {\n\t\t\t\tbaseURL: instance,\n\t\t\t\twithCredentials: true,\n\t\t\t\tbatch: false,\n\t\t\t\theaders,\n\t\t\t\tdata: method === 'POST' ? payload : {},\n\t\t\t\tonUploadProgress,\n\t\t\t\tparams: method === 'GET' ? payload : {}\n\t\t\t});\n\t\t\tdispatch(options.successActionType, result?.data);\n\t\t} catch (e) {\n\t\t\tdispatch(options.errorActionType, e, {}, true);\n\t\t}\n\t}\n\n\tfunction createHttpEffect(url, options = {}) {\n\t\treturn {\n\t\t\teffect: httpEffect,\n\t\t\targs: [\n\t\t\t\turl,\n\t\t\t\toptions\n\t\t\t]\n\t\t};\n\t}\n\n\tfunction getProactiveChannelId(action) {\n\t\tlet currentChannelId = '';\n\t\tif (action?.payload?.result?.channel_id) {\n\t\t\tconst splitId = action?.payload?.result?.channel_id.split('/');\n\t\t\tcurrentChannelId = splitId[splitId.length - 1];\n\t\t}\n\t\treturn currentChannelId;\n\t}\n\n\tfunction getClientContext(clientContext) {\n\t\tlet context = {};\n\t\tif (typeof clientContext === 'string') {\n\t\t\ttry {\n\t\t\t\tcontext = JSON.parse(decodeURIComponent(clientContext)) || {};\n\t\t\t} catch (e) {\n\t\t\t\tcontext = {};\n\t\t\t}\n\t\t\treturn context;\n\t\t}\n\t\t//return as is if not a string\n\t\treturn clientContext ? clientContext : {};\n\t}\n\n\t/** END OF TEMPORARY CODE */\n\n\tconst fetchUnreadMessages = createHttpEffect(unreadMessageURL, {\n\t\tmethod: 'GET',\n\t\tsuccessActionType: UNREAD_FETCH_SUCCEEDED,\n\t\terrorActionType: UNREAD_FETCH_FAILED\n\t});\n\n\tconst fetchFeatureStatus = createHttpEffect('/api/now/advance_chat_settings/get_feature_status', {\n\t\tmethod: 'GET',\n\t\tsuccessActionType: FETCH_FEATURE_STATUS_SUCCEEDED,\n\t\terrorActionType: FETCH_FEATURE_STATUS_FAILED\n\t});\n\tconst fetchContextRequested = createHttpEffect('/api/sn_pt/proactive_trigger/create_request', {\n\t\tmethod: 'POST',\n\t\tdataParam: 'data',\n\t\tsuccessActionType: FETCH_CONTEXT_SUCCEEDED,\n\t\terrorActionType: FETCH_CONTEXT_FAILED\n\t});\n\tconst getActionRequested = createHttpEffect('/api/sn_pt/proactive_trigger/get_actions', {\n\t\tmethod: 'POST',\n\t\tdataParam: 'data',\n\t\tsuccessActionType: GET_ACTION_SUCCEEDED,\n\t\terrorActionType: GET_ACTION_FAILED\n\t});\n\n\tconst msgFadeOutTimeArr = [];\n\tlet timeOutArr = []; // Global Timer array\n\tlet currentMessageIndex = 0; // Keep a track of which action message is shown\n\n\tconst proactiveTriggerAmbNewMessageHandler = ({\n\t\tstate,\n\t\tupdateState,\n\t\taction,\n\t\tproperties,\n\t\tdispatch\n\t}) => {\n\t\ttry {\n\t\t\tconst requestId = action?.payload?.data?.request_id;\n\t\t\tlet currentChannelId = '';\n\n\t\t\tif (action?.payload?.channel) {\n\t\t\t\tconst splitId = action?.payload?.channel.split('/');\n\t\t\t\tcurrentChannelId = splitId[splitId.length - 1];\n\t\t\t}\n\t\t\tif (\n\t\t\t\tstate.proactiveTriggersChannelId != currentChannelId ||\n\t\t\t\trequestId != state.proactiveTriggersRequestId\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet {clientContext} = properties;\n\t\t\tclientContext = getClientContext(clientContext);\n\t\t\tlet timerDelays = action?.payload?.data?.time_delays;\n\t\t\ttimerDelays.sort((a, b) => a.value - b.value);\n\n\t\t\tif (state.messageCount > 0) {\n\t\t\t\t// Remove the timer-delay for value 0 if there is unread-message for message-preview\n\t\t\t\ttimerDelays = timerDelays.filter((res) => res.value != '0');\n\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tdispatchAmbProactiveTrigger(\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\taction,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\ttimerDelays,\n\t\t\t\t\t\ttimeOutArr,\n\t\t\t\t\t\tclientContext\n\t\t\t\t\t);\n\t\t\t\t}, FADEOUT_TIME);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdispatchAmbProactiveTrigger(\n\t\t\t\tdispatch,\n\t\t\t\taction,\n\t\t\t\tupdateState,\n\t\t\t\tstate,\n\t\t\t\ttimerDelays,\n\t\t\t\ttimeOutArr,\n\t\t\t\tclientContext\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tconsole.error(`Error: ${e}`);\n\t\t}\n\t};\n\n\tconst actionHandlers = {\n\t\t[COMPONENT_CONNECTED]: {\n\t\t\teffect({state, updateState, dispatch}) {\n\t\t\t\tconst {properties} = state;\n\t\t\t\tconst {dialogOpened: opened} = properties;\n\t\t\t\tlet isLiveAgentOnly = false;\n\t\t\t\tlet brandingKey = '';\n\t\t\t\tlet language = '';\n\t\t\t\tlet {clientContext} = properties;\n\t\t\t\tclientContext = getClientContext(clientContext);\n\t\t\t\tconst isAMBEnabledOnClient = state?.properties?.isInternalUrl;\n\t\t\t\tisLiveAgentOnly = clientContext?.[LIVE_AGENT_ONLY] ?? false;\n\t\t\t\tbrandingKey = clientContext?.[BRANDING_KEY] ?? DEFAULT_BRANDING;\n\t\t\t\tlanguage = clientContext?.language ?? clientContext?.requester_session_language ?? null;\n\n\t\t\t\tupdateState({\n\t\t\t\t\topened,\n\t\t\t\t\tisLiveAgentOnly,\n\t\t\t\t\tbrandingKey,\n\t\t\t\t\tlanguage,\n\t\t\t\t\tisAMBEnabledOnClient\n\t\t\t\t});\n\n\t\t\t\tif (isAMBEnabledOnClient) {\n\t\t\t\t\tdispatch(AMB_EVENTS.AMB_EVENT_SUBSCRIPTION_CHANGED, {subscribe: true});\n\t\t\t\t}\n\n\t\t\t\tvar updateUrlAndState = debounce(() => {\n\t\t\t\t\tupdateState(({state}) => {\n\t\t\t\t\t\tconst newURL = window?.location?.href;\n\t\t\t\t\t\tif (newURL !== state?.contextURL) {\n\t\t\t\t\t\t\t// Have we navigated to self service page?\n\t\t\t\t\t\t\t// If yes, do not call create_request for proactive\n\t\t\t\t\t\t\t//Also check if isProactiveTriggersEnabled is true.\n\t\t\t\t\t\t\t// Otherwise, create_request call will be made unnecessarily on navigating to diff page.\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tshouldFetchProactiveAndPreviewMsgOnCurrentPage() &&\n\t\t\t\t\t\t\t\tstate?.isProactiveTriggersEnabled\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tconst payload = {\n\t\t\t\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\t\t\t\turl: newURL,\n\t\t\t\t\t\t\t\t\t\tusage_type: state?.isLiveAgentOnly ? AGENT_CHAT : VIRTUAL_AGENT,\n\t\t\t\t\t\t\t\t\t\tbranding_key: brandingKey,\n\t\t\t\t\t\t\t\t\t\tlanguage,\n\t\t\t\t\t\t\t\t\t\tis_internal_url: isAMBEnabledOnClient,\n\t\t\t\t\t\t\t\t\t\tclient_context: clientContext\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tdispatch(FETCH_CONTEXT_REQUESTED, payload);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tupdateState({contextURL: newURL});\n\t\t\t\t\t\t\t// Clear notification if current message is Proactive\n\t\t\t\t\t\t\tif (state?.lastMessageType != PREVIEW) {\n\t\t\t\t\t\t\t\tdispatch(CLEAR_NOTIFICATIONS);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}, 500);\n\n\t\t\t\tconst observer = new MutationObserver(() => {\n\t\t\t\t\tupdateUrlAndState();\n\t\t\t\t});\n\t\t\t\tobserver.observe(window?.parent?.document, {subtree: true, childList: true});\n\t\t\t\tif (shouldFetchProactiveAndPreviewMsgOnCurrentPage()) {\n\t\t\t\t\tconst unreadQueryParams = getAdditionalUnreadQueryParams(clientContext);\n\t\t\t\t\tdispatch(UNREAD_FETCH_REQUESTED, {\n\t\t\t\t\t\tsysparm_limit: 25,\n\t\t\t\t\t\tsysparm_return_only: 'count',\n\t\t\t\t\t\t...unreadQueryParams\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DOM_READY]: {\n\t\t\teffect({dispatch, updateState, host}) {\n\t\t\t\t// Used for internal sandbox:\n\t\t\t\thost.__dispatch = dispatch;\n\t\t\t\thost.__updateState = updateState;\n\t\t\t\t//FETCH_MESSAGE_PREVIEW_REQUESTED is a call to get feature status.\n\t\t\t\tconst shouldFetchMsg = shouldFetchProactiveAndPreviewMsgOnCurrentPage();\n\t\t\t\tif (shouldFetchMsg) {\n\t\t\t\t\tsetTimeout(dispatch, 1000, FETCH_FEATURE_STATUS);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]({dispatch}) {\n\t\t\tdispatch(AMB_EVENTS.AMB_EVENT_SUBSCRIPTION_CHANGED, {subscribe: false});\n\t\t},\n\t\t[UNREAD_FETCH_REQUESTED]: fetchUnreadMessages,\n\t\t[UNREAD_FETCH_SUCCEEDED]: {\n\t\t\tasync effect({action, updateState, state, dispatch}) {\n\t\t\t\tconst {intervalID} = state;\n\t\t\t\tif (!shouldFetchProactiveAndPreviewMsgOnCurrentPage()) {\n\t\t\t\t\tclearInterval(intervalID);\n\t\t\t\t\tupdateState({messageCount: 0, intervalID});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!action.payload) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tupdateState({messageCount: action.payload.totalUnreadMessageCount});\n\t\t\t\tif (action.payload.totalUnreadMessageCount === 0) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst message = action.payload.unreadMessages[0] ?? null;\n\t\t\t\tif (state.lastMessageId === message?.messageId) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t/* As per default behavior, the API only returns last 5 messages(in oposite direction)-> Orig - [1,2,3,4,5,6].\n\t\t\t\t API will return [6,5,4,3,2], so the first message will be 2(not 1);\n\t\t\t\t*/\n\t\t\t\tif (!state.isMessagePreviewEnabled || !shouldFetchProactiveAndPreviewMsgOnCurrentPage()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst firstUnreadMessage = pickPreviewMessage(action?.payload?.unreadMessages)?.originalMessage.trim() ?? '';\n\t\t\t\tif (firstUnreadMessage) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait new Audio(state.audioUrl).play();\n\t\t\t\t\t\t// eslint-disable-next-line no-empty\n\t\t\t\t\t} catch (e) {}\n\t\t\t\t}\n\t\t\t\tupdateState({\n\t\t\t\t\tlastMessageId: message.messageId,\n\t\t\t\t\tlastConversationId: message.conversationId,\n\t\t\t\t\tlatestMessage: firstUnreadMessage,\n\t\t\t\t\tnotificationOpened: firstUnreadMessage !== '',\n\t\t\t\t\tactionSysId: '',\n\t\t\t\t\tlastMessageType: PREVIEW,\n\t\t\t\t\t// clear out the supplemental controls if they were there before\n\t\t\t\t\tsupplementalControls: null\n\t\t\t\t});\n\t\t\t\tif (firstUnreadMessage) {\n\t\t\t\t\tdispatch(NEW_MESSAGE_RECEIVED);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[UNREAD_FETCH_FAILED]: {\n\t\t\teffect({state, updateState}) {\n\t\t\t\t//Stop the current unread loop if there is an error in unread API call.\n\t\t\t\tclearInterval(state?.intervalID);\n\t\t\t\tupdateState({messageCount: 0, intervalID: null});\n\t\t\t}\n\t\t},\n\n\t\t[FETCH_FEATURE_STATUS]: fetchFeatureStatus,\n\t\t[FETCH_FEATURE_STATUS_SUCCEEDED]: {\n\t\t\teffect({action, updateState, dispatch, state}) {\n\t\t\t\tconst {properties, language} = state;\n\t\t\t\tlet intervalID = state?.intervalID;\n\t\t\t\tconst isAMBEnabledOnClient = properties?.isInternalUrl;\n\t\t\t\tconst result = action?.payload?.result;\n\t\t\t\tconst shouldFetchMsg = shouldFetchProactiveAndPreviewMsgOnCurrentPage();\n\t\t\t\tlet {clientContext} = properties;\n\t\t\t\tclientContext = getClientContext(clientContext);\n\t\t\t\tconst {fetchUnreadInterval, isMessagePreviewEnabled, isProactiveTriggersEnabled} =\n\t\t\t\t\tnormalizeFeatureStatus(result);\n\n\t\t\t\tif (isProactiveTriggersEnabled && shouldFetchMsg) {\n\t\t\t\t\tconst payload = {\n\t\t\t\t\t\tcontext: {\n\t\t\t\t\t\t\turl: state?.contextURL,\n\t\t\t\t\t\t\tusage_type: state?.isLiveAgentOnly ? AGENT_CHAT : VIRTUAL_AGENT,\n\t\t\t\t\t\t\tbranding_key: state?.brandingKey ?? DEFAULT_BRANDING,\n\t\t\t\t\t\t\tlanguage,\n\t\t\t\t\t\t\tis_internal_url: isAMBEnabledOnClient,\n\t\t\t\t\t\t\tclient_context: clientContext\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\tdispatch(FETCH_CONTEXT_REQUESTED, payload);\n\t\t\t\t} else if (isMessagePreviewEnabled && shouldFetchMsg) {\n\t\t\t\t\t// If proactive chat is not enabled, keep polling for unread messages\n\t\t\t\t\tif (!intervalID) {\n\t\t\t\t\t\tconst unreadQueryParams = getAdditionalUnreadQueryParams(clientContext);\n\t\t\t\t\t\tintervalID = setInterval(dispatch, fetchUnreadInterval, UNREAD_FETCH_REQUESTED, {\n\t\t\t\t\t\t\tsysparm_return_only: 'push_message',\n\t\t\t\t\t\t\tsysparm_limit: 25,\n\t\t\t\t\t\t\t...unreadQueryParams\n\t\t\t\t\t\t});\n\t\t\t\t\t} //eslint-disable-line camelcase\n\t\t\t\t} else if (shouldFetchMsg) {\n\t\t\t\t\t//Fetch Unread message count if proactive or preview not enabled and shouldFetchMsg is true.\n\t\t\t\t\tconst unreadQueryParams = getAdditionalUnreadQueryParams(clientContext);\n\t\t\t\t\tif (!intervalID) {\n\t\t\t\t\t\tintervalID = setInterval(dispatch, fetchUnreadInterval, UNREAD_FETCH_REQUESTED, {\n\t\t\t\t\t\t\tsysparm_limit: 25,\n\t\t\t\t\t\t\tsysparm_return_only: 'count',\n\t\t\t\t\t\t\t...unreadQueryParams\n\t\t\t\t\t\t});\n\t\t\t\t\t} //eslint-disable-line camelcase\n\t\t\t\t}\n\t\t\t\tupdateState({\n\t\t\t\t\tisMessagePreviewEnabled,\n\t\t\t\t\tisProactiveTriggersEnabled,\n\t\t\t\t\tisAMBEnabledInternal: result?.isAMBEnabledInternal ?? false,\n\t\t\t\t\tisAMBEnabledExternal: result?.isAMBEnabledExternal ?? false,\n\t\t\t\t\tfetchUnreadInterval,\n\t\t\t\t\tintervalID\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[FETCH_FEATURE_STATUS_FAILED]: {\n\t\t\teffect({updateState}) {\n\t\t\t\tupdateState({\n\t\t\t\t\tmessagePreviewEnabled: false,\n\t\t\t\t\tproactiveChatEnabled: false\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[FETCH_CONTEXT_REQUESTED]: fetchContextRequested,\n\t\t[FETCH_CONTEXT_SUCCEEDED]: {\n\t\t\teffect({action, dispatch, updateState, state}) {\n\t\t\t\tconst {properties, language} = state;\n\t\t\t\tconst statusCode = action?.payload?.result?.status;\n\t\t\t\tupdateState(({state}) => {\n\t\t\t\t\t// Has active conversation\n\t\t\t\t\tif (statusCode === ACTIVE_CONVERSATION_STATUS_CODE) {\n\t\t\t\t\t\tdispatch(START_UNREAD_MESSAGE_LOOP);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (statusCode === NO_CONTENT_STATUS_CODE) {\n\t\t\t\t\t\tif (timeOutArr.length) {\n\t\t\t\t\t\t\ttimeOutArr.forEach((t) => clearTimeout(t));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (state.lastMessageType === PROACTIVE) {\n\t\t\t\t\t\t\tdispatch(CLEAR_NOTIFICATIONS);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tlet {clientContext} = properties;\n\t\t\t\t\tclientContext = getClientContext(clientContext);\n\t\t\t\t\tconst unreadQueryParams = getAdditionalUnreadQueryParams(clientContext);\n\t\t\t\t\t//We should check if preview is enabled before fetching the unread message for preview\n\t\t\t\t\tif (state?.isMessagePreviewEnabled) {\n\t\t\t\t\t\tdispatch(UNREAD_FETCH_REQUESTED, {\n\t\t\t\t\t\t\tsysparm_return_only: 'push_message',\n\t\t\t\t\t\t\tsysparm_limit: 25,\n\t\t\t\t\t\t\t...unreadQueryParams\n\t\t\t\t\t\t}); // just show one message\n\t\t\t\t\t}\n\t\t\t\t\tlet timerDelays = action?.payload?.result?.time_delays;\n\t\t\t\t\tconst context = action?.payload?.result?.request_id;\n\t\t\t\t\tif (!context || !context.length) {\n\t\t\t\t\t\t// start unread loop\n\t\t\t\t\t\tdispatch(START_UNREAD_MESSAGE_LOOP);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst currentChannelId = getProactiveChannelId(action);\n\t\t\t\t\tconst shouldSubscribeToAmb =\n\t\t\t\t\t\tstate?.isAMBEnabledOnClient && state.isAMBEnabledInternal && currentChannelId;\n\t\t\t\t\tcurrentMessageIndex = 0; // Reset currentMessageIndex on page load with successful create_request response\n\n\t\t\t\t\tif (shouldSubscribeToAmb) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tstate.proactiveTriggersChannelId != '' &&\n\t\t\t\t\t\t\tstate.proactiveTriggersChannelId != currentChannelId\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tdispatch(PROACTIVE_TRIGGER_CHANGED, {\n\t\t\t\t\t\t\t\tchannelId: state.proactiveTriggersChannelId,\n\t\t\t\t\t\t\t\tsubscribe: false\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Subscribe to channel\n\t\t\t\t\t\t// 1. On page load,\n\t\t\t\t\t\t// 2. User switch page and current channel-id does not match with channel-is stored in state.\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tstate.proactiveTriggersChannelId == '' ||\n\t\t\t\t\t\t\t(state.proactiveTriggersChannelId != '' &&\n\t\t\t\t\t\t\t\tstate.proactiveTriggersChannelId != currentChannelId)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tdispatch(PROACTIVE_TRIGGER_CHANGED, {\n\t\t\t\t\t\t\t\tchannelId: currentChannelId,\n\t\t\t\t\t\t\t\tsubscribe: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Save RequestId and channelId in case if timer array comes from AMB subscription\n\t\t\t\t\t\tupdateState({\n\t\t\t\t\t\t\tproactiveTriggersChannelId: currentChannelId,\n\t\t\t\t\t\t\tproactiveTriggersRequestId: context\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t// Clear previous timer and timeoutarray\n\t\t\t\t\tif (timeOutArr.length) {\n\t\t\t\t\t\ttimeOutArr.forEach((t) => clearTimeout(t.function));\n\t\t\t\t\t\ttimeOutArr = [];\n\t\t\t\t\t}\n\n\t\t\t\t\tlet currentTimeDelaysLength = timerDelays?.length;\n\t\t\t\t\tconst messageAction = action?.payload?.result?.action;\n\n\t\t\t\t\t// Remove the timer-delay for value 0 if there is unread-message for message-preview\n\t\t\t\t\tif (state.messageCount > 0) {\n\t\t\t\t\t\ttimerDelays = timerDelays.filter((res) => res.value != '0');\n\t\t\t\t\t\tcurrentTimeDelaysLength = timerDelays?.length;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Update timerdelays length as there is additional timer at delay 0 and there is no unread-message for message-preview\n\t\t\t\t\tif (\n\t\t\t\t\t\tmessageAction &&\n\t\t\t\t\t\tmessageAction.message.type &&\n\t\t\t\t\t\tmessageAction.message &&\n\t\t\t\t\t\tstate.messageCount == 0\n\t\t\t\t\t) {\n\t\t\t\t\t\tcurrentTimeDelaysLength = currentTimeDelaysLength + 1;\n\t\t\t\t\t}\n\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\ttimeDelaysLength: currentTimeDelaysLength,\n\t\t\t\t\t\tsysparm_return_only: 'count',\n\t\t\t\t\t\tproactiveTriggersChannelId: currentChannelId,\n\t\t\t\t\t\tproactiveTriggersRequestId: context\n\t\t\t\t\t});\n\n\t\t\t\t\tif (state.messageCount > 0) {\n\t\t\t\t\t\tsetTimeout(dispatch, FADEOUT_TIME, TRIGGER_GET_ACTION_DEBOUNCED, {\n\t\t\t\t\t\t\ttimerDelays,\n\t\t\t\t\t\t\tcontext,\n\t\t\t\t\t\t\tlanguage\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tif (timerDelays?.length > 0) {\n\t\t\t\t\t\tdispatch(TRIGGER_GET_ACTION_DEBOUNCED, {timerDelays, context, language});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// start unread loop if timer delays array is empty.\n\t\t\t\t\t\tdispatch(START_UNREAD_MESSAGE_LOOP);\n\t\t\t\t\t}\n\t\t\t\t\tdispatchNewMessage(dispatch, action, updateState);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[FETCH_CONTEXT_FAILED]: {\n\t\t\teffect({dispatch}) {\n\t\t\t\tdispatch(START_UNREAD_MESSAGE_LOOP);\n\t\t\t}\n\t\t},\n\t\t[TRIGGER_GET_ACTION_DEBOUNCED]: {\n\t\t\teffect({action, dispatch, state}) {\n\t\t\t\tconst {properties} = state;\n\t\t\t\tconst {context, language} = action?.payload || {};\n\t\t\t\tlet {clientContext} = properties;\n\t\t\t\tclientContext = getClientContext(clientContext);\n\t\t\t\tconst timerDelays = action.payload?.timerDelays;\n\t\t\t\ttimerDelays.map((time) => {\n\t\t\t\t\tconst val = parseInt(time.value, 10);\n\t\t\t\t\ttimeOutArr.push({\n\t\t\t\t\t\tfunction: setTimeout(() => {\n\t\t\t\t\t\t\tdispatch(GET_ACTION_REQUESTED, {\n\t\t\t\t\t\t\t\trequest_id: context,\n\t\t\t\t\t\t\t\ttime_delay: val,\n\t\t\t\t\t\t\t\tlanguage,\n\t\t\t\t\t\t\t\tclient_context: clientContext\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}, val),\n\t\t\t\t\t\ttimer: val\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[GET_ACTION_REQUESTED]: getActionRequested,\n\t\t[GET_ACTION_SUCCEEDED]: {\n\t\t\teffect({action, updateState, state, dispatch}) {\n\t\t\t\tif (!shouldFetchProactiveAndPreviewMsgOnCurrentPage()) {\n\t\t\t\t\tresetProactiveTriggersState();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst statusCode = action?.payload?.result?.status;\n\t\t\t\tif (state.hasConversationStarted) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (statusCode === ACTIVE_CONVERSATION_STATUS_CODE) {\n\t\t\t\t\tdispatch(START_UNREAD_MESSAGE_LOOP);\n\t\t\t\t} else if (statusCode === SUCCESSFUL_ACTION_STATUS_CODE) {\n\t\t\t\t\tdispatchNewMessage(dispatch, action, updateState);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[GET_ACTION_FAILED]: {\n\t\t\teffect() {\n\t\t\t\t//TODO\n\t\t\t}\n\t\t},\n\t\t[RESTART_UNREAD_MESSAGE_LOOP]: {\n\t\t\teffect({dispatch, updateState}) {\n\t\t\t\tupdateState(({state}) => {\n\t\t\t\t\tlet {intervalID} = state;\n\t\t\t\t\tconst {properties} = state;\n\t\t\t\t\tif (intervalID) {\n\t\t\t\t\t\tclearInterval(intervalID);\n\t\t\t\t\t}\n\t\t\t\t\tif (!shouldFetchProactiveAndPreviewMsgOnCurrentPage()) {\n\t\t\t\t\t\treturn {messageCount: 0, intervalID};\n\t\t\t\t\t}\n\n\t\t\t\t\tlet {clientContext} = properties;\n\t\t\t\t\tclientContext = getClientContext(clientContext);\n\t\t\t\t\tconst unreadQueryParams = getAdditionalUnreadQueryParams(clientContext);\n\n\t\t\t\t\tconst unreadFetchParams = {\n\t\t\t\t\t\tsysparm_return_only: state.isMessagePreviewEnabled ? 'push_message' : 'count',\n\t\t\t\t\t\tsysparm_limit: 25,\n\t\t\t\t\t\t...unreadQueryParams\n\t\t\t\t\t};\n\t\t\t\t\tintervalID = setInterval(\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tstate.fetchUnreadInterval,\n\t\t\t\t\t\tUNREAD_FETCH_REQUESTED,\n\t\t\t\t\t\tunreadFetchParams\n\t\t\t\t\t);\n\t\t\t\t\tdispatch(UNREAD_FETCH_REQUESTED, unreadFetchParams);\n\t\t\t\t\treturn {intervalID};\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[START_UNREAD_MESSAGE_LOOP]: {\n\t\t\teffect({state, dispatch, updateState}) {\n\t\t\t\tlet {intervalID} = state;\n\t\t\t\tconst {properties} = state;\n\t\t\t\tif (intervalID) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!shouldFetchProactiveAndPreviewMsgOnCurrentPage()) {\n\t\t\t\t\tclearInterval(intervalID);\n\t\t\t\t\tupdateState({messageCount: 0, intervalID});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet {clientContext} = properties;\n\t\t\t\tclientContext = getClientContext(clientContext);\n\t\t\t\tconst unreadQueryParams = getAdditionalUnreadQueryParams(clientContext);\n\n\t\t\t\tintervalID = setInterval(dispatch, state.fetchUnreadInterval, UNREAD_FETCH_REQUESTED, {\n\t\t\t\t\tsysparm_return_only: state.isMessagePreviewEnabled ? 'push_message' : 'count',\n\t\t\t\t\tsysparm_limit: 25,\n\t\t\t\t\t...unreadQueryParams\n\t\t\t\t});\n\t\t\t\t//eslint-disable-line camelcase\n\t\t\t\tupdateState({intervalID});\n\t\t\t}\n\t\t},\n\t\t[CLEAR_NOTIFICATIONS]: {\n\t\t\teffect({updateState}) {\n\t\t\t\tupdateState({\n\t\t\t\t\tlatestMessage: '',\n\t\t\t\t\tnotificationOpened: false,\n\t\t\t\t\tactionSysId: '',\n\t\t\t\t\tsupplementalControls: null\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[NEW_MESSAGE_RECEIVED]: {\n\t\t\teffect({state, dispatch}) {\n\t\t\t\tmsgFadeOutTimeArr.length\n\t\t\t\t\t? msgFadeOutTimeArr.forEach((t) => {\n\t\t\t\t\t\tclearTimeout(t);\n\t\t\t\t\t  })\n\t\t\t\t\t: null;\n\n\t\t\t\tif (!shouldFetchProactiveAndPreviewMsgOnCurrentPage()) {\n\t\t\t\t\tresetProactiveTriggersState();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst fadeoutTime =\n\t\t\t\t\tstate.lastMessageType === PROACTIVE ? PROACTIVE_FADEOUT_TIME : FADEOUT_TIME;\n\t\t\t\tif (\n\t\t\t\t\tcurrentMessageIndex + 1 === state?.timeDelaysLength &&\n\t\t\t\t\tstate?.lastMessageType === PROACTIVE\n\t\t\t\t) {\n\t\t\t\t\tsetTimeout(dispatch, fadeoutTime, START_UNREAD_MESSAGE_LOOP);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tmsgFadeOutTimeArr.push(setTimeout(dispatch, fadeoutTime, CLEAR_NOTIFICATIONS));\n\n\t\t\t\tstate?.lastMessageType === PROACTIVE ? currentMessageIndex++ : null;\n\t\t\t}\n\t\t},\n\t\t[UPDATE_LAST_MESSAGE]: {\n\t\t\tmodifier: {name: modifierTypes.THROTTLE, limit: 10000},\n\t\t\teffect({action, updateState}) {\n\t\t\t\tconst latestMessage = action?.payload?.data ?? null;\n\t\t\t\tif (!latestMessage) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tupdateState({\n\t\t\t\t\tlatestMessage,\n\t\t\t\t\tnotificationOpened: latestMessage?.trim() !== '',\n\t\t\t\t\tlastMessageType: PREVIEW,\n\t\t\t\t\tsupplementalControls: null\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[AMB_EVENTS.AMB_EVENT_SUBSCRIPTION_CHANGED]: (function () {\n\t\t\tlet ambEffect;\n\t\t\treturn {\n\t\t\t\teffect(...orginalArgs) {\n\t\t\t\t\tconst isAMBEnabledOnClient = orginalArgs\n\t\t\t\t\t\t? orginalArgs[0]?.state?.properties?.isInternalUrl\n\t\t\t\t\t\t: false;\n\t\t\t\t\tif (!ambEffect && isAMBEnabledOnClient) {\n\t\t\t\t\t\tambEffect = createAmbEventEffect();\n\t\t\t\t\t}\n\t\t\t\t\tif (ambEffect) {\n\t\t\t\t\t\tambEffect.effect(...ambEffect.args, ...orginalArgs);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t})(),\n\t\t[AMB_EVENTS.AMB_EVENT_SESSION_LOGGED_OUT]: {\n\t\t\teffect({dispatch}) {\n\t\t\t\tdispatch(AMB_EVENTS.AMB_EVENT_SUBSCRIPTION_CHANGED, {subscribe: false});\n\t\t\t}\n\t\t},\n\t\t[AMB_EVENTS.AMB_EVENT_SESSION_INVALIDATED]: {\n\t\t\teffect({dispatch}) {\n\t\t\t\tdispatch(AMB_EVENTS.AMB_EVENT_SUBSCRIPTION_CHANGED, {subscribe: false});\n\t\t\t}\n\t\t},\n\t\t[PROACTIVE_TRIGGER_CHANGED]: (function () {\n\t\t\tlet proactiveTriggerSubscriptionHandler;\n\t\t\treturn {\n\t\t\t\teffect(...orginalArgs) {\n\t\t\t\t\tconst isAMBEnabledOnClient = orginalArgs\n\t\t\t\t\t\t? orginalArgs[0]?.state?.properties?.isInternalUrl\n\t\t\t\t\t\t: false;\n\t\t\t\t\tif (!proactiveTriggerSubscriptionHandler && isAMBEnabledOnClient) {\n\t\t\t\t\t\tproactiveTriggerSubscriptionHandler = createAmbSubscriptionEffect(\n\t\t\t\t\t\t\t'/proactive/amb/:channelId',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tmessageReceivedActionType: PROACTIVE_TRIGGER_NEW_MESSAGE,\n\t\t\t\t\t\t\t\tsubscribeStartedActionType: PROACTIVE_TRIGGER_SUBSCRIBE_START,\n\t\t\t\t\t\t\t\tsubscribeSucceededActionType: PROACTIVE_TRIGGER_SUBSCRIBE_SUCCESS,\n\t\t\t\t\t\t\t\tsubscribeFailedActionType: PROACTIVE_TRIGGER_SUBSCRIBE_FAILED\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (proactiveTriggerSubscriptionHandler) {\n\t\t\t\t\t\tproactiveTriggerSubscriptionHandler.effect(\n\t\t\t\t\t\t\t...proactiveTriggerSubscriptionHandler.args,\n\t\t\t\t\t\t\t...orginalArgs\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t})(),\n\t\t[PROACTIVE_TRIGGER_NEW_MESSAGE]: proactiveTriggerAmbNewMessageHandler,\n\t\t[AMB_EVENTS.AMB_EVENT_CONNECTION_INITIALIZED]() {\n\t\t\t// console.log('PROACTIVE TRIGGER AMB SUBSCRIPTION: Subscribe initialied...');\n\t\t},\n\t\t[PROACTIVE_TRIGGER_SUBSCRIBE_START]() {\n\t\t\t// console.log('PROACTIVE TRIGGER AMB SUBSCRIPTION: Subscribe started...');\n\t\t},\n\t\t[PROACTIVE_TRIGGER_SUBSCRIBE_SUCCESS]() {\n\t\t\t// console.log('PROACTIVE TRIGGER AMB SUBSCRIPTION: Subscribe successful...');\n\t\t},\n\t\t[PROACTIVE_TRIGGER_SUBSCRIBE_FAILED]({action}) {\n\t\t\tconsole.log('PROACTIVE TRIGGER AMB SUBSCRIPTION: Subscribe failed...', action, action.meta);\n\t\t}\n\t};\n\n\t/**\n\t * Validates the message action and will dispatch that a new message is received.\n\t * @param dispatch\n\t * @param action\n\t * @param updateState\n\t */\n\tfunction dispatchNewMessage(dispatch, action, updateState) {\n\t\tconst messageAction = action?.payload?.result?.action;\n\t\tif (!messageAction || !messageAction?.message) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst messageType = messageAction.message.type;\n\t\tconst message = messageAction.message.value;\n\n\t\tlet latestMessage;\n\t\tif (messageType === MESSAGE_TYPE_HTML) {\n\t\t\tlatestMessage = dangerouslyCreateElementFromString(`<Fragment>${message}</Fragment>`);\n\t\t} else {\n\t\t\tlatestMessage = message;\n\t\t}\n\n\t\tif (!latestMessage) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet supplementalControls = null;\n\t\tif (messageAction.controls) {\n\t\t\tsupplementalControls = {\n\t\t\t\ttagline: messageAction.tagline,\n\t\t\t\tcontrols: messageAction.controls\n\t\t\t};\n\t\t}\n\t\tupdateState({\n\t\t\tlatestMessage,\n\t\t\tnotificationOpened: latestMessage !== '',\n\t\t\tlastMessageType: PROACTIVE,\n\t\t\tactionSysId: messageAction.topics?.[0]?.token,\n\t\t\tsupplementalControls\n\t\t});\n\t\tdispatch(NEW_MESSAGE_RECEIVED);\n\t}\n\n\t/**\n\t * This method is called when there is unreadmessage and proactive trigger needs to wait before getting displayed.\n\t * @param dispatch\n\t * @param action\n\t * @param updateState\n\t */\n\tfunction dispatchAmbProactiveTrigger(\n\t\tdispatch,\n\t\taction,\n\t\tupdateState,\n\t\tstate,\n\t\tsortedTimerDelays,\n\t\ttimeOutArr,\n\t\tclientContext\n\t) {\n\t\tconst language = clientContext?.language ?? clientContext?.requester_session_language ?? null;\n\t\tconst alreadyPresentTimers = timeOutArr.map((t) => t.timer);\n\t\tsortedTimerDelays.map((newTimer) => {\n\t\t\tconst newOffsetValue = parseInt(newTimer.offset, 10);\n\t\t\tconst newValue = parseInt(newTimer.value, 10);\n\t\t\tif (alreadyPresentTimers.indexOf(newValue) == -1) {\n\t\t\t\ttimeOutArr.push({\n\t\t\t\t\tfunction: setTimeout(() => {\n\t\t\t\t\t\tdispatch(GET_ACTION_REQUESTED, {\n\t\t\t\t\t\t\trequest_id: action.payload?.data?.request_id,\n\t\t\t\t\t\t\ttime_delay: newValue,\n\t\t\t\t\t\t\tlanguage,\n\t\t\t\t\t\t\tclient_context: clientContext\n\t\t\t\t\t\t});\n\t\t\t\t\t}, newOffsetValue),\n\t\t\t\t\ttimer: newValue\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\tif (state.timeDelaysLength != timeOutArr?.length) {\n\t\t\tupdateState({\n\t\t\t\ttimeDelaysLength: timeOutArr?.length\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction resetProactiveTriggersState() {\n\t\tif (timeOutArr.length) {\n\t\t\ttimeOutArr.forEach((t) => clearTimeout(t));\n\t\t}\n\t\tcurrentMessageIndex = 0;\n\t}\n\n\treturn actionHandlers;\n};\n","const popoverPrefix = 'NOW_REQUESTOR_CHAT_POPOVER#';\n\nexport const DIALOG_CLOSED = `${popoverPrefix}DIALOG_CLOSED`;\nexport const FORCE_SN_CHAT_VISIBLE = 'FORCE_SN_CHAT_VISIBLE';\nexport const FORCE_SN_CHAT_INVISIBLE = 'FORCE_SN_CHAT_INVISIBLE';\nexport const POPOVER_CONTENT_VISIBLE = 'NOW_POPOVER#CONTENT_VISIBLE';\nexport const POST_MESSAGE = 'POST_MESSAGE_FROM_IFRAME';\nexport const REFRESH_BROWSER = 'REFRESH_BROWSER';\n\nexport const MODELESS_DIALOG_WIDTH_FOR_NAVA = 420;\nexport const MODELESS_DIALOG_WIDTH = 380;\n\n// now-modeless-dialog's default height.\nexport const MODELESS_DIALOG_HEIGHT = 600;\n// Mirrors _variables.scss ($popover-button-height, $launcher-button-margin-top):\n// the launcher button and the gap above it sit below the dialog and must be\n// reserved when sizing the dialog to fit the viewport.\nexport const POPOVER_BUTTON_HEIGHT = 60;\nexport const LAUNCHER_BUTTON_MARGIN_TOP = 16;\n","\nexport function buildParamString (params) {\n\tvar kvp = [];\n\tif (typeof params === 'string') {\n\t\ttry {\n\t\t\tparams = JSON.parse(decodeURIComponent(params)) || {};\n\t\t} catch (e) {\n\t\t\tparams = {};\n\t\t}\n\t}\n\n\tvar keys = Object.keys(params);\n\tif (!keys.includes('interface_type'))\n\t\tkvp.push('sysparm_interface_type=Unknown'); // ensure the default value persists if something overrides the context vars\n\tif (!keys.includes('interface_name'))\n\t\tkvp.push('sysparm_interface_name=Unknown');\n\tkeys.forEach(key => {\n\t\tkvp.push(`sysparm_${key}=${params[key]}`);\n\t});\n\n\treturn kvp.join('&');\n}\n\n","/* eslint-disable camelcase */\n/* eslint-disable import/no-extraneous-dependencies */\n\nimport {DIALOG_CLOSED, DIALOG_OPENED} from '../../../../shared/chat-popover-shared/constants';\nimport {\n\tFORCE_SN_CHAT_INVISIBLE,\n\tFORCE_SN_CHAT_VISIBLE,\n\tPOPOVER_CONTENT_VISIBLE\n} from '../constants';\nimport {buildParamString} from '../utils';\n\n/* istanbul ignore next */\nfunction overrideNDSComponentMaxHeight(host) {\n\tconst nowModelessDialogContainer = host?.shadowRoot\n\t\t?.querySelector('now-modeless-dialog')\n\t\t?.shadowRoot?.querySelector('.now-modeless-dialog');\n\tif (!nowModelessDialogContainer) {\n\t\treturn;\n\t}\n\n\t// $default-offset-y + $popover-button-height + $launcher-button-margin-top\n\tconst WEB_CLIENT_DISTANCE_FROM_BOTTOM_OF_SCREEN = 101;\n\tnowModelessDialogContainer.style.maxHeight = `calc(100vh - ${WEB_CLIENT_DISTANCE_FROM_BOTTOM_OF_SCREEN}px)`;\n}\n\nexport const actionHandlers = {\n\t[DIALOG_OPENED]: {\n\t\teffect({host, state, updateState, action}) {\n\t\t\tconst actionSysId = action.payload?.actionSysId || state?.actionSysId;\n\t\t\tconst {clientContext, instance} = state.properties;\n\n\t\t\tif (!state.iFrameHost) {\n\t\t\t\tconst content = host?.shadowRoot.querySelector(\n\t\t\t\t\t'div.now-requestor-chat-popover-dialog-content'\n\t\t\t\t);\n\t\t\t\tif (!content) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst frame = document.createElement('iframe');\n\n\t\t\t\t// If user uses ServiceNowChat.open API to open the chat before clicking on chat icon on the page, iFrameSrc in state will be empty. So set it here.\n\t\t\t\tlet iFrameSrc = state?.iFrameSrc;\n\t\t\t\tif (!iFrameSrc) {\n\t\t\t\t\tconst clientContextParams = buildParamString(clientContext);\n\t\t\t\t\tiFrameSrc = `${instance}/sn_va_web_client_app_embed.do?${clientContextParams}`;\n\t\t\t\t}\n\n\t\t\t\tlet newFrameSrc = iFrameSrc;\n\t\t\t\tif (actionSysId && !state?.hasConversationStarted) {\n\t\t\t\t\tnewFrameSrc = `${iFrameSrc}&sysparm_proactive_id=${actionSysId}`;\n\t\t\t\t}\n\n\t\t\t\tframe.src = newFrameSrc;\n\t\t\t\tframe.width = '100%';\n\t\t\t\tframe.height = '100%';\n\t\t\t\tframe.frameBorder = '0';\n\n\t\t\t\tcontent.appendChild(frame);\n\t\t\t\tframe.contentWindow.postMessage(FORCE_SN_CHAT_VISIBLE, '*');\n\t\t\t\tupdateState({\n\t\t\t\t\tiFrameHost: frame,\n\t\t\t\t\thasConversationStarted: true,\n\t\t\t\t\tiFrameSrc\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tif (state?.isProactiveTriggersEnabled && actionSysId) {\n\t\t\t\t\tconst newFrame = state?.iFrameHost;\n\t\t\t\t\tnewFrame.src = actionSysId\n\t\t\t\t\t\t? `${state?.iFrameSrc}&sysparm_proactive_id=${actionSysId}`\n\t\t\t\t\t\t: state?.iFrameSrc;\n\t\t\t\t}\n\t\t\t\tstate.iFrameHost.contentWindow.postMessage(FORCE_SN_CHAT_VISIBLE, '*');\n\t\t\t}\n\n\t\t\tupdateState({\n\t\t\t\topened: true,\n\t\t\t\tnotificationOpened: false,\n\t\t\t\thasConversationStarted: true,\n\t\t\t\tactionSysId\n\t\t\t});\n\n\t\t\t// Force the `.now-modeless-dialog` to conform to our max-height:\n\t\t\toverrideNDSComponentMaxHeight(host);\n\t\t\t// when the dialog opens, clear polling for unread messages\n\t\t\tconst intervalID = state?.intervalID;\n\t\t\tif (intervalID) {\n\t\t\t\tclearInterval(intervalID);\n\t\t\t\tupdateState({intervalID: null});\n\t\t\t}\n\t\t}\n\t},\n\t[DIALOG_CLOSED]: {\n\t\teffect({state, updateState}) {\n\t\t\tupdateState({\n\t\t\t\thasConversationStarted: false,\n\t\t\t\tactionSysId: ''\n\t\t\t});\n\t\t\tif (state.iFrameHost) {\n\t\t\t\tstate.iFrameHost.contentWindow.postMessage(FORCE_SN_CHAT_INVISIBLE, '*');\n\t\t\t}\n\t\t}\n\t},\n\n\t[POPOVER_CONTENT_VISIBLE]: {\n\t\teffect() {\n\t\t\tconst elem = document.querySelector('now-popover-panel');\n\t\t\tif (!elem) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telem.style.cssText = 'position: fixed;z-index: 4000;';\n\t\t}\n\t}\n};\n","import {\n\tDIALOG_CLOSED,\n\tDIALOG_OPENED,\n\tUPDATE_LAST_MESSAGE\n} from '../../../shared/chat-popover-shared/constants';\nimport {POST_MESSAGE, REFRESH_BROWSER} from './constants';\n\nexport const eventHandlers = [\n\t{\n\t\tevents: ['x-now-chat-open'],\n\t\teffect({dispatch, updateState}) {\n\t\t\tdispatch(DIALOG_OPENED);\n\t\t\tupdateState({\n\t\t\t\tlatestMessage: '',\n\t\t\t\tnotificationOpened: false,\n\t\t\t\topened: true,\n\t\t\t\tmessageCount: 0\n\t\t\t});\n\t\t}\n\t},\n\t{\n\t\tevents: ['x-now-chat-close'],\n\t\teffect({dispatch, updateState}) {\n\t\t\tdispatch(DIALOG_CLOSED);\n\t\t\tupdateState({\n\t\t\t\topened: false,\n\t\t\t\tmessageCount: 0\n\t\t\t});\n\t\t}\n\t},\n\t{\n\t\t// Track the viewport so the dialog can size itself responsively\n\t\t// (see view.js) and stay docked instead of going fullscreen on mobile.\n\t\tevents: ['resize'],\n\t\teffect({updateState}) {\n\t\t\tupdateState({\n\t\t\t\tviewportWidth: window.innerWidth,\n\t\t\t\tviewportHeight: window.innerHeight\n\t\t\t});\n\t\t},\n\t\ttarget: window\n\t},\n\t{\n\t\tevents: ['x-now-chat-set-context'],\n\t\teffect({action, updateProperties}) {\n\t\t\tconst context = action?.payload?.event?.detail?.context;\n\t\t\tupdateProperties({clientContext: context});\n\t\t}\n\t},\n\t{\n\t\tevents: ['message'],\n\t\teffect({action, state, updateState, dispatch}) {\n\t\t\tlet currentMessageCount = state.messageCount;\n\t\t\tconst eventAction = action?.payload?.event?.data ?? null;\n\t\t\tconst type = eventAction?.type ?? null;\n\t\t\tconst shouldReloadItself = state?.properties?.shouldReloadItself;\n\n\t\t\tif (type === REFRESH_BROWSER) {\n\t\t\t\tshouldReloadItself ? window.location.reload() : window.parent.location.reload();\n\t\t\t}\n\n\t\t\tif (type === POST_MESSAGE) {\n\t\t\t\tcurrentMessageCount = currentMessageCount + 1;\n\t\t\t\tupdateState({messageCount: currentMessageCount});\n\t\t\t\tif (!state.opened) {\n\t\t\t\t\tdispatch(UPDATE_LAST_MESSAGE, {data: eventAction?.payload?.trim()});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (eventAction === 'sn-va-web-client-app-close-iframe') {\n\t\t\t\tdispatch(DIALOG_CLOSED);\n\t\t\t\tupdateState({\n\t\t\t\t\topened: false,\n\t\t\t\t\tmessageCount: 0\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\ttarget: window\n\t},\n\t{\n\t\tevents: ['keydown'],\n\t\teffect({\n\t\t\taction: {\n\t\t\t\tpayload: {event}\n\t\t\t},\n\t\t\tdispatch,\n\t\t\tupdateState\n\t\t}) {\n\t\t\t/* eslint-disable-next-line default-case */\n\t\t\tswitch (event.key) {\n\t\t\tcase 'Esc':\n\t\t\tcase 'Escape':\n\t\t\t\tdispatch(DIALOG_CLOSED);\n\t\t\t\tupdateState({\n\t\t\t\t\topened: false,\n\t\t\t\t\tmessageCount: 0\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n];\n","import get from 'lodash/get';\n\nconst castJSON = (properties, prop) => {\n\tif (typeof properties[prop] !== 'string') {\n\t\treturn properties;\n\t}\n\tlet value;\n\ttry {\n\t\tvalue = JSON.parse(properties[prop]);\n\t} catch (e) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error(`The attribute ${prop} is not valid JSON:`, e);\n\t\tvalue = {};\n\t}\n\treturn {\n\t\t...properties,\n\t\t[prop]: value,\n\t};\n};\n\nconst castJSONorString = (properties, prop) => {\n\tif (typeof properties[prop] !== 'string') {\n\t\treturn properties;\n\t}\n\tlet value;\n\ttry {\n\t\tvalue = JSON.parse(properties[prop]);\n\t\treturn {\n\t\t\t...properties,\n\t\t\t[prop]: value,\n\t\t};\n\t} catch (e) {\n\t\treturn properties;\n\t}\n};\n\nconst castNumber = (properties, prop) => {\n\tif (typeof properties[prop] !== 'string') {\n\t\treturn properties;\n\t}\n\tif (isNaN(properties[prop])) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error(`The attribute ${prop} is not a number.`);\n\t\treturn properties;\n\t}\n\treturn {\n\t\t...properties,\n\t\t[prop]: Number(properties[prop]),\n\t};\n};\n\nconst castFunctions = {\n\tarray: castJSON,\n\tobject: castJSON,\n\tnumber: castNumber,\n\tobjectOrString: castJSONorString,\n};\n\nexport const extendWithCast = (baseConfig) => {\n\tconst baseTransformProps = get(\n\t\tbaseConfig,\n\t\t['renderer', 'transformProps'],\n\t\t(state) => state,\n\t);\n\n\tconst properties = baseConfig.properties || {};\n\tconst transforms = Object.keys(properties).reduce((acc, key) => {\n\t\t// eslint-disable-next-line no-prototype-builtins\n\t\tif (properties[key].hasOwnProperty('cast')) {\n\t\t\tconst transform = castFunctions[properties[key].cast];\n\t\t\tacc = [...acc, (properties) => transform(properties, key)];\n\t\t}\n\t\treturn acc;\n\t}, []);\n\n\treturn {\n\t\t...baseConfig,\n\t\trenderer: {\n\t\t\t...baseConfig.renderer,\n\t\t\ttransformProps: (state) => {\n\t\t\t\tconst properties = transforms.reduce(\n\t\t\t\t\t(acc, fn) => fn(acc),\n\t\t\t\t\tstate.properties,\n\t\t\t\t);\n\t\t\t\treturn baseTransformProps({...state, properties: {...properties}});\n\t\t\t},\n\t\t},\n\t};\n};\n","import {createLogger, isEqual, getHostInfo} from '@servicenow/ui-internal';\n\nconst log = createLogger();\n\nexport function updateStateEffect(reducerFn = s => s, coeffects) {\n\tconst {state, action, updateProperties, updateState, host} = coeffects;\n\tconst updatedState = reducerFn(state, action);\n\n\tconst {tagName, componentId} = getHostInfo(host);\n\tlog('createUpdateStateEffect has been deprecated. Please use updateState helper instead.', {\n\t\ttagName,\n\t\tcomponentId,\n\t\thost,\n\t\torigin: 'updateStateEffect'\n\t});\n\n\t// LEGACY: support legacy components that are spreading properties across state\n\tif (!isEqual(updatedState.properties, state.properties)) {\n\t\tupdateProperties(updatedState.properties);\n\t\tlog(\n\t\t\t'Spreading properties across state in a createUpdateStateEffect is no longer supported. Please use the updateProperties helper.',\n\t\t\t{host, origin: 'updateStateEffect'}\n\t\t);\n\t}\n\n\tupdateState(updatedState, {\n\t\tSCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED: true\n\t});\n}\n\n/**\n * **This package is deprecated. Please read about the new helper `updateState` in the state and helpers pages under Main Concepts**\n *\n * Effect that updates the UI Framework data store. Data is stored under the context of the dispatching action that triggered the effect.\n *\n * **Note**: If possible, use the updateState helper function that supports declarative state updates instead.\n *\n * @function createUpdateStateEffect\n * @example\n * import {createUpdateStateEffect} from '@servicenow/ui-effect-update-state';\n *\n * const addActionPayloadToStateEffect = createUpdateStateEffect(\n *   (state, action) => ({...state, ...action.payload})\n * );\n *\n * // Register with component action handlers:\n * {\n *   actionHandlers: {\n *     'SOMETHING_HAPPENED': addActionPayloadToStateEffect\n *   }\n * }\n *\n * @param {Function} reducerFn - Function that reduces current state to new state: (currentState, action) => newState\n * @return {Object} Update State Effect Descriptor\n */\nexport default function createUpdateStateEffect(reducerFn) {\n\treturn {\n\t\teffect: updateStateEffect,\n\t\targs: [reducerFn]\n\t};\n}\n","import {createUpdateStateEffect} from '@servicenow/ui-effect-update-state';\n\nexport const localsSetEffectHandler = createUpdateStateEffect(\n\t(state, action) => {\n\t\tif (process.env.NODE_ENV === 'development') {\n\t\t\t/* eslint-disable-next-line no-console */\n\t\t\tconsole.warn(\n\t\t\t\t'`locals` from @devsnc/library-enhanced-element is deprecated. Please migrate to using `updateState` helper method from @servicenow/ui-core.',\n\t\t\t);\n\t\t}\n\n\t\tconst {payload} = action;\n\t\treturn {\n\t\t\t...state,\n\t\t\tlocals: {\n\t\t\t\t...state.locals,\n\t\t\t\t...payload,\n\t\t\t},\n\t\t};\n\t},\n);\n\nexport const extendWithLocals = (baseConfig) => {\n\tconst localsConfig = baseConfig.locals || {};\n\tconst locals = Object.keys(localsConfig).reduce(\n\t\t(acc, key) => ({\n\t\t\t...acc,\n\t\t\t[key]: localsConfig[key].default,\n\t\t}),\n\t\t{},\n\t);\n\n\treturn {\n\t\t...baseConfig,\n\t\tactionHandlers: {\n\t\t\tLOCALS_SET: {\n\t\t\t\t...localsSetEffectHandler,\n\t\t\t\tstopPropagation: true,\n\t\t\t},\n\t\t\t...baseConfig.actionHandlers,\n\t\t},\n\t\tinitialState: {\n\t\t\tlocals,\n\t\t\tproperties: {},\n\t\t\t...baseConfig.initialState,\n\t\t},\n\t};\n};\n","const BEHAVIOR_NAME = 'rtl';\n\n/**\n * This behavior helps style components in right-to-left (RTL) layouts.\n * It sets the component host's `dir` attribute based on the `document.dir` of\n * its parent application. If `document.dir` is not explicitly defined, it will\n * set the component host's `dir` attribute to `'ltr'` by default.\n *\n * After installation import the behavior at the top of your component JS file\n * and register it in your component behaviors list:\n *\n * ```js\n * import rtlBehavior from '@servicenow/behavior-rtl';\n *\n * createCustomElement('sn-example', {\n *   // ...\n *   behaviors: [{behavior: rtlBehavior}]\n * });\n * ```\n *\n * @seismicBehavior rtlBehavior\n * @summary Sets the component host's `dir` attribute to support right-to-left layouts\n */\nexport default {\n\tname: BEHAVIOR_NAME,\n\tproperties: {\n\t\tdir: {\n\t\t\tget default() {\n\t\t\t\treturn document.dir || 'ltr';\n\t\t\t},\n\t\t\treflect: true,\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t},\n};\n","import rtlBehavior from '@servicenow/behavior-rtl';\n\nexport const extendWithDefaultBehaviors = (baseConfig) => {\n\treturn {\n\t\t...baseConfig,\n\t\tbehaviors: [...(baseConfig.behaviors || []), {behavior: rtlBehavior}],\n\t};\n};\n","export default function makeScopedActionName(tagName, actionName) {\n\treturn tagName.toUpperCase().replace(/-/g, '_') + '#' + actionName;\n}\n","export default (value) => {\n\tconst casedValue = value\n\t\t.replace(/([A-Z][a-z]+)/g, ' $&')\n\t\t.toUpperCase()\n\t\t.replace(/[ ]/g, '_');\n\n\treturn casedValue[0] === '_' ? casedValue.substring(1) : casedValue;\n};\n","import makeScopedActionName from './scoped-action-name';\nimport reduce from 'lodash/reduce';\nimport forEach from 'lodash/forEach';\nimport omit from 'lodash/omit';\nimport mapValues from 'lodash/mapValues';\nimport get from 'lodash/get';\nimport constantCase from './constant-case';\n\nconst toManagedPropName = (propName) =>\n\t'manage' + propName[0].toUpperCase() + propName.slice(1);\n\nconst omitManagedKey = (descriptor) => omit(descriptor, 'manageable');\n\n/* Extracted from https://code.devsnc.com/dev/sn-seismic/blob/5aff3fb9bc51ada3bc487f78a5d3b02c04bf410b/packages/core/src/utils/combinePropertyDefs.js */\nconst getComponentProperties = (config) => {\n\tconst {properties = {}, behaviors = []} = config;\n\n\treturn reduce(\n\t\tbehaviors,\n\t\t(acc, behavior) => {\n\t\t\tconst properties = get(\n\t\t\t\tbehavior,\n\t\t\t\t'behavior.properties',\n\t\t\t\tget(behavior, 'properties', {}),\n\t\t\t);\n\n\t\t\tforEach(properties, (value, key) => {\n\t\t\t\tacc[key] = value;\n\t\t\t});\n\n\t\t\treturn acc;\n\t\t},\n\t\t{...properties},\n\t);\n};\n\nexport const extendWithManageableProperties = (tagName, baseConfig) => {\n\tconst properties = getComponentProperties(baseConfig);\n\n\tconst propNamesToManage = Object.keys(properties).reduce((acc, propName) => {\n\t\tif (properties[propName].manageable) {\n\t\t\tacc.push(propName);\n\t\t}\n\n\t\treturn acc;\n\t}, []);\n\n\tif (!propNamesToManage.length) {\n\t\treturn baseConfig;\n\t}\n\n\tconst managedActions = propNamesToManage.reduce((acc, propName) => {\n\t\tconst actionName = makeScopedActionName(\n\t\t\ttagName,\n\t\t\tconstantCase(propName) + '_SET',\n\t\t);\n\t\tconst managedPropName = toManagedPropName(propName);\n\t\tconst actionHandler = ({host, state, action, updateProperties}) => {\n\t\t\tlet value = action.payload.value;\n\t\t\tconst isPropertySelector =\n\t\t\t\ttypeof value === 'string' && value[0] === '@' && value.indexOf('/') > 0;\n\n\t\t\tconst isManaged = state.properties[managedPropName];\n\t\t\t// if a component is a descendant of itself, need to make sure that SET\n\t\t\t// actions from the child don't change the property of the parent\n\t\t\tconst isActionForCurrentHost = host.nowId === action.meta.id;\n\n\t\t\tif (isManaged || !isActionForCurrentHost) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t/*\n\t\t\t * Here we're escaping the value to prevent selectable properties from\n\t\t\t * intercepting and overriding the original value. Managed properties\n\t\t\t * need to be escaped by the customer.\n\t\t\t *\n\t\t\t * This only happens when the value matches the pattern: '@abc/def'\n\t\t\t */\n\t\t\tif (isPropertySelector) {\n\t\t\t\tvalue = `\\\\${value}`;\n\t\t\t}\n\n\t\t\tupdateProperties({[propName]: value});\n\t\t};\n\t\tacc[actionName] = actionHandler;\n\t\treturn acc;\n\t}, {});\n\n\tconst managedProperties = propNamesToManage.reduce((acc, propName) => {\n\t\tacc[toManagedPropName(propName)] = {};\n\t\treturn acc;\n\t}, {});\n\n\treturn {\n\t\t...baseConfig,\n\t\tactionHandlers: {\n\t\t\t...managedActions,\n\t\t\t...baseConfig.actionHandlers,\n\t\t},\n\t\tproperties: {\n\t\t\t...managedProperties,\n\t\t\t...mapValues(baseConfig.properties, omitManagedKey),\n\t\t},\n\t};\n};\n","import get from 'lodash/get';\n\nconst getOnRenderFns = (config) => {\n\tconst fns = [];\n\tif (config.onRender) {\n\t\tfns.push(config.onRender);\n\t}\n\tconst behaviors = config.behaviors || [];\n\tfor (let behavior of behaviors) {\n\t\tconst onRender = get(\n\t\t\tbehavior,\n\t\t\t`behavior.onRender`,\n\t\t\tget(behavior, 'onRender', null),\n\t\t);\n\t\tif (onRender) {\n\t\t\tfns.push(onRender);\n\t\t}\n\t}\n\treturn fns;\n};\n\nexport const extendWithOnRender = (baseConfig) => {\n\tconst onRenderFns = getOnRenderFns(baseConfig);\n\n\tif (onRenderFns.length === 0) {\n\t\treturn baseConfig;\n\t}\n\tif (process.env.NODE_ENV === 'development') {\n\t\t/* eslint-disable-next-line no-console */\n\t\tconsole.error(\n\t\t\t'`onRender()` from @devsnc/library-enhanced-element is not supported. Please migrate to using `actionTypes.COMPONENT_RENDERED` lifecycle method from @servicenow/ui-core.',\n\t\t);\n\t}\n\n\treturn baseConfig;\n};\n","import {\n\tcreateCustomElement,\n\tcreatePresentationalCustomElement,\n} from '@servicenow/ui-core';\nimport {extendWithLocals} from './locals';\nimport {extendWithCast} from './cast';\nimport {extendWithDefaultBehaviors} from './default-behaviors';\nimport {extendWithManageableProperties} from './manageable-properties';\nimport {extendWithOnRender} from './on-render';\n\nconst createEnhancedElement = (name, baseConfig = {}) => {\n\tlet {presentational, ...mergedConfig} = baseConfig;\n\n\tif (presentational) {\n\t\tmergedConfig = extendWithDefaultBehaviors(mergedConfig);\n\t\tcreatePresentationalCustomElement(name, mergedConfig);\n\t} else {\n\t\tmergedConfig = extendWithCast(baseConfig);\n\t\tmergedConfig = extendWithLocals(mergedConfig);\n\t\tmergedConfig = extendWithDefaultBehaviors(mergedConfig);\n\t\tmergedConfig = extendWithManageableProperties(name, mergedConfig);\n\t\tmergedConfig = extendWithOnRender(mergedConfig);\n\t\tcreateCustomElement(name, mergedConfig);\n\t}\n};\n\nexport default createEnhancedElement;\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-badge.scss';\n\nimport packageInfo from '../package.json';\nconst {name, version} = packageInfo;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n\nconst _round = (value) => {\n\tif (isNaN(value) || value >= 1e15) {\n\t\treturn value;\n\t}\n\tlet newValue = value;\n\tconst suffixes = ['', 'K', 'M', 'B', 'T'];\n\tlet suffixNumber = 0;\n\twhile (newValue >= 1000) {\n\t\tnewValue /= 1000;\n\t\tsuffixNumber++;\n\t}\n\tnewValue = parseFloat(newValue.toFixed(1));\n\tnewValue += suffixes[suffixNumber];\n\treturn newValue;\n};\n\nconst view = (state) => {\n\tconst {variant, size, color, status, value, round, character} =\n\t\tstate.properties;\n\tconst statusOrColor = status || color;\n\tconst displayValue = round ? _round(value) : value;\n\n\treturn (\n\t\t<span\n\t\t\tclass={{\n\t\t\t\t'now-badge': true,\n\t\t\t\t['-' + variant]: variant,\n\t\t\t\t['-' + statusOrColor]: statusOrColor,\n\t\t\t\t['-' + size]: size,\n\t\t\t}}\n\t\t>\n\t\t\t<span className=\"now-line-height-crop\">{`${displayValue}${character}`}</span>\n\t\t</span>\n\t);\n};\n\n/**\n * A badge is an indicator or symbol that displays pending notifications, a\n * change in the system’s state, or an event.\n *\n * Badge notifications indicate a change in system status and aren't tied to any user input or\n * current user activity.\n *\n * ```jsx\n * <now-badge variant=\"primary\" size=\"lg\" status=\"warning\" value=\"99\" round />\n * ```\n *\n * @seismicElement now-badge\n * @summary Numeric badge that indicates a total count.\n * @uib.label Badge\n * @uib.icon badge\n * @uib.description Numeric badge that indicates a total count.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties variant, status, size, value, round, character\n */\ncreateEnhancedElement('now-badge', {\n\tpresentational: true,\n\tproperties: {\n\t\t/**\n\t\t * Sets the badge style.\n\t\t * @type {('primary'|'secondary')}\n\t\t * @uib.label Style\n\t\t * @uib.description Style of the badge\n\t\t */\n\t\tvariant: {\n\t\t\tdefault: 'primary',\n\t\t\tschema: {type: 'string', enum: ['primary', 'secondary']},\n\t\t},\n\t\t/**\n\t\t * Sets the badge background color.\n\t\t * @type {('critical'|'high'|'warning'|'moderate'|'positive'|'info'|'low')}\n\t\t * @private\n\t\t * @uib.aliasedWith color\n\t\t */\n\t\tstatus: {},\n\t\t/**\n\t\t * Sets the badge background color.\n\t\t * @type {('critical'|'high'|'warning'|'moderate'|'positive'|'info'|'low'|'magenta'|'pink'|'orange'|'yellow'|'brown'|'green'|'green-yellow'|'blue'|'gray'|'teal'|'purple')}\n\t\t * @uib.label Color\n\t\t * @uib.description Sets the badge background color.\n\t\t */\n\t\tcolor: {\n\t\t\tdefault: 'low',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [\n\t\t\t\t\t'critical',\n\t\t\t\t\t'high',\n\t\t\t\t\t'warning',\n\t\t\t\t\t'moderate',\n\t\t\t\t\t'positive',\n\t\t\t\t\t'info',\n\t\t\t\t\t'low',\n\t\t\t\t\t'magenta',\n\t\t\t\t\t'pink',\n\t\t\t\t\t'orange',\n\t\t\t\t\t'yellow',\n\t\t\t\t\t'brown',\n\t\t\t\t\t'green',\n\t\t\t\t\t'green-yellow',\n\t\t\t\t\t'blue',\n\t\t\t\t\t'gray',\n\t\t\t\t\t'teal',\n\t\t\t\t\t'purple',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the badge size.\n\t\t * @type {('sm'|'md'|'lg')}\n\t\t */\n\t\tsize: {default: 'md', schema: {type: 'string', enum: ['sm', 'md', 'lg']}},\n\t\t/**\n\t\t * Number to display in the badge.\n\t\t * @type {number}\n\t\t * @uib.defaultValue 5\n\t\t */\n\t\tvalue: {required: true, schema: {type: 'number'}},\n\t\t/**\n\t\t * A character displayed directly after the value.\n\t\t * @type {string}\n\t\t * @uib.label Ending character\n\t\t * @uib.description A character displayed directly after the value.\n\t\t * @uib.defaultValue\n\t\t */\n\t\tcharacter: {default: '', required: false, schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, rounds up and uses the abbreviations 'K', 'M', 'B', and 'T' to represent large numbers.\n\t\t * For example, instead of '1000', the system displays '1K'. Instead of '5376000', the system displays '5.4M'.\n\t\t * @type {boolean}\n\t\t * @uib.label Round large numbers\n\t\t * @uib.description Whether to round up large numbers (between thousands and trillions)\n\t\t * @uib.defaultValue true\n\t\t */\n\t\tround: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Deprecated for WCAG compliance. Badge consumers are responsible\n\t\t * for representing the badge content and context to all users accessibly.\n\t\t * @private\n\t\t */\n\t\tdescription: {},\n\t},\n\tview,\n\tstyles,\n});\n","import isString from 'lodash/isString';\n\n/**\n * Splits a string at each hyphen, returning an object where each key is the\n * split substring (prefixed with a hyphen) and the value is the substring.\n * @param {*} value - string to split\n * @returns {Object}\n */\nexport const extensionSplit = (value) => {\n\tif (!isString(value)) {\n\t\treturn {};\n\t}\n\n\treturn value.split('-').reduce((acc, v) => {\n\t\tacc['-' + v] = v;\n\t\treturn acc;\n\t}, {});\n};\n","import {pickBy} from 'lodash';\n\n/**\n * Take in an obj and return only keys that start with `aria-` or match `role`\n * @param {*} obj - object mapping aria attributes to the corresponding value\n * @returns {Object}\n */\nexport const filterAriaAttributes = (obj, key) => {\n\tif (!obj || typeof obj !== 'object' || !Object.keys(obj).length) {\n\t\treturn {};\n\t}\n\t// backwards compatibility for the old config-aria pattern\n\tif (!obj[key]) {\n\t\treturn pickBy(obj, (_, attr) => /^aria-\\w+/i.test(attr));\n\t}\n\treturn pickBy(\n\t\tobj[key],\n\t\t(_, attr) => /^aria-\\w+/i.test(attr) || attr === 'role',\n\t);\n};\n\nexport const filterAriaAttributesOld = (obj) =>\n\tpickBy(obj, (_, key) => /^aria-\\w+/i.test(key));\n","/**\n * Ensures the given value is an array\n * For `null` and `undefined`: return an empty array.\n * For a value that is already an array: return that array as-is.\n * If the value is iterable, return Array.from() (except for strings)\n * For any other value: return an array containing only that value.\n *\n * @param {*} maybeArray - value to make an array out of\n * @returns {Array}\n */\nexport const toArray = (maybeArray) => {\n\tif (maybeArray === null || maybeArray === undefined) {\n\t\treturn [];\n\t}\n\tif (Array.isArray(maybeArray)) return maybeArray;\n\tif (typeof maybeArray !== 'string' && maybeArray[Symbol.iterator]) {\n\t\treturn Array.from(maybeArray);\n\t}\n\treturn [maybeArray];\n};\n","import {toArray} from './to-array';\n\n/**\n * The following helper methods to find focusable elements are copied from Polymer\n * with modifications.\n * https://github.com/PolymerElements/iron-overlay-behavior/blob/master/iron-focusables-helper.js\n * License:\n * Copyright (c) 2016 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt The complete set of contributors may be\n * found at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\n * part of the polymer project is also subject to an additional IP rights grant\n * found at http://polymer.github.io/PATENTS.txt\n */\n\n/**\n * Returns if a element is focusable.\n * @param {HTMLElement} element\n * @return {boolean}\n */\n\nexport const isFocusable = (element) => {\n\t// From http://stackoverflow.com/a/1600194/4228703:\n\t// There isn't a definite list, it's up to the browser. The only\n\t// standard we have is DOM Level 2 HTML\n\t// https://www.w3.org/TR/DOM-Level-2-HTML/html.html, according to which the\n\t// only elements that have a focus() method are HTMLInputElement,\n\t// HTMLSelectElement, HTMLTextAreaElement and HTMLAnchorElement. This\n\t// notably omits HTMLButtonElement and HTMLAreaElement. Referring to these\n\t// tests with tabbables in different browsers\n\t// http://allyjs.io/data-tables/focusable.html\n\tif (element.nodeType !== Node.ELEMENT_NODE) {\n\t\treturn false;\n\t}\n\tif (hasInertAncestor(element)) {\n\t\treturn false;\n\t}\n\t// Elements that cannot be focused if they have [disabled] attribute.\n\tif (\n\t\telement.matches(\n\t\t\t'input:not([type=\"radio\"]), select, textarea, button, object',\n\t\t)\n\t) {\n\t\treturn element.matches(':not([disabled])');\n\t}\n\t// Radio buttons are special snowflakes\n\tif (element.matches('input[type=\"radio\"]:not([disabled])')) {\n\t\t// If it is checked and not disabled, it should be focusable\n\t\tif (element.checked) {\n\t\t\treturn true;\n\t\t}\n\t\t// If no radio buttons in the set are checked, the first enabled one is focusable\n\t\telse {\n\t\t\tconst name = element.getAttribute('name');\n\t\t\tconst allEnabledRadiosInSet = element\n\t\t\t\t.getRootNode()\n\t\t\t\t.querySelectorAll(\n\t\t\t\t\t`input[type=\"radio\"][name=\"${name}\"]:not([disabled])`,\n\t\t\t\t);\n\t\t\tconst isFirstInSet = element === allEnabledRadiosInSet[0];\n\t\t\tconst noneChecked = !toArray(allEnabledRadiosInSet).some(\n\t\t\t\t(radio) => radio.checked,\n\t\t\t);\n\t\t\treturn isFirstInSet && noneChecked;\n\t\t}\n\t}\n\t// Elements that can be focused even if they have [disabled] attribute.\n\treturn element.matches(\n\t\t'a[href], area[href], iframe, [tabindex], [contentEditable]',\n\t);\n};\n\n/**\n * @param {Node} node\n * @return {HTMLCollection}\n */\nconst getNormalizedChildren = (node) => {\n\tlet children;\n\tif (node.localName === 'slot') {\n\t\tchildren = node.assignedNodes({flatten: true});\n\t} else {\n\t\t// Use shadow root if possible, will check for distributed nodes.\n\t\tchildren = (node.nowRootNode || node.shadowRoot || node).children;\n\t}\n\n\treturn children ? Array.prototype.slice.call(children) : [];\n};\n\n/**\n * Returns the normalized element tabindex. If not focusable, returns -1.\n * It checks for the attribute \"tabindex\" instead of the element property\n * `tabIndex` since browsers assign different values to it.\n * e.g. in Firefox `<div contenteditable>` has `tabIndex = -1`\n * @param {!HTMLElement} element\n * @return {!number}\n */\nconst normalizedTabIndex = (element) => {\n\tif (isFocusable(element)) {\n\t\tconst tabIndex = element.getAttribute('tabindex') || 0;\n\t\treturn Number(tabIndex);\n\t}\n\treturn -1;\n};\n\n/**\n * Returns false if the element has `visibility: hidden` or `display: none`\n * @param {HTMLElement} element\n * @return {boolean}\n */\nconst isVisible = (element) => {\n\t// Check inline style first to save a re-flow. If looks good, check also\n\t// computed style.\n\tlet style = element.style;\n\tif (style.visibility !== 'hidden' && style.display !== 'none') {\n\t\tstyle = window.getComputedStyle(element);\n\t\treturn style.visibility !== 'hidden' && style.display !== 'none';\n\t}\n\treturn false;\n};\n\n/**\n * Sorts an array of tabbable elements by tabindex. Returns a new array.\n * @param {HTMLElement[]} tabbables\n * @return {HTMLElement[]}\n */\nconst sortByTabIndex = (tabbables) => {\n\t// Implement a merge sort as Array.prototype.sort does a non-stable sort\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort\n\tconst len = tabbables.length;\n\tif (len < 2) {\n\t\treturn tabbables;\n\t}\n\tconst pivot = Math.ceil(len / 2);\n\tconst left = sortByTabIndex(tabbables.slice(0, pivot));\n\tconst right = sortByTabIndex(tabbables.slice(pivot));\n\treturn mergeSortByTabIndex(left, right);\n};\n\n/**\n * Merge sort iterator, merges the two arrays into one, sorted by tab index.\n * @param {HTMLElement[]} left\n * @param {HTMLElement[]} right\n * @return {HTMLElement[]}\n */\nconst mergeSortByTabIndex = (left, right) => {\n\tconst result = [];\n\twhile (left.length > 0 && right.length > 0) {\n\t\tif (hasLowerTabOrder(left[0], right[0])) {\n\t\t\tresult.push(right.shift());\n\t\t} else {\n\t\t\tresult.push(left.shift());\n\t\t}\n\t}\n\n\treturn result.concat(left, right);\n};\n\n/**\n * Returns if element `a` has lower tab order compared to element `b`\n * (both elements are assumed to be focusable and tabbable).\n * Elements with tabindex = 0 have lower tab order compared to elements\n * with tabindex > 0.\n * If both have same tabindex, it returns false.\n * @param {HTMLElement} a\n * @param {HTMLElement} b\n * @return {boolean}\n */\nconst hasLowerTabOrder = (a, b) => {\n\t// Normalize tabIndexes\n\t// e.g. in Firefox `<div contenteditable>` has `tabIndex = -1`\n\tconst ati = Math.max(a.tabIndex, 0);\n\tconst bti = Math.max(b.tabIndex, 0);\n\treturn ati === 0 || bti === 0 ? bti > ati : ati > bti;\n};\n\n/**\n * Recursively searches children of the parent node. Return a list of tabbable\n * nodes sorted by tabIndex. Includes the parent node in the list if it is tabbable.\n * @param {Node} node The starting point for the search\n * @param {HTMLElement[]} result\n * @return {boolean}\n */\nexport const findTabbableNodes = (node) => {\n\tconst tabbableNodes = [];\n\tlet needsSort = false;\n\tlet queue = [node];\n\n\twhile (queue.length) {\n\t\tconst el = queue.shift();\n\t\t// If not an element or not visible, no need to explore children.\n\t\tif (el.nodeType !== Node.ELEMENT_NODE || !isVisible(el)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst tabIndex = normalizedTabIndex(el);\n\t\tif (tabIndex > 0) {\n\t\t\tneedsSort = true;\n\t\t}\n\t\tif (tabIndex >= 0) {\n\t\t\ttabbableNodes.push(el);\n\t\t}\n\t\tconst children = getNormalizedChildren(el);\n\t\tqueue = [...children, ...queue];\n\t}\n\n\treturn needsSort ? sortByTabIndex(tabbableNodes) : tabbableNodes;\n};\n\n/**\n * Recursively searches parents of the node. Return true if any of the ancestors have the inert attribute.\n * @param {HTMLElement} element\n * @returns {boolean}\n */\nconst hasInertAncestor = (element) => {\n\twhile (element) {\n\t\tif (element.hasAttribute('inert')) {\n\t\t\treturn true;\n\t\t}\n\t\telement = element.parentElement;\n\t}\n\treturn false;\n};\n","/**\n * Returns the currently focused element, recursing through shadow roots.\n * @param {HTMLElement} active - reference to focused element\n * @returns {HTMLElement}\n */\nexport const getActiveElement = (active = document.activeElement) => {\n\tif (active.shadowRoot && active.shadowRoot.activeElement) {\n\t\treturn getActiveElement(active.shadowRoot.activeElement);\n\t}\n\tif (active.contentDocument && active.contentDocument.activeElement) {\n\t\treturn getActiveElement(active.contentDocument.activeElement);\n\t}\n\treturn active;\n};\n","/**\n * Returns the shadow root that `node` belongs to, or null if it is not in a\n * shadow root.\n * @param {HTMLElement} node\n * @returns {(HTMLElement|null)}\n */\nexport const getShadowRootHost = (node) => {\n\tif (node.parentNode instanceof ShadowRoot) {\n\t\treturn node.parentNode.host;\n\t}\n\tif (node.parentElement) {\n\t\treturn getShadowRootHost(node.parentElement);\n\t}\n\treturn null;\n};\n","/**\n * Creates a new Seismic action dispatch with the type specified\n * in `newActionType`, passing along the original `action.payload`.\n * @param {string} newActionType - name to be used for the redispatched action\n * @returns {function}\n */\nexport const makeRedispatchEffect =\n\t(newActionType) =>\n\t({action, dispatch}) =>\n\t\tdispatch(() => {\n\t\t\treturn {\n\t\t\t\ttype: newActionType,\n\t\t\t\tpayload: {...(action.payload || {})},\n\t\t\t};\n\t\t});\n","let fontToMeasureFn = new Map();\n\nconst createMeasureFn = (font) => {\n\tconst canvas = document.createElement('canvas');\n\tconst ctx = canvas.getContext('2d');\n\tcanvas.width = 100;\n\tcanvas.height = 100;\n\tctx.font = font;\n\treturn (text) => ctx.measureText(text).width;\n};\n\n/**\n * Returns a measurement function based on the font size and font face passed.\n * The function that is returned by the factory can be used to determine the\n * width (in pixels) of a given string, e.g.\n * ```js\n *   const mt = measureTextFactory('16px Source Sans Pro, sans-serif');\n *   const width = mt('Foo');\n * ```\n * @param {string} font - e.g. '16px Source Sans Pro,sans-serif'\n * @returns {function}\n */\nexport const measureTextFactory = (font) => {\n\tif (fontToMeasureFn.has(font)) {\n\t\treturn fontToMeasureFn.get(font);\n\t}\n\tconst measureFn = createMeasureFn(font);\n\tfontToMeasureFn.set(font, measureFn);\n\treturn measureFn;\n};\n","export const textTransform = {\n\tUPPERCASE: 'uppercase',\n\tLOWERCASE: 'lowercase',\n\tCAPITALIZE: 'capitalize',\n\ttransform(mode, str) {\n\t\tif (mode === this.LOWERCASE) return this.toLowerCase(str);\n\t\tif (mode === this.UPPERCASE) return this.toUpperCase(str);\n\t\tif (mode === this.CAPITALIZE) return this.capitalize(str);\n\t\treturn str;\n\t},\n\ttoUpperCase(str = '') {\n\t\treturn str.toUpperCase() || '';\n\t},\n\ttoLowerCase(str = '') {\n\t\treturn str.toLowerCase() || '';\n\t},\n\tcapitalize(str) {\n\t\tconst s = str.trim();\n\t\tif (!s) return '';\n\n\t\tlet arr = [];\n\t\tif (s.indexOf(' ')) arr = s.split(' ');\n\t\tif (!arr.length) arr = [s];\n\n\t\tconst arr2 = [];\n\t\tarr.forEach((word) => {\n\t\t\tlet a = [];\n\t\t\tif (word.indexOf('-') > -1) {\n\t\t\t\tconst sub = word.split('-');\n\t\t\t\tsub.forEach((w) => {\n\t\t\t\t\ta.push(w.replace(/^\\w/, (c2) => c2.toUpperCase()));\n\t\t\t\t});\n\t\t\t\tarr2.push(a.join('-'));\n\t\t\t} else {\n\t\t\t\tarr2.push(word.replace(/^\\w/, (c) => c.toUpperCase()));\n\t\t\t}\n\t\t});\n\t\treturn arr2.join(' ');\n\t},\n};\n","import {textTransform} from './text-transform';\n\nexport const measureText = ({\n\tfontWeight,\n\tfontSize,\n\tfontStyle,\n\tfontFamily,\n\ttxtTransform,\n\tletterSpacing = null,\n\twordSpacing = null,\n}) => {\n\tconst canvas = document.createElement('canvas');\n\tconst ctx = canvas.getContext('2d');\n\tconst font = `${fontStyle || ''} ${\n\t\tfontWeight || '400'\n\t} ${fontSize} ${fontFamily}`;\n\tctx.font = font;\n\tif (letterSpacing) {\n\t\tctx.letterSpacing = letterSpacing;\n\t}\n\tif (wordSpacing) {\n\t\tctx.wordSpacing = wordSpacing;\n\t}\n\treturn (str) => {\n\t\tconst s = textTransform.transform(txtTransform, str);\n\t\treturn Math.ceil(ctx.measureText(s).width);\n\t};\n};\n","/**\n * Replaces occurrence of `searchTerm` found in `string` with styled DOM\n * nodes.\n *\n * @param searchTerm {string} - The substring to look for within the larger\n * `string`\n * @param string {string} - The input string to search in.\n * @param className {string} - The class to use when styling matching sections of the string\n * @param options {Options} - options to change how this function finds matches\n *\n * @typedef {Object} Options - optional configuration to customize how this function finds matches\n * @property {boolean} caseSensitive - If true, highlighting is case-sensitive\n * @property {\"beginning\"|\"all\"|\"first\"} location - Where matches can be located in the string.\n * - \"beginning\": only matches if the string starts with the searchTerm\n * - \"all\": match all occurrences of the searchTerm anywhere in the string\n * - \"first\": only matches the first occurrence of the searchTerm, but can be found anywhere in the string\n * @property {string} tag - What tag to wrap matched values\n *\n * @returns {Array<string|VDomNode>} - the minimal amount of data needed\n * to render correctly. This may be a string literal (no matches found), or an\n * array of mixed strings + vdom nodes.\n */\nexport function matchSearchTerm(\n\tsearchTerm,\n\tstring,\n\tclassName,\n\t{location = 'beginning', caseSensitive = false, tag: Tag = 'mark'} = {},\n) {\n\tif (!searchTerm) {\n\t\treturn string;\n\t}\n\n\tconst searchWithCase = caseSensitive ? searchTerm : searchTerm.toLowerCase();\n\tconst stringWithCase = caseSensitive ? string : string.toLowerCase();\n\n\t// elements in this array will be a mix of types. String literals for the\n\t// non-highlighted portitions and snabbdom nodes for the highlighted\n\t// portions. snabbdom is perfectly happy rendering this array as children.\n\tconst result = [];\n\n\tconst highlightLength = searchTerm.length;\n\n\tlet lastIndex = 0;\n\tlet nextIndex = 0;\n\twhile (\n\t\t(nextIndex = stringWithCase.indexOf(searchWithCase, lastIndex)) !== -1\n\t) {\n\t\t// `beginning` location must match at just the start of the string\n\t\tif (nextIndex > 0 && location === 'beginning') {\n\t\t\tbreak;\n\t\t}\n\n\t\t// lastIndex = beginning of string OR where the previous highlighted string ended\n\t\t// nextIndex = where the next highlight string starts\n\t\t//\n\t\t// if these two values are not equal, it means there is non-highlighted\n\t\t// content that we need to deal with.\n\t\t//\n\t\t// e.g.: on the first iteration\n\t\t//\n\t\t//       searchTerm = \"world\"\n\t\t//       label = \"hello world\"\n\t\t//                │     │\n\t\t//      lastIndex ┘     └ nextIndex\n\t\t//\n\t\t// Need to push the prefix \"hello \" into the result.\n\t\tif (nextIndex > lastIndex) {\n\t\t\tresult.push(string.slice(lastIndex, nextIndex));\n\t\t}\n\n\t\tconst highlight = (\n\t\t\t<Tag className={className}>\n\t\t\t\t{string.slice(nextIndex, nextIndex + highlightLength)}\n\t\t\t</Tag>\n\t\t);\n\t\tresult.push(highlight);\n\n\t\tlastIndex = nextIndex + highlightLength;\n\n\t\tif (location !== 'all') {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (result.length === 0) {\n\t\treturn string;\n\t}\n\n\t// content between the last highlight and end of the string\n\tif (lastIndex !== string.length) {\n\t\tresult.push(string.slice(lastIndex));\n\t}\n\n\treturn result;\n}\n","/**\n * The event object.\n * @typedef EventObject\n * @property {string} type\n */\n\n/**\n * The event callback.\n * @callback EventCallback\n * @param {EventObject} event\n */\n\n/**\n * An object representing a layering component.\n * @typedef {Object} Layer\n * @property {string} id - The id associated with the layer element\n * @property {Array} events - The types of events to create global listeners for.\n * @property {EventCallback} callback - The function to be called when a stack event is triggered.\n */\n\nif (typeof window.___NDS_LAYER_EVENTS___ === 'undefined') {\n\tconst propertyConfig = {\n\t\tenumerable: false,\n\t\tconfigurable: false,\n\t\twritable: false,\n\t};\n\tconst LSValue = [];\n\tObject.defineProperty(LSValue, 'registry', {\n\t\t...propertyConfig,\n\t\tvalue: {},\n\t});\n\t// NOTES no matter how many times layer events gets loaded, there is only one window\n\tObject.defineProperty(window, '___NDS_LAYER_EVENTS___', {\n\t\t...propertyConfig,\n\t\tvalue: LSValue,\n\t});\n}\n\n/**\n * Return the stack of layer objects. This is a reference, not a copy.\n * @returns {Layer[]}\n */\nconst getStack = () => window.___NDS_LAYER_EVENTS___ || [];\n\n/**\n * Returns whether a layer with given id is currently the top of the stack.\n * @param {number} id\n * @returns {boolean}\n */\nconst isTopLayer = (id) => {\n\tconst stack = getStack();\n\treturn id === stack[stack.length - 1]?.id;\n};\n\n/**\n * Returns true if a there is a layer with matching id.\n * @param {string} id\n * @returns {boolean}\n */\nconst layerExists = (id) => getStack().some((layer) => layer.id === id);\n\n/**\n * Umbrella handler for all stack-related events.\n * @param {EventCallback} event\n */\nconst handleEvent = (event) => {\n\tconst stack = getStack();\n\n\t// Multiple instances/versions of this utility can leave behind remnant listeners.\n\t// The listener should unsubscribe itself if there are no layers.\n\tif (!stack.length) {\n\t\treturn window.removeEventListener(event.type, handleEvent, true);\n\t}\n\n\tconst topLayer = stack[stack.length - 1];\n\tif (topLayer.events.includes(event.type)) {\n\t\ttopLayer.callback(event);\n\t}\n};\n\n/**\n * Check if a given layer object is safe to use.\n * @param {Layer}\n */\nconst isValidLayer = (layer) => {\n\treturn (\n\t\tObject.keys(layer).length &&\n\t\tArray.isArray(layer.events) &&\n\t\tlayer.events.length &&\n\t\ttypeof layer.callback === 'function' &&\n\t\ttypeof layer.id === 'string' &&\n\t\t!layerExists(layer.id)\n\t);\n};\n\n/**\n * A reducer function to handle LayerStack state mutations.\n * @param {string} type - the type of action to perform.\n * @param {string[]} events - the events to update.\n */\nconst registryReducer = (type, events) => {\n\tif (type === 'add') {\n\t\tevents.forEach((eventType) => {\n\t\t\tconst stack = getStack();\n\t\t\tconst count = stack.registry[eventType];\n\t\t\tif (!count) {\n\t\t\t\twindow.addEventListener(eventType, handleEvent, true);\n\t\t\t\tstack.registry[eventType] = 1;\n\t\t\t} else {\n\t\t\t\tstack.registry[eventType] = count + 1;\n\t\t\t}\n\t\t});\n\t} else if (type === 'remove') {\n\t\tevents.forEach((eventType) => {\n\t\t\tconst stack = getStack();\n\t\t\tconst count = stack.registry[eventType];\n\t\t\tif (count === 1) {\n\t\t\t\tdelete stack.registry[eventType];\n\t\t\t\twindow.removeEventListener(eventType, handleEvent, true);\n\t\t\t} else {\n\t\t\t\tstack.registry[eventType] = count - 1;\n\t\t\t}\n\t\t});\n\t}\n};\n\n/**\n * Adds a new layer to the stack.\n * @param {Layer} layer\n */\nconst add = (layer = {}) => {\n\tif (!isValidLayer(layer)) return;\n\tregistryReducer('add', layer.events);\n\tgetStack().push(layer);\n};\n\n/**\n * Given a matching id, removes the specified layer from the stack.\n * @param {string} id\n */\nconst remove = (id) => {\n\tconst stack = getStack();\n\n\tif (!stack.length || typeof id !== 'string') {\n\t\treturn;\n\t}\n\n\tconst topLayer = stack[stack.length - 1];\n\n\tif (topLayer.id === id) {\n\t\tconst layer = stack.pop();\n\t\tregistryReducer('remove', layer.events);\n\t} else {\n\t\tfor (let i = stack.length - 1; i >= 0; i--) {\n\t\t\tconst layer = stack[i];\n\t\t\tif (layer.id === id) {\n\t\t\t\tstack.splice(i, 1);\n\t\t\t\tregistryReducer('remove', layer.events);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nexport default {remove, add, isTopLayer};\n","/**\n * Standard configuration object for DOMPurify library used across Horizon Design System components.\n */\nexport const domPurifyConfig = {\n\tFORCE_BODY: true, // makes sure that <style> tags aren't stripped\n\tCUSTOM_ELEMENT_HANDLING: {\n\t\ttagNameCheck: /(^now-)|(^sn-)/, // allows now-* and sn-* custom elements to be used\n\t\tattributeNameCheck: () => {\n\t\t\t// allows any custom properties / attributes to be set on now-* and sn-* tags\n\t\t\treturn true;\n\t\t},\n\t},\n\tADD_ATTR: ['target'],\n\tFORBID_ATTR: ['method', 'action'],\n};\n","function canScroll(overflow) {\n\treturn overflow === 'auto' || overflow === 'hidden';\n}\n\n/**\n * Caches the result of a `getDimensions()` call so that it won't be\n * recalculated again later. Useful to ensure that getBoundingClientRect is\n * not called multiple times in a row when multiple fit positions are\n * evaluated in a row.\n * @param {Dimensions} dim\n * @return {{getDimensions: Function}}\n */\nexport function cacheDimensions(dim) {\n\treturn {\n\t\tgetDimensions: () => dim,\n\t};\n}\n\n/**\n * Gets the dimensions of a HTMLElement or gets the manually specified and/or\n * cached dimensions of a DimensionsReference.\n * @param {(HTMLElement|DimensionsReference)} node\n * @return {Dimensions}\n */\nexport function getDimensions(node) {\n\tif (\n\t\t!(node instanceof HTMLElement) &&\n\t\ttypeof node.getDimensions === 'function'\n\t) {\n\t\treturn node.getDimensions();\n\t}\n\tif (\n\t\tnode === window ||\n\t\tnode === document.documentElement ||\n\t\tnode === document.body\n\t) {\n\t\treturn {\n\t\t\ttop: 0,\n\t\t\tright: document.documentElement.clientWidth,\n\t\t\tbottom: document.documentElement.clientHeight,\n\t\t\tleft: 0,\n\t\t\twidth: document.documentElement.clientWidth,\n\t\t\theight: document.documentElement.clientHeight,\n\t\t\texisting: {\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t},\n\t\t\tscroll: {\n\t\t\t\tblock: window.scrollY,\n\t\t\t\tinline: window.scrollX,\n\t\t\t\theight: document.documentElement.scrollHeight,\n\t\t\t\twidth: document.documentElement.scrollWidth,\n\t\t\t},\n\t\t};\n\t}\n\n\t// the fractional part of the getBoundingClientRect() values may cause\n\t// subtle differences to the rendered position after fit is run, which can\n\t// be pretty noticeable if we're constantly updating the fit position on\n\t// scroll. Rounding here helps to avoid this jitteriness.\n\tconst box = node.getBoundingClientRect();\n\tconst top = Math.round(box.top);\n\tconst right = Math.round(box.right);\n\tconst bottom = Math.round(box.bottom);\n\tconst left = Math.round(box.left);\n\tconst width = Math.ceil(box.width); // DEF0502291: Prefer larger width with fractional pixels to prevent characters from wrapping into next line.\n\tconst height = Math.round(box.height);\n\tconst {scrollWidth, scrollHeight, scrollTop, scrollLeft} = node;\n\tconst style = window.getComputedStyle(node);\n\treturn {\n\t\ttop,\n\t\tright,\n\t\tbottom,\n\t\tleft,\n\t\twidth,\n\t\theight,\n\t\texisting: {\n\t\t\ttop: parseInt(style.top, 10) || 0,\n\t\t\tleft: parseInt(style.left, 10) || 0,\n\t\t},\n\t\tscroll: {\n\t\t\t// scrollWidth/height might be smaller than the getBoundingClientRect\n\t\t\t// reported values because scrollWidth/height returns rounded, whole\n\t\t\t// numbers and getBoundingClientRect returns fractions. However, we treat\n\t\t\t// these scroll properties as the largest possible size that the node can\n\t\t\t// take up, so we want to guarantee that these properties are always at\n\t\t\t// least the size of the getBoundingClientRect width/height.\n\t\t\twidth: canScroll(style.overflowX) ? Math.max(scrollWidth, width) : width,\n\t\t\theight: canScroll(style.overflowY)\n\t\t\t\t? Math.max(scrollHeight, height)\n\t\t\t\t: height,\n\t\t\tblock: scrollTop,\n\t\t\tinline: scrollLeft,\n\t\t},\n\t};\n}\n","/**\n * Returns directional information for the given axis.\n * @param {(\"block\"|\"inline\")} axis - Axis that is being calculated (block for top/bottom, inline for left/right)\n * @return {{topOrLeft: string, bottomOrRight: string, widthOrHeight: string}}\n */\nexport default function getAxisInfo(axis) {\n\treturn {\n\t\ttopOrLeft: axis === 'block' ? 'top' : 'left',\n\t\tbottomOrRight: axis === 'block' ? 'bottom' : 'right',\n\t\twidthOrHeight: axis === 'block' ? 'height' : 'width',\n\t};\n}\n","import getAxisInfo from './get-axis-info';\n\n/**\n * Calculates either the height or width based on the target and content\n * position and dimensions.\n * @param {Dimensions} targetDimensions - Target dimensions object plus offsets\n * @param {Dimensions} contentDimensions - Content dimensions object\n * @param {Dimensions} containerDimensions - Container dimensions object\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} targetPosition - Logical target position\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} contentPosition - Logical content position\n * @param {(\"block\"|\"inline\")} axis - Axis that is being calculated (block for top/bottom, inline for left/right)\n * @return {number} - the calculated width or height of the content area\n */\nexport function calculateContentAreaLength(\n\ttargetDimensions,\n\tcontentDimensions,\n\tcontainerDimensions,\n\ttargetPosition,\n\tcontentPosition,\n\taxis,\n) {\n\tconst {topOrLeft, widthOrHeight} = getAxisInfo(axis);\n\n\t// edge case: if centered content is bigger than the container, we want\n\t// contentArea to fill the entire container.\n\tif (\n\t\tcontentPosition === 'center' &&\n\t\tcontentDimensions[widthOrHeight] >=\n\t\t\tcontainerDimensions.scroll[widthOrHeight]\n\t) {\n\t\treturn containerDimensions.scroll[widthOrHeight];\n\t}\n\n\tconst targetOffsetContainerTopOrLeft =\n\t\ttargetDimensions[topOrLeft] -\n\t\tcontainerDimensions[topOrLeft] +\n\t\tcontainerDimensions.scroll[axis];\n\n\t// Initial length is the distance between the top/left of the container and\n\t// the target\n\tlet length = targetOffsetContainerTopOrLeft;\n\n\t// Adjust a little bit based on the alignment of the target\n\tif (targetPosition === 'center') {\n\t\tlength += targetDimensions[widthOrHeight] / 2;\n\t} else if (targetPosition === 'bottom' || targetPosition === 'end') {\n\t\tlength += targetDimensions[widthOrHeight];\n\t}\n\n\t// For start/center positions, we want contentArea to grow down/right from\n\t// the target, so we really need whatever space is remaining compared to above\n\tif (\n\t\tcontentPosition === 'top' ||\n\t\tcontentPosition === 'start' ||\n\t\tcontentPosition === 'center'\n\t) {\n\t\tlength = containerDimensions.scroll[widthOrHeight] - length;\n\n\t\t// Centered is a little special: we want to keep 50% of the content on\n\t\t// either side of the target\n\t\tif (contentPosition === 'center') {\n\t\t\tlength += contentDimensions[widthOrHeight] / 2;\n\t\t}\n\t}\n\n\t// ensure contentArea is never bigger than the container, and is always\n\t// a whole number.\n\treturn Math.floor(\n\t\tMath.min(length, containerDimensions.scroll[widthOrHeight]),\n\t);\n}\n\n/**\n * Calculates either the top or left offset based on the target and content\n * positions and dimensions.\n * @param {Dimensions} targetDimensions - Target dimensions object plus offsets\n * @param {Dimensions} contentDimensions - Content dimensions object\n * @param {Dimensions} contentAreaDimensions - Content area dimensions object\n * @param {Dimensions} containerDimensions - Container dimensions object\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} targetPosition - Logical target position\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} contentPosition - Logical content position\n * @param {(\"block\"|\"inline\")} axis - Axis that is being calculated (block for top/bottom, inline for left/right)\n * @return {number} - the calculated offset top or left of the content area\n */\nexport function calculateContentAreaOffset(\n\ttargetDimensions,\n\tcontentDimensions,\n\tcontentAreaDimensions,\n\tcontainerDimensions,\n\ttargetPosition,\n\tcontentPosition,\n\taxis,\n) {\n\tconst {topOrLeft, widthOrHeight} = getAxisInfo(axis);\n\n\t// With absolute positioning, contentArea could start at any point inside the\n\t// container. Need to figure out the amount to shift the contentArea so that\n\t// it aligns to the container properly.\n\t//\n\t// Start by figuring out how to get the contentArea position to align\n\t// to the top/start of the container:\n\tlet calcOffset =\n\t\t// Start with container's current position\n\t\tcontainerDimensions[topOrLeft] -\n\t\t// Add the scrolling offset. Dimensions values are relative to the\n\t\t// viewport, which doesn't know about any scrolling offset introduced by an\n\t\t// overflow'able container.\n\t\tcontainerDimensions.scroll[axis];\n\n\t// If contentArea is already stretched to be as big as the container, then we don't\n\t// need to do any other adjusting.\n\tif (\n\t\tcontentAreaDimensions[widthOrHeight] <\n\t\tcontainerDimensions.scroll[widthOrHeight]\n\t) {\n\t\t// When content is top or start aligned, the content area starts at the\n\t\t// target position and grows towards the bottom/end of the container. Need\n\t\t// to increase the `calcOffset` by however much the target offset is.\n\t\t//\n\t\t// We'll skip over this adjustment in the case where content is bottom/end\n\t\t// aligned, because in these cases the contentArea starts at the top/start\n\t\t// point of the container, which we already figured out above.\n\t\tif (\n\t\t\tcontentPosition === 'top' ||\n\t\t\tcontentPosition === 'start' ||\n\t\t\tcontentPosition === 'center'\n\t\t) {\n\t\t\tcalcOffset +=\n\t\t\t\ttargetDimensions[topOrLeft] -\n\t\t\t\tcontainerDimensions[topOrLeft] +\n\t\t\t\tcontainerDimensions.scroll[axis];\n\n\t\t\t// Centered is a little special: we want to keep 50% of the content on\n\t\t\t// either side of the target\n\t\t\tif (contentPosition === 'center') {\n\t\t\t\tcalcOffset -= contentDimensions[widthOrHeight] / 2;\n\t\t\t}\n\n\t\t\t// Adjust a little bit based on the alignment of the target\n\t\t\tif (targetPosition === 'center') {\n\t\t\t\tcalcOffset += targetDimensions[widthOrHeight] / 2;\n\t\t\t} else if (targetPosition === 'bottom' || targetPosition === 'end') {\n\t\t\t\tcalcOffset += targetDimensions[widthOrHeight];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn Math.floor(calcOffset);\n}\n\n/**\n * Calculates a new dimensions object that describes the desired contentArea\n * size and position after it is placed relative to the target.\n * @param {Dimensions} targetDimensions - Target dimensions object plus offsets\n * @param {Dimensions} contentDimensions - Content dimensions object\n * @param {Dimensions} contentAreaDimensions - Content area dimensions object\n * @param {Dimensions} containerDimensions - Container dimensions object\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} targetPosition - Logical target position\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} contentPosition - Logical content position\n * @return {Dimensions} - a new content area dimensions object\n */\nexport default function calculateContentAreaDimensions(\n\ttargetDimensions,\n\tcontentDimensions,\n\tcontentAreaDimensions,\n\tcontainerDimensions,\n\ttargetPosition,\n\tcontentPosition,\n) {\n\tconst [targetPositionBlock, targetPositionInline] = targetPosition;\n\tconst [contentPositionBlock, contentPositionInline] = contentPosition;\n\n\tconst nextContentAreaDimensions = {...contentAreaDimensions};\n\tnextContentAreaDimensions.width = calculateContentAreaLength(\n\t\ttargetDimensions,\n\t\tcontentDimensions,\n\t\tcontainerDimensions,\n\t\ttargetPositionInline,\n\t\tcontentPositionInline,\n\t\t'inline',\n\t);\n\n\tnextContentAreaDimensions.height = calculateContentAreaLength(\n\t\ttargetDimensions,\n\t\tcontentDimensions,\n\t\tcontainerDimensions,\n\t\ttargetPositionBlock,\n\t\tcontentPositionBlock,\n\t\t'block',\n\t);\n\n\tnextContentAreaDimensions.left = calculateContentAreaOffset(\n\t\ttargetDimensions,\n\t\tcontentDimensions,\n\t\tnextContentAreaDimensions,\n\t\tcontainerDimensions,\n\t\ttargetPositionInline,\n\t\tcontentPositionInline,\n\t\t'inline',\n\t);\n\n\tnextContentAreaDimensions.top = calculateContentAreaOffset(\n\t\ttargetDimensions,\n\t\tcontentDimensions,\n\t\tnextContentAreaDimensions,\n\t\tcontainerDimensions,\n\t\ttargetPositionBlock,\n\t\tcontentPositionBlock,\n\t\t'block',\n\t);\n\n\tnextContentAreaDimensions.right =\n\t\tnextContentAreaDimensions.left + nextContentAreaDimensions.width;\n\tnextContentAreaDimensions.bottom =\n\t\tnextContentAreaDimensions.top + nextContentAreaDimensions.height;\n\n\treturn nextContentAreaDimensions;\n}\n","/**\n * Creates an object of CSS properties to be applied to the contentArea element\n * @param {Dimensions} contentAreaDimensions - the current contentArea dimensions object,\n * before any fit calculations have been applied.\n * @param {Dimensions} nextContentAreaDimensions - the new contentArea dimensions object,\n * after all fit calculations have been applied.\n * @returns {Object} CSS properties that should be applied to contentArea.\n */\nexport default function calculateContentAreaStyles(\n\tcontentAreaDimensions,\n\tnextContentAreaDimensions,\n) {\n\t// determine the distance we need to move the old contentArea to correctly\n\t// match the new contentArea. Since we're going to be setting these as inline\n\t// styles, we need to make sure we also consider any existing inline style\n\t// values for top and left, as these will get overwritten:\n\t//\n\t//\tExample, if we have the following, relative to the top of the page:\n\t//\n\t//\t\t<div id=\"content-area\" style=\"top: 20px; left: 20px\" />\n\t//\n\t//  And we want to position this contentArea to start at point (30, 30),\n\t//  our dimensions objects look like:\n\t//\n\t//\t\t    contentAreaDimensions = { top: 20, left: 20 };\n\t//\t\tnextContentAreaDimensions = { top: 30, left: 30 };\n\t//\n\t//  If we don't account for the existing inline styles, we would assume that\n\t//  we only need to move the contentArea 10px top and left, so we'd result\n\t//  in:\n\t//\n\t//\t\t<div id=\"content-area\" style=\"top: 10px; left: 10px\" />\n\t//\n\t//\twhich is not correct. We need to make sure we also factor in the existing\n\t//\t20px top/left that the contentArea started with. These values are tracked\n\t//\tin the `existing` property of a dimensions object:\n\tconst top =\n\t\tnextContentAreaDimensions.top -\n\t\tcontentAreaDimensions.top +\n\t\tcontentAreaDimensions.existing.top;\n\tconst left =\n\t\tnextContentAreaDimensions.left -\n\t\tcontentAreaDimensions.left +\n\t\tcontentAreaDimensions.existing.left;\n\treturn {\n\t\ttop: `${top}px`,\n\t\tleft: `${left}px`,\n\t\twidth: `${nextContentAreaDimensions.width}px`,\n\t\theight: `${nextContentAreaDimensions.height}px`,\n\t\tposition: 'absolute',\n\t\tpointerEvents: 'none',\n\t};\n}\n","import getAxisInfo from './get-axis-info';\n\n/**\n * Calculates either the top or left coordinate for the content based on where\n * it would exist when placed in the new content area.\n * @param {Dimensions} contentDimensions - Content dimensions object\n * @param {Dimensions} contentAreaDimensions - Content area dimensions object\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} contentPosition - Logical content position\n * @param {(\"block\"|\"inline\")} axis - Axis that is being calculated (block for top/bottom, inline for left/right)\n * @return {number} - the calculated offset top or left of the content area\n */\nexport function calculateContentOffset(\n\tcontentDimensions,\n\tcontentAreaDimensions,\n\tcontentPosition,\n\taxis,\n) {\n\tconst {topOrLeft, bottomOrRight, widthOrHeight} = getAxisInfo(axis);\n\tif (\n\t\tcontentPosition === 'top' ||\n\t\tcontentPosition === 'start' ||\n\t\tcontentPosition === 'center'\n\t) {\n\t\treturn contentAreaDimensions[topOrLeft];\n\t}\n\n\treturn (\n\t\tcontentAreaDimensions[bottomOrRight] - contentDimensions[widthOrHeight]\n\t);\n}\n\n/**\n * Calculates a new content dimensions object that describes where\n * the content would be after being placed inside the (correctly-positioned)\n * content area.\n *\n * Note that these values aren't necessarily the final values where content is\n * going to be rendered. It is the point where content would be if there were\n * no other boundaries (from the viewport, container, or both). This is useful\n * later to determine how much of the content will be visible and rank this\n * position against others in `getBestFitInfo`.\n *\n * @param {Dimensions} contentDimensions - Content dimensions object\n * @param {Dimensions} contentAreaDimensions - Content area dimensions object\n * @param {(\"top\"|\"start\"|\"center\"|\"bottom\"|\"end\")} contentPosition - Logical content position\n * @param {(\"block\"|\"inline\")} axis - Axis that is being calculated (block for top/bottom, inline for left/right)\n * @return {Dimensions} - the updated content dimensions object as if it were placed\n * in a correctly-positioned contentArea and not bounded by any other containing object.\n */\nexport default function calculateContentDimensions(\n\tcontentDimensions,\n\tcontentAreaDimensions,\n\tcontentPosition,\n) {\n\tconst [contentPositionBlock, contentPositionInline] = contentPosition;\n\n\tconst nextContentDimensions = {...contentDimensions};\n\n\tnextContentDimensions.top = calculateContentOffset(\n\t\tcontentDimensions,\n\t\tcontentAreaDimensions,\n\t\tcontentPositionBlock,\n\t\t'block',\n\t);\n\n\tnextContentDimensions.left = calculateContentOffset(\n\t\tcontentDimensions,\n\t\tcontentAreaDimensions,\n\t\tcontentPositionInline,\n\t\t'inline',\n\t);\n\n\tnextContentDimensions.bottom =\n\t\tnextContentDimensions.top + contentDimensions.height;\n\tnextContentDimensions.right =\n\t\tnextContentDimensions.left + contentDimensions.width;\n\n\treturn nextContentDimensions;\n}\n","/**\n * Calculates constrain styles based on developer-specified configuration.\n */\nexport function getConstrainStyles(constrain) {\n\treturn Object.entries(constrain).reduce((result, [key, value]) => {\n\t\tresult[key] = `${value}px`;\n\t\treturn result;\n\t}, {});\n}\n\n/**\n * Calculates and returns styles to be applied to the content.\n * @param {Object} contentStyles - Other content styles to apply\n * @param {Object} contentPosition - position of content\n * @return {Object}\n */\nexport function addCSSProperties(contentStyles, contentPosition) {\n\tconst isBottomAligned = contentPosition[0] === 'bottom';\n\tconst isEndAligned = contentPosition[1] === 'end';\n\n\treturn {\n\t\t...contentStyles,\n\t\ttop: isBottomAligned ? 'unset' : '0px',\n\t\tbottom: isBottomAligned ? '0px' : 'unset',\n\t\tleft: isEndAligned ? 'unset' : '0px',\n\t\tright: isEndAligned ? '0px' : 'unset',\n\t\tposition: 'absolute',\n\t\tpointerEvents: 'initial',\n\t};\n}\n\n/**\n * Calculates and returns styles to be applied to the content.\n * @param {Position} contentPosition - Logical position for the content\n * @param {Constrain} constrain - normalized contrain configuration object\n * @return {Object} a set of CSS properties that should be applied to the\n * content element.\n */\nexport default function calculateContentStyles(contentPosition, constrain) {\n\tconst contentStyles = getConstrainStyles(constrain);\n\treturn addCSSProperties(contentStyles, contentPosition);\n}\n","/**\n * Restricts the content dimensions to the given bounding dimensions object\n * and returns both the ratio of overlap and the new dimensions.\n *\n * @param {Dimensions} contentDimensions - Content dimensions object\n * @param {Dimensions} boundingDimensions - container dimensions or viewport dimensions, depending\n * on which bounding element to compare to.\n * @returns {{ratio: number, dimensions: Dimensions}}\n */\nexport function restrictToBoundingBox(contentDimensions, boundingDimensions) {\n\tconst fullyVisible =\n\t\tcontentDimensions.top >= boundingDimensions.top &&\n\t\tcontentDimensions.right <= boundingDimensions.right &&\n\t\tcontentDimensions.bottom <= boundingDimensions.bottom &&\n\t\tcontentDimensions.left >= boundingDimensions.left;\n\n\tif (fullyVisible) {\n\t\treturn {\n\t\t\tratio: 1,\n\t\t\tdimensions: contentDimensions,\n\t\t};\n\t}\n\n\tconst visibleDimensions = {\n\t\t...contentDimensions,\n\t\tleft: Math.max(contentDimensions.left, boundingDimensions.left),\n\t\tright: Math.min(contentDimensions.right, boundingDimensions.right),\n\t\tbottom: Math.min(contentDimensions.bottom, boundingDimensions.bottom),\n\t\ttop: Math.max(contentDimensions.top, boundingDimensions.top),\n\t};\n\n\tvisibleDimensions.width = visibleDimensions.right - visibleDimensions.left;\n\tvisibleDimensions.height = visibleDimensions.bottom - visibleDimensions.top;\n\tconst actualArea = visibleDimensions.width * visibleDimensions.height;\n\tconst wantedArea = contentDimensions.width * contentDimensions.height;\n\n\treturn {\n\t\tratio: actualArea / wantedArea,\n\t\tdimensions: visibleDimensions,\n\t};\n}\n\n/**\n * Calculates how much of the content would actually be viewable for the\n * given container and viewport.\n *\n * @param {Dimensions} contentDimensions - Content dimensions object\n * @param {Dimensions} containerDimensions - Container dimensions object\n * @param {Dimensions} viewportDimensions - Viewport dimensions object\n *\n * @typedef {Object} Overlap an object describing how much the content overlaps\n * with other boundary containers\n * @param {object} overlapRatios Object containing overlap ratios for the\n * container and viewport.\n * @param {number} overlapRatios.container The ratio of content that overlaps with the\n * container element. If the content completely fits in the container, this\n * value will be `1`. If the content falls off the container, this value will\n * be between 0 and 1.\n * @param {number} overlapRatios.viewport The ratio of content that overlaps with the\n * viewport element. If the content completely fits in the viewport, this\n * value will be `1`. If the content falls off the container, this value will\n * be between 0 and 1.\n * @param {Dimensions} visibleContentDimensions Updated content dimensions that\n * are bounded by the container. If the content fits completely in the container,\n * these dimensions will be identical to the original content dimensions. If the content\n * falls out of the container, then this dimensions object will be the overlap between\n * the content and the container.\n * @return {Overlap}\n */\nexport default function calculateOverlap(\n\tcontentDimensions,\n\tcontentAreaDimensions,\n\tviewportDimensions,\n) {\n\tconst contentInContainer = restrictToBoundingBox(\n\t\tcontentDimensions,\n\t\tcontentAreaDimensions,\n\t);\n\tconst contentInViewport = restrictToBoundingBox(\n\t\tcontentDimensions,\n\t\tviewportDimensions,\n\t);\n\n\treturn {\n\t\toverlapRatios: {\n\t\t\tcontainer: contentInContainer.ratio,\n\t\t\tviewport: contentInViewport.ratio,\n\t\t},\n\t\tvisibleContentDimensions: contentInContainer.dimensions,\n\t};\n}\n","/**\n * Calculates special values of `constrain`\n */\nexport default function toSizeValue(contentValue, targetValue, constrainValue) {\n\tif (constrainValue === 'auto') {\n\t\treturn contentValue;\n\t}\n\tif (constrainValue === 'target') {\n\t\treturn targetValue;\n\t}\n\tif (typeof constrainValue === 'number') {\n\t\treturn constrainValue;\n\t}\n\tthrow new Error('Sizing value is not valid');\n}\n","import toSizeValue from './to-size-value';\n\n/**\n * Returns the dimension direction for a given constrain\n * key.\n * @returns {(\"width\"|\"height\"|null)} returns \"width\" for width-related keys,\n * \"height\" for height-related keys, and null for any invalid key\n */\nexport function getDimensionForConstrainKey(key) {\n\tif (['width', 'minWidth', 'maxWidth'].includes(key)) {\n\t\treturn 'width';\n\t}\n\n\tif (['height', 'minHeight', 'maxHeight'].includes(key)) {\n\t\treturn 'height';\n\t}\n\n\treturn null;\n}\n\n/**\n * Normalizes a constrain configuration by mapping all special keywords\n * (`auto`, `target`), etc to resolved numerical values. Also drops\n * any property keys that are not valid\n *\n * @param {Constrain} constrain - constrain object before normalization\n * @param {Dimensions} targetDimensions - target dimensions object\n * @param {Dimensions} contentDimensions - content dimensions object\n */\nexport function normalizeConstrain(\n\tconstrain,\n\ttargetDimensions,\n\tcontentDimensions,\n) {\n\treturn Object.entries(constrain).reduce((result, [key, constraint]) => {\n\t\tconst widthOrHeight = getDimensionForConstrainKey(key);\n\t\tif (widthOrHeight) {\n\t\t\tresult[key] = toSizeValue(\n\t\t\t\tcontentDimensions.scroll[widthOrHeight],\n\t\t\t\ttargetDimensions[widthOrHeight],\n\t\t\t\tconstraint,\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}, {});\n}\n\n/**\n * Returns a new dimensions object with the constrain values applied.\n *\n * @param {Constrain} normalizedConstrain - constrain object after normalization\n * @param {Dimensions} dimensions - dimensions object to apply constrain to\n */\nexport function applyConstrain(normalizedConstrain, dimensions) {\n\tconst newDimensions = Object.entries(normalizedConstrain).reduce(\n\t\t(result, [key, value]) => {\n\t\t\tconst widthOrHeight = getDimensionForConstrainKey(key);\n\t\t\tif (key.startsWith('min')) {\n\t\t\t\tresult[widthOrHeight] = Math.max(dimensions[widthOrHeight], value);\n\t\t\t} else if (key.startsWith('max')) {\n\t\t\t\tresult[widthOrHeight] = Math.min(dimensions[widthOrHeight], value);\n\t\t\t} else {\n\t\t\t\tresult[widthOrHeight] = value;\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\t\t{...dimensions},\n\t);\n\n\tnewDimensions.bottom = newDimensions.top + newDimensions.height;\n\tnewDimensions.right = newDimensions.left + newDimensions.width;\n\n\treturn newDimensions;\n}\n","import calculateContentAreaDimensions from './content-area';\nimport calculateContentAreaStyles from './content-area-styles';\nimport calculateContentDimensions from './content';\nimport calculateContentStyles from './content-styles';\nimport calculateOverlap from './overlap';\nimport {normalizeConstrain, applyConstrain} from './constrain';\n\n/**\n * Offset used to take an array of 6 values.\n * If someone passes in 6 values we will take the last four and apply them to the normOffset.\n * The functionality of this has not changed from V1.\n * We not longer support the first two values of the 6 value array. They didn't work as intended.\n * Instead we will convert the old two values to our new one value.\n */\nconst makeOffsetBackwardsCompatible = (offset) => {\n\tif (offset.length === 6) {\n\t\treturn offset.slice(2, 6);\n\t} else {\n\t\treturn offset.find((element) => element > 0);\n\t}\n};\n\n/**\n * Normalizes the offset format into `[top, end, bottom, start]`\n */\nconst normalizeOffset = (offset, targetPosition, contentPosition) => {\n\tlet value = offset;\n\tif (Array.isArray(offset)) {\n\t\tconst backwardCompatibleOffset = makeOffsetBackwardsCompatible(offset);\n\t\tif (Array.isArray(backwardCompatibleOffset)) {\n\t\t\treturn backwardCompatibleOffset;\n\t\t} else {\n\t\t\tvalue = backwardCompatibleOffset;\n\t\t}\n\t}\n\n\tlet calcOffset = [value, value, value, value];\n\tif (targetPosition[0] === contentPosition[0]) {\n\t\tcalcOffset[0] = 0;\n\t\tcalcOffset[2] = 0;\n\t}\n\tif (targetPosition[1] === contentPosition[1]) {\n\t\tcalcOffset[1] = 0;\n\t\tcalcOffset[3] = 0;\n\t}\n\treturn calcOffset;\n};\n\n/**\n * Adds the offset to the target dimensions for positioning\n * @param {Dimensions} targetDimensions - Target dimensions\n * @param {Array<number>} normOffset - normalized offset into `[top, right, bottom, left]` format\n * @returns {Dimensions} - new dimensions with the normalized offset added in\n */\nfunction addOffsetPaddingToDimensions(targetDimensions, normOffset) {\n\tconst [top = 0, right = 0, bottom = 0, left = 0] = normOffset;\n\treturn {\n\t\t...targetDimensions,\n\t\ttop: targetDimensions.top - top,\n\t\tright: targetDimensions.right + right,\n\t\tbottom: targetDimensions.bottom + bottom,\n\t\tleft: targetDimensions.left - left,\n\t\twidth: targetDimensions.width + left + right,\n\t\theight: targetDimensions.height + top + bottom,\n\t};\n}\n\n/**\n * Calculates dimensions for the content area and position of the content.\n * Returns the styles for the content area and the content, as well as a ratio\n * of how much of the content has been adjusted and/or is hidden by scrolling.\n * @param {Dimensions} targetDimensions - Target dimensions object\n * @param {Dimensions} contentDimensions - Content dimensions object\n * @param {Dimensions} contentAreaDimensions - Content area dimensions object\n * @param {Dimensions} containerDimensions - Container dimensions object\n * @param {Dimensions} viewportDimensions - Viewport dimensions object\n * @param {Origin[]} targetPosition\n * @param {Origin[]} contentPosition\n * @param {number} offset - Amount to offset content from the target\n * @param {Constrain} constrain - Constrain configuration\n */\nexport default function calculateFit(\n\ttargetDimensions,\n\tcontentDimensions,\n\tcontentAreaDimensions,\n\tcontainerDimensions,\n\tviewportDimensions,\n\ttargetPosition,\n\tcontentPosition,\n\toffset,\n\tconstrain,\n) {\n\tconst normOffset = normalizeOffset(offset, targetPosition, contentPosition);\n\tconst normConstrain = normalizeConstrain(\n\t\tconstrain,\n\t\ttargetDimensions,\n\t\tcontentDimensions,\n\t);\n\n\tconst constrainedContentDimensions = applyConstrain(\n\t\tnormConstrain,\n\t\tcontentDimensions,\n\t);\n\n\tconst paddedTargetDimensions = addOffsetPaddingToDimensions(\n\t\ttargetDimensions,\n\t\tnormOffset,\n\t);\n\n\tconst nextContentAreaDimensions = calculateContentAreaDimensions(\n\t\tpaddedTargetDimensions,\n\t\tconstrainedContentDimensions,\n\t\tcontentAreaDimensions,\n\t\tcontainerDimensions,\n\t\ttargetPosition,\n\t\tcontentPosition,\n\t);\n\n\t// updated content dimensions and overlap is only used to determine how much\n\t// of the content is actually going to be visible. We'll compare these values\n\t// when determining the best fit. These values are not necessary to calculate\n\t// the final CSS for the content element.\n\n\tconst nextContentDimensions = calculateContentDimensions(\n\t\tconstrainedContentDimensions,\n\t\tnextContentAreaDimensions,\n\t\tcontentPosition,\n\t);\n\n\tconst {visibleContentDimensions, overlapRatios} = calculateOverlap(\n\t\tnextContentDimensions,\n\t\tnextContentAreaDimensions,\n\t\tviewportDimensions,\n\t);\n\n\tconst contentAreaStyles = calculateContentAreaStyles(\n\t\tcontentAreaDimensions,\n\t\tnextContentAreaDimensions,\n\t);\n\tconst contentStyles = calculateContentStyles(contentPosition, normConstrain);\n\n\treturn {\n\t\tstyle: {\n\t\t\tcontentArea: contentAreaStyles,\n\t\t\tcontent: contentStyles,\n\t\t},\n\t\tdimensions: {\n\t\t\ttarget: targetDimensions,\n\t\t\tcontent: visibleContentDimensions,\n\t\t\tcontentArea: nextContentAreaDimensions,\n\t\t\tcontainer: containerDimensions,\n\t\t},\n\t\toverlapRatios,\n\t\ttargetPosition,\n\t\tcontentPosition,\n\t};\n}\n","import {getDimensions, cacheDimensions} from './dimensions';\nimport calculateFit from './calculate-fit';\n\nexport function sortCandidates(a, b) {\n\tconst viewportOverlapDifference =\n\t\tb.overlapRatios.viewport - a.overlapRatios.viewport;\n\n\t// first priority is to pick the position that fits the most content within\n\t// the viewport: we want the content to be immediately visible. If multiple\n\t// positions can fit the same amount of content in the viewport, then as a\n\t// tie-breaker we'll use the position that fits more within the container (to\n\t// minimize how much scrolling of the content is necessary).\n\tif (viewportOverlapDifference === 0) {\n\t\tconst containerOverlapDifference =\n\t\t\tb.overlapRatios.container - a.overlapRatios.container;\n\n\t\treturn containerOverlapDifference;\n\t}\n\n\treturn viewportOverlapDifference;\n}\n\n/**\n * Calculates the fit styles for the content with only one possible position.\n * @param {HTMLElement} target - Reference to element the content is positioned beside\n * @param {HTMLElement} content - Reference to positioned element\n * @param {HTMLElement} [container=window] - Reference to element content should fit within\n * @param {string[][]} - Desired position of content relative to target, e.g. [[\"top\", \"start\"], [\"bottom\", \"end\"]]\n * @param {number} [offset=0] - Amount to offset content from the target\n * @param {{height: number, width: number, minHeight: number, maxHeight: number, minWidth: number, maxWidth: number}} constrain - Constrains or sets the size of the content\n * @return {FitInfo}\n */\nexport function getFitInfo({\n\ttarget,\n\tcontent,\n\tcontentArea,\n\tcontainer = window,\n\tviewport = window,\n\tposition,\n\toffset = 0,\n\tconstrain = {},\n}) {\n\tconst targetDimensions = getDimensions(target);\n\tconst contentDimensions = getDimensions(content);\n\tconst containerDimensions = getDimensions(container);\n\tconst contentAreaDimensions = getDimensions(contentArea);\n\tconst viewportDimensions = getDimensions(viewport);\n\tconst [targetPosition, contentPosition] = position;\n\treturn calculateFit(\n\t\ttargetDimensions,\n\t\tcontentDimensions,\n\t\tcontentAreaDimensions,\n\t\tcontainerDimensions,\n\t\tviewportDimensions,\n\t\ttargetPosition,\n\t\tcontentPosition,\n\t\toffset,\n\t\tconstrain,\n\t);\n}\n\n/**\n * Calculates the best fit styles for the content based on multiple possible\n * positions. Returns the fit info for the first position that completely fits.\n * If no position completely fits, returns the position that fits the most.\n * @param {HTMLElement} target - Reference to element the content is positioned beside\n * @param {HTMLElement} content - Reference to positioned element\n * @param {HTMLElement} [container=window] - Reference to element content should fit within\n * @param {string[][][]}- Desired positions of content relative to target in order of preferences, e.g. [[[\"bottom\", \"start\"],[\"top\", \"start\"]], [[\"top\", \"start\"], [\"bottom\", \"start\"]]]\n * @param {number} [offset=0] - Amount to offset content from the target\n * @param {{height: number, width: number, minHeight: number, maxHeight: number, minWidth: number, maxWidth: number}} constrain - Constrains or sets the size of the content\n * @return {FitInfo}\n */\nexport function getBestFitInfo({\n\ttarget,\n\tcontent,\n\tcontentArea,\n\tcontainer = window,\n\tviewport = window,\n\tpositions,\n\toffset = 0,\n\tconstrain = {},\n}) {\n\tconst targetDimensions = cacheDimensions(getDimensions(target));\n\tconst contentDimensions = cacheDimensions(getDimensions(content));\n\tconst contentAreaDimensions = cacheDimensions(getDimensions(contentArea));\n\tconst containerDimensions = cacheDimensions(getDimensions(container));\n\tconst viewportDimensions = cacheDimensions(getDimensions(viewport));\n\tconst candidates = [];\n\tfor (const pos of positions) {\n\t\tconst info = getFitInfo({\n\t\t\ttarget: targetDimensions,\n\t\t\tcontent: contentDimensions,\n\t\t\tcontainer: containerDimensions,\n\t\t\tcontentArea: contentAreaDimensions,\n\t\t\tviewport: viewportDimensions,\n\t\t\tposition: pos,\n\t\t\toffset,\n\t\t\tconstrain,\n\t\t});\n\n\t\t// Entire content fits in this position, no need to try other options\n\t\tif (\n\t\t\tinfo.overlapRatios.container === 1 &&\n\t\t\tinfo.overlapRatios.viewport === 1\n\t\t) {\n\t\t\treturn info;\n\t\t}\n\n\t\tcandidates.push(info);\n\t}\n\n\t/* Sort to find highest visible ratio, aka the one that fits the most content */\n\tcandidates.sort(sortCandidates);\n\n\treturn candidates[0];\n}\n","const normalizeOrigin = (origin, dir) =>\n\torigin\n\t\t.replace(/-(start|end|left|right)$/, (match, group) => {\n\t\t\tconst isStart = group === 'start' || group === 'left';\n\n\t\t\tif (dir === 'rtl') {\n\t\t\t\treturn isStart ? '-end' : '-start';\n\t\t\t}\n\n\t\t\treturn isStart ? '-start' : '-end';\n\t\t})\n\t\t.split('-');\n\nconst toMatchingOrigin = ([vertical, horizontal]) => {\n\t// If vertical is center, flip the horizontal position\n\tif (vertical === 'center') {\n\t\treturn horizontal === 'start' ? ['center', 'end'] : ['center', 'start'];\n\t}\n\t// Otherwise flip the vertical position\n\treturn vertical === 'top' ? ['bottom', horizontal] : ['top', horizontal];\n};\n\nconst RE_POSITION_LONG =\n\t/^(top|bottom|center)-(left|right|start|end|center) (top|bottom|center)-(left|right|start|end|center)$/;\nconst RE_POSITION_SHORT = /^(top|bottom|center)-(left|right|start|end|center)$/;\n\n/**\n * Normalizes a position based on the following rules:\n * - if a position shorthand is provided, expands it to the full position (e.g. \"bottom-start\" > \"bottom-start top-start\")\n * - normalizes direction-specific inline properties to logical properties (e.g. \"bottom-right top-left\" > \"bottom-end top-start\")\n * - splits the normalized position into two arrays of origins (e.g. \"bottom-end top-start\" > [[\"bottom\", \"end\"], [\"top\", \"start\"]])\n * @param {string} position - Shorthand position (\"bottom-start\") or full position (\"bottom-right top-left\")\n * @return {Array<Origin[]>}\n */\nexport default function normalizePosition(position, dir) {\n\tif (RE_POSITION_LONG.test(position)) {\n\t\tconst [targetOrigin, contentOrigin] = position.split(' ');\n\t\treturn [\n\t\t\tnormalizeOrigin(targetOrigin, dir),\n\t\t\tnormalizeOrigin(contentOrigin, dir),\n\t\t];\n\t}\n\tif (RE_POSITION_SHORT.test(position)) {\n\t\tconst targetOrigin = normalizeOrigin(position, dir);\n\t\tconst contentOrigin = toMatchingOrigin(targetOrigin);\n\t\treturn [targetOrigin, contentOrigin];\n\t}\n\tthrow new Error(`${position} is not a valid position`);\n}\n","import isEmpty from 'lodash/isEmpty';\nimport isString from 'lodash/isString';\nimport isNumber from 'lodash/isNumber';\nimport isArray from 'lodash/isArray';\nimport mapValues from 'lodash/mapValues';\nimport normalizePosition from './fit/normalize-position';\n\nfunction positionToFitShorthand(position) {\n\tif (isString(position)) {\n\t\treturn position;\n\t}\n\n\tconst target = position.trigger || position.target;\n\tif (position.content) {\n\t\treturn `${target} ${position.content}`;\n\t}\n\n\treturn target;\n}\n\n/**\n * Popovers with tails default to centered positions.\n * Popovers without tails default to being aligned on some axis.\n */\nfunction resolvePosition(hideTail, positions, dir) {\n\t// Always prefer the positions provided by the consumer\n\tif (Array.isArray(positions) && !isEmpty(positions)) {\n\t\tpositions = positions.map(positionToFitShorthand);\n\t} else {\n\t\tpositions = hideTail\n\t\t\t? [\n\t\t\t\t\t'bottom-start top-start',\n\t\t\t\t\t'bottom-end top-end',\n\n\t\t\t\t\t'top-start bottom-start',\n\t\t\t\t\t'top-end bottom-end',\n\n\t\t\t\t\t'top-end top-start',\n\t\t\t\t\t'bottom-end bottom-start',\n\n\t\t\t\t\t'top-start top-end',\n\t\t\t\t\t'bottom-start bottom-end',\n\t\t\t\t]\n\t\t\t: [\n\t\t\t\t\t'top-center bottom-center',\n\t\t\t\t\t'bottom-center top-center',\n\t\t\t\t\t'center-end center-start',\n\t\t\t\t\t'center-start center-end',\n\t\t\t\t];\n\t}\n\n\treturn positions.map((position) => normalizePosition(position, dir));\n}\n\nfunction resolveOffset(hideTail, offset) {\n\tif (isNumber(offset) || isArray(offset)) {\n\t\treturn offset;\n\t}\n\treturn hideTail ? 0 : 12;\n}\n\nfunction resolveConstrain(constrain) {\n\treturn mapValues(constrain, (value) =>\n\t\tvalue === 'trigger' ? 'target' : value,\n\t);\n}\n\n/**\n * Compute properties that are important for fit, based on both the properties\n * that are passed in to the component and sane defaults which are different\n * whether or not we're rendering a tail.\n */\nexport function resolveFitProperties({\n\thideTail,\n\tpositions,\n\tconstrain,\n\toffset,\n\tdir,\n}) {\n\treturn {\n\t\tpositions: resolvePosition(hideTail, positions, dir),\n\t\toffset: resolveOffset(hideTail, offset),\n\t\tconstrain: resolveConstrain(constrain),\n\t};\n}\n","export const ariaLivePoliteness = {POLITE: 'polite', ASSERTIVE: 'assertive'};\n","import {getEmbeddableBaseUrl} from '@servicenow/ui-config';\n\n/**\n * Given a URL, determines if the URL is relative or absolute.\n * If relative, uses the Seismic Config object to fetch the base URL and prepend it.\n * @param {string} url\n * @returns {string}\n */\nexport const toEmbeddableUrl = (url) => {\n\tif (url.indexOf('://') > 0 || url.indexOf('//') === 0) {\n\t\treturn url;\n\t}\n\tlet baseUrl = getEmbeddableBaseUrl();\n\tif (!baseUrl) {\n\t\treturn url;\n\t}\n\t// Try to avoid `//` problems\n\tif (url.indexOf('/') === 0) {\n\t\turl = url.substring(1);\n\t}\n\tif (baseUrl.lastIndexOf('/') === baseUrl.length - 1) {\n\t\tbaseUrl = baseUrl.substring(0, baseUrl.length - 1);\n\t}\n\treturn `${baseUrl}/${url}`;\n};\n","/**\n * The MIT License (MIT)\n * Copyright (c) 2015 Jonathan Ong me@jongleberry.com\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n * https://github.com/component/textarea-caret-position/blob/master/index.js\n */\n\n// We'll copy the properties below into the mirror div.\n// Note that some browsers, such as Firefox, do not concatenate properties\n// into their shorthand (e.g. padding-top, padding-bottom etc. -> padding),\n// so we have to list every single property explicitly.\nvar properties = [\n\t'direction', // RTL support\n\t'boxSizing',\n\t'width', // on Chrome and IE, exclude the scrollbar, so the mirror div wraps exactly as the textarea does\n\t'height',\n\t'overflowX',\n\t'overflowY', // copy the scrollbar for IE\n\n\t'borderTopWidth',\n\t'borderRightWidth',\n\t'borderBottomWidth',\n\t'borderLeftWidth',\n\t'borderStyle',\n\n\t'paddingTop',\n\t'paddingRight',\n\t'paddingBottom',\n\t'paddingLeft',\n\n\t// https://developer.mozilla.org/en-US/docs/Web/CSS/font\n\t'fontStyle',\n\t'fontVariant',\n\t'fontWeight',\n\t'fontStretch',\n\t'fontSize',\n\t'fontSizeAdjust',\n\t'lineHeight',\n\t'fontFamily',\n\n\t'textAlign',\n\t'textTransform',\n\t'textIndent',\n\t'textDecoration', // might not make a difference, but better be safe\n\n\t'letterSpacing',\n\t'wordSpacing',\n\n\t'tabSize',\n\t'MozTabSize',\n];\n\nvar isBrowser = typeof window !== 'undefined';\n// var isFirefox = isBrowser && window.mozInnerScreenX != null;\n\nexport const getCaretCoordinates = (\n\telement,\n\tposition,\n\toptions,\n\tevent,\n\tprevCaretPos,\n) => {\n\tif (!isBrowser) {\n\t\tthrow new Error(\n\t\t\t'textarea-caret-position#getCaretCoordinates should only be called in a browser',\n\t\t);\n\t}\n\n\tvar debug = (options && options.debug) || false;\n\tif (debug) {\n\t\tvar el = document.querySelector(\n\t\t\t'#input-textarea-caret-position-mirror-div',\n\t\t);\n\t\tif (el) el.parentNode.removeChild(el);\n\t}\n\n\t// The mirror div will replicate the textarea's style\n\tvar div = document.createElement('div');\n\tdiv.id = 'input-textarea-caret-position-mirror-div';\n\tdocument.body.appendChild(div);\n\n\tvar style = div.style;\n\tvar computed = window.getComputedStyle\n\t\t? window.getComputedStyle(element)\n\t\t: element.currentStyle; // currentStyle for IE < 9\n\tvar isInput = element.nodeName === 'INPUT';\n\n\t// Default textarea styles\n\tstyle.whiteSpace = 'pre-wrap';\n\tif (!isInput) style.wordWrap = 'break-word'; // only for textarea-s\n\tif (isInput) style.whiteSpace = 'nowrap'; // only for inputs\n\n\t// Position off-screen\n\tstyle.position = 'absolute'; // required to return coordinates properly\n\tif (!debug) style.visibility = 'hidden'; // not 'display: none' because we want rendering\n\n\t// Transfer the element's properties to the div\n\tproperties.forEach(function (prop) {\n\t\tif (isInput && prop === 'lineHeight') {\n\t\t\t// Special case for <input>s because text is rendered centered and line height may be != height\n\t\t\tif (computed.boxSizing === 'border-box') {\n\t\t\t\tvar height = parseInt(computed.height);\n\t\t\t\tvar outerHeight =\n\t\t\t\t\tparseInt(computed.paddingTop) +\n\t\t\t\t\tparseInt(computed.paddingBottom) +\n\t\t\t\t\tparseInt(computed.borderTopWidth) +\n\t\t\t\t\tparseInt(computed.borderBottomWidth);\n\t\t\t\tvar targetHeight = outerHeight + parseInt(computed.lineHeight);\n\t\t\t\tif (height > targetHeight) {\n\t\t\t\t\tstyle.lineHeight = height - outerHeight + 'px';\n\t\t\t\t} else if (height === targetHeight) {\n\t\t\t\t\tstyle.lineHeight = computed.lineHeight;\n\t\t\t\t} else {\n\t\t\t\t\tstyle.lineHeight = 0;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstyle.lineHeight = computed.height;\n\t\t\t}\n\t\t} else {\n\t\t\tstyle[prop] = computed[prop];\n\t\t}\n\t});\n\n\tstyle.overflow = computed.overflow;\n\tdiv.dir = 'ltr';\n\tdiv.textContent = element.value.substring(0, position);\n\t// The second special handling for input type=\"text\" vs textarea:\n\t// spaces need to be replaced with non-breaking spaces - http://stackoverflow.com/a/13402035/1269037\n\t// TODO: there's still a bug here, the positioning gets off if contents contain newlines [Randy]\n\tif (isInput) div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n\n\tvar span = document.createElement('span');\n\t// Wrapping must be replicated *exactly*, including when a long word gets\n\t// onto the next line, with whitespace at the end of the line before (#7).\n\t// The  *only* reliable way to do that is to copy the *entire* rest of the\n\t// textarea's content into the <span> created at the caret position.\n\t// For inputs, just '.' would be enough, but no need to bother.\n\tspan.textContent = element.value.substring(position) || '.'; // || because a completely empty faux span doesn't render at all\n\tlet coordinates;\n\tif (document.dir !== 'rtl') {\n\t\tdiv.appendChild(span);\n\t\tcoordinates = {\n\t\t\ttop: span.offsetTop + parseInt(computed['borderTopWidth']),\n\t\t\tinline: span.offsetLeft + parseInt(computed['borderLeftWidth']),\n\t\t\theight: parseInt(computed['lineHeight']),\n\t\t};\n\t\tif (\n\t\t\tevent &&\n\t\t\tevent.type === 'mouseup' &&\n\t\t\telement.value.charAt(position - 1) === ' '\n\t\t) {\n\t\t\tconst mouseX = event.clientX - element.getBoundingClientRect().x;\n\t\t\tif (\n\t\t\t\tmouseX - coordinates.inline >\n\t\t\t\telement.getBoundingClientRect().width - mouseX\n\t\t\t) {\n\t\t\t\tspan.textContent = element.value.substring(position - 1) || '.';\n\t\t\t\tlet updatedCoords = {\n\t\t\t\t\ttop: span.offsetTop + parseInt(computed['borderTopWidth']),\n\t\t\t\t\tinline: span.offsetLeft + parseInt(computed['borderLeftWidth']),\n\t\t\t\t\theight: parseInt(computed['lineHeight']),\n\t\t\t\t};\n\t\t\t\treturn updatedCoords;\n\t\t\t}\n\t\t} else if (\n\t\t\tevent &&\n\t\t\tevent.type === 'keyup' &&\n\t\t\t(event.key === 'ArrowDown' || event.key === 'ArrowUp') &&\n\t\t\tprevCaretPos &&\n\t\t\telement.value.charAt(position - 1) === ' '\n\t\t) {\n\t\t\tspan.textContent = element.value.substring(position - 1) || '.';\n\t\t\tlet updatedCoords = {\n\t\t\t\ttop: span.offsetTop + parseInt(computed['borderTopWidth']),\n\t\t\t\tinline: span.offsetLeft + parseInt(computed['borderLeftWidth']),\n\t\t\t\theight: parseInt(computed['lineHeight']),\n\t\t\t};\n\t\t\tconst inlineDiff = Math.abs(prevCaretPos.inline - coordinates.inline);\n\t\t\tconst updateDiff = Math.abs(prevCaretPos.inline - updatedCoords.inline);\n\t\t\tif (inlineDiff === 0) {\n\t\t\t\t//at the start of the line\n\t\t\t\treturn coordinates;\n\t\t\t} else if (updateDiff < inlineDiff) {\n\t\t\t\treturn updatedCoords; //avoid going back to the start of the line\n\t\t\t} else {\n\t\t\t\treturn coordinates;\n\t\t\t}\n\t\t} else if (\n\t\t\tevent &&\n\t\t\tevent.type === 'keyup' &&\n\t\t\tevent.key === 'Meta' &&\n\t\t\telement.value.charAt(position - 1) === ' ' &&\n\t\t\tprevCaretPos\n\t\t) {\n\t\t\tspan.textContent = element.value.substring(position - 1) || '.';\n\t\t\tlet updatedCoords = {\n\t\t\t\ttop: span.offsetTop + parseInt(computed['borderTopWidth']),\n\t\t\t\tinline: span.offsetLeft + parseInt(computed['borderLeftWidth']),\n\t\t\t\theight: parseInt(computed['lineHeight']),\n\t\t\t};\n\t\t\tif (updatedCoords.top !== prevCaretPos.top) {\n\t\t\t\treturn coordinates;\n\t\t\t} else {\n\t\t\t\treturn updatedCoords;\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// RTL wasn't working correctly for Chrome and Safari, so going with a different approach from\n\t\t// https://phuoc.ng/collection/mirror-a-text-area/calculate-the-coordinates-of-the-current-cursor-in-a-text-area/\n\t\t// The setup is mostly the same, but we use a span with a non-breaking space to simulate the caret and then use getBoundingClientRect\n\t\t// to get the coordinates for the inline position\n\t\tlet caretEl = document.createElement('span');\n\t\tcaretEl.innerHTML = '&nbsp;';\n\t\tdiv.appendChild(caretEl);\n\t\tdiv.appendChild(span);\n\t\tcoordinates = {\n\t\t\ttop: span.offsetTop + parseInt(computed['borderTopWidth']),\n\t\t\tinline: parseInt(\n\t\t\t\tdiv.getBoundingClientRect().width -\n\t\t\t\t\t(caretEl.getBoundingClientRect().x - div.getBoundingClientRect().x),\n\t\t\t),\n\t\t\theight: parseInt(computed['lineHeight']),\n\t\t};\n\t\tif (\n\t\t\tevent &&\n\t\t\tevent.type === 'keyup' &&\n\t\t\t(event.key === 'Meta' ||\n\t\t\t\tevent.key === 'ArrowUp' ||\n\t\t\t\tevent.key === 'ArrowDown') &&\n\t\t\telement.value.charCodeAt(position - 1) === 32 &&\n\t\t\tprevCaretPos\n\t\t) {\n\t\t\tdiv.removeChild(span);\n\t\t\tdiv.removeChild(caretEl);\n\t\t\tspan = document.createElement('span');\n\t\t\tspan.textContent = element.value.substring(position - 1) || '.';\n\t\t\tdiv.appendChild(span);\n\t\t\tlet updatedCoords = {\n\t\t\t\ttop: span.offsetTop + parseInt(computed['borderTopWidth']),\n\t\t\t\tinline:\n\t\t\t\t\tMath.abs(span.offsetLeft - span.offsetParent.offsetWidth) +\n\t\t\t\t\tparseInt(computed['borderRightWidth']),\n\t\t\t\theight: parseInt(computed['lineHeight']),\n\t\t\t};\n\n\t\t\tif (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n\t\t\t\tif (\n\t\t\t\t\tupdatedCoords.top !== prevCaretPos.top &&\n\t\t\t\t\tupdatedCoords.inline > coordinates.inline\n\t\t\t\t) {\n\t\t\t\t\treturn updatedCoords;\n\t\t\t\t} else {\n\t\t\t\t\treturn coordinates;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (updatedCoords.top !== prevCaretPos.top) {\n\t\t\t\treturn coordinates;\n\t\t\t} else {\n\t\t\t\treturn updatedCoords;\n\t\t\t}\n\t\t}\n\t}\n\tif (debug) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.log(coordinates);\n\t\tspan.style.backgroundColor = '#aaa';\n\t} else {\n\t\tdocument.body.removeChild(div);\n\t}\n\n\treturn coordinates;\n};\n","\"use strict\";\n\nimport format from 'string-template';\n\nconst SN_TRANSLATE = 'sn-translate';\nconst TRANSLATIONS = '__TRANSLATIONS__';\nconst TRANSLATIONS_PREFIX = '__TECTONIC_TRANSLATIONS_PREFIX__';\nconst TRANSLATIONS_STORE = '__TECTONIC_TRANSLATIONS__';\nconst STATIC_TRANSLATIONS = window && window[TRANSLATIONS] || (window[TRANSLATIONS] = {});\nconst DEFAULT_TRANSLATIONS = Object.assign({}, STATIC_TRANSLATIONS);\n\nif (!window[TRANSLATIONS_STORE])\n\twindow[TRANSLATIONS_STORE] = DEFAULT_TRANSLATIONS;\n\nfunction attachToWindow () {\n\tconst translationProperties = Reflect.getOwnPropertyDescriptor(window, TRANSLATIONS);\n\tif (translationProperties.configurable) {\n\t\tObject.defineProperty(window, TRANSLATIONS, {\n\t\t\tconfigurable: false,\n\t\t\tget() {\n\t\t\t\treturn Object.assign({}, window[TRANSLATIONS_STORE]);\n\t\t\t},\n\t\t\tset(value) {\n\t\t\t\tif (!window[TRANSLATIONS_STORE])\n\t\t\t\t\twindow[TRANSLATIONS_STORE] = Object.assign({}, STATIC_TRANSLATIONS);\n\n\t\t\t\tappendTranslations(value);\n\t\t\t}\n\t\t})\n\t} else {\n\t\tconsole.warn(`[${SN_TRANSLATE}] If you're seeing this message, it probably means that you've loaded two copies of ${SN_TRANSLATE} on the page. At this time, only a single copy of ${SN_TRANSLATE} can be loaded at a time.`);\n\t}\n}\n\nfunction getPrefix() {\n\tif (!window)\n\t\treturn '';\n\n\tif (window[TRANSLATIONS_PREFIX])\n\t\treturn window[TRANSLATIONS_PREFIX];\n\n\tconst enabled = window.__TRANSLATIONS_PREFIX_ENABLED__;\n\tconst prefixName = window.__TRANSLATIONS_PREFIX__ || 'SNT';\n\twindow.__TRANSLATIONS_PREFIX_ENABLED__ = void 0;\n\twindow.__TRANSLATIONS_PREFIX__ = void 0;\n\twindow[TRANSLATIONS_PREFIX] = enabled ? `${prefixName}:` : '';\n\n\treturn window[TRANSLATIONS_PREFIX];\n}\n\nexport function appendTranslations(translations) {\n\tfor (const k in translations)\n\t\twindow[TRANSLATIONS_STORE][k] = translations[k];\n}\n\n\n/**\n * the first parameter of t can be a string or an object of the format:\n * {code: 'code', message: 'Hello!', comment: 'used by translators, ignored by t'}\n * t can transform ordered parameters or named parameters: 'User Status: {0} or 'User Status: {firstName}'\n * @param {*} val \n * @param  {...any} rest \n */\nexport function t(val, ...rest) {\n\tif (!window[TRANSLATIONS_STORE])\n\t\twindow[TRANSLATIONS_STORE] = DEFAULT_TRANSLATIONS;\n \n\tconst translations = window[TRANSLATIONS_STORE];\n\tconst prefix = getPrefix();    \n\n\tlet key = val;\n\tlet codeKey;\n\n\t//check for possible new format of translations\n\tif(val && typeof val === 'object' && val.message) {\n\t\tkey = val.message;\n\t\tif(val.code)\n\t\t\tcodeKey = `${val.code}:${val.message}`;\n\t}\n\n\tconst translation = translations[codeKey] || translations[key] || key; \t//requirements order of precedence\n\treturn format(`${prefix}${translation}`, ...rest);\n}\n\nexport function hasTranslation(str) {\n\treturn window[TRANSLATIONS_STORE].hasOwnProperty(str)\n}\n\nattachToWindow();\n","import {t} from 'sn-translate';\n\nexport const getFieldType = (type) => {\n\tif (type === 'ip') return 'IP';\n\tif (type !== 'text') {\n\t\treturn type?.charAt(0).toUpperCase() + type?.slice(1);\n\t}\n\treturn 'Field';\n};\n\nconst getMessage = (fieldType, error) => {\n\tconst content = t(\n\t\t{\n\t\t\tcode: 'now-field-error-message',\n\t\t\tmessage: '{fieldType} is {error}',\n\t\t\tcomment: 'Describes the error message',\n\t\t},\n\t\t{fieldType, error},\n\t);\n\treturn {\n\t\tstatus: 'critical',\n\t\ticon: 'exclamation-circle-outline',\n\t\tcontent,\n\t};\n};\n\nexport const removeMessages = (messages, fieldType) => {\n\tconst errors = ['required', 'invalid'];\n\tlet message = '';\n\terrors.forEach((error) => {\n\t\tmessage = getMessage(fieldType, error);\n\t\tmessages = messages?.filter((item) => item.content !== message.content);\n\t});\n\treturn messages;\n};\n\nconst addMessage = (messages, fieldType, required) => {\n\tconst error = required ? 'required' : 'invalid';\n\t// removing all except the messages added by the user before adding new message.\n\tif (messages?.length) {\n\t\tmessages = removeMessages(messages, fieldType, null);\n\t}\n\tlet message;\n\t// does not add messages if the any custom user message is present\n\tif (!messages?.length) {\n\t\tmessage = getMessage(fieldType, error);\n\t\tmessages = [{...message}, ...messages];\n\t}\n\treturn messages;\n};\n\nexport const handleErrorMessages = ({\n\tvalidity = null,\n\tadditionalValidation = true,\n\tupdateProperties,\n\ttype = 'text',\n\tvalue,\n}) => {\n\tupdateProperties(({properties}) => {\n\t\tlet {messages, manageInvalid, required} = properties;\n\n\t\tlet isValueMissing,\n\t\t\tvalid = additionalValidation;\n\t\tif (validity) {\n\t\t\tvalid = validity?.valid && additionalValidation;\n\t\t\tisValueMissing = validity?.valueMissing;\n\t\t} else {\n\t\t\tisValueMissing = required && !value?.length;\n\t\t}\n\t\tlet updatedMessages = null;\n\t\tif (!manageInvalid) {\n\t\t\tconst fieldType = getFieldType(type);\n\t\t\tif (!valid) {\n\t\t\t\tupdatedMessages = addMessage(messages, fieldType, isValueMissing);\n\t\t\t} else {\n\t\t\t\tif (messages?.length) {\n\t\t\t\t\tupdatedMessages = removeMessages(messages, fieldType);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\toperation: 'set',\n\t\t\tpath: 'messages',\n\t\t\tvalue: updatedMessages,\n\t\t\tshouldUpdate: Boolean(updatedMessages),\n\t\t};\n\t});\n};\n","/**\n * Converts a CSS duration string to a numeric value in milliseconds.\n * Handles both second-based (\"s\") and millisecond-based (\"ms\") duration strings.\n *\n * @param {string} duration - The CSS duration string to convert (e.g., \"0.5s\", \"200ms\")\n * @returns {number} The duration in milliseconds, or 0 if the format is invalid\n *\n * @example\n * getTransitionDurationAsNumber(\"0.5s\");  // Returns: 500\n *\n * @example\n * getTransitionDurationAsNumber(\"200ms\"); // Returns: 200\n *\n * @example\n * getTransitionDurationAsNumber(\"\");      // Returns: 0\n */\nfunction getTransitionDurationAsNumber(duration) {\n\t// The value will be a string like \"0.5s\" or \"200ms\".\n\tif (duration.includes('ms')) {\n\t\treturn parseFloat(duration);\n\t} else if (duration.includes('s')) {\n\t\treturn parseFloat(duration) * 1000;\n\t}\n\treturn 0; // Default to 0 if no transition duration is set\n}\n\n/**\n * Retrieves animation timing and duration values from an element's computed styles.\n * Reads CSS custom properties for duration and easing, converting the duration to milliseconds.\n *\n * @param {HTMLElement} elm - The DOM element to read computed styles from\n * @param {string} [durationName='--now-motion--duration'] - The CSS custom property name for duration\n * @param {string} [easingName='--now-motion--timing-function'] - The CSS custom property name for easing/timing function\n * @returns {{duration: number, easing: string}} Object containing duration in milliseconds and easing function\n *\n * @example\n * const element = document.querySelector('.my-element');\n * const {duration, easing} = getAnimationTimingAndDuration(element);\n * // Returns: { duration: 300, easing: 'ease-in-out' }\n *\n * @example\n * // Using custom property names\n * const {duration, easing} = getAnimationTimingAndDuration(\n *   element,\n *   '--custom-duration',\n *   '--custom-easing'\n * );\n */\nfunction getAnimationTimingAndDuration(\n\telm,\n\tdurationName = '--now-motion--duration',\n\teasingName = '--now-motion--timing-function',\n) {\n\tif (!elm) {\n\t\treturn {\n\t\t\tduration: 0,\n\t\t\teasing: 'linear',\n\t\t};\n\t}\n\n\tconst computedStyle = getComputedStyle(elm);\n\tconst duration = computedStyle.getPropertyValue(durationName);\n\tconst easing = computedStyle.getPropertyValue(easingName) || 'linear';\n\n\treturn {\n\t\tduration: getTransitionDurationAsNumber(duration),\n\t\teasing,\n\t};\n}\n\nexport {getTransitionDurationAsNumber, getAnimationTimingAndDuration};\n","export {isDirectionalKey, isNextKey, isPreviousKey} from './directional-keys';\nexport {extensionSplit} from './extension-split';\nexport {filterAriaAttributes} from './filter-aria-attributes';\nexport {findTabbableNodes, isFocusable} from './find-tabbable-nodes';\nexport {getActiveElement} from './get-active-element';\nexport {getShadowRootHost} from './get-shadow-root-host';\nexport {makeRedispatchEffect} from './make-redispatch-effect';\nexport {measureTextFactory} from './measure-text-factory';\nexport {textTransform} from './text-transform';\nexport {measureText} from './measure-text';\nexport {toArray} from './to-array';\nexport {matchSearchTerm} from './match-search-term';\nexport {default as layerEvents} from './layer-events';\nexport {domPurifyConfig} from './dom-purify-config';\n/**\n * DO NOT USE THESE FUNCTIONS.\n * `getBestFitInfo` and `resolveFitProperties` are for Horizon Design System use only.\n */\nimport {getBestFitInfo} from './fit/fit-info';\nimport {resolveFitProperties} from './resolve-fit-properties';\n\nexport const fit = {\n\tgetBestFitInfo,\n\tresolveFitProperties,\n};\n\nexport {ariaLivePoliteness} from './ariaLiveConstants';\nexport {isDesktopSafari} from './browser';\nexport {getColumnStyles} from './get-column-styles';\nexport {toEmbeddableUrl} from './to-embeddable-url';\nexport {getCaretCoordinates} from './get-caret-coordinates';\nexport {sanitizeHref} from './sanitize-href';\nexport {\n\thandleErrorMessages,\n\tremoveMessages,\n\tgetFieldType,\n} from './handle-error-messages';\nexport {\n\tgetTransitionDurationAsNumber,\n\tgetAnimationTimingAndDuration,\n} from './motion';\n","export default async function importIconSet(name) {\n\tswitch (name) {\n\t\tcase 'abc':\n\t\t\treturn await import('../icons/abc');\n\t\tcase 'accessibility':\n\t\t\treturn await import('../icons/accessibility');\n\t\tcase 'actionAiSparkle':\n\t\t\treturn await import('../icons/actionAiSparkle');\n\t\tcase 'action':\n\t\t\treturn await import('../icons/action');\n\t\tcase 'activity':\n\t\t\treturn await import('../icons/activity');\n\t\tcase 'addItemAbove':\n\t\t\treturn await import('../icons/addItemAbove');\n\t\tcase 'addItemBelow':\n\t\t\treturn await import('../icons/addItemBelow');\n\t\tcase 'addItemLeft':\n\t\t\treturn await import('../icons/addItemLeft');\n\t\tcase 'addItemRight':\n\t\t\treturn await import('../icons/addItemRight');\n\t\tcase 'addressBook':\n\t\t\treturn await import('../icons/addressBook');\n\t\tcase 'addressCard':\n\t\t\treturn await import('../icons/addressCard');\n\t\tcase 'agile':\n\t\t\treturn await import('../icons/agile');\n\t\tcase 'aiSparkle':\n\t\t\treturn await import('../icons/aiSparkle');\n\t\tcase 'alignCenter':\n\t\t\treturn await import('../icons/alignCenter');\n\t\tcase 'alignLeft':\n\t\t\treturn await import('../icons/alignLeft');\n\t\tcase 'alignRight':\n\t\t\treturn await import('../icons/alignRight');\n\t\tcase 'analyticsCenter':\n\t\t\treturn await import('../icons/analyticsCenter');\n\t\tcase 'anchor':\n\t\t\treturn await import('../icons/anchor');\n\t\tcase 'appsee':\n\t\t\treturn await import('../icons/appsee');\n\t\tcase 'arena':\n\t\t\treturn await import('../icons/arena');\n\t\tcase 'arrowClockwise':\n\t\t\treturn await import('../icons/arrowClockwise');\n\t\tcase 'arrowCounterclockwise':\n\t\t\treturn await import('../icons/arrowCounterclockwise');\n\t\tcase 'arrowDownDot':\n\t\t\treturn await import('../icons/arrowDownDot');\n\t\tcase 'arrowDown':\n\t\t\treturn await import('../icons/arrowDown');\n\t\tcase 'arrowDownLeft':\n\t\t\treturn await import('../icons/arrowDownLeft');\n\t\tcase 'arrowDownMost':\n\t\t\treturn await import('../icons/arrowDownMost');\n\t\tcase 'arrowDownRectangle':\n\t\t\treturn await import('../icons/arrowDownRectangle');\n\t\tcase 'arrowDownRight':\n\t\t\treturn await import('../icons/arrowDownRight');\n\t\tcase 'arrowEnter':\n\t\t\treturn await import('../icons/arrowEnter');\n\t\tcase 'arrowExitLeft':\n\t\t\treturn await import('../icons/arrowExitLeft');\n\t\tcase 'arrowExitRight':\n\t\t\treturn await import('../icons/arrowExitRight');\n\t\tcase 'arrowLeft':\n\t\t\treturn await import('../icons/arrowLeft');\n\t\tcase 'arrowLeftMost':\n\t\t\treturn await import('../icons/arrowLeftMost');\n\t\tcase 'arrowMove':\n\t\t\treturn await import('../icons/arrowMove');\n\t\tcase 'arrowReorder':\n\t\t\treturn await import('../icons/arrowReorder');\n\t\tcase 'arrowRight':\n\t\t\treturn await import('../icons/arrowRight');\n\t\tcase 'arrowRightLeft':\n\t\t\treturn await import('../icons/arrowRightLeft');\n\t\tcase 'arrowRightMost':\n\t\t\treturn await import('../icons/arrowRightMost');\n\t\tcase 'arrowThreeSplitLeft':\n\t\t\treturn await import('../icons/arrowThreeSplitLeft');\n\t\tcase 'arrowThreeSplitRight':\n\t\t\treturn await import('../icons/arrowThreeSplitRight');\n\t\tcase 'arrowUpDot':\n\t\t\treturn await import('../icons/arrowUpDot');\n\t\tcase 'arrowUpDown':\n\t\t\treturn await import('../icons/arrowUpDown');\n\t\tcase 'arrowUp':\n\t\t\treturn await import('../icons/arrowUp');\n\t\tcase 'arrowUpLeft':\n\t\t\treturn await import('../icons/arrowUpLeft');\n\t\tcase 'arrowUpMost':\n\t\t\treturn await import('../icons/arrowUpMost');\n\t\tcase 'arrowUpRight':\n\t\t\treturn await import('../icons/arrowUpRight');\n\t\tcase 'arrowsDecision':\n\t\t\treturn await import('../icons/arrowsDecision');\n\t\tcase 'arrowsDoubleLeft':\n\t\t\treturn await import('../icons/arrowsDoubleLeft');\n\t\tcase 'arrowsDoubleRight':\n\t\t\treturn await import('../icons/arrowsDoubleRight');\n\t\tcase 'asterisk':\n\t\t\treturn await import('../icons/asterisk');\n\t\tcase 'bag':\n\t\t\treturn await import('../icons/bag');\n\t\tcase 'ban':\n\t\t\treturn await import('../icons/ban');\n\t\tcase 'barcode':\n\t\t\treturn await import('../icons/barcode');\n\t\tcase 'beaker':\n\t\t\treturn await import('../icons/beaker');\n\t\tcase 'bell':\n\t\t\treturn await import('../icons/bell');\n\t\tcase 'bellSlash':\n\t\t\treturn await import('../icons/bellSlash');\n\t\tcase 'bind':\n\t\t\treturn await import('../icons/bind');\n\t\tcase 'binoculars':\n\t\t\treturn await import('../icons/binoculars');\n\t\tcase 'blocksMagicWand':\n\t\t\treturn await import('../icons/blocksMagicWand');\n\t\tcase 'boardFlexible':\n\t\t\treturn await import('../icons/boardFlexible');\n\t\tcase 'boardGuided':\n\t\t\treturn await import('../icons/boardGuided');\n\t\tcase 'book':\n\t\t\treturn await import('../icons/book');\n\t\tcase 'bookOpen':\n\t\t\treturn await import('../icons/bookOpen');\n\t\tcase 'bookmark':\n\t\t\treturn await import('../icons/bookmark');\n\t\tcase 'botAiSparkle':\n\t\t\treturn await import('../icons/botAiSparkle');\n\t\tcase 'bot':\n\t\t\treturn await import('../icons/bot');\n\t\tcase 'botSlash':\n\t\t\treturn await import('../icons/botSlash');\n\t\tcase 'box':\n\t\t\treturn await import('../icons/box');\n\t\tcase 'boxes':\n\t\t\treturn await import('../icons/boxes');\n\t\tcase 'bracketRound':\n\t\t\treturn await import('../icons/bracketRound');\n\t\tcase 'branchCompare':\n\t\t\treturn await import('../icons/branchCompare');\n\t\tcase 'branchFork':\n\t\t\treturn await import('../icons/branchFork');\n\t\tcase 'briefcase':\n\t\t\treturn await import('../icons/briefcase');\n\t\tcase 'broadcastTower':\n\t\t\treturn await import('../icons/broadcastTower');\n\t\tcase 'bug':\n\t\t\treturn await import('../icons/bug');\n\t\tcase 'bugSearch':\n\t\t\treturn await import('../icons/bugSearch');\n\t\tcase 'buildingFactory':\n\t\t\treturn await import('../icons/buildingFactory');\n\t\tcase 'buildingFeed':\n\t\t\treturn await import('../icons/buildingFeed');\n\t\tcase 'building':\n\t\t\treturn await import('../icons/building');\n\t\tcase 'buildingWarehouse':\n\t\t\treturn await import('../icons/buildingWarehouse');\n\t\tcase 'buildingWarehouseTruck':\n\t\t\treturn await import('../icons/buildingWarehouseTruck');\n\t\tcase 'bullseyeArrow':\n\t\t\treturn await import('../icons/bullseyeArrow');\n\t\tcase 'bundle':\n\t\t\treturn await import('../icons/bundle');\n\t\tcase 'calendarCheck':\n\t\t\treturn await import('../icons/calendarCheck');\n\t\tcase 'calendarClock':\n\t\t\treturn await import('../icons/calendarClock');\n\t\tcase 'calendarDaysClock':\n\t\t\treturn await import('../icons/calendarDaysClock');\n\t\tcase 'calendarDays':\n\t\t\treturn await import('../icons/calendarDays');\n\t\tcase 'calendarDaysSearch':\n\t\t\treturn await import('../icons/calendarDaysSearch');\n\t\tcase 'calendar':\n\t\t\treturn await import('../icons/calendar');\n\t\tcase 'calendarTriangleExclamation':\n\t\t\treturn await import('../icons/calendarTriangleExclamation');\n\t\tcase 'camera':\n\t\t\treturn await import('../icons/camera');\n\t\tcase 'cameraPlus':\n\t\t\treturn await import('../icons/cameraPlus');\n\t\tcase 'cameraTriangleExclamation':\n\t\t\treturn await import('../icons/cameraTriangleExclamation');\n\t\tcase 'caretDown':\n\t\t\treturn await import('../icons/caretDown');\n\t\tcase 'caretDownMultiple':\n\t\t\treturn await import('../icons/caretDownMultiple');\n\t\tcase 'caretLeft':\n\t\t\treturn await import('../icons/caretLeft');\n\t\tcase 'caretLeftMultiple':\n\t\t\treturn await import('../icons/caretLeftMultiple');\n\t\tcase 'caretRight':\n\t\t\treturn await import('../icons/caretRight');\n\t\tcase 'caretRightMultiple':\n\t\t\treturn await import('../icons/caretRightMultiple');\n\t\tcase 'caretUpDown':\n\t\t\treturn await import('../icons/caretUpDown');\n\t\tcase 'caretUp':\n\t\t\treturn await import('../icons/caretUp');\n\t\tcase 'catalogBuilder':\n\t\t\treturn await import('../icons/catalogBuilder');\n\t\tcase 'catalog':\n\t\t\treturn await import('../icons/catalog');\n\t\tcase 'catalogSlash':\n\t\t\treturn await import('../icons/catalogSlash');\n\t\tcase 'cd':\n\t\t\treturn await import('../icons/cd');\n\t\tcase 'cellphone':\n\t\t\treturn await import('../icons/cellphone');\n\t\tcase 'changeAiSparkle':\n\t\t\treturn await import('../icons/changeAiSparkle');\n\t\tcase 'change':\n\t\t\treturn await import('../icons/change');\n\t\tcase 'changePast':\n\t\t\treturn await import('../icons/changePast');\n\t\tcase 'changePlanned':\n\t\t\treturn await import('../icons/changePlanned');\n\t\tcase 'chartArea':\n\t\t\treturn await import('../icons/chartArea');\n\t\tcase 'chartBarColumn':\n\t\t\treturn await import('../icons/chartBarColumn');\n\t\tcase 'chartBarGroup':\n\t\t\treturn await import('../icons/chartBarGroup');\n\t\tcase 'chartBarHorizontal':\n\t\t\treturn await import('../icons/chartBarHorizontal');\n\t\tcase 'chartBarSearch':\n\t\t\treturn await import('../icons/chartBarSearch');\n\t\tcase 'chartBarVerticalCircleCheck':\n\t\t\treturn await import('../icons/chartBarVerticalCircleCheck');\n\t\tcase 'chartBarVertical':\n\t\t\treturn await import('../icons/chartBarVertical');\n\t\tcase 'chartBox':\n\t\t\treturn await import('../icons/chartBox');\n\t\tcase 'chartBubble':\n\t\t\treturn await import('../icons/chartBubble');\n\t\tcase 'chartBulletHorizontal':\n\t\t\treturn await import('../icons/chartBulletHorizontal');\n\t\tcase 'chartBulletVertical':\n\t\t\treturn await import('../icons/chartBulletVertical');\n\t\tcase 'chartColumnAndTotal':\n\t\t\treturn await import('../icons/chartColumnAndTotal');\n\t\tcase 'chartControl':\n\t\t\treturn await import('../icons/chartControl');\n\t\tcase 'chartDependency':\n\t\t\treturn await import('../icons/chartDependency');\n\t\tcase 'chartDial':\n\t\t\treturn await import('../icons/chartDial');\n\t\tcase 'chartDonut':\n\t\t\treturn await import('../icons/chartDonut');\n\t\tcase 'chartForecast':\n\t\t\treturn await import('../icons/chartForecast');\n\t\tcase 'chartFunnel':\n\t\t\treturn await import('../icons/chartFunnel');\n\t\tcase 'chartGeomap':\n\t\t\treturn await import('../icons/chartGeomap');\n\t\tcase 'chartHeatmap':\n\t\t\treturn await import('../icons/chartHeatmap');\n\t\tcase 'chartHistogram':\n\t\t\treturn await import('../icons/chartHistogram');\n\t\tcase 'chartLine':\n\t\t\treturn await import('../icons/chartLine');\n\t\tcase 'chartNavigator':\n\t\t\treturn await import('../icons/chartNavigator');\n\t\tcase 'chartPareto':\n\t\t\treturn await import('../icons/chartPareto');\n\t\tcase 'chartPie':\n\t\t\treturn await import('../icons/chartPie');\n\t\tcase 'chartPivotTable':\n\t\t\treturn await import('../icons/chartPivotTable');\n\t\tcase 'chartPyramid':\n\t\t\treturn await import('../icons/chartPyramid');\n\t\tcase 'chartRelativeCompare':\n\t\t\treturn await import('../icons/chartRelativeCompare');\n\t\tcase 'chartSankey':\n\t\t\treturn await import('../icons/chartSankey');\n\t\tcase 'chartSemiDonut':\n\t\t\treturn await import('../icons/chartSemiDonut');\n\t\tcase 'chartSpeedometer':\n\t\t\treturn await import('../icons/chartSpeedometer');\n\t\tcase 'chartSpider':\n\t\t\treturn await import('../icons/chartSpider');\n\t\tcase 'chartSpline':\n\t\t\treturn await import('../icons/chartSpline');\n\t\tcase 'chartStepline':\n\t\t\treturn await import('../icons/chartStepline');\n\t\tcase 'chartSunburst':\n\t\t\treturn await import('../icons/chartSunburst');\n\t\tcase 'chartText':\n\t\t\treturn await import('../icons/chartText');\n\t\tcase 'chartThreshold':\n\t\t\treturn await import('../icons/chartThreshold');\n\t\tcase 'chartTreemap':\n\t\t\treturn await import('../icons/chartTreemap');\n\t\tcase 'chartTrend':\n\t\t\treturn await import('../icons/chartTrend');\n\t\tcase 'chartWorkbench':\n\t\t\treturn await import('../icons/chartWorkbench');\n\t\tcase 'chatAiSparkle':\n\t\t\treturn await import('../icons/chatAiSparkle');\n\t\tcase 'chatCircleExclamation':\n\t\t\treturn await import('../icons/chatCircleExclamation');\n\t\tcase 'chat':\n\t\t\treturn await import('../icons/chat');\n\t\tcase 'chatHeart':\n\t\t\treturn await import('../icons/chatHeart');\n\t\tcase 'chatLock':\n\t\t\treturn await import('../icons/chatLock');\n\t\tcase 'chatTriangleExclamation':\n\t\t\treturn await import('../icons/chatTriangleExclamation');\n\t\tcase 'check':\n\t\t\treturn await import('../icons/check');\n\t\tcase 'checkStrong':\n\t\t\treturn await import('../icons/checkStrong');\n\t\tcase 'checkboxChecked':\n\t\t\treturn await import('../icons/checkboxChecked');\n\t\tcase 'checkboxIndeterminate':\n\t\t\treturn await import('../icons/checkboxIndeterminate');\n\t\tcase 'checkboxUnchecked':\n\t\t\treturn await import('../icons/checkboxUnchecked');\n\t\tcase 'checklist':\n\t\t\treturn await import('../icons/checklist');\n\t\tcase 'chevronDown':\n\t\t\treturn await import('../icons/chevronDown');\n\t\tcase 'chevronLeft':\n\t\t\treturn await import('../icons/chevronLeft');\n\t\tcase 'chevronRight':\n\t\t\treturn await import('../icons/chevronRight');\n\t\tcase 'chevronUp':\n\t\t\treturn await import('../icons/chevronUp');\n\t\tcase 'chip':\n\t\t\treturn await import('../icons/chip');\n\t\tcase 'circleArrowDown':\n\t\t\treturn await import('../icons/circleArrowDown');\n\t\tcase 'circleArrowLeft':\n\t\t\treturn await import('../icons/circleArrowLeft');\n\t\tcase 'circleArrowRight':\n\t\t\treturn await import('../icons/circleArrowRight');\n\t\tcase 'circleArrowUp':\n\t\t\treturn await import('../icons/circleArrowUp');\n\t\tcase 'circleBackward':\n\t\t\treturn await import('../icons/circleBackward');\n\t\tcase 'circleCaretDown':\n\t\t\treturn await import('../icons/circleCaretDown');\n\t\tcase 'circleCaretLeft':\n\t\t\treturn await import('../icons/circleCaretLeft');\n\t\tcase 'circleCaretRight':\n\t\t\treturn await import('../icons/circleCaretRight');\n\t\tcase 'circleCaretUp':\n\t\t\treturn await import('../icons/circleCaretUp');\n\t\tcase 'circleCheck':\n\t\t\treturn await import('../icons/circleCheck');\n\t\tcase 'circleChevronDown':\n\t\t\treturn await import('../icons/circleChevronDown');\n\t\tcase 'circleChevronLeft':\n\t\t\treturn await import('../icons/circleChevronLeft');\n\t\tcase 'circleChevronRight':\n\t\t\treturn await import('../icons/circleChevronRight');\n\t\tcase 'circleChevronUp':\n\t\t\treturn await import('../icons/circleChevronUp');\n\t\tcase 'circleClose':\n\t\t\treturn await import('../icons/circleClose');\n\t\tcase 'circleDashed':\n\t\t\treturn await import('../icons/circleDashed');\n\t\tcase 'circleDownload':\n\t\t\treturn await import('../icons/circleDownload');\n\t\tcase 'circleEllipsis':\n\t\t\treturn await import('../icons/circleEllipsis');\n\t\tcase 'circleExclamation':\n\t\t\treturn await import('../icons/circleExclamation');\n\t\tcase 'circle':\n\t\t\treturn await import('../icons/circle');\n\t\tcase 'circleFlagEvent':\n\t\t\treturn await import('../icons/circleFlagEvent');\n\t\tcase 'circleForward':\n\t\t\treturn await import('../icons/circleForward');\n\t\tcase 'circleHalf':\n\t\t\treturn await import('../icons/circleHalf');\n\t\tcase 'circleInfo':\n\t\t\treturn await import('../icons/circleInfo');\n\t\tcase 'circleLock':\n\t\t\treturn await import('../icons/circleLock');\n\t\tcase 'circleMinus':\n\t\t\treturn await import('../icons/circleMinus');\n\t\tcase 'circleMinusVertical':\n\t\t\treturn await import('../icons/circleMinusVertical');\n\t\tcase 'circleNext':\n\t\t\treturn await import('../icons/circleNext');\n\t\tcase 'circlePause':\n\t\t\treturn await import('../icons/circlePause');\n\t\tcase 'circlePencil':\n\t\t\treturn await import('../icons/circlePencil');\n\t\tcase 'circlePlay':\n\t\t\treturn await import('../icons/circlePlay');\n\t\tcase 'circlePlus':\n\t\t\treturn await import('../icons/circlePlus');\n\t\tcase 'circlePrevious':\n\t\t\treturn await import('../icons/circlePrevious');\n\t\tcase 'circleQuarter':\n\t\t\treturn await import('../icons/circleQuarter');\n\t\tcase 'circleQuestion':\n\t\t\treturn await import('../icons/circleQuestion');\n\t\tcase 'circleRecord':\n\t\t\treturn await import('../icons/circleRecord');\n\t\tcase 'circleSemiCheck':\n\t\t\treturn await import('../icons/circleSemiCheck');\n\t\tcase 'circleSemiPercentage':\n\t\t\treturn await import('../icons/circleSemiPercentage');\n\t\tcase 'circleShuffle':\n\t\t\treturn await import('../icons/circleShuffle');\n\t\tcase 'circleStop':\n\t\t\treturn await import('../icons/circleStop');\n\t\tcase 'circleThick':\n\t\t\treturn await import('../icons/circleThick');\n\t\tcase 'circleThreeQuarter':\n\t\t\treturn await import('../icons/circleThreeQuarter');\n\t\tcase 'circleUser':\n\t\t\treturn await import('../icons/circleUser');\n\t\tcase 'circleWorkflowSkip':\n\t\t\treturn await import('../icons/circleWorkflowSkip');\n\t\tcase 'clearCache':\n\t\t\treturn await import('../icons/clearCache');\n\t\tcase 'clipboardCheck':\n\t\t\treturn await import('../icons/clipboardCheck');\n\t\tcase 'clipboardCheckShield':\n\t\t\treturn await import('../icons/clipboardCheckShield');\n\t\tcase 'clipboardExclamation':\n\t\t\treturn await import('../icons/clipboardExclamation');\n\t\tcase 'clipboard':\n\t\t\treturn await import('../icons/clipboard');\n\t\tcase 'clipboardLines':\n\t\t\treturn await import('../icons/clipboardLines');\n\t\tcase 'clipboardSlash':\n\t\t\treturn await import('../icons/clipboardSlash');\n\t\tcase 'clipboardWithoutFormat':\n\t\t\treturn await import('../icons/clipboardWithoutFormat');\n\t\tcase 'clipboards':\n\t\t\treturn await import('../icons/clipboards');\n\t\tcase 'clock':\n\t\t\treturn await import('../icons/clock');\n\t\tcase 'cloneExclamation':\n\t\t\treturn await import('../icons/cloneExclamation');\n\t\tcase 'clone':\n\t\t\treturn await import('../icons/clone');\n\t\tcase 'close':\n\t\t\treturn await import('../icons/close');\n\t\tcase 'cloudArrowUp':\n\t\t\treturn await import('../icons/cloudArrowUp');\n\t\tcase 'cloudCheckmark':\n\t\t\treturn await import('../icons/cloudCheckmark');\n\t\tcase 'cloud':\n\t\t\treturn await import('../icons/cloud');\n\t\tcase 'cloudSlash':\n\t\t\treturn await import('../icons/cloudSlash');\n\t\tcase 'codeEdit':\n\t\t\treturn await import('../icons/codeEdit');\n\t\tcase 'code':\n\t\t\treturn await import('../icons/code');\n\t\tcase 'codeInventory':\n\t\t\treturn await import('../icons/codeInventory');\n\t\tcase 'codeSearch':\n\t\t\treturn await import('../icons/codeSearch');\n\t\tcase 'cohortAnalysis':\n\t\t\treturn await import('../icons/cohortAnalysis');\n\t\tcase 'collapse':\n\t\t\treturn await import('../icons/collapse');\n\t\tcase 'combine':\n\t\t\treturn await import('../icons/combine');\n\t\tcase 'command':\n\t\t\treturn await import('../icons/command');\n\t\tcase 'commentBlank':\n\t\t\treturn await import('../icons/commentBlank');\n\t\tcase 'commentEmojiSmile':\n\t\t\treturn await import('../icons/commentEmojiSmile');\n\t\tcase 'comment':\n\t\t\treturn await import('../icons/comment');\n\t\tcase 'commentPlus':\n\t\t\treturn await import('../icons/commentPlus');\n\t\tcase 'commentThumbsUp':\n\t\t\treturn await import('../icons/commentThumbsUp');\n\t\tcase 'compass':\n\t\t\treturn await import('../icons/compass');\n\t\tcase 'componentBundle':\n\t\t\treturn await import('../icons/componentBundle');\n\t\tcase 'component':\n\t\t\treturn await import('../icons/component');\n\t\tcase 'conferenceRoom':\n\t\t\treturn await import('../icons/conferenceRoom');\n\t\tcase 'configurationItem':\n\t\t\treturn await import('../icons/configurationItem');\n\t\tcase 'connectViewDocument':\n\t\t\treturn await import('../icons/connectViewDocument');\n\t\tcase 'console':\n\t\t\treturn await import('../icons/console');\n\t\tcase 'contractHistory':\n\t\t\treturn await import('../icons/contractHistory');\n\t\tcase 'crop':\n\t\t\treturn await import('../icons/crop');\n\t\tcase 'cube':\n\t\t\treturn await import('../icons/cube');\n\t\tcase 'curlyBracket':\n\t\t\treturn await import('../icons/curlyBracket');\n\t\tcase 'curlyBracketLeft':\n\t\t\treturn await import('../icons/curlyBracketLeft');\n\t\tcase 'curlyBracketPlus':\n\t\t\treturn await import('../icons/curlyBracketPlus');\n\t\tcase 'curlyBracketRight':\n\t\t\treturn await import('../icons/curlyBracketRight');\n\t\tcase 'currencyExchange':\n\t\t\treturn await import('../icons/currencyExchange');\n\t\tcase 'currency':\n\t\t\treturn await import('../icons/currency');\n\t\tcase 'cursorButton':\n\t\t\treturn await import('../icons/cursorButton');\n\t\tcase 'cursor':\n\t\t\treturn await import('../icons/cursor');\n\t\tcase 'cursorMove':\n\t\t\treturn await import('../icons/cursorMove');\n\t\tcase 'dashCirclePlay':\n\t\t\treturn await import('../icons/dashCirclePlay');\n\t\tcase 'dashGridBottomLeft':\n\t\t\treturn await import('../icons/dashGridBottomLeft');\n\t\tcase 'dashGridBottomRight':\n\t\t\treturn await import('../icons/dashGridBottomRight');\n\t\tcase 'dashSquare':\n\t\t\treturn await import('../icons/dashSquare');\n\t\tcase 'dashboardDial':\n\t\t\treturn await import('../icons/dashboardDial');\n\t\tcase 'databaseArrowDown':\n\t\t\treturn await import('../icons/databaseArrowDown');\n\t\tcase 'databaseArrowUp':\n\t\t\treturn await import('../icons/databaseArrowUp');\n\t\tcase 'databaseBook':\n\t\t\treturn await import('../icons/databaseBook');\n\t\tcase 'databaseComponent':\n\t\t\treturn await import('../icons/databaseComponent');\n\t\tcase 'databaseDiamond':\n\t\t\treturn await import('../icons/databaseDiamond');\n\t\tcase 'databaseError':\n\t\t\treturn await import('../icons/databaseError');\n\t\tcase 'database':\n\t\t\treturn await import('../icons/database');\n\t\tcase 'databaseFlagEvent':\n\t\t\treturn await import('../icons/databaseFlagEvent');\n\t\tcase 'databaseSearch':\n\t\t\treturn await import('../icons/databaseSearch');\n\t\tcase 'decimal':\n\t\t\treturn await import('../icons/decimal');\n\t\tcase 'deleteColumn':\n\t\t\treturn await import('../icons/deleteColumn');\n\t\tcase 'deleteRow':\n\t\t\treturn await import('../icons/deleteRow');\n\t\tcase 'desk':\n\t\t\treturn await import('../icons/desk');\n\t\tcase 'diamondExclamation':\n\t\t\treturn await import('../icons/diamondExclamation');\n\t\tcase 'diamond':\n\t\t\treturn await import('../icons/diamond');\n\t\tcase 'directionArrowDown':\n\t\t\treturn await import('../icons/directionArrowDown');\n\t\tcase 'directionArrowLeftBottom':\n\t\t\treturn await import('../icons/directionArrowLeftBottom');\n\t\tcase 'directionArrowLeft':\n\t\t\treturn await import('../icons/directionArrowLeft');\n\t\tcase 'directionArrowRightBottom':\n\t\t\treturn await import('../icons/directionArrowRightBottom');\n\t\tcase 'directionArrowRight':\n\t\t\treturn await import('../icons/directionArrowRight');\n\t\tcase 'directionArrowSlightLeft':\n\t\t\treturn await import('../icons/directionArrowSlightLeft');\n\t\tcase 'directionArrowSlightRight':\n\t\t\treturn await import('../icons/directionArrowSlightRight');\n\t\tcase 'directionArrowUp':\n\t\t\treturn await import('../icons/directionArrowUp');\n\t\tcase 'dirtyIndicator':\n\t\t\treturn await import('../icons/dirtyIndicator');\n\t\tcase 'documentArchive':\n\t\t\treturn await import('../icons/documentArchive');\n\t\tcase 'documentAudio':\n\t\t\treturn await import('../icons/documentAudio');\n\t\tcase 'documentBlank':\n\t\t\treturn await import('../icons/documentBlank');\n\t\tcase 'documentBlankSlash':\n\t\t\treturn await import('../icons/documentBlankSlash');\n\t\tcase 'documentCertificate':\n\t\t\treturn await import('../icons/documentCertificate');\n\t\tcase 'documentChecklistSearch':\n\t\t\treturn await import('../icons/documentChecklistSearch');\n\t\tcase 'documentCode':\n\t\t\treturn await import('../icons/documentCode');\n\t\tcase 'documentExcel':\n\t\t\treturn await import('../icons/documentExcel');\n\t\tcase 'documentEye':\n\t\t\treturn await import('../icons/documentEye');\n\t\tcase 'document':\n\t\t\treturn await import('../icons/document');\n\t\tcase 'documentImage':\n\t\t\treturn await import('../icons/documentImage');\n\t\tcase 'documentInfected':\n\t\t\treturn await import('../icons/documentInfected');\n\t\tcase 'documentPdf':\n\t\t\treturn await import('../icons/documentPdf');\n\t\tcase 'documentPlus':\n\t\t\treturn await import('../icons/documentPlus');\n\t\tcase 'documentPowerpoint':\n\t\t\treturn await import('../icons/documentPowerpoint');\n\t\tcase 'documentPpt':\n\t\t\treturn await import('../icons/documentPpt');\n\t\tcase 'documentQuestionMark':\n\t\t\treturn await import('../icons/documentQuestionMark');\n\t\tcase 'documentSpeedometer':\n\t\t\treturn await import('../icons/documentSpeedometer');\n\t\tcase 'documentTemplateAiSparkle':\n\t\t\treturn await import('../icons/documentTemplateAiSparkle');\n\t\tcase 'documentTemplateArrowReply':\n\t\t\treturn await import('../icons/documentTemplateArrowReply');\n\t\tcase 'documentTemplateChat':\n\t\t\treturn await import('../icons/documentTemplateChat');\n\t\tcase 'documentTemplateEnvelope':\n\t\t\treturn await import('../icons/documentTemplateEnvelope');\n\t\tcase 'documentTemplate':\n\t\t\treturn await import('../icons/documentTemplate');\n\t\tcase 'documentTemplateLightning':\n\t\t\treturn await import('../icons/documentTemplateLightning');\n\t\tcase 'documentTxt':\n\t\t\treturn await import('../icons/documentTxt');\n\t\tcase 'documentVideo':\n\t\t\treturn await import('../icons/documentVideo');\n\t\tcase 'documentWorkflow':\n\t\t\treturn await import('../icons/documentWorkflow');\n\t\tcase 'documentXls':\n\t\t\treturn await import('../icons/documentXls');\n\t\tcase 'documents':\n\t\t\treturn await import('../icons/documents');\n\t\tcase 'documentsPencil':\n\t\t\treturn await import('../icons/documentsPencil');\n\t\tcase 'door':\n\t\t\treturn await import('../icons/door');\n\t\tcase 'doubleCheckmark':\n\t\t\treturn await import('../icons/doubleCheckmark');\n\t\tcase 'doubleChevronLeft':\n\t\t\treturn await import('../icons/doubleChevronLeft');\n\t\tcase 'doubleChevronRight':\n\t\t\treturn await import('../icons/doubleChevronRight');\n\t\tcase 'doubleSlashForward':\n\t\t\treturn await import('../icons/doubleSlashForward');\n\t\tcase 'downloadCode':\n\t\t\treturn await import('../icons/downloadCode');\n\t\tcase 'download':\n\t\t\treturn await import('../icons/download');\n\t\tcase 'downloadSlash':\n\t\t\treturn await import('../icons/downloadSlash');\n\t\tcase 'draft':\n\t\t\treturn await import('../icons/draft');\n\t\tcase 'dragDots':\n\t\t\treturn await import('../icons/dragDots');\n\t\tcase 'dragResize':\n\t\t\treturn await import('../icons/dragResize');\n\t\tcase 'drawTool':\n\t\t\treturn await import('../icons/drawTool');\n\t\tcase 'drawer':\n\t\t\treturn await import('../icons/drawer');\n\t\tcase 'dropdownCaret':\n\t\t\treturn await import('../icons/dropdownCaret');\n\t\tcase 'droplet':\n\t\t\treturn await import('../icons/droplet');\n\t\tcase 'duplicate':\n\t\t\treturn await import('../icons/duplicate');\n\t\tcase 'dynamicSegment':\n\t\t\treturn await import('../icons/dynamicSegment');\n\t\tcase 'elevator':\n\t\t\treturn await import('../icons/elevator');\n\t\tcase 'ellipsisHorizontal':\n\t\t\treturn await import('../icons/ellipsisHorizontal');\n\t\tcase 'ellipsisVertical':\n\t\t\treturn await import('../icons/ellipsisVertical');\n\t\tcase 'emojiNegative':\n\t\t\treturn await import('../icons/emojiNegative');\n\t\tcase 'emojiNeutral':\n\t\t\treturn await import('../icons/emojiNeutral');\n\t\tcase 'emojiPositive':\n\t\t\treturn await import('../icons/emojiPositive');\n\t\tcase 'emojiSlightlyNegative':\n\t\t\treturn await import('../icons/emojiSlightlyNegative');\n\t\tcase 'emojiSmile':\n\t\t\treturn await import('../icons/emojiSmile');\n\t\tcase 'enterpriseAssetManagement':\n\t\t\treturn await import('../icons/enterpriseAssetManagement');\n\t\tcase 'envelopeArrow':\n\t\t\treturn await import('../icons/envelopeArrow');\n\t\tcase 'envelopeBell':\n\t\t\treturn await import('../icons/envelopeBell');\n\t\tcase 'envelope':\n\t\t\treturn await import('../icons/envelope');\n\t\tcase 'envelopeMinus':\n\t\t\treturn await import('../icons/envelopeMinus');\n\t\tcase 'envelopeOpen':\n\t\t\treturn await import('../icons/envelopeOpen');\n\t\tcase 'envelopePlus':\n\t\t\treturn await import('../icons/envelopePlus');\n\t\tcase 'eraser':\n\t\t\treturn await import('../icons/eraser');\n\t\tcase 'escalator':\n\t\t\treturn await import('../icons/escalator');\n\t\tcase 'exclamation':\n\t\t\treturn await import('../icons/exclamation');\n\t\tcase 'exclamationSignal':\n\t\t\treturn await import('../icons/exclamationSignal');\n\t\tcase 'expand':\n\t\t\treturn await import('../icons/expand');\n\t\tcase 'externalAction':\n\t\t\treturn await import('../icons/externalAction');\n\t\tcase 'eye':\n\t\t\treturn await import('../icons/eye');\n\t\tcase 'eyeSlash':\n\t\t\treturn await import('../icons/eyeSlash');\n\t\tcase 'facebook':\n\t\t\treturn await import('../icons/facebook');\n\t\tcase 'fieldName':\n\t\t\treturn await import('../icons/fieldName');\n\t\tcase 'fieldShield':\n\t\t\treturn await import('../icons/fieldShield');\n\t\tcase 'filter':\n\t\t\treturn await import('../icons/filter');\n\t\tcase 'filterHide':\n\t\t\treturn await import('../icons/filterHide');\n\t\tcase 'filterShow':\n\t\t\treturn await import('../icons/filterShow');\n\t\tcase 'fire':\n\t\t\treturn await import('../icons/fire');\n\t\tcase 'fitWidth':\n\t\t\treturn await import('../icons/fitWidth');\n\t\tcase 'flagEventAdd':\n\t\t\treturn await import('../icons/flagEventAdd');\n\t\tcase 'flagEvent':\n\t\t\treturn await import('../icons/flagEvent');\n\t\tcase 'flag':\n\t\t\treturn await import('../icons/flag');\n\t\tcase 'flashlight':\n\t\t\treturn await import('../icons/flashlight');\n\t\tcase 'flexDistributeBottom':\n\t\t\treturn await import('../icons/flexDistributeBottom');\n\t\tcase 'flexDistributeCenter':\n\t\t\treturn await import('../icons/flexDistributeCenter');\n\t\tcase 'flexDistributeSpaceAround':\n\t\t\treturn await import('../icons/flexDistributeSpaceAround');\n\t\tcase 'flexDistributeSpaceBetween':\n\t\t\treturn await import('../icons/flexDistributeSpaceBetween');\n\t\tcase 'flexDistributeSpaceEvenly':\n\t\t\treturn await import('../icons/flexDistributeSpaceEvenly');\n\t\tcase 'flexDistributeTop':\n\t\t\treturn await import('../icons/flexDistributeTop');\n\t\tcase 'flexJustifyCenter':\n\t\t\treturn await import('../icons/flexJustifyCenter');\n\t\tcase 'flexJustifyLeft':\n\t\t\treturn await import('../icons/flexJustifyLeft');\n\t\tcase 'flexJustifyRight':\n\t\t\treturn await import('../icons/flexJustifyRight');\n\t\tcase 'flexJustifySpaceAround':\n\t\t\treturn await import('../icons/flexJustifySpaceAround');\n\t\tcase 'flexJustifySpaceBetween':\n\t\t\treturn await import('../icons/flexJustifySpaceBetween');\n\t\tcase 'flexJustifySpaceEvenly':\n\t\t\treturn await import('../icons/flexJustifySpaceEvenly');\n\t\tcase 'floorplan':\n\t\t\treturn await import('../icons/floorplan');\n\t\tcase 'flowOutput':\n\t\t\treturn await import('../icons/flowOutput');\n\t\tcase 'folderCirclePlus':\n\t\t\treturn await import('../icons/folderCirclePlus');\n\t\tcase 'folder':\n\t\t\treturn await import('../icons/folder');\n\t\tcase 'folderGear':\n\t\t\treturn await import('../icons/folderGear');\n\t\tcase 'folderOpenCircleCheck':\n\t\t\treturn await import('../icons/folderOpenCircleCheck');\n\t\tcase 'folderOpen':\n\t\t\treturn await import('../icons/folderOpen');\n\t\tcase 'food':\n\t\t\treturn await import('../icons/food');\n\t\tcase 'form':\n\t\t\treturn await import('../icons/form');\n\t\tcase 'formula':\n\t\t\treturn await import('../icons/formula');\n\t\tcase 'fullscreen':\n\t\t\treturn await import('../icons/fullscreen');\n\t\tcase 'gearChanges':\n\t\t\treturn await import('../icons/gearChanges');\n\t\tcase 'gear':\n\t\t\treturn await import('../icons/gear');\n\t\tcase 'gearMinus':\n\t\t\treturn await import('../icons/gearMinus');\n\t\tcase 'gearShieldCheckmark':\n\t\t\treturn await import('../icons/gearShieldCheckmark');\n\t\tcase 'gem':\n\t\t\treturn await import('../icons/gem');\n\t\tcase 'glasses':\n\t\t\treturn await import('../icons/glasses');\n\t\tcase 'globeClock':\n\t\t\treturn await import('../icons/globeClock');\n\t\tcase 'globe':\n\t\t\treturn await import('../icons/globe');\n\t\tcase 'globePin':\n\t\t\treturn await import('../icons/globePin');\n\t\tcase 'globeSearch':\n\t\t\treturn await import('../icons/globeSearch');\n\t\tcase 'graduationCap':\n\t\t\treturn await import('../icons/graduationCap');\n\t\tcase 'gridAlignItemsBaseline':\n\t\t\treturn await import('../icons/gridAlignItemsBaseline');\n\t\tcase 'gridAlignItemsBottom':\n\t\t\treturn await import('../icons/gridAlignItemsBottom');\n\t\tcase 'gridAlignItemsCenter':\n\t\t\treturn await import('../icons/gridAlignItemsCenter');\n\t\tcase 'gridAlignItemsStretch':\n\t\t\treturn await import('../icons/gridAlignItemsStretch');\n\t\tcase 'gridAlignItemsTop':\n\t\t\treturn await import('../icons/gridAlignItemsTop');\n\t\tcase 'gridDistributeContentBottom':\n\t\t\treturn await import('../icons/gridDistributeContentBottom');\n\t\tcase 'gridDistributeContentCenter':\n\t\t\treturn await import('../icons/gridDistributeContentCenter');\n\t\tcase 'gridDistributeContentSpaceAround':\n\t\t\treturn await import('../icons/gridDistributeContentSpaceAround');\n\t\tcase 'gridDistributeContentSpaceBetween':\n\t\t\treturn await import('../icons/gridDistributeContentSpaceBetween');\n\t\tcase 'gridDistributeContentSpaceEvenly':\n\t\t\treturn await import('../icons/gridDistributeContentSpaceEvenly');\n\t\tcase 'gridDistributeContentStretch':\n\t\t\treturn await import('../icons/gridDistributeContentStretch');\n\t\tcase 'gridDistributeContentTop':\n\t\t\treturn await import('../icons/gridDistributeContentTop');\n\t\tcase 'grid':\n\t\t\treturn await import('../icons/grid');\n\t\tcase 'gridFour':\n\t\t\treturn await import('../icons/gridFour');\n\t\tcase 'gridJustifyContentCenter':\n\t\t\treturn await import('../icons/gridJustifyContentCenter');\n\t\tcase 'gridJustifyContentLeft':\n\t\t\treturn await import('../icons/gridJustifyContentLeft');\n\t\tcase 'gridJustifyContentRight':\n\t\t\treturn await import('../icons/gridJustifyContentRight');\n\t\tcase 'gridJustifyContentSpaceAround':\n\t\t\treturn await import('../icons/gridJustifyContentSpaceAround');\n\t\tcase 'gridJustifyContentSpaceBetween':\n\t\t\treturn await import('../icons/gridJustifyContentSpaceBetween');\n\t\tcase 'gridJustifyContentSpaceEvenly':\n\t\t\treturn await import('../icons/gridJustifyContentSpaceEvenly');\n\t\tcase 'gridJustifyContentStretch':\n\t\t\treturn await import('../icons/gridJustifyContentStretch');\n\t\tcase 'gridJustifyItemsBaseline':\n\t\t\treturn await import('../icons/gridJustifyItemsBaseline');\n\t\tcase 'gridJustifyItemsCenter':\n\t\t\treturn await import('../icons/gridJustifyItemsCenter');\n\t\tcase 'gridJustifyItemsLeft':\n\t\t\treturn await import('../icons/gridJustifyItemsLeft');\n\t\tcase 'gridJustifyItemsRight':\n\t\t\treturn await import('../icons/gridJustifyItemsRight');\n\t\tcase 'gridJustifyItemsStretch':\n\t\t\treturn await import('../icons/gridJustifyItemsStretch');\n\t\tcase 'gridThree':\n\t\t\treturn await import('../icons/gridThree');\n\t\tcase 'gridVertical':\n\t\t\treturn await import('../icons/gridVertical');\n\t\tcase 'groupLines':\n\t\t\treturn await import('../icons/groupLines');\n\t\tcase 'hammerCode':\n\t\t\treturn await import('../icons/hammerCode');\n\t\tcase 'hammerJson':\n\t\t\treturn await import('../icons/hammerJson');\n\t\tcase 'hammerPayload':\n\t\t\treturn await import('../icons/hammerPayload');\n\t\tcase 'handGear':\n\t\t\treturn await import('../icons/handGear');\n\t\tcase 'handshake':\n\t\t\treturn await import('../icons/handshake');\n\t\tcase 'harddrive':\n\t\t\treturn await import('../icons/harddrive');\n\t\tcase 'heading1':\n\t\t\treturn await import('../icons/heading1');\n\t\tcase 'heading2':\n\t\t\treturn await import('../icons/heading2');\n\t\tcase 'heading3':\n\t\t\treturn await import('../icons/heading3');\n\t\tcase 'heading4':\n\t\t\treturn await import('../icons/heading4');\n\t\tcase 'headset':\n\t\t\treturn await import('../icons/headset');\n\t\tcase 'healthScreening':\n\t\t\treturn await import('../icons/healthScreening');\n\t\tcase 'healthStatus':\n\t\t\treturn await import('../icons/healthStatus');\n\t\tcase 'heart':\n\t\t\treturn await import('../icons/heart');\n\t\tcase 'heartbeat':\n\t\t\treturn await import('../icons/heartbeat');\n\t\tcase 'home':\n\t\t\treturn await import('../icons/home');\n\t\tcase 'hr':\n\t\t\treturn await import('../icons/hr');\n\t\tcase 'id':\n\t\t\treturn await import('../icons/id');\n\t\tcase 'image':\n\t\t\treturn await import('../icons/image');\n\t\tcase 'imagePlus':\n\t\t\treturn await import('../icons/imagePlus');\n\t\tcase 'imageSlash':\n\t\t\treturn await import('../icons/imageSlash');\n\t\tcase 'images':\n\t\t\treturn await import('../icons/images');\n\t\tcase 'inboxArchive':\n\t\t\treturn await import('../icons/inboxArchive');\n\t\tcase 'inbox':\n\t\t\treturn await import('../icons/inbox');\n\t\tcase 'inboxQueue':\n\t\t\treturn await import('../icons/inboxQueue');\n\t\tcase 'indicatorCheck':\n\t\t\treturn await import('../icons/indicatorCheck');\n\t\tcase 'inkAnnotationHeavy':\n\t\t\treturn await import('../icons/inkAnnotationHeavy');\n\t\tcase 'inkAnnotationLight':\n\t\t\treturn await import('../icons/inkAnnotationLight');\n\t\tcase 'inkAnnotationMedium':\n\t\t\treturn await import('../icons/inkAnnotationMedium');\n\t\tcase 'inkAnnotationThick':\n\t\t\treturn await import('../icons/inkAnnotationThick');\n\t\tcase 'inkAnnotationThin':\n\t\t\treturn await import('../icons/inkAnnotationThin');\n\t\tcase 'insertColumnLeft':\n\t\t\treturn await import('../icons/insertColumnLeft');\n\t\tcase 'insertColumnRight':\n\t\t\treturn await import('../icons/insertColumnRight');\n\t\tcase 'insertRowAfter':\n\t\t\treturn await import('../icons/insertRowAfter');\n\t\tcase 'insertRowBefore':\n\t\t\treturn await import('../icons/insertRowBefore');\n\t\tcase 'instagram':\n\t\t\treturn await import('../icons/instagram');\n\t\tcase 'integer':\n\t\t\treturn await import('../icons/integer');\n\t\tcase 'inventoryCirclePlus':\n\t\t\treturn await import('../icons/inventoryCirclePlus');\n\t\tcase 'inventory':\n\t\t\treturn await import('../icons/inventory');\n\t\tcase 'isolation':\n\t\t\treturn await import('../icons/isolation');\n\t\tcase 'itemIndent':\n\t\t\treturn await import('../icons/itemIndent');\n\t\tcase 'itemUnindent':\n\t\t\treturn await import('../icons/itemUnindent');\n\t\tcase 'journal':\n\t\t\treturn await import('../icons/journal');\n\t\tcase 'journalList':\n\t\t\treturn await import('../icons/journalList');\n\t\tcase 'journalPencil':\n\t\t\treturn await import('../icons/journalPencil');\n\t\tcase 'key':\n\t\t\treturn await import('../icons/key');\n\t\tcase 'keyboard':\n\t\t\treturn await import('../icons/keyboard');\n\t\tcase 'keys':\n\t\t\treturn await import('../icons/keys');\n\t\tcase 'kpi':\n\t\t\treturn await import('../icons/kpi');\n\t\tcase 'label':\n\t\t\treturn await import('../icons/label');\n\t\tcase 'laptopCheckUser':\n\t\t\treturn await import('../icons/laptopCheckUser');\n\t\tcase 'laptop':\n\t\t\treturn await import('../icons/laptop');\n\t\tcase 'layersMiddle':\n\t\t\treturn await import('../icons/layersMiddle');\n\t\tcase 'layout':\n\t\t\treturn await import('../icons/layout');\n\t\tcase 'legend':\n\t\t\treturn await import('../icons/legend');\n\t\tcase 'letterAPencil':\n\t\t\treturn await import('../icons/letterAPencil');\n\t\tcase 'letterAb':\n\t\t\treturn await import('../icons/letterAb');\n\t\tcase 'letterAs':\n\t\t\treturn await import('../icons/letterAs');\n\t\tcase 'letterAbBracket':\n\t\t\treturn await import('../icons/letterAbBracket');\n\t\tcase 'lifesaver':\n\t\t\treturn await import('../icons/lifesaver');\n\t\tcase 'lightbulb':\n\t\t\treturn await import('../icons/lightbulb');\n\t\tcase 'lightning':\n\t\t\treturn await import('../icons/lightning');\n\t\tcase 'lightningSlash':\n\t\t\treturn await import('../icons/lightningSlash');\n\t\tcase 'lineDiagonal':\n\t\t\treturn await import('../icons/lineDiagonal');\n\t\tcase 'link':\n\t\t\treturn await import('../icons/link');\n\t\tcase 'linkedin':\n\t\t\treturn await import('../icons/linkedin');\n\t\tcase 'list':\n\t\t\treturn await import('../icons/list');\n\t\tcase 'listHide':\n\t\t\treturn await import('../icons/listHide');\n\t\tcase 'listKey':\n\t\t\treturn await import('../icons/listKey');\n\t\tcase 'listMarker':\n\t\t\treturn await import('../icons/listMarker');\n\t\tcase 'listSearch':\n\t\t\treturn await import('../icons/listSearch');\n\t\tcase 'listShow':\n\t\t\treturn await import('../icons/listShow');\n\t\tcase 'liveFeed':\n\t\t\treturn await import('../icons/liveFeed');\n\t\tcase 'liveFeedVertical':\n\t\t\treturn await import('../icons/liveFeedVertical');\n\t\tcase 'llmCall':\n\t\t\treturn await import('../icons/llmCall');\n\t\tcase 'loader':\n\t\t\treturn await import('../icons/loader');\n\t\tcase 'lock':\n\t\t\treturn await import('../icons/lock');\n\t\tcase 'longArrowLeft':\n\t\t\treturn await import('../icons/longArrowLeft');\n\t\tcase 'longArrowRight':\n\t\t\treturn await import('../icons/longArrowRight');\n\t\tcase 'magic':\n\t\t\treturn await import('../icons/magic');\n\t\tcase 'magicSlash':\n\t\t\treturn await import('../icons/magicSlash');\n\t\tcase 'magnifyingGlassAiSparkle':\n\t\t\treturn await import('../icons/magnifyingGlassAiSparkle');\n\t\tcase 'magnifyingGlassCheck':\n\t\t\treturn await import('../icons/magnifyingGlassCheck');\n\t\tcase 'magnifyingGlass':\n\t\t\treturn await import('../icons/magnifyingGlass');\n\t\tcase 'magnifyingGlassFilter':\n\t\t\treturn await import('../icons/magnifyingGlassFilter');\n\t\tcase 'magnifyingGlassMinus':\n\t\t\treturn await import('../icons/magnifyingGlassMinus');\n\t\tcase 'magnifyingGlassPlus':\n\t\t\treturn await import('../icons/magnifyingGlassPlus');\n\t\tcase 'mapDirection':\n\t\t\treturn await import('../icons/mapDirection');\n\t\tcase 'map':\n\t\t\treturn await import('../icons/map');\n\t\tcase 'mapPin':\n\t\t\treturn await import('../icons/mapPin');\n\t\tcase 'mapPins':\n\t\t\treturn await import('../icons/mapPins');\n\t\tcase 'marker':\n\t\t\treturn await import('../icons/marker');\n\t\tcase 'market':\n\t\t\treturn await import('../icons/market');\n\t\tcase 'maximize':\n\t\t\treturn await import('../icons/maximize');\n\t\tcase 'mediaBack':\n\t\t\treturn await import('../icons/mediaBack');\n\t\tcase 'mediaNext':\n\t\t\treturn await import('../icons/mediaNext');\n\t\tcase 'megaphone':\n\t\t\treturn await import('../icons/megaphone');\n\t\tcase 'mention':\n\t\t\treturn await import('../icons/mention');\n\t\tcase 'menu':\n\t\t\treturn await import('../icons/menu');\n\t\tcase 'microphone':\n\t\t\treturn await import('../icons/microphone');\n\t\tcase 'microphoneSlash':\n\t\t\treturn await import('../icons/microphoneSlash');\n\t\tcase 'microsoftTeams':\n\t\t\treturn await import('../icons/microsoftTeams');\n\t\tcase 'minimize':\n\t\t\treturn await import('../icons/minimize');\n\t\tcase 'minus':\n\t\t\treturn await import('../icons/minus');\n\t\tcase 'minusVertical':\n\t\t\treturn await import('../icons/minusVertical');\n\t\tcase 'modal':\n\t\t\treturn await import('../icons/modal');\n\t\tcase 'modelessDialog':\n\t\t\treturn await import('../icons/modelessDialog');\n\t\tcase 'monitorExclamation':\n\t\t\treturn await import('../icons/monitorExclamation');\n\t\tcase 'monitor':\n\t\t\treturn await import('../icons/monitor');\n\t\tcase 'monitorHeartbeat':\n\t\t\treturn await import('../icons/monitorHeartbeat');\n\t\tcase 'moon':\n\t\t\treturn await import('../icons/moon');\n\t\tcase 'moveItemDown':\n\t\t\treturn await import('../icons/moveItemDown');\n\t\tcase 'moveItemLeft':\n\t\t\treturn await import('../icons/moveItemLeft');\n\t\tcase 'moveItemRight':\n\t\t\treturn await import('../icons/moveItemRight');\n\t\tcase 'moveItemUp':\n\t\t\treturn await import('../icons/moveItemUp');\n\t\tcase 'moveLinkLeft':\n\t\t\treturn await import('../icons/moveLinkLeft');\n\t\tcase 'moveLinkRight':\n\t\t\treturn await import('../icons/moveLinkRight');\n\t\tcase 'new':\n\t\t\treturn await import('../icons/new');\n\t\tcase 'news':\n\t\t\treturn await import('../icons/news');\n\t\tcase 'note':\n\t\t\treturn await import('../icons/note');\n\t\tcase 'number':\n\t\t\treturn await import('../icons/number');\n\t\tcase 'numberedList':\n\t\t\treturn await import('../icons/numberedList');\n\t\tcase 'officialVerification':\n\t\t\treturn await import('../icons/officialVerification');\n\t\tcase 'okta':\n\t\t\treturn await import('../icons/okta');\n\t\tcase 'ongoing':\n\t\t\treturn await import('../icons/ongoing');\n\t\tcase 'openLinkLeft':\n\t\t\treturn await import('../icons/openLinkLeft');\n\t\tcase 'openLinkRight':\n\t\t\treturn await import('../icons/openLinkRight');\n\t\tcase 'optionKey':\n\t\t\treturn await import('../icons/optionKey');\n\t\tcase 'outagePast':\n\t\t\treturn await import('../icons/outagePast');\n\t\tcase 'outagePlanned':\n\t\t\treturn await import('../icons/outagePlanned');\n\t\tcase 'packageSearch':\n\t\t\treturn await import('../icons/packageSearch');\n\t\tcase 'palette':\n\t\t\treturn await import('../icons/palette');\n\t\tcase 'panelDisplayBottom':\n\t\t\treturn await import('../icons/panelDisplayBottom');\n\t\tcase 'panelDisplayLeftCollapse':\n\t\t\treturn await import('../icons/panelDisplayLeftCollapse');\n\t\tcase 'panelDisplayLeftExpand':\n\t\t\treturn await import('../icons/panelDisplayLeftExpand');\n\t\tcase 'panelDisplayLeft':\n\t\t\treturn await import('../icons/panelDisplayLeft');\n\t\tcase 'panelDisplayMiddle':\n\t\t\treturn await import('../icons/panelDisplayMiddle');\n\t\tcase 'panelDisplayMiddleHorizontal':\n\t\t\treturn await import('../icons/panelDisplayMiddleHorizontal');\n\t\tcase 'panelDisplayPopout':\n\t\t\treturn await import('../icons/panelDisplayPopout');\n\t\tcase 'panelDisplayRightCollapse':\n\t\t\treturn await import('../icons/panelDisplayRightCollapse');\n\t\tcase 'panelDisplayRightExpand':\n\t\t\treturn await import('../icons/panelDisplayRightExpand');\n\t\tcase 'panelDisplayRight':\n\t\t\treturn await import('../icons/panelDisplayRight');\n\t\tcase 'panelDisplayThreeSplitLeft':\n\t\t\treturn await import('../icons/panelDisplayThreeSplitLeft');\n\t\tcase 'panelDisplayThreeSplitRight':\n\t\t\treturn await import('../icons/panelDisplayThreeSplitRight');\n\t\tcase 'paperclip':\n\t\t\treturn await import('../icons/paperclip');\n\t\tcase 'pause':\n\t\t\treturn await import('../icons/pause');\n\t\tcase 'pencil':\n\t\t\treturn await import('../icons/pencil');\n\t\tcase 'pencilPage':\n\t\t\treturn await import('../icons/pencilPage');\n\t\tcase 'percentage':\n\t\t\treturn await import('../icons/percentage');\n\t\tcase 'phoneArrowsSwap':\n\t\t\treturn await import('../icons/phoneArrowsSwap');\n\t\tcase 'phoneClose':\n\t\t\treturn await import('../icons/phoneClose');\n\t\tcase 'phoneDown':\n\t\t\treturn await import('../icons/phoneDown');\n\t\tcase 'phone':\n\t\t\treturn await import('../icons/phone');\n\t\tcase 'phoneIncoming':\n\t\t\treturn await import('../icons/phoneIncoming');\n\t\tcase 'phoneKeypad':\n\t\t\treturn await import('../icons/phoneKeypad');\n\t\tcase 'phoneOutgoing':\n\t\t\treturn await import('../icons/phoneOutgoing');\n\t\tcase 'phonePause':\n\t\t\treturn await import('../icons/phonePause');\n\t\tcase 'phonePlay':\n\t\t\treturn await import('../icons/phonePlay');\n\t\tcase 'phoneSlash':\n\t\t\treturn await import('../icons/phoneSlash');\n\t\tcase 'phoneUser':\n\t\t\treturn await import('../icons/phoneUser');\n\t\tcase 'pilcrow':\n\t\t\treturn await import('../icons/pilcrow');\n\t\tcase 'pinterest':\n\t\t\treturn await import('../icons/pinterest');\n\t\tcase 'play':\n\t\t\treturn await import('../icons/play');\n\t\tcase 'playbook':\n\t\t\treturn await import('../icons/playbook');\n\t\tcase 'plug':\n\t\t\treturn await import('../icons/plug');\n\t\tcase 'plugSlash':\n\t\t\treturn await import('../icons/plugSlash');\n\t\tcase 'plus':\n\t\t\treturn await import('../icons/plus');\n\t\tcase 'popIn':\n\t\t\treturn await import('../icons/popIn');\n\t\tcase 'power':\n\t\t\treturn await import('../icons/power');\n\t\tcase 'presenceAvailable':\n\t\t\treturn await import('../icons/presenceAvailable');\n\t\tcase 'presenceAway':\n\t\t\treturn await import('../icons/presenceAway');\n\t\tcase 'presenceBusy':\n\t\t\treturn await import('../icons/presenceBusy');\n\t\tcase 'presence':\n\t\t\treturn await import('../icons/presence');\n\t\tcase 'presenceOffline':\n\t\t\treturn await import('../icons/presenceOffline');\n\t\tcase 'printer':\n\t\t\treturn await import('../icons/printer');\n\t\tcase 'processBlocks':\n\t\t\treturn await import('../icons/processBlocks');\n\t\tcase 'publish':\n\t\t\treturn await import('../icons/publish');\n\t\tcase 'puzzle':\n\t\t\treturn await import('../icons/puzzle');\n\t\tcase 'qrCode':\n\t\t\treturn await import('../icons/qrCode');\n\t\tcase 'quadrantChartBubble':\n\t\t\treturn await import('../icons/quadrantChartBubble');\n\t\tcase 'quarterCirclePlay':\n\t\t\treturn await import('../icons/quarterCirclePlay');\n\t\tcase 'quoteLeft':\n\t\t\treturn await import('../icons/quoteLeft');\n\t\tcase 'quoteRight':\n\t\t\treturn await import('../icons/quoteRight');\n\t\tcase 'radioAbcScale':\n\t\t\treturn await import('../icons/radioAbcScale');\n\t\tcase 'radioButton':\n\t\t\treturn await import('../icons/radioButton');\n\t\tcase 'radioNumericScale':\n\t\t\treturn await import('../icons/radioNumericScale');\n\t\tcase 'ramp':\n\t\t\treturn await import('../icons/ramp');\n\t\tcase 'receiptPencil':\n\t\t\treturn await import('../icons/receiptPencil');\n\t\tcase 'receiptTriangleExclamation':\n\t\t\treturn await import('../icons/receiptTriangleExclamation');\n\t\tcase 'recordActivityDetails':\n\t\t\treturn await import('../icons/recordActivityDetails');\n\t\tcase 'recordActivity':\n\t\t\treturn await import('../icons/recordActivity');\n\t\tcase 'recordActivityStream':\n\t\t\treturn await import('../icons/recordActivityStream');\n\t\tcase 'recordActivityStreamVertical':\n\t\t\treturn await import('../icons/recordActivityStreamVertical');\n\t\tcase 'rectangleArrowDown':\n\t\t\treturn await import('../icons/rectangleArrowDown');\n\t\tcase 'rectangleSearch':\n\t\t\treturn await import('../icons/rectangleSearch');\n\t\tcase 'rectangleSpeedometer':\n\t\t\treturn await import('../icons/rectangleSpeedometer');\n\t\tcase 'redoBottom':\n\t\t\treturn await import('../icons/redoBottom');\n\t\tcase 'redoTop':\n\t\t\treturn await import('../icons/redoTop');\n\t\tcase 'regularExpression':\n\t\t\treturn await import('../icons/regularExpression');\n\t\tcase 'relatedList':\n\t\t\treturn await import('../icons/relatedList');\n\t\tcase 'replaceAll':\n\t\t\treturn await import('../icons/replaceAll');\n\t\tcase 'replace':\n\t\t\treturn await import('../icons/replace');\n\t\tcase 'reply':\n\t\t\treturn await import('../icons/reply');\n\t\tcase 'requiredFormIndicator':\n\t\t\treturn await import('../icons/requiredFormIndicator');\n\t\tcase 'reservation':\n\t\t\treturn await import('../icons/reservation');\n\t\tcase 'restroom':\n\t\t\treturn await import('../icons/restroom');\n\t\tcase 'roadmap':\n\t\t\treturn await import('../icons/roadmap');\n\t\tcase 'rocketship':\n\t\t\treturn await import('../icons/rocketship');\n\t\tcase 'rotateClockwise':\n\t\t\treturn await import('../icons/rotateClockwise');\n\t\tcase 'rotateCounterClockwise':\n\t\t\treturn await import('../icons/rotateCounterClockwise');\n\t\tcase 'rssFeed':\n\t\t\treturn await import('../icons/rssFeed');\n\t\tcase 'save':\n\t\t\treturn await import('../icons/save');\n\t\tcase 'scales':\n\t\t\treturn await import('../icons/scales');\n\t\tcase 'scanner':\n\t\t\treturn await import('../icons/scanner');\n\t\tcase 'scissor':\n\t\t\treturn await import('../icons/scissor');\n\t\tcase 'score':\n\t\t\treturn await import('../icons/score');\n\t\tcase 'scoreList':\n\t\t\treturn await import('../icons/scoreList');\n\t\tcase 'scoreListLightning':\n\t\t\treturn await import('../icons/scoreListLightning');\n\t\tcase 'scriptCheck':\n\t\t\treturn await import('../icons/scriptCheck');\n\t\tcase 'scriptCursor':\n\t\t\treturn await import('../icons/scriptCursor');\n\t\tcase 'scriptDiamond':\n\t\t\treturn await import('../icons/scriptDiamond');\n\t\tcase 'script':\n\t\t\treturn await import('../icons/script');\n\t\tcase 'selectAll':\n\t\t\treturn await import('../icons/selectAll');\n\t\tcase 'selectElement':\n\t\t\treturn await import('../icons/selectElement');\n\t\tcase 'semiCirclePlay':\n\t\t\treturn await import('../icons/semiCirclePlay');\n\t\tcase 'send':\n\t\t\treturn await import('../icons/send');\n\t\tcase 'separate':\n\t\t\treturn await import('../icons/separate');\n\t\tcase 'serverboxApplication':\n\t\t\treturn await import('../icons/serverboxApplication');\n\t\tcase 'serverboxClock':\n\t\t\treturn await import('../icons/serverboxClock');\n\t\tcase 'serverboxCloud':\n\t\t\treturn await import('../icons/serverboxCloud');\n\t\tcase 'serverboxCluster':\n\t\t\treturn await import('../icons/serverboxCluster');\n\t\tcase 'serverboxDatabase':\n\t\t\treturn await import('../icons/serverboxDatabase');\n\t\tcase 'serverboxEmail':\n\t\t\treturn await import('../icons/serverboxEmail');\n\t\tcase 'serverbox':\n\t\t\treturn await import('../icons/serverbox');\n\t\tcase 'serverboxHealth':\n\t\t\treturn await import('../icons/serverboxHealth');\n\t\tcase 'serverboxJava':\n\t\t\treturn await import('../icons/serverboxJava');\n\t\tcase 'servicenowLensApp':\n\t\t\treturn await import('../icons/servicenowLensApp');\n\t\tcase 'shapeCylinder':\n\t\t\treturn await import('../icons/shapeCylinder');\n\t\tcase 'shapeCylinderGroup':\n\t\t\treturn await import('../icons/shapeCylinderGroup');\n\t\tcase 'shapes':\n\t\t\treturn await import('../icons/shapes');\n\t\tcase 'share':\n\t\t\treturn await import('../icons/share');\n\t\tcase 'shareIos':\n\t\t\treturn await import('../icons/shareIos');\n\t\tcase 'shieldCheck':\n\t\t\treturn await import('../icons/shieldCheck');\n\t\tcase 'shieldCircleCheckmark':\n\t\t\treturn await import('../icons/shieldCircleCheckmark');\n\t\tcase 'shieldClose':\n\t\t\treturn await import('../icons/shieldClose');\n\t\tcase 'shieldCrack':\n\t\t\treturn await import('../icons/shieldCrack');\n\t\tcase 'shield':\n\t\t\treturn await import('../icons/shield');\n\t\tcase 'shippingContainer':\n\t\t\treturn await import('../icons/shippingContainer');\n\t\tcase 'shoppingCart':\n\t\t\treturn await import('../icons/shoppingCart');\n\t\tcase 'shoppingCartFull':\n\t\t\treturn await import('../icons/shoppingCartFull');\n\t\tcase 'shoppingCartSlash':\n\t\t\treturn await import('../icons/shoppingCartSlash');\n\t\tcase 'signal':\n\t\t\treturn await import('../icons/signal');\n\t\tcase 'signalLive':\n\t\t\treturn await import('../icons/signalLive');\n\t\tcase 'size':\n\t\t\treturn await import('../icons/size');\n\t\tcase 'slack':\n\t\t\treturn await import('../icons/slack');\n\t\tcase 'slashForward':\n\t\t\treturn await import('../icons/slashForward');\n\t\tcase 'sliders':\n\t\t\treturn await import('../icons/sliders');\n\t\tcase 'slidersVertical':\n\t\t\treturn await import('../icons/slidersVertical');\n\t\tcase 'smoke':\n\t\t\treturn await import('../icons/smoke');\n\t\tcase 'sortAscending':\n\t\t\treturn await import('../icons/sortAscending');\n\t\tcase 'sortDescending':\n\t\t\treturn await import('../icons/sortDescending');\n\t\tcase 'soundWave':\n\t\t\treturn await import('../icons/soundWave');\n\t\tcase 'speaker':\n\t\t\treturn await import('../icons/speaker');\n\t\tcase 'spellCheck':\n\t\t\treturn await import('../icons/spellCheck');\n\t\tcase 'splitVertical':\n\t\t\treturn await import('../icons/splitVertical');\n\t\tcase 'spokes':\n\t\t\treturn await import('../icons/spokes');\n\t\tcase 'sprayBottle':\n\t\t\treturn await import('../icons/sprayBottle');\n\t\tcase 'squareArrowDown':\n\t\t\treturn await import('../icons/squareArrowDown');\n\t\tcase 'squareArrowLeft':\n\t\t\treturn await import('../icons/squareArrowLeft');\n\t\tcase 'squareArrowRight':\n\t\t\treturn await import('../icons/squareArrowRight');\n\t\tcase 'squareArrowUp':\n\t\t\treturn await import('../icons/squareArrowUp');\n\t\tcase 'squareArrowUpLeft':\n\t\t\treturn await import('../icons/squareArrowUpLeft');\n\t\tcase 'squareArrowUpRight':\n\t\t\treturn await import('../icons/squareArrowUpRight');\n\t\tcase 'squareBracket':\n\t\t\treturn await import('../icons/squareBracket');\n\t\tcase 'squareBracketLeft':\n\t\t\treturn await import('../icons/squareBracketLeft');\n\t\tcase 'squareBracketRight':\n\t\t\treturn await import('../icons/squareBracketRight');\n\t\tcase 'squareC':\n\t\t\treturn await import('../icons/squareC');\n\t\tcase 'squareClose':\n\t\t\treturn await import('../icons/squareClose');\n\t\tcase 'squareCurlyBracket':\n\t\t\treturn await import('../icons/squareCurlyBracket');\n\t\tcase 'squareDashed':\n\t\t\treturn await import('../icons/squareDashed');\n\t\tcase 'square':\n\t\t\treturn await import('../icons/square');\n\t\tcase 'squareI':\n\t\t\treturn await import('../icons/squareI');\n\t\tcase 'squareLoop':\n\t\t\treturn await import('../icons/squareLoop');\n\t\tcase 'squareP':\n\t\t\treturn await import('../icons/squareP');\n\t\tcase 'squareQuestion':\n\t\t\treturn await import('../icons/squareQuestion');\n\t\tcase 'squareS':\n\t\t\treturn await import('../icons/squareS');\n\t\tcase 'squareShare':\n\t\t\treturn await import('../icons/squareShare');\n\t\tcase 'stairs':\n\t\t\treturn await import('../icons/stairs');\n\t\tcase 'star':\n\t\t\treturn await import('../icons/star');\n\t\tcase 'status':\n\t\t\treturn await import('../icons/status');\n\t\tcase 'stop':\n\t\t\treturn await import('../icons/stop');\n\t\tcase 'stopwatch':\n\t\t\treturn await import('../icons/stopwatch');\n\t\tcase 'streamAllInput':\n\t\t\treturn await import('../icons/streamAllInput');\n\t\tcase 'streamOneInput':\n\t\t\treturn await import('../icons/streamOneInput');\n\t\tcase 'strikethrough':\n\t\t\treturn await import('../icons/strikethrough');\n\t\tcase 'sunChevronDown':\n\t\t\treturn await import('../icons/sunChevronDown');\n\t\tcase 'sunChevronUp':\n\t\t\treturn await import('../icons/sunChevronUp');\n\t\tcase 'sun':\n\t\t\treturn await import('../icons/sun');\n\t\tcase 'sync':\n\t\t\treturn await import('../icons/sync');\n\t\tcase 'syncPlay':\n\t\t\treturn await import('../icons/syncPlay');\n\t\tcase 'syntaxCheck':\n\t\t\treturn await import('../icons/syntaxCheck');\n\t\tcase 'syntaxPencil':\n\t\t\treturn await import('../icons/syntaxPencil');\n\t\tcase 'tableDiamond':\n\t\t\treturn await import('../icons/tableDiamond');\n\t\tcase 'table':\n\t\t\treturn await import('../icons/table');\n\t\tcase 'tableGrid':\n\t\t\treturn await import('../icons/tableGrid');\n\t\tcase 'tableSearch':\n\t\t\treturn await import('../icons/tableSearch');\n\t\tcase 'tablet':\n\t\t\treturn await import('../icons/tablet');\n\t\tcase 'tabset':\n\t\t\treturn await import('../icons/tabset');\n\t\tcase 'tagDetail':\n\t\t\treturn await import('../icons/tagDetail');\n\t\tcase 'tagDot':\n\t\t\treturn await import('../icons/tagDot');\n\t\tcase 'tag':\n\t\t\treturn await import('../icons/tag');\n\t\tcase 'tags':\n\t\t\treturn await import('../icons/tags');\n\t\tcase 'target':\n\t\t\treturn await import('../icons/target');\n\t\tcase 'textBold':\n\t\t\treturn await import('../icons/textBold');\n\t\tcase 'textDiamond':\n\t\t\treturn await import('../icons/textDiamond');\n\t\tcase 'text':\n\t\t\treturn await import('../icons/text');\n\t\tcase 'textIndent':\n\t\t\treturn await import('../icons/textIndent');\n\t\tcase 'textItalic':\n\t\t\treturn await import('../icons/textItalic');\n\t\tcase 'textStyleAdd':\n\t\t\treturn await import('../icons/textStyleAdd');\n\t\tcase 'textStyleClear':\n\t\t\treturn await import('../icons/textStyleClear');\n\t\tcase 'textType':\n\t\t\treturn await import('../icons/textType');\n\t\tcase 'textUnderline':\n\t\t\treturn await import('../icons/textUnderline');\n\t\tcase 'textUnindent':\n\t\t\treturn await import('../icons/textUnindent');\n\t\tcase 'textUtf8':\n\t\t\treturn await import('../icons/textUtf8');\n\t\tcase 'textX':\n\t\t\treturn await import('../icons/textX');\n\t\tcase 'thickArrowUp':\n\t\t\treturn await import('../icons/thickArrowUp');\n\t\tcase 'threeQuarterCirclePlay':\n\t\t\treturn await import('../icons/threeQuarterCirclePlay');\n\t\tcase 'thresholdBar':\n\t\t\treturn await import('../icons/thresholdBar');\n\t\tcase 'thumbsDown':\n\t\t\treturn await import('../icons/thumbsDown');\n\t\tcase 'thumbsUp':\n\t\t\treturn await import('../icons/thumbsUp');\n\t\tcase 'thumbtack':\n\t\t\treturn await import('../icons/thumbtack');\n\t\tcase 'thumbtackSlash':\n\t\t\treturn await import('../icons/thumbtackSlash');\n\t\tcase 'ticket':\n\t\t\treturn await import('../icons/ticket');\n\t\tcase 'ticketPlus':\n\t\t\treturn await import('../icons/ticketPlus');\n\t\tcase 'timeline':\n\t\t\treturn await import('../icons/timeline');\n\t\tcase 'todayDashed':\n\t\t\treturn await import('../icons/todayDashed');\n\t\tcase 'today':\n\t\t\treturn await import('../icons/today');\n\t\tcase 'toggle':\n\t\t\treturn await import('../icons/toggle');\n\t\tcase 'toolbox':\n\t\t\treturn await import('../icons/toolbox');\n\t\tcase 'translatedHtml':\n\t\t\treturn await import('../icons/translatedHtml');\n\t\tcase 'translatedText':\n\t\t\treturn await import('../icons/translatedText');\n\t\tcase 'trash':\n\t\t\treturn await import('../icons/trash');\n\t\tcase 'treeCode':\n\t\t\treturn await import('../icons/treeCode');\n\t\tcase 'treeConditions':\n\t\t\treturn await import('../icons/treeConditions');\n\t\tcase 'tree':\n\t\t\treturn await import('../icons/tree');\n\t\tcase 'treeFlowAiSparkle':\n\t\t\treturn await import('../icons/treeFlowAiSparkle');\n\t\tcase 'treeFlow':\n\t\t\treturn await import('../icons/treeFlow');\n\t\tcase 'treeJson':\n\t\t\treturn await import('../icons/treeJson');\n\t\tcase 'treeSelected':\n\t\t\treturn await import('../icons/treeSelected');\n\t\tcase 'treeSubflow':\n\t\t\treturn await import('../icons/treeSubflow');\n\t\tcase 'treeViewLong':\n\t\t\treturn await import('../icons/treeViewLong');\n\t\tcase 'treeViewShort':\n\t\t\treturn await import('../icons/treeViewShort');\n\t\tcase 'treeWorkflow':\n\t\t\treturn await import('../icons/treeWorkflow');\n\t\tcase 'triangleExclamation':\n\t\t\treturn await import('../icons/triangleExclamation');\n\t\tcase 'tumblr':\n\t\t\treturn await import('../icons/tumblr');\n\t\tcase 'twilio':\n\t\t\treturn await import('../icons/twilio');\n\t\tcase 'twitter':\n\t\t\treturn await import('../icons/twitter');\n\t\tcase 'unbind':\n\t\t\treturn await import('../icons/unbind');\n\t\tcase 'undoBottom':\n\t\t\treturn await import('../icons/undoBottom');\n\t\tcase 'undoTop':\n\t\t\treturn await import('../icons/undoTop');\n\t\tcase 'unlink':\n\t\t\treturn await import('../icons/unlink');\n\t\tcase 'unlock':\n\t\t\treturn await import('../icons/unlock');\n\t\tcase 'upload':\n\t\t\treturn await import('../icons/upload');\n\t\tcase 'userClipboard':\n\t\t\treturn await import('../icons/userClipboard');\n\t\tcase 'userClock':\n\t\t\treturn await import('../icons/userClock');\n\t\tcase 'userEscalation':\n\t\t\treturn await import('../icons/userEscalation');\n\t\tcase 'userFeed':\n\t\t\treturn await import('../icons/userFeed');\n\t\tcase 'user':\n\t\t\treturn await import('../icons/user');\n\t\tcase 'userGroup':\n\t\t\treturn await import('../icons/userGroup');\n\t\tcase 'userLock':\n\t\t\treturn await import('../icons/userLock');\n\t\tcase 'userMinus':\n\t\t\treturn await import('../icons/userMinus');\n\t\tcase 'userPlus':\n\t\t\treturn await import('../icons/userPlus');\n\t\tcase 'userTag':\n\t\t\treturn await import('../icons/userTag');\n\t\tcase 'userTransfer':\n\t\t\treturn await import('../icons/userTransfer');\n\t\tcase 'userTriangleExclamation':\n\t\t\treturn await import('../icons/userTriangleExclamation');\n\t\tcase 'userVerify':\n\t\t\treturn await import('../icons/userVerify');\n\t\tcase 'userWheelchair':\n\t\t\treturn await import('../icons/userWheelchair');\n\t\tcase 'vacation':\n\t\t\treturn await import('../icons/vacation');\n\t\tcase 'vaccineCheck':\n\t\t\treturn await import('../icons/vaccineCheck');\n\t\tcase 'vehicleAirplane':\n\t\t\treturn await import('../icons/vehicleAirplane');\n\t\tcase 'vehicleBoat':\n\t\t\treturn await import('../icons/vehicleBoat');\n\t\tcase 'vehicleForklift':\n\t\t\treturn await import('../icons/vehicleForklift');\n\t\tcase 'vehicleRail':\n\t\t\treturn await import('../icons/vehicleRail');\n\t\tcase 'vehicleTruck':\n\t\t\treturn await import('../icons/vehicleTruck');\n\t\tcase 'vennEmpty':\n\t\t\treturn await import('../icons/vennEmpty');\n\t\tcase 'vennIntersection':\n\t\t\treturn await import('../icons/vennIntersection');\n\t\tcase 'vennLeft':\n\t\t\treturn await import('../icons/vennLeft');\n\t\tcase 'vennRight':\n\t\t\treturn await import('../icons/vennRight');\n\t\tcase 'vennUnion':\n\t\t\treturn await import('../icons/vennUnion');\n\t\tcase 'videoChat':\n\t\t\treturn await import('../icons/videoChat');\n\t\tcase 'video':\n\t\t\treturn await import('../icons/video');\n\t\tcase 'videoPlus':\n\t\t\treturn await import('../icons/videoPlus');\n\t\tcase 'videoSlash':\n\t\t\treturn await import('../icons/videoSlash');\n\t\tcase 'viewfinderEye':\n\t\t\treturn await import('../icons/viewfinderEye');\n\t\tcase 'vizDesigner':\n\t\t\treturn await import('../icons/vizDesigner');\n\t\tcase 'voicemail':\n\t\t\treturn await import('../icons/voicemail');\n\t\tcase 'walk':\n\t\t\treturn await import('../icons/walk');\n\t\tcase 'whistle':\n\t\t\treturn await import('../icons/whistle');\n\t\tcase 'windowCirclePlus':\n\t\t\treturn await import('../icons/windowCirclePlus');\n\t\tcase 'windowCode':\n\t\t\treturn await import('../icons/windowCode');\n\t\tcase 'windowDatabase':\n\t\t\treturn await import('../icons/windowDatabase');\n\t\tcase 'windowDialog':\n\t\t\treturn await import('../icons/windowDialog');\n\t\tcase 'window':\n\t\t\treturn await import('../icons/window');\n\t\tcase 'windowGlobe':\n\t\t\treturn await import('../icons/windowGlobe');\n\t\tcase 'windowInfo':\n\t\t\treturn await import('../icons/windowInfo');\n\t\tcase 'windows':\n\t\t\treturn await import('../icons/windows');\n\t\tcase 'wishlist':\n\t\t\treturn await import('../icons/wishlist');\n\t\tcase 'workNote':\n\t\t\treturn await import('../icons/workNote');\n\t\tcase 'workNoteTriangleExclamation':\n\t\t\treturn await import('../icons/workNoteTriangleExclamation');\n\t\tcase 'workflowApprovalAction':\n\t\t\treturn await import('../icons/workflowApprovalAction');\n\t\tcase 'workflow':\n\t\t\treturn await import('../icons/workflow');\n\t\tcase 'workflowOnHold':\n\t\t\treturn await import('../icons/workflowOnHold');\n\t\tcase 'workflowSkip':\n\t\t\treturn await import('../icons/workflowSkip');\n\t\tcase 'wrenchAiSparkle':\n\t\t\treturn await import('../icons/wrenchAiSparkle');\n\t\tcase 'wrench':\n\t\t\treturn await import('../icons/wrench');\n\t\tcase 'wrenchPencil':\n\t\t\treturn await import('../icons/wrenchPencil');\n\t\tcase 'youtube':\n\t\t\treturn await import('../icons/youtube');\n\t\tcase 'zoom':\n\t\t\treturn await import('../icons/zoom');\n\t}\n}\n","const {\n  entries,\n  setPrototypeOf,\n  isFrozen,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!freeze) {\n  freeze = function (x) {\n    return x;\n  };\n}\n\nif (!seal) {\n  seal = function (x) {\n    return x;\n  };\n}\n\nif (!apply) {\n  apply = function (fun, thisValue, args) {\n    return fun.apply(thisValue, args);\n  };\n}\n\nif (!construct) {\n  construct = function (Func, args) {\n    return new Func(...args);\n  };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayLastIndexOf = unapply(Array.prototype.lastIndexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\nconst arraySplice = unapply(Array.prototype.splice);\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst objectHasOwnProperty = unapply(Object.prototype.hasOwnProperty);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param func - The function to be wrapped and called.\n * @returns A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply<T>(\n  func: (thisArg: any, ...args: any[]) => T\n): (thisArg: any, ...args: any[]) => T {\n  return (thisArg: any, ...args: any[]): T => {\n    if (thisArg instanceof RegExp) {\n      thisArg.lastIndex = 0;\n    }\n\n    return apply(func, thisArg, args);\n  };\n}\n\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param func - The constructor function to be wrapped and called.\n * @returns A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct<T>(func: (...args: any[]) => T): (...args: any[]) => T {\n  return (...args: any[]): T => construct(func, args);\n}\n\n/**\n * Add properties to a lookup table\n *\n * @param set - The set to which elements will be added.\n * @param array - The array containing elements to be added to the set.\n * @param transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns The modified set with added elements.\n */\nfunction addToSet(\n  set: Record<string, any>,\n  array: readonly any[],\n  transformCaseFunc: ReturnType<typeof unapply<string>> = stringToLowerCase\n): Record<string, any> {\n  if (setPrototypeOf) {\n    // Make 'in' and truthy checks like Boolean(set.constructor)\n    // independent of any properties defined on Object.prototype.\n    // Prevent prototype setters from intercepting set as a this value.\n    setPrototypeOf(set, null);\n  }\n\n  let l = array.length;\n  while (l--) {\n    let element = array[l];\n    if (typeof element === 'string') {\n      const lcElement = transformCaseFunc(element);\n      if (lcElement !== element) {\n        // Config presets (e.g. tags.js, attrs.js) are immutable.\n        if (!isFrozen(array)) {\n          (array as any[])[l] = lcElement;\n        }\n\n        element = lcElement;\n      }\n    }\n\n    set[element] = true;\n  }\n\n  return set;\n}\n\n/**\n * Clean up an array to harden against CSPP\n *\n * @param array - The array to be cleaned.\n * @returns The cleaned version of the array\n */\nfunction cleanArray<T>(array: T[]): Array<T | null> {\n  for (let index = 0; index < array.length; index++) {\n    const isPropertyExist = objectHasOwnProperty(array, index);\n\n    if (!isPropertyExist) {\n      array[index] = null;\n    }\n  }\n\n  return array;\n}\n\n/**\n * Shallow clone an object\n *\n * @param object - The object to be cloned.\n * @returns A new object that copies the original.\n */\nfunction clone<T extends Record<string, any>>(object: T): T {\n  const newObject = create(null);\n\n  for (const [property, value] of entries(object)) {\n    const isPropertyExist = objectHasOwnProperty(object, property);\n\n    if (isPropertyExist) {\n      if (Array.isArray(value)) {\n        newObject[property] = cleanArray(value);\n      } else if (\n        value &&\n        typeof value === 'object' &&\n        value.constructor === Object\n      ) {\n        newObject[property] = clone(value);\n      } else {\n        newObject[property] = value;\n      }\n    }\n  }\n\n  return newObject;\n}\n\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param object - The object to look up the getter function in its prototype chain.\n * @param prop - The property name for which to find the getter function.\n * @returns The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter<T extends Record<string, any>>(\n  object: T,\n  prop: string\n): ReturnType<typeof unapply<any>> | (() => null) {\n  while (object !== null) {\n    const desc = getOwnPropertyDescriptor(object, prop);\n\n    if (desc) {\n      if (desc.get) {\n        return unapply(desc.get);\n      }\n\n      if (typeof desc.value === 'function') {\n        return unapply(desc.value);\n      }\n    }\n\n    object = getPrototypeOf(object);\n  }\n\n  function fallbackValue(): null {\n    return null;\n  }\n\n  return fallbackValue;\n}\n\nexport {\n  // Array\n  arrayForEach,\n  arrayIndexOf,\n  arrayLastIndexOf,\n  arrayPop,\n  arrayPush,\n  arraySlice,\n  arraySplice,\n  // Object\n  entries,\n  freeze,\n  getPrototypeOf,\n  getOwnPropertyDescriptor,\n  isFrozen,\n  setPrototypeOf,\n  seal,\n  clone,\n  create,\n  objectHasOwnProperty,\n  // RegExp\n  regExpTest,\n  // String\n  stringIndexOf,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringToString,\n  stringTrim,\n  // Errors\n  typeErrorCreate,\n  // Other\n  lookupGetter,\n  addToSet,\n  // Reflect\n  unapply,\n  unconstruct,\n};\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'a',\n  'abbr',\n  'acronym',\n  'address',\n  'area',\n  'article',\n  'aside',\n  'audio',\n  'b',\n  'bdi',\n  'bdo',\n  'big',\n  'blink',\n  'blockquote',\n  'body',\n  'br',\n  'button',\n  'canvas',\n  'caption',\n  'center',\n  'cite',\n  'code',\n  'col',\n  'colgroup',\n  'content',\n  'data',\n  'datalist',\n  'dd',\n  'decorator',\n  'del',\n  'details',\n  'dfn',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'element',\n  'em',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'font',\n  'footer',\n  'form',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hgroup',\n  'hr',\n  'html',\n  'i',\n  'img',\n  'input',\n  'ins',\n  'kbd',\n  'label',\n  'legend',\n  'li',\n  'main',\n  'map',\n  'mark',\n  'marquee',\n  'menu',\n  'menuitem',\n  'meter',\n  'nav',\n  'nobr',\n  'ol',\n  'optgroup',\n  'option',\n  'output',\n  'p',\n  'picture',\n  'pre',\n  'progress',\n  'q',\n  'rp',\n  'rt',\n  'ruby',\n  's',\n  'samp',\n  'section',\n  'select',\n  'shadow',\n  'small',\n  'source',\n  'spacer',\n  'span',\n  'strike',\n  'strong',\n  'style',\n  'sub',\n  'summary',\n  'sup',\n  'table',\n  'tbody',\n  'td',\n  'template',\n  'textarea',\n  'tfoot',\n  'th',\n  'thead',\n  'time',\n  'tr',\n  'track',\n  'tt',\n  'u',\n  'ul',\n  'var',\n  'video',\n  'wbr',\n] as const);\n\nexport const svg = freeze([\n  'svg',\n  'a',\n  'altglyph',\n  'altglyphdef',\n  'altglyphitem',\n  'animatecolor',\n  'animatemotion',\n  'animatetransform',\n  'circle',\n  'clippath',\n  'defs',\n  'desc',\n  'ellipse',\n  'filter',\n  'font',\n  'g',\n  'glyph',\n  'glyphref',\n  'hkern',\n  'image',\n  'line',\n  'lineargradient',\n  'marker',\n  'mask',\n  'metadata',\n  'mpath',\n  'path',\n  'pattern',\n  'polygon',\n  'polyline',\n  'radialgradient',\n  'rect',\n  'stop',\n  'style',\n  'switch',\n  'symbol',\n  'text',\n  'textpath',\n  'title',\n  'tref',\n  'tspan',\n  'view',\n  'vkern',\n] as const);\n\nexport const svgFilters = freeze([\n  'feBlend',\n  'feColorMatrix',\n  'feComponentTransfer',\n  'feComposite',\n  'feConvolveMatrix',\n  'feDiffuseLighting',\n  'feDisplacementMap',\n  'feDistantLight',\n  'feDropShadow',\n  'feFlood',\n  'feFuncA',\n  'feFuncB',\n  'feFuncG',\n  'feFuncR',\n  'feGaussianBlur',\n  'feImage',\n  'feMerge',\n  'feMergeNode',\n  'feMorphology',\n  'feOffset',\n  'fePointLight',\n  'feSpecularLighting',\n  'feSpotLight',\n  'feTile',\n  'feTurbulence',\n] as const);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n  'animate',\n  'color-profile',\n  'cursor',\n  'discard',\n  'font-face',\n  'font-face-format',\n  'font-face-name',\n  'font-face-src',\n  'font-face-uri',\n  'foreignobject',\n  'hatch',\n  'hatchpath',\n  'mesh',\n  'meshgradient',\n  'meshpatch',\n  'meshrow',\n  'missing-glyph',\n  'script',\n  'set',\n  'solidcolor',\n  'unknown',\n  'use',\n] as const);\n\nexport const mathMl = freeze([\n  'math',\n  'menclose',\n  'merror',\n  'mfenced',\n  'mfrac',\n  'mglyph',\n  'mi',\n  'mlabeledtr',\n  'mmultiscripts',\n  'mn',\n  'mo',\n  'mover',\n  'mpadded',\n  'mphantom',\n  'mroot',\n  'mrow',\n  'ms',\n  'mspace',\n  'msqrt',\n  'mstyle',\n  'msub',\n  'msup',\n  'msubsup',\n  'mtable',\n  'mtd',\n  'mtext',\n  'mtr',\n  'munder',\n  'munderover',\n  'mprescripts',\n] as const);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n  'maction',\n  'maligngroup',\n  'malignmark',\n  'mlongdiv',\n  'mscarries',\n  'mscarry',\n  'msgroup',\n  'mstack',\n  'msline',\n  'msrow',\n  'semantics',\n  'annotation',\n  'annotation-xml',\n  'mprescripts',\n  'none',\n] as const);\n\nexport const text = freeze(['#text'] as const);\n","import { freeze } from './utils.js';\n\nexport const html = freeze([\n  'accept',\n  'action',\n  'align',\n  'alt',\n  'autocapitalize',\n  'autocomplete',\n  'autopictureinpicture',\n  'autoplay',\n  'background',\n  'bgcolor',\n  'border',\n  'capture',\n  'cellpadding',\n  'cellspacing',\n  'checked',\n  'cite',\n  'class',\n  'clear',\n  'color',\n  'cols',\n  'colspan',\n  'controls',\n  'controlslist',\n  'coords',\n  'crossorigin',\n  'datetime',\n  'decoding',\n  'default',\n  'dir',\n  'disabled',\n  'disablepictureinpicture',\n  'disableremoteplayback',\n  'download',\n  'draggable',\n  'enctype',\n  'enterkeyhint',\n  'face',\n  'for',\n  'headers',\n  'height',\n  'hidden',\n  'high',\n  'href',\n  'hreflang',\n  'id',\n  'inputmode',\n  'integrity',\n  'ismap',\n  'kind',\n  'label',\n  'lang',\n  'list',\n  'loading',\n  'loop',\n  'low',\n  'max',\n  'maxlength',\n  'media',\n  'method',\n  'min',\n  'minlength',\n  'multiple',\n  'muted',\n  'name',\n  'nonce',\n  'noshade',\n  'novalidate',\n  'nowrap',\n  'open',\n  'optimum',\n  'pattern',\n  'placeholder',\n  'playsinline',\n  'popover',\n  'popovertarget',\n  'popovertargetaction',\n  'poster',\n  'preload',\n  'pubdate',\n  'radiogroup',\n  'readonly',\n  'rel',\n  'required',\n  'rev',\n  'reversed',\n  'role',\n  'rows',\n  'rowspan',\n  'spellcheck',\n  'scope',\n  'selected',\n  'shape',\n  'size',\n  'sizes',\n  'span',\n  'srclang',\n  'start',\n  'src',\n  'srcset',\n  'step',\n  'style',\n  'summary',\n  'tabindex',\n  'title',\n  'translate',\n  'type',\n  'usemap',\n  'valign',\n  'value',\n  'width',\n  'wrap',\n  'xmlns',\n  'slot',\n] as const);\n\nexport const svg = freeze([\n  'accent-height',\n  'accumulate',\n  'additive',\n  'alignment-baseline',\n  'amplitude',\n  'ascent',\n  'attributename',\n  'attributetype',\n  'azimuth',\n  'basefrequency',\n  'baseline-shift',\n  'begin',\n  'bias',\n  'by',\n  'class',\n  'clip',\n  'clippathunits',\n  'clip-path',\n  'clip-rule',\n  'color',\n  'color-interpolation',\n  'color-interpolation-filters',\n  'color-profile',\n  'color-rendering',\n  'cx',\n  'cy',\n  'd',\n  'dx',\n  'dy',\n  'diffuseconstant',\n  'direction',\n  'display',\n  'divisor',\n  'dur',\n  'edgemode',\n  'elevation',\n  'end',\n  'exponent',\n  'fill',\n  'fill-opacity',\n  'fill-rule',\n  'filter',\n  'filterunits',\n  'flood-color',\n  'flood-opacity',\n  'font-family',\n  'font-size',\n  'font-size-adjust',\n  'font-stretch',\n  'font-style',\n  'font-variant',\n  'font-weight',\n  'fx',\n  'fy',\n  'g1',\n  'g2',\n  'glyph-name',\n  'glyphref',\n  'gradientunits',\n  'gradienttransform',\n  'height',\n  'href',\n  'id',\n  'image-rendering',\n  'in',\n  'in2',\n  'intercept',\n  'k',\n  'k1',\n  'k2',\n  'k3',\n  'k4',\n  'kerning',\n  'keypoints',\n  'keysplines',\n  'keytimes',\n  'lang',\n  'lengthadjust',\n  'letter-spacing',\n  'kernelmatrix',\n  'kernelunitlength',\n  'lighting-color',\n  'local',\n  'marker-end',\n  'marker-mid',\n  'marker-start',\n  'markerheight',\n  'markerunits',\n  'markerwidth',\n  'maskcontentunits',\n  'maskunits',\n  'max',\n  'mask',\n  'media',\n  'method',\n  'mode',\n  'min',\n  'name',\n  'numoctaves',\n  'offset',\n  'operator',\n  'opacity',\n  'order',\n  'orient',\n  'orientation',\n  'origin',\n  'overflow',\n  'paint-order',\n  'path',\n  'pathlength',\n  'patterncontentunits',\n  'patterntransform',\n  'patternunits',\n  'points',\n  'preservealpha',\n  'preserveaspectratio',\n  'primitiveunits',\n  'r',\n  'rx',\n  'ry',\n  'radius',\n  'refx',\n  'refy',\n  'repeatcount',\n  'repeatdur',\n  'restart',\n  'result',\n  'rotate',\n  'scale',\n  'seed',\n  'shape-rendering',\n  'slope',\n  'specularconstant',\n  'specularexponent',\n  'spreadmethod',\n  'startoffset',\n  'stddeviation',\n  'stitchtiles',\n  'stop-color',\n  'stop-opacity',\n  'stroke-dasharray',\n  'stroke-dashoffset',\n  'stroke-linecap',\n  'stroke-linejoin',\n  'stroke-miterlimit',\n  'stroke-opacity',\n  'stroke',\n  'stroke-width',\n  'style',\n  'surfacescale',\n  'systemlanguage',\n  'tabindex',\n  'tablevalues',\n  'targetx',\n  'targety',\n  'transform',\n  'transform-origin',\n  'text-anchor',\n  'text-decoration',\n  'text-rendering',\n  'textlength',\n  'type',\n  'u1',\n  'u2',\n  'unicode',\n  'values',\n  'viewbox',\n  'visibility',\n  'version',\n  'vert-adv-y',\n  'vert-origin-x',\n  'vert-origin-y',\n  'width',\n  'word-spacing',\n  'wrap',\n  'writing-mode',\n  'xchannelselector',\n  'ychannelselector',\n  'x',\n  'x1',\n  'x2',\n  'xmlns',\n  'y',\n  'y1',\n  'y2',\n  'z',\n  'zoomandpan',\n] as const);\n\nexport const mathMl = freeze([\n  'accent',\n  'accentunder',\n  'align',\n  'bevelled',\n  'close',\n  'columnsalign',\n  'columnlines',\n  'columnspan',\n  'denomalign',\n  'depth',\n  'dir',\n  'display',\n  'displaystyle',\n  'encoding',\n  'fence',\n  'frame',\n  'height',\n  'href',\n  'id',\n  'largeop',\n  'length',\n  'linethickness',\n  'lspace',\n  'lquote',\n  'mathbackground',\n  'mathcolor',\n  'mathsize',\n  'mathvariant',\n  'maxsize',\n  'minsize',\n  'movablelimits',\n  'notation',\n  'numalign',\n  'open',\n  'rowalign',\n  'rowlines',\n  'rowspacing',\n  'rowspan',\n  'rspace',\n  'rquote',\n  'scriptlevel',\n  'scriptminsize',\n  'scriptsizemultiplier',\n  'selection',\n  'separator',\n  'separators',\n  'stretchy',\n  'subscriptshift',\n  'supscriptshift',\n  'symmetric',\n  'voffset',\n  'width',\n  'xmlns',\n]);\n\nexport const xml = freeze([\n  'xlink:href',\n  'xml:id',\n  'xlink:title',\n  'xml:space',\n  'xmlns:xlink',\n] as const);\n","import { seal } from './utils.js';\n\n// eslint-disable-next-line unicorn/better-regex\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nexport const TMPLIT_EXPR = seal(/\\$\\{[\\w\\W]*/gm); // eslint-disable-line unicorn/better-regex\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]+$/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n  /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n  /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\nexport const CUSTOM_ELEMENT = seal(/^[a-z][.\\w]*(-[.\\w]+)+$/i);\n","/* eslint-disable @typescript-eslint/indent */\n\nimport type { TrustedHTML, TrustedTypesWindow } from 'trusted-types/lib';\nimport type { Config, UseProfilesConfig } from './config';\nimport * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n  addToSet,\n  clone,\n  entries,\n  freeze,\n  arrayForEach,\n  arrayLastIndexOf,\n  arrayPop,\n  arrayPush,\n  arraySplice,\n  stringMatch,\n  stringReplace,\n  stringToLowerCase,\n  stringToString,\n  stringIndexOf,\n  stringTrim,\n  regExpTest,\n  typeErrorCreate,\n  lookupGetter,\n  create,\n  objectHasOwnProperty,\n} from './utils.js';\n\nexport type { Config } from './config';\n\ndeclare const VERSION: string;\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst NODE_TYPE = {\n  element: 1,\n  attribute: 2,\n  text: 3,\n  cdataSection: 4,\n  entityReference: 5, // Deprecated\n  entityNode: 6, // Deprecated\n  progressingInstruction: 7,\n  comment: 8,\n  document: 9,\n  documentType: 10,\n  documentFragment: 11,\n  notation: 12, // Deprecated\n};\n\nconst getGlobal = function (): WindowLike {\n  return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param trustedTypes The policy factory.\n * @param purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function (\n  trustedTypes: TrustedTypePolicyFactory,\n  purifyHostElement: HTMLScriptElement\n) {\n  if (\n    typeof trustedTypes !== 'object' ||\n    typeof trustedTypes.createPolicy !== 'function'\n  ) {\n    return null;\n  }\n\n  // Allow the callers to control the unique policy name\n  // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n  // Policy creation with duplicate names throws in Trusted Types.\n  let suffix = null;\n  const ATTR_NAME = 'data-tt-policy-suffix';\n  if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n    suffix = purifyHostElement.getAttribute(ATTR_NAME);\n  }\n\n  const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n  try {\n    return trustedTypes.createPolicy(policyName, {\n      createHTML(html) {\n        return html;\n      },\n      createScriptURL(scriptUrl) {\n        return scriptUrl;\n      },\n    });\n  } catch (_) {\n    // Policy creation failed (most likely another DOMPurify script has\n    // already run). Skip creating the policy, as this will only cause errors\n    // if TT are enforced.\n    console.warn(\n      'TrustedTypes policy ' + policyName + ' could not be created.'\n    );\n    return null;\n  }\n};\n\nconst _createHooksMap = function (): HooksMap {\n  return {\n    afterSanitizeAttributes: [],\n    afterSanitizeElements: [],\n    afterSanitizeShadowDOM: [],\n    beforeSanitizeAttributes: [],\n    beforeSanitizeElements: [],\n    beforeSanitizeShadowDOM: [],\n    uponSanitizeAttribute: [],\n    uponSanitizeElement: [],\n    uponSanitizeShadowNode: [],\n  };\n};\n\nfunction createDOMPurify(window: WindowLike = getGlobal()): DOMPurify {\n  const DOMPurify: DOMPurify = (root: WindowLike) => createDOMPurify(root);\n\n  DOMPurify.version = VERSION;\n\n  DOMPurify.removed = [];\n\n  if (\n    !window ||\n    !window.document ||\n    window.document.nodeType !== NODE_TYPE.document ||\n    !window.Element\n  ) {\n    // Not running in a browser, provide a factory function\n    // so that you can pass your own Window\n    DOMPurify.isSupported = false;\n\n    return DOMPurify;\n  }\n\n  let { document } = window;\n\n  const originalDocument = document;\n  const currentScript: HTMLScriptElement =\n    originalDocument.currentScript as HTMLScriptElement;\n  const {\n    DocumentFragment,\n    HTMLTemplateElement,\n    Node,\n    Element,\n    NodeFilter,\n    NamedNodeMap = window.NamedNodeMap || (window as any).MozNamedAttrMap,\n    HTMLFormElement,\n    DOMParser,\n    trustedTypes,\n  } = window;\n\n  const ElementPrototype = Element.prototype;\n\n  const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n  const remove = lookupGetter(ElementPrototype, 'remove');\n  const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n  const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n  const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n  // As per issue #47, the web-components registry is inherited by a\n  // new document created via createHTMLDocument. As per the spec\n  // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n  // a new empty registry is used when creating a template contents owner\n  // document, so we use that as our parent document to ensure nothing\n  // is inherited.\n  if (typeof HTMLTemplateElement === 'function') {\n    const template = document.createElement('template');\n    if (template.content && template.content.ownerDocument) {\n      document = template.content.ownerDocument;\n    }\n  }\n\n  let trustedTypesPolicy;\n  let emptyHTML = '';\n\n  const {\n    implementation,\n    createNodeIterator,\n    createDocumentFragment,\n    getElementsByTagName,\n  } = document;\n  const { importNode } = originalDocument;\n\n  let hooks = _createHooksMap();\n\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  DOMPurify.isSupported =\n    typeof entries === 'function' &&\n    typeof getParentNode === 'function' &&\n    implementation &&\n    implementation.createHTMLDocument !== undefined;\n\n  const {\n    MUSTACHE_EXPR,\n    ERB_EXPR,\n    TMPLIT_EXPR,\n    DATA_ATTR,\n    ARIA_ATTR,\n    IS_SCRIPT_OR_DATA,\n    ATTR_WHITESPACE,\n    CUSTOM_ELEMENT,\n  } = EXPRESSIONS;\n\n  let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n  /**\n   * We consider the elements and attributes below to be safe. Ideally\n   * don't add any new ones but feel free to remove unwanted ones.\n   */\n\n  /* allowed element names */\n  let ALLOWED_TAGS = null;\n  const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n    ...TAGS.html,\n    ...TAGS.svg,\n    ...TAGS.svgFilters,\n    ...TAGS.mathMl,\n    ...TAGS.text,\n  ]);\n\n  /* Allowed attribute names */\n  let ALLOWED_ATTR = null;\n  const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n    ...ATTRS.html,\n    ...ATTRS.svg,\n    ...ATTRS.mathMl,\n    ...ATTRS.xml,\n  ]);\n\n  /*\n   * Configure how DOMPurify should handle custom elements and their attributes as well as customized built-in elements.\n   * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n   * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n   * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n   */\n  let CUSTOM_ELEMENT_HANDLING = Object.seal(\n    create(null, {\n      tagNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      attributeNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null,\n      },\n      allowCustomizedBuiltInElements: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: false,\n      },\n    })\n  );\n\n  /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n  let FORBID_TAGS = null;\n\n  /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n  let FORBID_ATTR = null;\n\n  /* Decide if ARIA attributes are okay */\n  let ALLOW_ARIA_ATTR = true;\n\n  /* Decide if custom data attributes are okay */\n  let ALLOW_DATA_ATTR = true;\n\n  /* Decide if unknown protocols are okay */\n  let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n  /* Decide if self-closing tags in attributes are allowed.\n   * Usually removed due to a mXSS issue in jQuery 3.0 */\n  let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n  /* Output should be safe for common template engines.\n   * This means, DOMPurify removes data attributes, mustaches and ERB\n   */\n  let SAFE_FOR_TEMPLATES = false;\n\n  /* Output should be safe even for XML used within HTML and alike.\n   * This means, DOMPurify removes comments when containing risky content.\n   */\n  let SAFE_FOR_XML = true;\n\n  /* Decide if document with <html>... should be returned */\n  let WHOLE_DOCUMENT = false;\n\n  /* Track whether config is already set on this instance of DOMPurify. */\n  let SET_CONFIG = false;\n\n  /* Decide if all elements (e.g. style, script) must be children of\n   * document.body. By default, browsers might move them to document.head */\n  let FORCE_BODY = false;\n\n  /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n   * string (or a TrustedHTML object if Trusted Types are supported).\n   * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n   */\n  let RETURN_DOM = false;\n\n  /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n   * string  (or a TrustedHTML object if Trusted Types are supported) */\n  let RETURN_DOM_FRAGMENT = false;\n\n  /* Try to return a Trusted Type object instead of a string, return a string in\n   * case Trusted Types are not supported  */\n  let RETURN_TRUSTED_TYPE = false;\n\n  /* Output should be free from DOM clobbering attacks?\n   * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n   */\n  let SANITIZE_DOM = true;\n\n  /* Achieve full DOM Clobbering protection by isolating the namespace of named\n   * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n   *\n   * HTML/DOM spec rules that enable DOM Clobbering:\n   *   - Named Access on Window (§7.3.3)\n   *   - DOM Tree Accessors (§3.1.5)\n   *   - Form Element Parent-Child Relations (§4.10.3)\n   *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n   *   - HTMLCollection (§4.2.10.2)\n   *\n   * Namespace isolation is implemented by prefixing `id` and `name` attributes\n   * with a constant string, i.e., `user-content-`\n   */\n  let SANITIZE_NAMED_PROPS = false;\n  const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n  /* Keep element content when removing element? */\n  let KEEP_CONTENT = true;\n\n  /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n   * of importing it into a new Document and returning a sanitized copy */\n  let IN_PLACE = false;\n\n  /* Allow usage of profiles like html, svg and mathMl */\n  let USE_PROFILES: UseProfilesConfig | false = {};\n\n  /* Tags to ignore content of when KEEP_CONTENT is true */\n  let FORBID_CONTENTS = null;\n  const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n    'annotation-xml',\n    'audio',\n    'colgroup',\n    'desc',\n    'foreignobject',\n    'head',\n    'iframe',\n    'math',\n    'mi',\n    'mn',\n    'mo',\n    'ms',\n    'mtext',\n    'noembed',\n    'noframes',\n    'noscript',\n    'plaintext',\n    'script',\n    'style',\n    'svg',\n    'template',\n    'thead',\n    'title',\n    'video',\n    'xmp',\n  ]);\n\n  /* Tags that are safe for data: URIs */\n  let DATA_URI_TAGS = null;\n  const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n    'audio',\n    'video',\n    'img',\n    'source',\n    'image',\n    'track',\n  ]);\n\n  /* Attributes safe for values like \"javascript:\" */\n  let URI_SAFE_ATTRIBUTES = null;\n  const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n    'alt',\n    'class',\n    'for',\n    'id',\n    'label',\n    'name',\n    'pattern',\n    'placeholder',\n    'role',\n    'summary',\n    'title',\n    'value',\n    'style',\n    'xmlns',\n  ]);\n\n  const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n  const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n  const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n  /* Document namespace */\n  let NAMESPACE = HTML_NAMESPACE;\n  let IS_EMPTY_INPUT = false;\n\n  /* Allowed XHTML+XML namespaces */\n  let ALLOWED_NAMESPACES = null;\n  const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n    {},\n    [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n    stringToString\n  );\n\n  let MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n    'mi',\n    'mo',\n    'mn',\n    'ms',\n    'mtext',\n  ]);\n\n  let HTML_INTEGRATION_POINTS = addToSet({}, ['annotation-xml']);\n\n  // Certain elements are allowed in both SVG and HTML\n  // namespace. We need to specify them explicitly\n  // so that they don't get erroneously deleted from\n  // HTML namespace.\n  const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n    'title',\n    'style',\n    'font',\n    'a',\n    'script',\n  ]);\n\n  /* Parsing of strict XHTML documents */\n  let PARSER_MEDIA_TYPE: null | DOMParserSupportedType = null;\n  const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n  const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n  let transformCaseFunc: null | Parameters<typeof addToSet>[2] = null;\n\n  /* Keep a reference to config to pass to hooks */\n  let CONFIG: Config | null = null;\n\n  /* Ideally, do not touch anything below this line */\n  /* ______________________________________________ */\n\n  const formElement = document.createElement('form');\n\n  const isRegexOrFunction = function (\n    testValue: unknown\n  ): testValue is Function | RegExp {\n    return testValue instanceof RegExp || testValue instanceof Function;\n  };\n\n  /**\n   * _parseConfig\n   *\n   * @param cfg optional config literal\n   */\n  // eslint-disable-next-line complexity\n  const _parseConfig = function (cfg: Config = {}): void {\n    if (CONFIG && CONFIG === cfg) {\n      return;\n    }\n\n    /* Shield configuration object from tampering */\n    if (!cfg || typeof cfg !== 'object') {\n      cfg = {};\n    }\n\n    /* Shield configuration object from prototype pollution */\n    cfg = clone(cfg);\n\n    PARSER_MEDIA_TYPE =\n      // eslint-disable-next-line unicorn/prefer-includes\n      SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n        ? DEFAULT_PARSER_MEDIA_TYPE\n        : cfg.PARSER_MEDIA_TYPE;\n\n    // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n    transformCaseFunc =\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n        ? stringToString\n        : stringToLowerCase;\n\n    /* Set configuration parameters */\n    ALLOWED_TAGS = objectHasOwnProperty(cfg, 'ALLOWED_TAGS')\n      ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n      : DEFAULT_ALLOWED_TAGS;\n    ALLOWED_ATTR = objectHasOwnProperty(cfg, 'ALLOWED_ATTR')\n      ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n      : DEFAULT_ALLOWED_ATTR;\n    ALLOWED_NAMESPACES = objectHasOwnProperty(cfg, 'ALLOWED_NAMESPACES')\n      ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n      : DEFAULT_ALLOWED_NAMESPACES;\n    URI_SAFE_ATTRIBUTES = objectHasOwnProperty(cfg, 'ADD_URI_SAFE_ATTR')\n      ? addToSet(\n          clone(DEFAULT_URI_SAFE_ATTRIBUTES),\n          cfg.ADD_URI_SAFE_ATTR,\n          transformCaseFunc\n        )\n      : DEFAULT_URI_SAFE_ATTRIBUTES;\n    DATA_URI_TAGS = objectHasOwnProperty(cfg, 'ADD_DATA_URI_TAGS')\n      ? addToSet(\n          clone(DEFAULT_DATA_URI_TAGS),\n          cfg.ADD_DATA_URI_TAGS,\n          transformCaseFunc\n        )\n      : DEFAULT_DATA_URI_TAGS;\n    FORBID_CONTENTS = objectHasOwnProperty(cfg, 'FORBID_CONTENTS')\n      ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n      : DEFAULT_FORBID_CONTENTS;\n    FORBID_TAGS = objectHasOwnProperty(cfg, 'FORBID_TAGS')\n      ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n      : clone({});\n    FORBID_ATTR = objectHasOwnProperty(cfg, 'FORBID_ATTR')\n      ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n      : clone({});\n    USE_PROFILES = objectHasOwnProperty(cfg, 'USE_PROFILES')\n      ? cfg.USE_PROFILES\n      : false;\n    ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n    ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n    ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n    ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n    SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n    SAFE_FOR_XML = cfg.SAFE_FOR_XML !== false; // Default true\n    WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n    RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n    RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n    RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n    FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n    SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n    SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n    KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n    IN_PLACE = cfg.IN_PLACE || false; // Default false\n    IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || EXPRESSIONS.IS_ALLOWED_URI;\n    NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n    MATHML_TEXT_INTEGRATION_POINTS =\n      cfg.MATHML_TEXT_INTEGRATION_POINTS || MATHML_TEXT_INTEGRATION_POINTS;\n    HTML_INTEGRATION_POINTS =\n      cfg.HTML_INTEGRATION_POINTS || HTML_INTEGRATION_POINTS;\n\n    CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n    if (\n      cfg.CUSTOM_ELEMENT_HANDLING &&\n      isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)\n    ) {\n      CUSTOM_ELEMENT_HANDLING.tagNameCheck =\n        cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n    }\n\n    if (\n      cfg.CUSTOM_ELEMENT_HANDLING &&\n      isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)\n    ) {\n      CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n        cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n    }\n\n    if (\n      cfg.CUSTOM_ELEMENT_HANDLING &&\n      typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===\n        'boolean'\n    ) {\n      CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n        cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n    }\n\n    if (SAFE_FOR_TEMPLATES) {\n      ALLOW_DATA_ATTR = false;\n    }\n\n    if (RETURN_DOM_FRAGMENT) {\n      RETURN_DOM = true;\n    }\n\n    /* Parse profile info */\n    if (USE_PROFILES) {\n      ALLOWED_TAGS = addToSet({}, TAGS.text);\n      ALLOWED_ATTR = [];\n      if (USE_PROFILES.html === true) {\n        addToSet(ALLOWED_TAGS, TAGS.html);\n        addToSet(ALLOWED_ATTR, ATTRS.html);\n      }\n\n      if (USE_PROFILES.svg === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.svgFilters === true) {\n        addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n        addToSet(ALLOWED_ATTR, ATTRS.svg);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n\n      if (USE_PROFILES.mathMl === true) {\n        addToSet(ALLOWED_TAGS, TAGS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n        addToSet(ALLOWED_ATTR, ATTRS.xml);\n      }\n    }\n\n    /* Merge configuration parameters */\n    if (cfg.ADD_TAGS) {\n      if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n        ALLOWED_TAGS = clone(ALLOWED_TAGS);\n      }\n\n      addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n    }\n\n    if (cfg.ADD_ATTR) {\n      if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n        ALLOWED_ATTR = clone(ALLOWED_ATTR);\n      }\n\n      addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n    }\n\n    if (cfg.ADD_URI_SAFE_ATTR) {\n      addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n    }\n\n    if (cfg.FORBID_CONTENTS) {\n      if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n        FORBID_CONTENTS = clone(FORBID_CONTENTS);\n      }\n\n      addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n    }\n\n    /* Add #text in case KEEP_CONTENT is set to true */\n    if (KEEP_CONTENT) {\n      ALLOWED_TAGS['#text'] = true;\n    }\n\n    /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n    if (WHOLE_DOCUMENT) {\n      addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n    }\n\n    /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n    if (ALLOWED_TAGS.table) {\n      addToSet(ALLOWED_TAGS, ['tbody']);\n      delete FORBID_TAGS.tbody;\n    }\n\n    if (cfg.TRUSTED_TYPES_POLICY) {\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n        throw typeErrorCreate(\n          'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\n        );\n      }\n\n      if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n        throw typeErrorCreate(\n          'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\n        );\n      }\n\n      // Overwrite existing TrustedTypes policy.\n      trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n      // Sign local variables required by `sanitize`.\n      emptyHTML = trustedTypesPolicy.createHTML('');\n    } else {\n      // Uninitialized policy, attempt to initialize the internal dompurify policy.\n      if (trustedTypesPolicy === undefined) {\n        trustedTypesPolicy = _createTrustedTypesPolicy(\n          trustedTypes,\n          currentScript\n        );\n      }\n\n      // If creating the internal policy succeeded sign internal variables.\n      if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n        emptyHTML = trustedTypesPolicy.createHTML('');\n      }\n    }\n\n    // Prevent further manipulation of configuration.\n    // Not available in IE8, Safari 5, etc.\n    if (freeze) {\n      freeze(cfg);\n    }\n\n    CONFIG = cfg;\n  };\n\n  /* Keep track of all possible SVG and MathML tags\n   * so that we can perform the namespace checks\n   * correctly. */\n  const ALL_SVG_TAGS = addToSet({}, [\n    ...TAGS.svg,\n    ...TAGS.svgFilters,\n    ...TAGS.svgDisallowed,\n  ]);\n  const ALL_MATHML_TAGS = addToSet({}, [\n    ...TAGS.mathMl,\n    ...TAGS.mathMlDisallowed,\n  ]);\n\n  /**\n   * @param element a DOM element whose namespace is being checked\n   * @returns Return false if the element has a\n   *  namespace that a spec-compliant parser would never\n   *  return. Return true otherwise.\n   */\n  const _checkValidNamespace = function (element: Element): boolean {\n    let parent = getParentNode(element);\n\n    // In JSDOM, if we're inside shadow DOM, then parentNode\n    // can be null. We just simulate parent in this case.\n    if (!parent || !parent.tagName) {\n      parent = {\n        namespaceURI: NAMESPACE,\n        tagName: 'template',\n      };\n    }\n\n    const tagName = stringToLowerCase(element.tagName);\n    const parentTagName = stringToLowerCase(parent.tagName);\n\n    if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n      return false;\n    }\n\n    if (element.namespaceURI === SVG_NAMESPACE) {\n      // The only way to switch from HTML namespace to SVG\n      // is via <svg>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'svg';\n      }\n\n      // The only way to switch from MathML to SVG is via`\n      // svg if parent is either <annotation-xml> or MathML\n      // text integration points.\n      if (parent.namespaceURI === MATHML_NAMESPACE) {\n        return (\n          tagName === 'svg' &&\n          (parentTagName === 'annotation-xml' ||\n            MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n        );\n      }\n\n      // We only allow elements that are defined in SVG\n      // spec. All others are disallowed in SVG namespace.\n      return Boolean(ALL_SVG_TAGS[tagName]);\n    }\n\n    if (element.namespaceURI === MATHML_NAMESPACE) {\n      // The only way to switch from HTML namespace to MathML\n      // is via <math>. If it happens via any other tag, then\n      // it should be killed.\n      if (parent.namespaceURI === HTML_NAMESPACE) {\n        return tagName === 'math';\n      }\n\n      // The only way to switch from SVG to MathML is via\n      // <math> and HTML integration points\n      if (parent.namespaceURI === SVG_NAMESPACE) {\n        return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n      }\n\n      // We only allow elements that are defined in MathML\n      // spec. All others are disallowed in MathML namespace.\n      return Boolean(ALL_MATHML_TAGS[tagName]);\n    }\n\n    if (element.namespaceURI === HTML_NAMESPACE) {\n      // The only way to switch from SVG to HTML is via\n      // HTML integration points, and from MathML to HTML\n      // is via MathML text integration points\n      if (\n        parent.namespaceURI === SVG_NAMESPACE &&\n        !HTML_INTEGRATION_POINTS[parentTagName]\n      ) {\n        return false;\n      }\n\n      if (\n        parent.namespaceURI === MATHML_NAMESPACE &&\n        !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n      ) {\n        return false;\n      }\n\n      // We disallow tags that are specific for MathML\n      // or SVG and should never appear in HTML namespace\n      return (\n        !ALL_MATHML_TAGS[tagName] &&\n        (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n      );\n    }\n\n    // For XHTML and XML documents that support custom namespaces\n    if (\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n      ALLOWED_NAMESPACES[element.namespaceURI]\n    ) {\n      return true;\n    }\n\n    // The code should never reach this place (this means\n    // that the element somehow got namespace that is not\n    // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n    // Return false just in case.\n    return false;\n  };\n\n  /**\n   * _forceRemove\n   *\n   * @param node a DOM node\n   */\n  const _forceRemove = function (node: Node): void {\n    arrayPush(DOMPurify.removed, { element: node });\n\n    try {\n      // eslint-disable-next-line unicorn/prefer-dom-node-remove\n      getParentNode(node).removeChild(node);\n    } catch (_) {\n      remove(node);\n    }\n  };\n\n  /**\n   * _removeAttribute\n   *\n   * @param name an Attribute name\n   * @param element a DOM node\n   */\n  const _removeAttribute = function (name: string, element: Element): void {\n    try {\n      arrayPush(DOMPurify.removed, {\n        attribute: element.getAttributeNode(name),\n        from: element,\n      });\n    } catch (_) {\n      arrayPush(DOMPurify.removed, {\n        attribute: null,\n        from: element,\n      });\n    }\n\n    element.removeAttribute(name);\n\n    // We void attribute values for unremovable \"is\" attributes\n    if (name === 'is') {\n      if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n        try {\n          _forceRemove(element);\n        } catch (_) {}\n      } else {\n        try {\n          element.setAttribute(name, '');\n        } catch (_) {}\n      }\n    }\n  };\n\n  /**\n   * _initDocument\n   *\n   * @param dirty - a string of dirty markup\n   * @return a DOM, filled with the dirty markup\n   */\n  const _initDocument = function (dirty: string): Document {\n    /* Create a HTML document */\n    let doc = null;\n    let leadingWhitespace = null;\n\n    if (FORCE_BODY) {\n      dirty = '<remove></remove>' + dirty;\n    } else {\n      /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n      const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n      leadingWhitespace = matches && matches[0];\n    }\n\n    if (\n      PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n      NAMESPACE === HTML_NAMESPACE\n    ) {\n      // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n      dirty =\n        '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' +\n        dirty +\n        '</body></html>';\n    }\n\n    const dirtyPayload = trustedTypesPolicy\n      ? trustedTypesPolicy.createHTML(dirty)\n      : dirty;\n    /*\n     * Use the DOMParser API by default, fallback later if needs be\n     * DOMParser not work for svg when has multiple root element.\n     */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      try {\n        doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n      } catch (_) {}\n    }\n\n    /* Use createHTMLDocument in case DOMParser is not available */\n    if (!doc || !doc.documentElement) {\n      doc = implementation.createDocument(NAMESPACE, 'template', null);\n      try {\n        doc.documentElement.innerHTML = IS_EMPTY_INPUT\n          ? emptyHTML\n          : dirtyPayload;\n      } catch (_) {\n        // Syntax error if dirtyPayload is invalid xml\n      }\n    }\n\n    const body = doc.body || doc.documentElement;\n\n    if (dirty && leadingWhitespace) {\n      body.insertBefore(\n        document.createTextNode(leadingWhitespace),\n        body.childNodes[0] || null\n      );\n    }\n\n    /* Work on whole document or just its body */\n    if (NAMESPACE === HTML_NAMESPACE) {\n      return getElementsByTagName.call(\n        doc,\n        WHOLE_DOCUMENT ? 'html' : 'body'\n      )[0];\n    }\n\n    return WHOLE_DOCUMENT ? doc.documentElement : body;\n  };\n\n  /**\n   * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n   *\n   * @param root The root element or node to start traversing on.\n   * @return The created NodeIterator\n   */\n  const _createNodeIterator = function (root: Node): NodeIterator {\n    return createNodeIterator.call(\n      root.ownerDocument || root,\n      root,\n      // eslint-disable-next-line no-bitwise\n      NodeFilter.SHOW_ELEMENT |\n        NodeFilter.SHOW_COMMENT |\n        NodeFilter.SHOW_TEXT |\n        NodeFilter.SHOW_PROCESSING_INSTRUCTION |\n        NodeFilter.SHOW_CDATA_SECTION,\n      null\n    );\n  };\n\n  /**\n   * _isClobbered\n   *\n   * @param element element to check for clobbering attacks\n   * @return true if clobbered, false if safe\n   */\n  const _isClobbered = function (element: Element): boolean {\n    return (\n      element instanceof HTMLFormElement &&\n      (typeof element.nodeName !== 'string' ||\n        typeof element.textContent !== 'string' ||\n        typeof element.removeChild !== 'function' ||\n        !(element.attributes instanceof NamedNodeMap) ||\n        typeof element.removeAttribute !== 'function' ||\n        typeof element.setAttribute !== 'function' ||\n        typeof element.namespaceURI !== 'string' ||\n        typeof element.insertBefore !== 'function' ||\n        typeof element.hasChildNodes !== 'function')\n    );\n  };\n\n  /**\n   * Checks whether the given object is a DOM node.\n   *\n   * @param value object to check whether it's a DOM node\n   * @return true is object is a DOM node\n   */\n  const _isNode = function (value: unknown): value is Node {\n    return typeof Node === 'function' && value instanceof Node;\n  };\n\n  function _executeHooks<\n    T extends\n      | NodeHook\n      | ElementHook\n      | DocumentFragmentHook\n      | UponSanitizeElementHook\n      | UponSanitizeAttributeHook\n  >(hooks: T[], currentNode: Parameters<T>[0], data: Parameters<T>[1]): void {\n    arrayForEach(hooks, (hook) => {\n      hook.call(DOMPurify, currentNode, data, CONFIG);\n    });\n  }\n\n  /**\n   * _sanitizeElements\n   *\n   * @protect nodeName\n   * @protect textContent\n   * @protect removeChild\n   * @param currentNode to check for permission to exist\n   * @return true if node was killed, false if left alive\n   */\n  const _sanitizeElements = function (currentNode: any): boolean {\n    let content = null;\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeElements, currentNode, null);\n\n    /* Check if element is clobbered or can clobber */\n    if (_isClobbered(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Now let's check the element's type and name */\n    const tagName = transformCaseFunc(currentNode.nodeName);\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.uponSanitizeElement, currentNode, {\n      tagName,\n      allowedTags: ALLOWED_TAGS,\n    });\n\n    /* Detect mXSS attempts abusing namespace confusion */\n    if (\n      SAFE_FOR_XML &&\n      currentNode.hasChildNodes() &&\n      !_isNode(currentNode.firstElementChild) &&\n      regExpTest(/<[/\\w!]/g, currentNode.innerHTML) &&\n      regExpTest(/<[/\\w!]/g, currentNode.textContent)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove any occurrence of processing instructions */\n    if (currentNode.nodeType === NODE_TYPE.progressingInstruction) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove any kind of possibly harmful comments */\n    if (\n      SAFE_FOR_XML &&\n      currentNode.nodeType === NODE_TYPE.comment &&\n      regExpTest(/<[/\\w]/g, currentNode.data)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Remove element if anything forbids its presence */\n    if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n      /* Check if we have a custom element to handle */\n      if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n        if (\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n          regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n        ) {\n          return false;\n        }\n\n        if (\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n          CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\n        ) {\n          return false;\n        }\n      }\n\n      /* Keep content except for bad-listed elements */\n      if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n        const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n        const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n        if (childNodes && parentNode) {\n          const childCount = childNodes.length;\n\n          for (let i = childCount - 1; i >= 0; --i) {\n            const childClone = cloneNode(childNodes[i], true);\n            childClone.__removalCount = (currentNode.__removalCount || 0) + 1;\n            parentNode.insertBefore(childClone, getNextSibling(currentNode));\n          }\n        }\n      }\n\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Check whether element has a valid namespace */\n    if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Make sure that older browsers don't get fallback-tag mXSS */\n    if (\n      (tagName === 'noscript' ||\n        tagName === 'noembed' ||\n        tagName === 'noframes') &&\n      regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)\n    ) {\n      _forceRemove(currentNode);\n      return true;\n    }\n\n    /* Sanitize element content to be template-safe */\n    if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) {\n      /* Get the element's text content */\n      content = currentNode.textContent;\n\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n        content = stringReplace(content, expr, ' ');\n      });\n\n      if (currentNode.textContent !== content) {\n        arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n        currentNode.textContent = content;\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeElements, currentNode, null);\n\n    return false;\n  };\n\n  /**\n   * _isValidAttribute\n   *\n   * @param lcTag Lowercase tag name of containing element.\n   * @param lcName Lowercase attribute name.\n   * @param value Attribute value.\n   * @return Returns true if `value` is valid, otherwise false.\n   */\n  // eslint-disable-next-line complexity\n  const _isValidAttribute = function (\n    lcTag: string,\n    lcName: string,\n    value: string\n  ): boolean {\n    /* Make sure attribute cannot clobber */\n    if (\n      SANITIZE_DOM &&\n      (lcName === 'id' || lcName === 'name') &&\n      (value in document || value in formElement)\n    ) {\n      return false;\n    }\n\n    /* Allow valid data-* attributes: At least one character after \"-\"\n        (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n        XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n        We don't need to check the value; it's always URI safe. */\n    if (\n      ALLOW_DATA_ATTR &&\n      !FORBID_ATTR[lcName] &&\n      regExpTest(DATA_ATTR, lcName)\n    ) {\n      // This attribute is safe\n    } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n      // This attribute is safe\n      /* Otherwise, check the name is permitted */\n    } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n      if (\n        // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n        // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n        // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n        (_isBasicCustomElement(lcTag) &&\n          ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\n            (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\n          ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\n            (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)))) ||\n        // Alternative, second condition checks if it's an `is`-attribute, AND\n        // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n        (lcName === 'is' &&\n          CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n          ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n            regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\n            (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n              CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\n      ) {\n        // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\n        // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\n      } else {\n        return false;\n      }\n      /* Check value is safe. First, is attr inert? If so, is safe */\n    } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n      // This attribute is safe\n      /* Check no script, data or unknown possibly unsafe URI\n        unless we know URI values are safe for that attribute */\n    } else if (\n      regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n    ) {\n      // This attribute is safe\n      /* Keep image data URIs alive if src/xlink:href is allowed */\n      /* Further prevent gadget XSS for dynamically built script tags */\n    } else if (\n      (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n      lcTag !== 'script' &&\n      stringIndexOf(value, 'data:') === 0 &&\n      DATA_URI_TAGS[lcTag]\n    ) {\n      // This attribute is safe\n      /* Allow unknown protocols: This provides support for links that\n        are handled by protocol handlers which may be unknown ahead of\n        time, e.g. fb:, spotify: */\n    } else if (\n      ALLOW_UNKNOWN_PROTOCOLS &&\n      !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n    ) {\n      // This attribute is safe\n      /* Check for binary attributes */\n    } else if (value) {\n      return false;\n    } else {\n      // Binary attributes are safe at this point\n      /* Anything else, presume unsafe, do not add it back */\n    }\n\n    return true;\n  };\n\n  /**\n   * _isBasicCustomElement\n   * checks if at least one dash is included in tagName, and it's not the first char\n   * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n   *\n   * @param tagName name of the tag of the node to sanitize\n   * @returns Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n   */\n  const _isBasicCustomElement = function (tagName: string): RegExpMatchArray {\n    return tagName !== 'annotation-xml' && stringMatch(tagName, CUSTOM_ELEMENT);\n  };\n\n  /**\n   * _sanitizeAttributes\n   *\n   * @protect attributes\n   * @protect nodeName\n   * @protect removeAttribute\n   * @protect setAttribute\n   *\n   * @param currentNode to sanitize\n   */\n  const _sanitizeAttributes = function (currentNode: Element): void {\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeAttributes, currentNode, null);\n\n    const { attributes } = currentNode;\n\n    /* Check if we have attributes; if not we might have a text node */\n    if (!attributes || _isClobbered(currentNode)) {\n      return;\n    }\n\n    const hookEvent = {\n      attrName: '',\n      attrValue: '',\n      keepAttr: true,\n      allowedAttributes: ALLOWED_ATTR,\n      forceKeepAttr: undefined,\n    };\n    let l = attributes.length;\n\n    /* Go backwards over all attributes; safely remove bad ones */\n    while (l--) {\n      const attr = attributes[l];\n      const { name, namespaceURI, value: attrValue } = attr;\n      const lcName = transformCaseFunc(name);\n\n      const initValue = attrValue;\n      let value = name === 'value' ? initValue : stringTrim(initValue);\n\n      /* Execute a hook if present */\n      hookEvent.attrName = lcName;\n      hookEvent.attrValue = value;\n      hookEvent.keepAttr = true;\n      hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n      _executeHooks(hooks.uponSanitizeAttribute, currentNode, hookEvent);\n      value = hookEvent.attrValue;\n\n      /* Full DOM Clobbering protection via namespace isolation,\n       * Prefix id and name attributes with `user-content-`\n       */\n      if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n        // Remove the attribute with this value\n        _removeAttribute(name, currentNode);\n\n        // Prefix the value and later re-create the attribute with the sanitized value\n        value = SANITIZE_NAMED_PROPS_PREFIX + value;\n      }\n\n      /* Work around a security issue with comments inside attributes */\n      if (SAFE_FOR_XML && regExpTest(/((--!?|])>)|<\\/(style|title)/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Did the hooks approve of the attribute? */\n      if (hookEvent.forceKeepAttr) {\n        continue;\n      }\n\n      /* Did the hooks approve of the attribute? */\n      if (!hookEvent.keepAttr) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Work around a security issue in jQuery 3.0 */\n      if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Sanitize attribute content to be template-safe */\n      if (SAFE_FOR_TEMPLATES) {\n        arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n          value = stringReplace(value, expr, ' ');\n        });\n      }\n\n      /* Is `value` valid for this attribute? */\n      const lcTag = transformCaseFunc(currentNode.nodeName);\n      if (!_isValidAttribute(lcTag, lcName, value)) {\n        _removeAttribute(name, currentNode);\n        continue;\n      }\n\n      /* Handle attributes that require Trusted Types */\n      if (\n        trustedTypesPolicy &&\n        typeof trustedTypes === 'object' &&\n        typeof trustedTypes.getAttributeType === 'function'\n      ) {\n        if (namespaceURI) {\n          /* Namespaces are not yet supported, see https://bugs.chromium.org/p/chromium/issues/detail?id=1305293 */\n        } else {\n          switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n            case 'TrustedHTML': {\n              value = trustedTypesPolicy.createHTML(value);\n              break;\n            }\n\n            case 'TrustedScriptURL': {\n              value = trustedTypesPolicy.createScriptURL(value);\n              break;\n            }\n\n            default: {\n              break;\n            }\n          }\n        }\n      }\n\n      /* Handle invalid data-* attribute set by try-catching it */\n      if (value !== initValue) {\n        try {\n          if (namespaceURI) {\n            currentNode.setAttributeNS(namespaceURI, name, value);\n          } else {\n            /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n            currentNode.setAttribute(name, value);\n          }\n\n          if (_isClobbered(currentNode)) {\n            _forceRemove(currentNode);\n          } else {\n            arrayPop(DOMPurify.removed);\n          }\n        } catch (_) {\n          _removeAttribute(name, currentNode);\n        }\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeAttributes, currentNode, null);\n  };\n\n  /**\n   * _sanitizeShadowDOM\n   *\n   * @param fragment to iterate over recursively\n   */\n  const _sanitizeShadowDOM = function (fragment: DocumentFragment): void {\n    let shadowNode = null;\n    const shadowIterator = _createNodeIterator(fragment);\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.beforeSanitizeShadowDOM, fragment, null);\n\n    while ((shadowNode = shadowIterator.nextNode())) {\n      /* Execute a hook if present */\n      _executeHooks(hooks.uponSanitizeShadowNode, shadowNode, null);\n\n      /* Sanitize tags and elements */\n      _sanitizeElements(shadowNode);\n\n      /* Check attributes next */\n      _sanitizeAttributes(shadowNode);\n\n      /* Deep shadow DOM detected */\n      if (shadowNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(shadowNode.content);\n      }\n    }\n\n    /* Execute a hook if present */\n    _executeHooks(hooks.afterSanitizeShadowDOM, fragment, null);\n  };\n\n  // eslint-disable-next-line complexity\n  DOMPurify.sanitize = function (dirty, cfg = {}) {\n    let body = null;\n    let importedNode = null;\n    let currentNode = null;\n    let returnNode = null;\n    /* Make sure we have a string to sanitize.\n      DO NOT return early, as this will return the wrong type if\n      the user has requested a DOM object rather than a string */\n    IS_EMPTY_INPUT = !dirty;\n    if (IS_EMPTY_INPUT) {\n      dirty = '<!-->';\n    }\n\n    /* Stringify, in case dirty is an object */\n    if (typeof dirty !== 'string' && !_isNode(dirty)) {\n      if (typeof dirty.toString === 'function') {\n        dirty = dirty.toString();\n        if (typeof dirty !== 'string') {\n          throw typeErrorCreate('dirty is not a string, aborting');\n        }\n      } else {\n        throw typeErrorCreate('toString is not a function');\n      }\n    }\n\n    /* Return dirty HTML if DOMPurify cannot run */\n    if (!DOMPurify.isSupported) {\n      return dirty;\n    }\n\n    /* Assign config vars */\n    if (!SET_CONFIG) {\n      _parseConfig(cfg);\n    }\n\n    /* Clean up removed elements */\n    DOMPurify.removed = [];\n\n    /* Check if dirty is correctly typed for IN_PLACE */\n    if (typeof dirty === 'string') {\n      IN_PLACE = false;\n    }\n\n    if (IN_PLACE) {\n      /* Do some early pre-sanitization to avoid unsafe root nodes */\n      if ((dirty as Node).nodeName) {\n        const tagName = transformCaseFunc((dirty as Node).nodeName);\n        if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n          throw typeErrorCreate(\n            'root node is forbidden and cannot be sanitized in-place'\n          );\n        }\n      }\n    } else if (dirty instanceof Node) {\n      /* If dirty is a DOM element, append to an empty document to avoid\n         elements being stripped by the parser */\n      body = _initDocument('<!---->');\n      importedNode = body.ownerDocument.importNode(dirty, true);\n      if (\n        importedNode.nodeType === NODE_TYPE.element &&\n        importedNode.nodeName === 'BODY'\n      ) {\n        /* Node is already a body, use as is */\n        body = importedNode;\n      } else if (importedNode.nodeName === 'HTML') {\n        body = importedNode;\n      } else {\n        // eslint-disable-next-line unicorn/prefer-dom-node-append\n        body.appendChild(importedNode);\n      }\n    } else {\n      /* Exit directly if we have nothing to do */\n      if (\n        !RETURN_DOM &&\n        !SAFE_FOR_TEMPLATES &&\n        !WHOLE_DOCUMENT &&\n        // eslint-disable-next-line unicorn/prefer-includes\n        dirty.indexOf('<') === -1\n      ) {\n        return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n          ? trustedTypesPolicy.createHTML(dirty)\n          : dirty;\n      }\n\n      /* Initialize the document to work on */\n      body = _initDocument(dirty);\n\n      /* Check we have a DOM node from the data */\n      if (!body) {\n        return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n      }\n    }\n\n    /* Remove first element node (ours) if FORCE_BODY is set */\n    if (body && FORCE_BODY) {\n      _forceRemove(body.firstChild);\n    }\n\n    /* Get node iterator */\n    const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n\n    /* Now start iterating over the created document */\n    while ((currentNode = nodeIterator.nextNode())) {\n      /* Sanitize tags and elements */\n      _sanitizeElements(currentNode);\n\n      /* Check attributes next */\n      _sanitizeAttributes(currentNode);\n\n      /* Shadow DOM detected, sanitize it */\n      if (currentNode.content instanceof DocumentFragment) {\n        _sanitizeShadowDOM(currentNode.content);\n      }\n    }\n\n    /* If we sanitized `dirty` in-place, return it. */\n    if (IN_PLACE) {\n      return dirty;\n    }\n\n    /* Return sanitized string or DOM */\n    if (RETURN_DOM) {\n      if (RETURN_DOM_FRAGMENT) {\n        returnNode = createDocumentFragment.call(body.ownerDocument);\n\n        while (body.firstChild) {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          returnNode.appendChild(body.firstChild);\n        }\n      } else {\n        returnNode = body;\n      }\n\n      if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n        /*\n          AdoptNode() is not used because internal state is not reset\n          (e.g. the past names map of a HTMLFormElement), this is safe\n          in theory but we would rather not risk another attack vector.\n          The state that is cloned by importNode() is explicitly defined\n          by the specs.\n        */\n        returnNode = importNode.call(originalDocument, returnNode, true);\n      }\n\n      return returnNode;\n    }\n\n    let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n    /* Serialize doctype if allowed */\n    if (\n      WHOLE_DOCUMENT &&\n      ALLOWED_TAGS['!doctype'] &&\n      body.ownerDocument &&\n      body.ownerDocument.doctype &&\n      body.ownerDocument.doctype.name &&\n      regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n    ) {\n      serializedHTML =\n        '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n    }\n\n    /* Sanitize final string template-safe */\n    if (SAFE_FOR_TEMPLATES) {\n      arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n        serializedHTML = stringReplace(serializedHTML, expr, ' ');\n      });\n    }\n\n    return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n      ? trustedTypesPolicy.createHTML(serializedHTML)\n      : serializedHTML;\n  };\n\n  DOMPurify.setConfig = function (cfg = {}) {\n    _parseConfig(cfg);\n    SET_CONFIG = true;\n  };\n\n  DOMPurify.clearConfig = function () {\n    CONFIG = null;\n    SET_CONFIG = false;\n  };\n\n  DOMPurify.isValidAttribute = function (tag, attr, value) {\n    /* Initialize shared config vars if necessary. */\n    if (!CONFIG) {\n      _parseConfig({});\n    }\n\n    const lcTag = transformCaseFunc(tag);\n    const lcName = transformCaseFunc(attr);\n    return _isValidAttribute(lcTag, lcName, value);\n  };\n\n  DOMPurify.addHook = function (entryPoint, hookFunction) {\n    if (typeof hookFunction !== 'function') {\n      return;\n    }\n\n    arrayPush(hooks[entryPoint], hookFunction);\n  };\n\n  DOMPurify.removeHook = function (entryPoint, hookFunction) {\n    if (hookFunction !== undefined) {\n      const index = arrayLastIndexOf(hooks[entryPoint], hookFunction);\n\n      return index === -1\n        ? undefined\n        : arraySplice(hooks[entryPoint], index, 1)[0];\n    }\n\n    return arrayPop(hooks[entryPoint]);\n  };\n\n  DOMPurify.removeHooks = function (entryPoint) {\n    hooks[entryPoint] = [];\n  };\n\n  DOMPurify.removeAllHooks = function () {\n    hooks = _createHooksMap();\n  };\n\n  return DOMPurify;\n}\n\nexport default createDOMPurify();\n\nexport interface DOMPurify {\n  /**\n   * Creates a DOMPurify instance using the given window-like object. Defaults to `window`.\n   */\n  (root?: WindowLike): DOMPurify;\n\n  /**\n   * Version label, exposed for easier checks\n   * if DOMPurify is up to date or not\n   */\n  version: string;\n\n  /**\n   * Array of elements that DOMPurify removed during sanitation.\n   * Empty if nothing was removed.\n   */\n  removed: Array<RemovedElement | RemovedAttribute>;\n\n  /**\n   * Expose whether this browser supports running the full DOMPurify.\n   */\n  isSupported: boolean;\n\n  /**\n   * Set the configuration once.\n   *\n   * @param cfg configuration object\n   */\n  setConfig(cfg?: Config): void;\n\n  /**\n   * Removes the configuration.\n   */\n  clearConfig(): void;\n\n  /**\n   * Provides core sanitation functionality.\n   *\n   * @param dirty string or DOM node\n   * @param cfg object\n   * @returns Sanitized TrustedHTML.\n   */\n  sanitize(\n    dirty: string | Node,\n    cfg: Config & { RETURN_TRUSTED_TYPE: true }\n  ): TrustedHTML;\n\n  /**\n   * Provides core sanitation functionality.\n   *\n   * @param dirty DOM node\n   * @param cfg object\n   * @returns Sanitized DOM node.\n   */\n  sanitize(dirty: Node, cfg: Config & { IN_PLACE: true }): Node;\n\n  /**\n   * Provides core sanitation functionality.\n   *\n   * @param dirty string or DOM node\n   * @param cfg object\n   * @returns Sanitized DOM node.\n   */\n  sanitize(dirty: string | Node, cfg: Config & { RETURN_DOM: true }): Node;\n\n  /**\n   * Provides core sanitation functionality.\n   *\n   * @param dirty string or DOM node\n   * @param cfg object\n   * @returns Sanitized document fragment.\n   */\n  sanitize(\n    dirty: string | Node,\n    cfg: Config & { RETURN_DOM_FRAGMENT: true }\n  ): DocumentFragment;\n\n  /**\n   * Provides core sanitation functionality.\n   *\n   * @param dirty string or DOM node\n   * @param cfg object\n   * @returns Sanitized string.\n   */\n  sanitize(dirty: string | Node, cfg?: Config): string;\n\n  /**\n   * Checks if an attribute value is valid.\n   * Uses last set config, if any. Otherwise, uses config defaults.\n   *\n   * @param tag Tag name of containing element.\n   * @param attr Attribute name.\n   * @param value Attribute value.\n   * @returns Returns true if `value` is valid. Otherwise, returns false.\n   */\n  isValidAttribute(tag: string, attr: string, value: string): boolean;\n\n  /**\n   * Adds a DOMPurify hook.\n   *\n   * @param entryPoint entry point for the hook to add\n   * @param hookFunction function to execute\n   */\n  addHook(entryPoint: BasicHookName, hookFunction: NodeHook): void;\n\n  /**\n   * Adds a DOMPurify hook.\n   *\n   * @param entryPoint entry point for the hook to add\n   * @param hookFunction function to execute\n   */\n  addHook(entryPoint: ElementHookName, hookFunction: ElementHook): void;\n\n  /**\n   * Adds a DOMPurify hook.\n   *\n   * @param entryPoint entry point for the hook to add\n   * @param hookFunction function to execute\n   */\n  addHook(\n    entryPoint: DocumentFragmentHookName,\n    hookFunction: DocumentFragmentHook\n  ): void;\n\n  /**\n   * Adds a DOMPurify hook.\n   *\n   * @param entryPoint entry point for the hook to add\n   * @param hookFunction function to execute\n   */\n  addHook(\n    entryPoint: 'uponSanitizeElement',\n    hookFunction: UponSanitizeElementHook\n  ): void;\n\n  /**\n   * Adds a DOMPurify hook.\n   *\n   * @param entryPoint entry point for the hook to add\n   * @param hookFunction function to execute\n   */\n  addHook(\n    entryPoint: 'uponSanitizeAttribute',\n    hookFunction: UponSanitizeAttributeHook\n  ): void;\n\n  /**\n   * Remove a DOMPurify hook at a given entryPoint\n   * (pops it from the stack of hooks if hook not specified)\n   *\n   * @param entryPoint entry point for the hook to remove\n   * @param hookFunction optional specific hook to remove\n   * @returns removed hook\n   */\n  removeHook(\n    entryPoint: BasicHookName,\n    hookFunction?: NodeHook\n  ): NodeHook | undefined;\n\n  /**\n   * Remove a DOMPurify hook at a given entryPoint\n   * (pops it from the stack of hooks if hook not specified)\n   *\n   * @param entryPoint entry point for the hook to remove\n   * @param hookFunction optional specific hook to remove\n   * @returns removed hook\n   */\n  removeHook(\n    entryPoint: ElementHookName,\n    hookFunction?: ElementHook\n  ): ElementHook | undefined;\n\n  /**\n   * Remove a DOMPurify hook at a given entryPoint\n   * (pops it from the stack of hooks if hook not specified)\n   *\n   * @param entryPoint entry point for the hook to remove\n   * @param hookFunction optional specific hook to remove\n   * @returns removed hook\n   */\n  removeHook(\n    entryPoint: DocumentFragmentHookName,\n    hookFunction?: DocumentFragmentHook\n  ): DocumentFragmentHook | undefined;\n\n  /**\n   * Remove a DOMPurify hook at a given entryPoint\n   * (pops it from the stack of hooks if hook not specified)\n   *\n   * @param entryPoint entry point for the hook to remove\n   * @param hookFunction optional specific hook to remove\n   * @returns removed hook\n   */\n  removeHook(\n    entryPoint: 'uponSanitizeElement',\n    hookFunction?: UponSanitizeElementHook\n  ): UponSanitizeElementHook | undefined;\n\n  /**\n   * Remove a DOMPurify hook at a given entryPoint\n   * (pops it from the stack of hooks if hook not specified)\n   *\n   * @param entryPoint entry point for the hook to remove\n   * @param hookFunction optional specific hook to remove\n   * @returns removed hook\n   */\n  removeHook(\n    entryPoint: 'uponSanitizeAttribute',\n    hookFunction?: UponSanitizeAttributeHook\n  ): UponSanitizeAttributeHook | undefined;\n\n  /**\n   * Removes all DOMPurify hooks at a given entryPoint\n   *\n   * @param entryPoint entry point for the hooks to remove\n   */\n  removeHooks(entryPoint: HookName): void;\n\n  /**\n   * Removes all DOMPurify hooks.\n   */\n  removeAllHooks(): void;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedElement {\n  /**\n   * The element that was removed.\n   */\n  element: Node;\n}\n\n/**\n * An element removed by DOMPurify.\n */\nexport interface RemovedAttribute {\n  /**\n   * The attribute that was removed.\n   */\n  attribute: Attr | null;\n\n  /**\n   * The element that the attribute was removed.\n   */\n  from: Node;\n}\n\ntype BasicHookName =\n  | 'beforeSanitizeElements'\n  | 'afterSanitizeElements'\n  | 'uponSanitizeShadowNode';\ntype ElementHookName = 'beforeSanitizeAttributes' | 'afterSanitizeAttributes';\ntype DocumentFragmentHookName =\n  | 'beforeSanitizeShadowDOM'\n  | 'afterSanitizeShadowDOM';\ntype UponSanitizeElementHookName = 'uponSanitizeElement';\ntype UponSanitizeAttributeHookName = 'uponSanitizeAttribute';\n\ninterface HooksMap {\n  beforeSanitizeElements: NodeHook[];\n  afterSanitizeElements: NodeHook[];\n  beforeSanitizeShadowDOM: DocumentFragmentHook[];\n  uponSanitizeShadowNode: NodeHook[];\n  afterSanitizeShadowDOM: DocumentFragmentHook[];\n  beforeSanitizeAttributes: ElementHook[];\n  afterSanitizeAttributes: ElementHook[];\n  uponSanitizeElement: UponSanitizeElementHook[];\n  uponSanitizeAttribute: UponSanitizeAttributeHook[];\n}\n\nexport type HookName =\n  | BasicHookName\n  | ElementHookName\n  | DocumentFragmentHookName\n  | UponSanitizeElementHookName\n  | UponSanitizeAttributeHookName;\n\nexport type NodeHook = (\n  this: DOMPurify,\n  currentNode: Node,\n  hookEvent: null,\n  config: Config\n) => void;\n\nexport type ElementHook = (\n  this: DOMPurify,\n  currentNode: Element,\n  hookEvent: null,\n  config: Config\n) => void;\n\nexport type DocumentFragmentHook = (\n  this: DOMPurify,\n  currentNode: DocumentFragment,\n  hookEvent: null,\n  config: Config\n) => void;\n\nexport type UponSanitizeElementHook = (\n  this: DOMPurify,\n  currentNode: Node,\n  hookEvent: UponSanitizeElementHookEvent,\n  config: Config\n) => void;\n\nexport type UponSanitizeAttributeHook = (\n  this: DOMPurify,\n  currentNode: Element,\n  hookEvent: UponSanitizeAttributeHookEvent,\n  config: Config\n) => void;\n\nexport interface UponSanitizeElementHookEvent {\n  tagName: string;\n  allowedTags: Record<string, boolean>;\n}\n\nexport interface UponSanitizeAttributeHookEvent {\n  attrName: string;\n  attrValue: string;\n  keepAttr: boolean;\n  allowedAttributes: Record<string, boolean>;\n  forceKeepAttr: boolean | undefined;\n}\n\n/**\n * A `Window`-like object containing the properties and types that DOMPurify requires.\n */\nexport type WindowLike = Pick<\n  typeof globalThis,\n  | 'DocumentFragment'\n  | 'HTMLTemplateElement'\n  | 'Node'\n  | 'Element'\n  | 'NodeFilter'\n  | 'NamedNodeMap'\n  | 'HTMLFormElement'\n  | 'DOMParser'\n> & {\n  document?: Document;\n  MozNamedAttrMap?: typeof window.NamedNodeMap;\n} & Pick<TrustedTypesWindow, 'trustedTypes'>;\n","import importIconSetAsESM from './import-icon-set';\nimport {dangerouslyCreateElementFromString} from '@servicenow/ui-renderer-snabbdom';\nimport DOMPurify from 'dompurify';\nimport {domPurifyConfig} from '@servicenow/library-enhanced-utils';\n\nexport const cache = new Map();\nconst NOW_ICON_CACHE_NAME = 'now-icon-cache';\n\nfunction initCache() {\n\ttry {\n\t\tconst cacheString = localStorage.getItem(NOW_ICON_CACHE_NAME);\n\t\tif (!cacheString) {\n\t\t\tlocalStorage.setItem(NOW_ICON_CACHE_NAME, '{}');\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tconst localStorageCache = JSON.parse(cacheString);\n\t\t\t\tfor (let key of Object.keys(localStorageCache)) {\n\t\t\t\t\tconst iconResult = JSON.parse(localStorageCache[key]);\n\t\t\t\t\tconst icon = iconResult.isPathFragment ? (\n\t\t\t\t\t\t<path attr-d={iconResult.data} />\n\t\t\t\t\t) : (\n\t\t\t\t\t\tdangerouslyCreateElementFromString(\n\t\t\t\t\t\t\tDOMPurify.sanitize(\n\t\t\t\t\t\t\t\t`<svg>${iconResult.data}</svg>`,\n\t\t\t\t\t\t\t\tdomPurifyConfig,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t).children\n\t\t\t\t\t);\n\n\t\t\t\t\tconst result = {\n\t\t\t\t\t\ticon,\n\t\t\t\t\t\tpixelSize: iconResult.pixelSize,\n\t\t\t\t\t\tisLoading: false,\n\t\t\t\t\t\tisLoaded: true,\n\t\t\t\t\t};\n\t\t\t\t\tcache.set(key, result);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tlocalStorage.setItem(NOW_ICON_CACHE_NAME, '{}');\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\t// swallow the exception, as the icons will still show up.\n\t}\n}\n\ninitCache();\n\nconst assetLoadQueue = {};\n\nexport const queueAssetLoad = (key) => {\n\treturn new Promise((resolve) => {\n\t\tassetLoadQueue[key] = assetLoadQueue[key] || [];\n\t\tassetLoadQueue[key].push(resolve);\n\t});\n};\n\nexport const emptyAssetLoadQueue = (key) => {\n\tif (assetLoadQueue[key]?.length) {\n\t\tfor (let i = assetLoadQueue[key].length - 1; i >= 0; i--) {\n\t\t\tassetLoadQueue[key][i]();\n\t\t\tassetLoadQueue[key].pop();\n\t\t}\n\t}\n};\n\nexport async function importIconSet(name) {\n\treturn (await importIconSetAsESM(name)).default;\n}\n","// supported variants and the index they are stored at in the icon set\nexport const VARIANTS = {\n\tFill: 0,\n\tOutline: 1,\n};\n\nexport const ICON_SIZES = {\n\tsm: {pixelSize: 12, indexInSet: 0},\n\tmd: {pixelSize: 16, indexInSet: 1},\n\tlg: {pixelSize: 24, indexInSet: 2},\n\txl: {pixelSize: 32, indexInSet: 3},\n};\n","import camelCase from 'lodash/camelCase';\nimport {dangerouslyCreateElementFromString} from '@servicenow/ui-renderer-snabbdom';\n\nimport aliases from '../aliases.json';\nimport {importIconSet} from '../utils/cache';\nimport {ICON_SIZES, VARIANTS} from './maps';\nimport {emptyAssetLoadQueue} from './cache';\n\n/**\n * Replaces `Start` and `End` in the icon name with the appropriate direction\n *\n * @param {string} name - camel-case icon name\n * @param {\"rtl\"|\"ltr\"} dir\n * @param {boolean} supportRtl\n * @returns {string} updated icon name\n */\nconst convertLogicalDir = (name, dir) => {\n\tif (!name) {\n\t\treturn '';\n\t}\n\n\tconst isRTL = dir === 'rtl';\n\n\treturn name\n\t\t.replace('Start', isRTL ? 'Right' : 'Left')\n\t\t.replace('End', isRTL ? 'Left' : 'Right');\n};\n\nconst cache = {};\n/**\n * Gets icon set from in memory cache, localStorage, or dynamic import\n *\n * @param {string} name - camel-case icon set name\n */\nconst getIconSet = async (name) => {\n\tlet iconSet = cache[name];\n\n\tif (iconSet) return iconSet;\n\n\ticonSet = await importIconSet(name);\n\n\tcache[name] = iconSet;\n\n\treturn iconSet;\n};\n\n/**\n * Accesses the icon info from the icon-set, returning relevant data.\n *\n * @param {string} name - camel-case icon name\n * @param {\"xs\"|\"sm\"|\"md\"|\"lg\"} size\n * @param {\"rtl\"|\"ltr\"} dir\n * @param {boolean} supportRtl\n *\n * @returns {{data: string, isPathFragment: boolean, pixelSize: number}}\n */\nasync function getIconDataFromCamel(name, size, dir) {\n\tif (!name || !size) return null;\n\n\t// arrowStartFill -> arrowLeftFill\n\tconst logicalName = convertLogicalDir(name, dir);\n\n\t// arrowLeftFill ->\n\t//   baseName = arrowLeft\n\t//   variant = Fill\n\tconst match = logicalName.match(/(.+)(Fill|Outline)$/);\n\tif (!match) return null;\n\tconst [, baseName, variant] = match;\n\tif (!(variant in VARIANTS) && !(size in ICON_SIZES)) {\n\t\treturn null;\n\t}\n\n\t// convert possible alias to updated name\n\tconst realName = aliases[baseName] || baseName;\n\tconst icons = await getIconSet(realName);\n\n\tif (icons) {\n\t\tconst variantIndex = VARIANTS[variant];\n\t\tconst {pixelSize, indexInSet} = ICON_SIZES[size];\n\n\t\t// some icons are identical for both variants. These only have a single\n\t\t// entry in the set\n\t\tconst allSizes = icons[variantIndex] || icons[0];\n\t\tconst data = allSizes[indexInSet];\n\n\t\treturn {\n\t\t\tdata,\n\t\t\tisPathFragment: !data.startsWith('<'),\n\t\t\tpixelSize,\n\t\t};\n\t}\n\n\treturn null;\n}\n\n/**\n * Returns a string that contains the icon data. Primarily supports\n * backwards-compatibility where the icon-set would be directly indexed by the\n * full name, variant, and pixel size\n *\n * @param {string} nameVariantSize - full camel-case icon description. e.g.: \"workflowFill12\"\n * @param {\"ltr\"|\"rtl\"} dir\n *\n * @returns {string} the inner SVG data as a string (usually a <path>, but may\n * also be a <g> or other shape)\n */\nexport async function getIconStringFromCamel(nameVariantSize, dir) {\n\tif (!nameVariantSize) return null;\n\n\tconst nameAndVariant = nameVariantSize.slice(0, -2);\n\tconst pixelSizeStr = nameVariantSize.slice(-2);\n\n\tconst size = Object.keys(ICON_SIZES).find((size) => {\n\t\tconst {pixelSize} = ICON_SIZES[size];\n\t\treturn String(pixelSize) === pixelSizeStr;\n\t});\n\n\tconst result = await getIconDataFromCamel(nameAndVariant, size, dir);\n\tif (!result) return null;\n\n\treturn result.isPathFragment\n\t\t? `<path d='${result.data}'></path>`\n\t\t: result.data;\n}\n\n/**\n * Returns the appropriate JSX nodes and pixel size information for an icon\n * name and size\n *\n * @param {string} name - either camelCase or kebab-case icon name and variant, e.g: \"workflow-fill\"\n * @param {\"xs\"|\"sm\"|\"md\"|\"lg\"} size\n * @param {\"ltr\"|\"rtl\"} dir\n *\n * @returns {{icon: JSX, pixelSize: number}}\n */\nexport async function getIconNode(name, size, dir = 'ltr') {\n\tconst result = await getIconDataFromCamel(camelCase(name), size, dir);\n\tif (!result) return null;\n\n\tconst key = `${name}_${size}`;\n\ttry {\n\t\tvar cacheString = localStorage.getItem('now-icon-cache');\n\t\tvar localStorageCache = JSON.parse(cacheString);\n\t\tlocalStorageCache[key] = JSON.stringify(result);\n\t\tlocalStorage.setItem('now-icon-cache', JSON.stringify(localStorageCache));\n\t} catch (e) {\n\t\t// swallow the exception, as the icons will still show up.\n\t}\n\n\tconst icon = result.isPathFragment ? (\n\t\t<path attr-d={result.data} />\n\t) : (\n\t\tdangerouslyCreateElementFromString(`<g>${result.data}</g>`).children\n\t);\n\temptyAssetLoadQueue(key);\n\n\treturn {\n\t\ticon,\n\t\tpixelSize: result.pixelSize,\n\t\tisLoading: false,\n\t\tisLoaded: true,\n\t};\n}\n","export const ariaTranslatableProps = {\n\t'aria-braillelabel': {type: 'string', translatable: true},\n\t'aria-brailleroledescription': {type: 'string', translatable: true},\n\t'aria-colindextext': {type: 'string', translatable: true},\n\t'aria-description': {type: 'string', translatable: true},\n\t'aria-label': {type: 'string', translatable: true},\n\t'aria-placeholder': {type: 'string', translatable: true},\n\t'aria-roledescription': {type: 'string', translatable: true},\n\t'aria-rowindextext': {type: 'string', translatable: true},\n\t'aria-valuetext': {type: 'string', translatable: true},\n};\n\nexport const configAriaSchema = {\n\ttype: 'object',\n\tproperties: {role: {type: 'string'}, ...ariaTranslatableProps},\n\tpatternProperties: {\n\t\t'^aria-': {type: 'string'},\n\t},\n\tadditionalProperties: false,\n};\n\nconst ariaTemplate = {\n\ttype: 'object',\n\tproperties: {'aria-label': {type: 'string', translatable: true}},\n\tpatternProperties: {\n\t\t'^aria-': {type: 'string'},\n\t},\n\tadditionalProperties: false,\n};\n\nexport const configAriaLabelSchema = {\n\t...ariaTemplate,\n\tpatternProperties: {\n\t\t'^aria-': {type: 'string'},\n\t\trole: {type: 'string'},\n\t},\n};\n\nexport const configAriaLabelRoleSchema = {\n\t...ariaTemplate,\n\tproperties: {\n\t\trole: {type: 'string'},\n\t\t'aria-label': {type: 'string', translatable: true},\n\t},\n};\n\nexport const configAriaLabelRoleHasPopUpSchema = {\n\t...ariaTemplate,\n\tproperties: {\n\t\trole: {type: 'string'},\n\t\t'aria-label': {type: 'string', translatable: true},\n\t\t'aria-haspopup': {type: 'string'},\n\t},\n};\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {toEmbeddableUrl} from '@servicenow/library-enhanced-utils';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {getIconNode} from './utils/decode-icon';\nimport {cache, queueAssetLoad} from './utils/cache';\nimport styles from './_now-icon.scss';\nimport {ICON_SIZES} from './utils/maps';\nimport {configAriaLabelRoleSchema} from '@servicenow/library-schemas';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\n\nconst {COMPONENT_RENDER_REQUESTED} = actionTypes;\nconst SUPPORT_RTL_MAP = new Map([\n\t['-left-', '-right-'],\n\t['-right-', '-left-'],\n]);\nconst LOGICAL_NAME_MAP = new Map([\n\t['-start-', '-end-'],\n\t['-end-', '-start-'],\n]);\n\nconst getIconName = (icon, dir, supportRtl) =>\n\tsupportRtl && dir === 'rtl'\n\t\t? icon.replace(/-left-|-right-/g, (match) => SUPPORT_RTL_MAP.get(match))\n\t\t: dir === 'rtl'\n\t\t\t? icon.replace(/-start-|-end-/g, (match) => LOGICAL_NAME_MAP.get(match))\n\t\t\t: icon;\n\nconst view = (state) => {\n\tconst {icon, size, dir, spin, configAria, supportRtl} = state.properties;\n\tconst key = `${getIconName(icon, dir, supportRtl)}_${size}`;\n\tconst hasLabel =\n\t\tconfigAria && configAria.icon && Boolean(configAria.icon['aria-label']);\n\n\tconst result = cache.has(key) && cache.get(key);\n\n\tif (!result && !size) return null;\n\n\treturn icon.includes('.') || icon.includes(':') ? (\n\t\t<img\n\t\t\tclass={{\n\t\t\t\t'now-icon': true,\n\t\t\t\t'is-custom': true,\n\t\t\t\t[`-${size}`]: size,\n\t\t\t}}\n\t\t\tsrc={toEmbeddableUrl(icon)}\n\t\t\talt=\"\"\n\t\t\t{...filterAriaAttributes(configAria, 'icon')}\n\t\t\trole=\"presentation\"\n\t\t/>\n\t) : (\n\t\t<svg\n\t\t\tclass={{\n\t\t\t\t'now-icon': true,\n\t\t\t\t'-spin': spin,\n\t\t\t\t[`-${size}`]: size,\n\t\t\t}}\n\t\t\tkey={key}\n\t\t\t{...filterAriaAttributes(configAria, 'icon')}\n\t\t\trole={hasLabel ? 'img' : undefined}\n\t\t\taria-hidden={hasLabel ? undefined : 'true'}\n\t\t\tattr-viewBox={`0 0 ${ICON_SIZES[size].pixelSize} ${ICON_SIZES[size].pixelSize}`}\n\t\t>\n\t\t\t{result && result.icon ? result.icon : null}\n\t\t</svg>\n\t);\n};\n/**\n * A symbol used to launch an action, add clarity, or provide additional context.\n *\n * ```jsx\n * <now-icon icon=\"address-book-outline\" size=\"md\" />\n * ```\n *\n * Note: You can horizontally mirror any direction-sensitive icon used\n * with a right-to-left language. Set the document\n * `dir` attribute to \"rtl\" and replace `-left` or `-right` in\n * the icon name with `-start` and `-end`. If you do not want the\n * icon to mirror horizontally, use the explicit direction in the icon name instead.\n * For example, use `arrow-left-fill` instead of `arrow-start-fill`.\n *\n * ```jsx\n * <document dir=\"rtl\">\n *   <now-icon icon=\"arrow-start-fill\" />\n * </document>\n * ```\n *\n * @seismicElement now-icon\n * @summary Custom icon set for the Horizon Design System.\n * @uib.label Icon\n * @uib.icon icon\n * @uib.description A symbol used to launch an action, add clarity, or provide additional context.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties icon, size, configAria, supportRtl\n * @uib.layout.accessibility.children configAria\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.layout.internationalization.children supportRtl\n * @uib.layout.internationalization.icon translated-text-outline\n */\ncreateEnhancedElement('now-icon', {\n\tproperties: {\n\t\t/**\n\t\t * Name of the icon in dash-case, including the `-fill` or `-outline` suffix to\n\t\t * indicate whether the icon is filled or outlined.\n\t\t * Can also be set to a relative or absolute path to an img to create a custom icon\n\t\t * @type {string}\n\t\t * @uib.label Icon\n\t\t * @uib.defaultValue circle-question-outline\n\t\t * @uib.description Name of the icon in dash-case, including the '-fill' or '-outline' suffix to indicate whether the icon is filled or outlined.\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticon: {required: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, the icon flips along the inline axis if the document dir=\"rtl\".\n\t\t * Set this property for icons that are tied to writing direction\n\t\t * @type {boolean}\n\t\t * @uib.label Flip icon direction\n\t\t * @uib.description When true, the icon flips along the inline axis if the document dir=\"rtl\". Set this property for icons that are tied to writing direction\n\t\t */\n\t\tsupportRtl: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Size of the icon.\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * @uib.description Size of the icon in the format 'sm', 'md', 'lg', or 'xl'\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {type: 'string', enum: ['sm', 'md', 'lg', 'xl']},\n\t\t},\n\t\t/**\n\t\t * When true, the icon spins. For example, set this property to true\n\t\t * when used with the `loader-fill` icon.\n\t\t * @type {boolean}\n\t\t */\n\t\tspin: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-icon. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'icon' key corresponds to the svg element in\n\t\t * now-icon. See https://www.w3.org/TR/wai-aria-1.2/#img for\n\t\t * properties and accepted values.\n\t\t * @type {{ 'icon': {'aria-*': string}}}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Sets ARIA properties on the inner html 'svg' element\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\ticon: configAriaLabelRoleSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_RENDER_REQUESTED]: async ({\n\t\t\tupdateState,\n\t\t\taction,\n\t\t\tproperties: {icon, supportRtl, size, dir},\n\t\t}) => {\n\t\t\tif (!size) {\n\t\t\t\taction.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst name = getIconName(icon, dir, supportRtl);\n\t\t\tconst key = `${name}_${size}`;\n\n\t\t\t// if icon in cache, no need to re-get it\n\t\t\tif (cache.has(key)) {\n\t\t\t\tconst value = cache.get(key);\n\t\t\t\tif (value.isLoading) {\n\t\t\t\t\treturn queueAssetLoad(key).then(() => {\n\t\t\t\t\t\tupdateState({\n\t\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\t\tpath: 'iconResolved',\n\t\t\t\t\t\t\tvalue: key,\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (value.isLoaded) return;\n\t\t\t}\n\n\t\t\tcache.set(key, {\n\t\t\t\tisLoading: true,\n\t\t\t\tisLoaded: false,\n\t\t\t});\n\n\t\t\t// theoretically we could prevent this render as we have not resolved the\n\t\t\t// svg yet but let's render the empty icon ASAP to avoid late layout shifts\n\t\t\tconst result = await getIconNode(name, size);\n\n\t\t\tif (result) {\n\t\t\t\tcache.set(key, result);\n\t\t\t\tupdateState({\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tpath: 'iconResolved',\n\t\t\t\t\tvalue: key,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t},\n\tview,\n\tstyles,\n});\n","import {t} from 'sn-translate';\n\nexport default function localizePresence(presence) {\n\tconst busy = t({\n\t\tkey: 'now-icon-presence-busy',\n\t\tmessage: 'busy',\n\t\tcomment:\n\t\t\t\"Adjective. Represents a user's online status - e.g. busy, away, available, or offline.\",\n\t});\n\tconst away = t({\n\t\tkey: 'now-icon-presence-away',\n\t\tmessage: 'away',\n\t\tcomment:\n\t\t\t\"Adjective. Represents a user's online status - e.g. busy, away, available, or offline.\",\n\t});\n\tconst available = t({\n\t\tkey: 'now-icon-presence-available',\n\t\tmessage: 'available',\n\t\tcomment:\n\t\t\t\"Adjective. Represents a user's online status - e.g. busy, away, available, or offline.\",\n\t});\n\tconst offline = t({\n\t\tkey: 'now-icon-presence-offline',\n\t\tmessage: 'offline',\n\t\tcomment:\n\t\t\t\"Adjective. Represents a user's online status - e.g. busy, away, available, or offline.\",\n\t});\n\treturn {\n\t\tbusy,\n\t\taway,\n\t\tavailable,\n\t\toffline,\n\t}[presence];\n}\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport styles from './_now-icon.scss';\nimport {getIconNode} from './utils/decode-icon';\nimport {cache} from './utils/cache';\nimport localizePresence from './utils/localize-presence';\n\nconst {COMPONENT_RENDER_REQUESTED} = actionTypes;\n\nconst backgroundPaths = {\n\tsm: 'M2 6.5C2 8.98529 4.01471 11 6.5 11C8.98529 11 11 8.98529 11 6.5C11 4.01471 8.98529 2 6.5 2C4.01471 2 2 4.01471 2 6.5Z',\n\tmd: 'M3 8.5C3 11.5376 5.46243 14 8.5 14C11.5376 14 14 11.5376 14 8.5C14 5.46243 11.5376 3 8.5 3C5.46243 3 3 5.46243 3 8.5Z',\n\tlg: 'M12.5 21C17.1944 21 21 17.1944 21 12.5C21 7.80558 17.1944 4 12.5 4C7.80558 4 4 7.80558 4 12.5C4 17.1944 7.80558 21 12.5 21Z',\n\txl: 'M16.5 26C21.7467 26 26 21.7467 26 16.5C26 11.2533 21.7467 7 16.5 7C11.2533 7 7 11.2533 7 16.5C7 21.7467 11.2533 26 16.5 26Z',\n};\n\n// Safe to assume this is the base for now. If base font size has the potential to change in the future, we'll have to make this dynamic somehow.\nconst BASE_FONT_SIZE = 16;\n\nconst view = (state) => {\n\tconst {size, presence} = state.properties;\n\tconst windowsHighContrast = window.matchMedia(\n\t\t'(forced-colors: active)',\n\t).matches;\n\tconst iconName = `presence-${presence}-fill`;\n\tconst key = `${iconName}_${size}_ltr`;\n\tconst result = cache.has(key) && cache.get(key);\n\tif (!result) return null;\n\n\tconst iconRems = result.pixelSize / BASE_FONT_SIZE;\n\tconst presenceLabel = localizePresence(presence);\n\n\treturn (\n\t\t<svg\n\t\t\trole=\"img\"\n\t\t\taria-label={presenceLabel}\n\t\t\tclass={{\n\t\t\t\t'now-icon-presence': true,\n\t\t\t\t[`-${presence}`]: size,\n\t\t\t\t'high-contrast': windowsHighContrast,\n\t\t\t}}\n\t\t\tstyle={{\n\t\t\t\tinlineSize: `${iconRems}rem`,\n\t\t\t\tblockSize: `${iconRems}rem`,\n\t\t\t}}\n\t\t\tkey={key}\n\t\t\tattr-viewBox={`0 0 ${result.pixelSize} ${result.pixelSize}`}\n\t\t>\n\t\t\t{windowsHighContrast ? (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<path attr-d={backgroundPaths[size]} attr-fill=\"canvas\" />\n\t\t\t\t\t{result.icon}\n\t\t\t\t</Fragment>\n\t\t\t) : (\n\t\t\t\t<Fragment>\n\t\t\t\t\t<path attr-d={backgroundPaths[size]} attr-fill=\"white\" />\n\t\t\t\t\t{result.icon}\n\t\t\t\t</Fragment>\n\t\t\t)}\n\t\t</svg>\n\t);\n};\n\n/**\n * Presence indicator icon that shows the status and availability of a user.\n *\n * ```jsx\n * <now-icon-presence presence=\"available\" size=\"lg\" />\n *\n * <now-icon-presence presence=\"busy\" show-pattern />\n * ```\n *\n * Note: Per [WCAG Success Criterion 1.4.1](https://www.w3.org/TR/WCAG21/#use-of-color),\n * use of these icons alone is not an accessible method to communicate a\n * user's online presence. Set the `show-pattern` property to render a\n * different glyph shape for each `presence` value. For screen reader users,\n * an 'aria-label' is provided with this component by default. A utility method\n * called `localizePresence` is also available. This method can be used to provide an\n * internationalized version of the `presence` value in a tooltip or\n * other supplemental aids for users with limited color vision.\n *\n * ```js\n * import {localizePresence} from '@servicenow/now-icon';\n * import {t} from 'sn-translate';\n *\n * const a11yLabel = t('User Status: {0}', localizePresence(presence));\n * ```\n *\n * @seismicElement now-icon-presence\n * @summary Presence indicator icon used to show availability of a user.\n */\ncreateEnhancedElement('now-icon-presence', {\n\tproperties: {\n\t\t/**\n\t\t * Presence of the user that drives the visual display of the icon.\n\t\t * @type {('available'|'busy'|'away'|'offline')}\n\t\t */\n\t\tpresence: {},\n\t\t/**\n\t\t * Size of the icon.\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t */\n\t\tsize: {default: 'md'},\n\t\t/**\n\t\t * Deprecated\n\t\t * @private\n\t\t */\n\t\taccessibilityMode: {default: false},\n\t\t/**\n\t\t * Deprecated\n\t\t * @private\n\t\t */\n\n\t\tshowPattern: {default: false},\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_RENDER_REQUESTED]: async ({\n\t\t\tupdateState,\n\t\t\taction,\n\t\t\tproperties: {size, presence},\n\t\t}) => {\n\t\t\tconst iconName = `presence-${presence}-fill`;\n\t\t\tconst key = `${iconName}_${size}_ltr`;\n\n\t\t\tif (!cache.has(key)) {\n\t\t\t\taction.preventDefault();\n\n\t\t\t\tconst result = await getIconNode(iconName, size);\n\t\t\t\tcache.set(key, result);\n\t\t\t\tupdateState({\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tpath: 'iconResolved',\n\t\t\t\t\tvalue: key,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t},\n\tview,\n\tstyles,\n});\n","/**\n * @private\n * @param status\n * @param statusText\n * @param message\n * @param data\n * @param meta\n * @returns {{payload: {data: *, statusText: *, message: *, status: *}, meta: *, type: string, error: boolean}}\n */\nexport default function createHttpErrorAction(status, statusText, message, data, meta) {\n\treturn {\n\t\ttype: 'HTTP_ERROR_OCCURRED',\n\t\tpayload: {\n\t\t\tstatus,\n\t\t\tstatusText,\n\t\t\tmessage,\n\t\t\tdata\n\t\t},\n\t\tmeta: {\n\t\t\t...meta,\n\t\t\tstopPropagation: false,\n\t\t\tstatus,\n\t\t\tstatusText\n\t\t},\n\t\terror: true\n\t};\n}\n","import {domainSeparationProperties, memoize, kebabCase} from '@servicenow/ui-internal';\n\nconst toAttributeName = memoize(\n\tfunction toAttributeName(propName) {\n\t\treturn kebabCase(propName);\n\t},\n\t{profileName: 'effect-helpers-toAttributeName'}\n);\n\nconst {NOW_DS_DOMAIN_ID, NOW_DS_DOMAIN_SCOPE, NOW_DS_RECORD_ID, NOW_DS_RECORD_TABLE} =\n\tdomainSeparationProperties;\n\nfunction isValidRecordArgument(table, id) {\n\treturn table && id;\n}\n\nfunction getDomainProp(el, name) {\n\treturn el[name] || (el.getAttribute && el.getAttribute(toAttributeName(name)));\n}\n\nfunction createDomainContextProperty(el) {\n\tconst table = getDomainProp(el, NOW_DS_RECORD_TABLE);\n\tconst sysId = getDomainProp(el, NOW_DS_RECORD_ID);\n\tconst domain = getDomainProp(el, NOW_DS_DOMAIN_ID);\n\tconst scope = getDomainProp(el, NOW_DS_DOMAIN_SCOPE);\n\tconst domainContext = {\n\t\t...(isValidRecordArgument(table, sysId) && {\n\t\t\t[NOW_DS_RECORD_TABLE]: table,\n\t\t\t[NOW_DS_RECORD_ID]: sysId\n\t\t}),\n\t\t...(domain && {\n\t\t\t[NOW_DS_DOMAIN_ID]: domain\n\t\t}),\n\t\t...(scope && {\n\t\t\t[NOW_DS_DOMAIN_SCOPE]: scope\n\t\t})\n\t};\n\treturn hasDomainProps(domainContext) ? domainContext : undefined;\n}\n\nexport function getSeismicHoistTargetFor(seismicHoistElement) {\n\treturn seismicHoistElement.sourceElement;\n}\n\nfunction isSeismicHoistElement(el) {\n\treturn el.tagName === 'SEISMIC-HOIST';\n}\n\n/**\n * Element contains a reserved domain separation property\n *\n * @param el\n * @return boolean\n */\nfunction hasDomainProps(el) {\n\treturn !!(\n\t\t(getDomainProp(el, NOW_DS_RECORD_TABLE) && getDomainProp(el, NOW_DS_RECORD_ID)) ||\n\t\tgetDomainProp(el, NOW_DS_DOMAIN_ID) ||\n\t\tgetDomainProp(el, NOW_DS_DOMAIN_SCOPE)\n\t);\n}\n\n/**\n *\n * @param element\n * @returns Object|undefined\n */\nexport default function resolveDomainContext(element) {\n\tlet el = element;\n\twhile (el) {\n\t\tif (!isSeismicHoistElement(el) && hasDomainProps(el)) return createDomainContextProperty(el);\n\t\tel = isSeismicHoistElement(el) ? getSeismicHoistTargetFor(el) : el.parentNode || el.host;\n\t}\n\treturn undefined;\n}\n","/**\n * Find any existing user info that may exist on the window\n * @param {*} windowObj\n */\nexport const getUserSysId = windowObj => {\n\t// we should only get this default user in a dev scenario or there is a bug with UXF\n\tconst userSysId = 'defaultSeismicUser';\n\n\tif (!windowObj) {\n\t\tsetUserSysId(userSysId);\n\t\treturn userSysId;\n\t}\n\n\t// Check for tempUserSysId\n\tif (windowObj.nowUiFramework && windowObj.nowUiFramework.tempUserSysId)\n\t\treturn windowObj.nowUiFramework.tempUserSysId;\n\n\t// Jelly && UXF based pages\n\tif (windowObj.NOW && windowObj.NOW.user && windowObj.NOW.user.userID)\n\t\treturn windowObj.NOW.user.userID;\n\n\t// Fall back on window token\n\tif (windowObj.g_ck) return windowObj.g_ck;\n\n\t//Is there a better way I'm missing?\n\tsetUserSysId(userSysId);\n\treturn userSysId;\n};\n\nexport const setUserSysId = userSysId => {\n\tglobalThis.nowUiFramework = globalThis.nowUiFramework || {};\n\tglobalThis.nowUiFramework.tempUserSysId = userSysId;\n};\n","// Simple LRU cache policy for use with the persistent IndexedDB cache\n\n// const {log} = console;\n\nexport const makeLRUCachePolicy = capacity => {\n\tlet lruArray = [];\n\n\tconst initLRU = all => {\n\t\tconst entries = Object.values(all);\n\t\t// log(`entries=${JSON.stringify(entries, null, 2)}`);\n\n\t\t// Sort all by timestamp in newest first order\n\t\tentries.sort((a, b) => {\n\t\t\tconst dateA = a.cachePolicyState.lastAccessed;\n\t\t\tconst dateB = b.cachePolicyState.lastAccessed;\n\t\t\t// log(`dateB=${dateB}`);\n\t\t\t// log(`dateA=${dateA}`);\n\t\t\tconst result = dateB - dateA;\n\t\t\t// log(`result=${result}`);\n\n\t\t\treturn result;\n\t\t});\n\t\t// log(`sorted=${JSON.stringify(all, null, 2)}`);\n\n\t\tfor (const entry of entries) lruArray.push(entry.key);\n\n\t\t// log(`lruArray=${JSON.stringify(lruArray, null, 2)}`);\n\t};\n\n\tconst evict = capacity => {\n\t\tconst len = lruArray.length;\n\t\tif (len > capacity) {\n\t\t\t// Even if this is over by more than one, we trim it to capacity\n\t\t\tconst keysToDelete = lruArray.splice(capacity, len - capacity);\n\t\t\t// log(`evict(): keysToDelete=${JSON.stringify(keysToDelete, null, 2)}`);\n\t\t\treturn keysToDelete;\n\t\t}\n\n\t\treturn [];\n\t};\n\n\t// Bump key to the front and evict if we are over capacity\n\tconst updateLRU = key => {\n\t\tconst index = lruArray.findIndex(k => k === key);\n\t\tlet keysToDelete;\n\t\tif (index === -1) {\n\t\t\t// Not found, so first evict to make space, then prepend the new key\n\t\t\tkeysToDelete = evict(capacity - 1);\n\t\t} else {\n\t\t\tkeysToDelete = evict(capacity);\n\t\t\tlruArray.splice(index, 1);\n\t\t}\n\t\tlruArray = [key, ...lruArray];\n\t\t// log(`updateLRU(): lruArray=${JSON.stringify(lruArray, null, 2)}`);\n\n\t\tconst result = {keysToDelete, state: {lastAccessed: new Date()}};\n\t\t// log(`updateLRU(): result=${JSON.stringify(result, null, 2)}`);\n\t\treturn result;\n\t};\n\n\tconst deleteFromLRU = key => {\n\t\tconst index = lruArray.findIndex(k => k === key);\n\t\tif (index === -1) return;\n\n\t\tlruArray.splice(index, 1);\n\t};\n\n\tconst clearLRU = () => {\n\t\tlruArray = [];\n\t};\n\n\treturn {\n\t\tcapacity,\n\t\tonInit: initLRU,\n\t\tonHit: updateLRU,\n\t\tonSet: updateLRU,\n\t\tonDelete: deleteFromLRU,\n\t\tonClear: clearLRU\n\t};\n};\n","import {configConstants, getConfigItem} from '@servicenow/ui-config';\n\n// Persistent database key/value cache implemented over IndexedDB with an async interface\n\nconst {GQL_CACHE_CAPACITY} = configConstants;\n\nconst cacheCapacity = getConfigItem(GQL_CACHE_CAPACITY);\n\nexport const openStore = async params => {\n\tconst {dbName, storeName, schemaVersion, options = {}} = params;\n\n\tlet db = undefined;\n\tconst cachePolicy = {\n\t\tcapacity: cacheCapacity,\n\t\tonInit: () => [],\n\t\tonHit: () => ({keysToDelete: [], state: []}),\n\t\tonSet: () => ({keysToDelete: [], state: []}),\n\t\tonDelete: () => [],\n\t\tonClear: () => undefined,\n\t\t...options.cachePolicy // Caller-provided options override the defaults above\n\t};\n\n\tconst getStore = mode => db.transaction(storeName, mode).objectStore(storeName);\n\n\tconst self = {\n\t\tasync get(key, defaultValue = undefined) {\n\t\t\treturn new Promise(resolve => {\n\t\t\t\tconst store = getStore('readwrite');\n\t\t\t\tconst getRequest = store.get(key);\n\n\t\t\t\tgetRequest.onerror = err => {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`Error retrieving item in getter for '${key}': Error code: ${err.target.errorCode}`\n\t\t\t\t\t);\n\t\t\t\t\tresolve(defaultValue);\n\t\t\t\t};\n\n\t\t\t\tgetRequest.onsuccess = event => {\n\t\t\t\t\t// log(`Item for ${key} is ${event.target.result}`);\n\t\t\t\t\tconst entry = event.target.result;\n\n\t\t\t\t\t// Create a set request and save the metadata for this key/value (don't resolve this request until the set is complete)\n\t\t\t\t\tconst {keysToDelete} = cachePolicy.onHit(key);\n\n\t\t\t\t\t// TODO: Delete all keys the cachePolicy asked us to\n\t\t\t\t\tfor (const key of keysToDelete) store.delete(key);\n\t\t\t\t\t// TODO: Probably don't really need to wait for these to delete, so let's not for now\n\n\t\t\t\t\tself\n\t\t\t\t\t\t.set(key, entry.value)\n\t\t\t\t\t\t.then(() => resolve(entry.value))\n\t\t\t\t\t\t.catch(() => resolve(defaultValue));\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\n\t\tasync getAll(includeMetaData = false) {\n\t\t\treturn new Promise(resolve => {\n\t\t\t\t// log(`getAll(): dbName=${dbName}, storeName=${storeName}`);\n\t\t\t\tconst store = getStore('readonly');\n\t\t\t\tconst getAllKeysRequest = store.getAllKeys();\n\t\t\t\tconst all = {};\n\n\t\t\t\tgetAllKeysRequest.onerror = err => {\n\t\t\t\t\tconsole.error(`Error in getAll(): Error code: ${err.target.errorCode}`);\n\t\t\t\t\tresolve({});\n\t\t\t\t};\n\n\t\t\t\tgetAllKeysRequest.onsuccess = event => {\n\t\t\t\t\t// log(`Result for getAll() is ${JSON.stringify(event.target.result)}`);\n\n\t\t\t\t\t// Get all the entries\n\t\t\t\t\tconst keys = event.target.result;\n\t\t\t\t\tlet numRemaining = keys.length;\n\t\t\t\t\tif (numRemaining === 0) resolve({});\n\n\t\t\t\t\tfor (const key of keys) {\n\t\t\t\t\t\tconst getRequest = store.get(key);\n\n\t\t\t\t\t\tgetRequest.onerror = err => {\n\t\t\t\t\t\t\tconsole.error(`Error in getAll(): Error code: ${err.target.errorCode}`);\n\t\t\t\t\t\t\tresolve({});\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tgetRequest.onsuccess = event => {\n\t\t\t\t\t\t\tconst entry = event.target.result;\n\t\t\t\t\t\t\tall[key] = includeMetaData ? entry : entry.value;\n\t\t\t\t\t\t\tnumRemaining -= 1;\n\t\t\t\t\t\t\tif (numRemaining === 0) resolve(all);\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\n\t\tasync set(key, value) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst store = getStore('readwrite');\n\n\t\t\t\tconst {keysToDelete, state} = cachePolicy.onSet(key);\n\n\t\t\t\tconst putRequest = store.put({key, value, cachePolicyState: state}, key);\n\n\t\t\t\t// TODO: Delete all keys the cachePolicy asked us to\n\t\t\t\tfor (const key of keysToDelete) store.delete(key);\n\t\t\t\t// TODO: Probably don't really need to wait for these to delete, so let's not for now\n\n\t\t\t\tputRequest.onerror = err => {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`Error setting item in set() for '${key}': Error code: ${err.target.errorCode}`\n\t\t\t\t\t);\n\t\t\t\t\treject(err.target.errorCode);\n\t\t\t\t};\n\n\t\t\t\tputRequest.onsuccess = event => {\n\t\t\t\t\t// log(`Item for ${key} is ${event.target.result}`);\n\t\t\t\t\tresolve(event.target.value);\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\n\t\tasync setMultiple(obj) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst store = getStore('readwrite');\n\n\t\t\t\tlet numRequestsMade = 0;\n\t\t\t\tlet numRequestsComplete = 0;\n\n\t\t\t\tfor (const [key, value] of obj) {\n\t\t\t\t\tconst {keysToDelete, state} = cachePolicy.onSet(key);\n\n\t\t\t\t\t// TODO: Delete all keys the cachePolicy asked us to\n\t\t\t\t\tfor (const key of keysToDelete) store.delete(key);\n\t\t\t\t\t// TODO: Probably don't really need to wait for these to delete, so let's not for now\n\n\t\t\t\t\tconst putRequest = store.put({key, value, cachePolicyState: state}, key);\n\n\t\t\t\t\t// TODO: Should abort() if any failures and ideally abort the txn\n\t\t\t\t\tputRequest.onerror = err => {\n\t\t\t\t\t\tconsole.error(`Error setting item in setMultiple: Error code: ${err.target.errorCode}`);\n\t\t\t\t\t\tnumRequestsComplete += 1;\n\t\t\t\t\t\tif (numRequestsComplete === numRequestsMade) reject(err.target.errorCode);\n\t\t\t\t\t};\n\n\t\t\t\t\tputRequest.onsuccess = () => {\n\t\t\t\t\t\tnumRequestsComplete += 1;\n\t\t\t\t\t\tif (numRequestsComplete === numRequestsMade) resolve();\n\t\t\t\t\t};\n\n\t\t\t\t\tnumRequestsMade += 1;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\n\t\tasync has(key) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst store = getStore('readonly');\n\t\t\t\tconst countRequest = store.count(key);\n\n\t\t\t\tcountRequest.onerror = err => {\n\t\t\t\t\tconsole.error(`Error getting count for '${key}': Error code: ${err.target.errorCode}`);\n\t\t\t\t\treject(err.target.errorCode);\n\t\t\t\t};\n\n\t\t\t\tcountRequest.onsuccess = () => {\n\t\t\t\t\tresolve(countRequest.result > 0);\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\n\t\tasync clear() {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst store = getStore('readwrite');\n\t\t\t\tconst clearRequest = store.clear();\n\n\t\t\t\tclearRequest.onerror = err => {\n\t\t\t\t\tconsole.error(`IndexedDB clear failed.  Error code: ${err.target.errorCode}`);\n\t\t\t\t\treject(err.target.errorCode);\n\t\t\t\t};\n\n\t\t\t\tclearRequest.onsuccess = () => {\n\t\t\t\t\t// options.onClear();\n\t\t\t\t\tresolve();\n\t\t\t\t\t// log('Store Cleared');\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\n\t\tasync delete(key) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst store = getStore('readwrite');\n\t\t\t\tconst deleteRequest = store.delete(key);\n\n\t\t\t\tdeleteRequest.onerror = err => {\n\t\t\t\t\tconsole.error(`IndexedDB clear failed.  Error code: ${err.target.errorCode}`);\n\t\t\t\t\treject(err.target.errorCode);\n\t\t\t\t};\n\n\t\t\t\tdeleteRequest.onsuccess = () => {\n\t\t\t\t\tresolve();\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\n\t\tasync size() {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst store = getStore('readonly');\n\t\t\t\tconst countRequest = store.count();\n\n\t\t\t\tcountRequest.onerror = err => {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`Error getting total record count for ${storeName}: Error code: ${err.target.errorCode}`\n\t\t\t\t\t);\n\t\t\t\t\treject(err.target.errorCode);\n\t\t\t\t};\n\n\t\t\t\tcountRequest.onsuccess = () => {\n\t\t\t\t\tresolve(countRequest.result);\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\n\t\tclose() {\n\t\t\tdb.close();\n\t\t}\n\t};\n\n\t// Open the database and return an object that can reference the db via closure\n\treturn new Promise((resolve, reject) => {\n\t\tif (!globalThis.indexedDB) {\n\t\t\treject(\n\t\t\t\t'Browser does not seem to support IndexedDB, which is required for this feature to work.'\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst dbRequest = globalThis.indexedDB.open(dbName, schemaVersion);\n\n\t\tdbRequest.onsuccess = event => {\n\t\t\tdb = event.target.result;\n\t\t\t// log('openStore.onsuccess');\n\n\t\t\t// Give the policy a chance to update its internal state\n\t\t\tself.getAll(true).then(allEntries => {\n\t\t\t\tcachePolicy.onInit(allEntries);\n\t\t\t\tresolve(self);\n\t\t\t});\n\t\t};\n\n\t\tdbRequest.onerror = err => {\n\t\t\tconsole.log(`err=${dbRequest.error}`);\n\t\t\tconsole.error(\n\t\t\t\t`openStore: IndexedDB error: ${err.target.errorCode}.\\nBrowser possibly does not support IndexedDB.`\n\t\t\t);\n\t\t\treject(err.target.error);\n\t\t};\n\n\t\tdbRequest.onupgradeneeded = event => {\n\t\t\t// log('openStore.onupgradeneeded');\n\n\t\t\tdb = event.target.result;\n\n\t\t\ttry {\n\t\t\t\tdb.createObjectStore(storeName, {\n\t\t\t\t\tautoIncrement: true\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\tconsole.error(`EXCEPTION: ${e}`);\n\t\t\t}\n\t\t};\n\t});\n};\n\nasync function dropDatabaseImpl(dbName) {\n\treturn new Promise((resolve, reject) => {\n\t\tif (!globalThis.indexedDB) {\n\t\t\treject(\n\t\t\t\t'Browser does not seem to support IndexedDB, which is required for this feature to work.'\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tvar deleteRequest = globalThis.indexedDB.deleteDatabase(dbName);\n\n\t\tdeleteRequest.onsuccess = () => {\n\t\t\t// log('Deleted database successfully');\n\t\t\tresolve();\n\t\t};\n\n\t\tdeleteRequest.onerror = err => {\n\t\t\tconsole.error(\n\t\t\t\t`Error deleting database with name: ${dbName}  Error code: ${deleteRequest.error}`\n\t\t\t);\n\t\t\treject(err.target.errorCode);\n\t\t};\n\n\t\tdeleteRequest.onblocked = () => {\n\t\t\t// log('Database is busy.  Please try again later.  Goodbye.');\n\t\t\treject('Database is busy.');\n\t\t};\n\t});\n}\n\n// Drop an entire database\nexport async function dropDatabase(dbName) {\n\tlet result;\n\t// This needs to run at least twice if the database was recently closed\n\tdo {\n\t\ttry {\n\t\t\tresult = await dropDatabaseImpl(dbName);\n\t\t} catch (e) {\n\t\t\t// Database was busy and could not be deleted\n\t\t}\n\t} while (result);\n}\n\n// // Drop a single, named store within a given database\n// async function dropStoreImpl(storeName, dbName, version) {\n// \tlog('dropStore 1');\n// \t// Open the database and return an object that can reference the db via closure\n// \treturn new Promise((resolve, reject) => {\n// \t\tif (!globalThis.indexedDB) {\n// \t\t\treject(\n// \t\t\t\t'Browser does not seem to support IndexedDB, which is required for this feature to work.'\n// \t\t\t);\n// \t\t\treturn;\n// \t\t}\n\n// \t\tlog('dropStore 2');\n// \t\tconst dbRequest = globalThis.indexedDB.open(dbName, version);\n// \t\tlog('dropStore 3');\n\n// \t\tdbRequest.onsuccess = () => {\n// \t\t\tlog('opened!');\n// \t\t\tresolve();\n// \t\t};\n\n// \t\tdbRequest.onerror = err => {\n// \t\t\tlog(`err=${JSON.stringify(err)}`);\n// \t\t\terror(`dropStore: IndexedDB error: ${err.target.errorCode}`);\n// \t\t\treject(err.target.error);\n// \t\t};\n\n// \t\tlog('dropStore 4');\n\n// \t\tdbRequest.onupgradeneeded = event => {\n// \t\t\tlog('dbRequest.onupgradeneeded');\n// \t\t\tconst db = event.target.result;\n// \t\t\tlog(`db=${db} storeName=${storeName}`);\n\n// \t\t\tdb.deleteObjectStore(storeName);\n// \t\t\tresolve();\n// \t\t};\n\n// \t\tlog('dropStore 6');\n// \t});\n// }\n\n// export async function dropStore(storeName, dbName, version) {\n// \ttry {\n// \t\tawait dropStoreImpl(storeName, dbName, version);\n// \t} catch (e) {\n// \t\tlog(`dropStore Exception: ${e}`);\n// \t}\n// }\n","import {openStore} from './store';\n\nconst cachePromises = {};\n\n// A persistent cache backed by IndexedDB\nexport const makePersistentCache = async ({dbName, storeName, schemaVersion, options}) => {\n\t// In case multiple clients want caches for the same store, we use the previously created promise to ensure\n\t// they all end up with the same one.  They will all get back the same resolved promise.\n\tconst dbKey = `${dbName}_${storeName}_${schemaVersion}`;\n\tif (cachePromises[dbKey]) return cachePromises[dbKey];\n\n\tconst creationPromise = new Promise((resolve, reject) => {\n\t\tconst map = new Map();\n\n\t\t// Persistent cache\n\t\topenStore({dbName, storeName, schemaVersion, options})\n\t\t\t.then(store => {\n\t\t\t\tlet inMemoryCacheHits = 0;\n\t\t\t\tlet persistentCacheHits = 0;\n\n\t\t\t\t// Return an object with the interface methods we expose\n\t\t\t\tconst self = {\n\t\t\t\t\tname() {\n\t\t\t\t\t\treturn dbName;\n\t\t\t\t\t},\n\n\t\t\t\t\tversion() {\n\t\t\t\t\t\treturn schemaVersion;\n\t\t\t\t\t},\n\n\t\t\t\t\tasync has(key) {\n\t\t\t\t\t\treturn map.has(key) || (await store.has(key));\n\t\t\t\t\t},\n\n\t\t\t\t\tasync set(key, value) {\n\t\t\t\t\t\t// log(`cache.set('${key}', '${value}')`);\n\t\t\t\t\t\t// NOTE: We always set directly into the in-memory Map, never into the underlying IndexedDB\n\t\t\t\t\t\tmap.set(key, value);\n\t\t\t\t\t},\n\n\t\t\t\t\tasync get(key, defaultValue = undefined) {\n\t\t\t\t\t\t// log(`cache.get(${key},${defaultValue})`);\n\t\t\t\t\t\tlet value = map.get(key);\n\t\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\t\tinMemoryCacheHits += 1;\n\t\t\t\t\t\t\t// log(`inMemoryCacheHits: ${inMemoryCacheHits}`);\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Check the persistent cache\n\t\t\t\t\t\tvalue = await store.get(key, defaultValue);\n\t\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\t\tpersistentCacheHits += 1;\n\t\t\t\t\t\t\t// log(`persistentCacheHits: ${persistentCacheHits}`);\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn defaultValue;\n\t\t\t\t\t},\n\n\t\t\t\t\tasync getAll(includeMetadata = false) {\n\t\t\t\t\t\t// Get the persistent entries first\n\t\t\t\t\t\tconst result = await store.getAll(includeMetadata);\n\n\t\t\t\t\t\t// In-memory cache entries will overwrite persistent entries\n\t\t\t\t\t\tfor (const [key, value] of map.entries()) result[key] = value;\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t},\n\n\t\t\t\t\t// Delete from both the in-memory and persistent caches\n\t\t\t\t\tasync delete(key) {\n\t\t\t\t\t\tawait store.delete(key);\n\t\t\t\t\t\tmap.delete(key);\n\t\t\t\t\t},\n\n\t\t\t\t\tasync clear() {\n\t\t\t\t\t\tmap.clear();\n\t\t\t\t\t\tawait store.clear();\n\t\t\t\t\t\tinMemoryCacheHits = 0;\n\t\t\t\t\t\tpersistentCacheHits = 0;\n\t\t\t\t\t},\n\n\t\t\t\t\tclose() {\n\t\t\t\t\t\tself.clear();\n\t\t\t\t\t\tstore.close();\n\t\t\t\t\t},\n\n\t\t\t\t\t// Force all locally cached values into the database\n\t\t\t\t\tasync persist() {\n\t\t\t\t\t\tconst entries = map.entries();\n\t\t\t\t\t\tawait store.setMultiple(entries);\n\t\t\t\t\t\tmap.clear();\n\t\t\t\t\t},\n\n\t\t\t\t\tinMemorySize() {\n\t\t\t\t\t\treturn map.size;\n\t\t\t\t\t},\n\n\t\t\t\t\tasync persistedSize() {\n\t\t\t\t\t\treturn await store.size();\n\t\t\t\t\t},\n\n\t\t\t\t\tinMemoryCacheHits() {\n\t\t\t\t\t\treturn inMemoryCacheHits;\n\t\t\t\t\t},\n\n\t\t\t\t\tpersistentCacheHits() {\n\t\t\t\t\t\treturn persistentCacheHits;\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tresolve(self);\n\t\t\t})\n\t\t\t.catch(e => {\n\t\t\t\treject(e);\n\t\t\t});\n\t});\n\n\t// Remember this promise so we can return it again if another caller asks for the same cache\n\tcachePromises[dbKey] = creationPromise;\n\treturn creationPromise;\n};\n","export default function getGlobalObject() {\n\tif (typeof self !== 'undefined') return self;\n\n\tif (typeof window !== 'undefined') return window;\n\n\tif (typeof global !== 'undefined') return global;\n\n\tthrow new Error('Unable to locate global object');\n}\n","import {getConfigItem, configConstants} from '@servicenow/ui-config';\n\nconst {DISABLE_REST_BATCHING} = configConstants;\nexport default function isBatchingEnabled() {\n\tif (typeof getConfigItem(DISABLE_REST_BATCHING) === 'boolean')\n\t\treturn !getConfigItem(DISABLE_REST_BATCHING);\n\n\treturn true;\n}\n","import getGlobalObject from './getGlobalObject';\nimport isBatchingEnabled from './isBatchingEnabled';\nimport {createSnHttp} from '@servicenow/ui-utils';\n\nconst root = getGlobalObject();\nconst {navigator} = root;\n\nconst createSnHttpForRest = createSnHttp({\n\txsrfToken: root.g_ck,\n\txTransactionSource: root.transaction_source,\n\tmaxConcurrent: navigator && navigator.userAgent.indexOf('Trident/7.0') !== -1 ? 1 : 4,\n\tbatching: isBatchingEnabled(root)\n});\n\nexport default createSnHttpForRest;\n","import {memoize} from '@servicenow/ui-internal';\n\nfunction containsNonAsciiChars(str = '') {\n\treturn typeof str !== 'string' ? false : [...str].some(char => char.charCodeAt(0) > 127);\n}\n\nconst memoizedContainsNonAsciiChars = memoize(containsNonAsciiChars, {\n\tprofileName: 'containsNonAsciiChars'\n});\n\n/**\n * Removes headers with non ascii values\n * @private\n * @param headers\n */\nexport default function filterHeaders(headers) {\n\tconst nonAsciiHeader = {};\n\tfor (const key in headers) {\n\t\tif (!memoizedContainsNonAsciiChars(headers[key])) nonAsciiHeader[key] = headers[key];\n\t}\n\n\treturn nonAsciiHeader;\n}\n","import {omit, pick, whenIdle} from '@servicenow/ui-internal';\nimport {configConstants, getConfigItem} from '@servicenow/ui-config';\nimport {getUserSysId, makePersistentCache, makeLRUCachePolicy} from '@servicenow/ui-effect-helpers';\nimport createSnHttp from './snHttp';\nimport filterHeaders from './filterHeaders';\nimport log from './log';\n\nconst IGNORED_HEADERS = ['NOW-UI-INTERACTION', 'NOW-UX-INTERACTION'];\nconst {HTTP_CACHING_ENABLED, HTTP_CACHE_CAPACITY, HTTP_CACHE_MAX_PERSIST} = configConstants;\nconst isCacheEnabled = getConfigItem(HTTP_CACHING_ENABLED);\nconst cacheCapacity = getConfigItem(HTTP_CACHE_CAPACITY);\nconst cacheMaxPersist = getConfigItem(HTTP_CACHE_MAX_PERSIST) || 2880;\n\nlet persistantCache;\n\nconst getCache = async function () {\n\tif (persistantCache) {\n\t\treturn persistantCache;\n\t}\n\ttry {\n\t\tpersistantCache = await makePersistentCache({\n\t\t\tdbName: 'Seismic',\n\t\t\tstoreName: 'gqlQueries',\n\t\t\tschemaVersion: 1,\n\t\t\toptions: {cachePolicy: makeLRUCachePolicy(cacheCapacity)}\n\t\t});\n\t} catch (e) {\n\t\treturn null;\n\t}\n\treturn persistantCache;\n};\n\nconst getCacheKey = ({url, headers, params}) => {\n\tconst stringifiedHeaders = JSON.stringify(omit(headers, IGNORED_HEADERS));\n\tconst stringifiedParams = JSON.stringify(params);\n\n\t// @FIXME: This is more fragile than a faberge egg.  Find or create a public API to get a user sys_id\n\tconst userToken = getUserSysId(globalThis);\n\n\treturn `${url}:${stringifiedHeaders}:${stringifiedParams}:${userToken}`;\n};\n\nexport default async function sendRequest(url, method, options) {\n\tconst snHttp = window?.nowUiFramework?.snHttp || (await createSnHttp());\n\tconst {\n\t\theaders = {},\n\t\tparams,\n\t\tdata,\n\t\tonUploadProgress = () => {},\n\t\tbatch = true,\n\t\tcacheable = false,\n\t\tcancelPromiseSymbol,\n\t\tmultipartConfig,\n\t\tspan: httpSpan\n\t} = options;\n\n\tconst abortController = new AbortController();\n\tconst updatedHeaders = filterHeaders(headers);\n\tconst cacheKey = getCacheKey({url, headers: updatedHeaders, params});\n\t// Disable caching for multipart requests\n\t// eslint-disable-next-line eqeqeq\n\tconst cacheRequested = cacheable && multipartConfig == null;\n\tconst shouldCache = cacheRequested && method === 'GET';\n\tconst isImpersonating = window.NOW?.user?.isImpersonating;\n\thttpSpan?.setAttribute('is.impersonating', isImpersonating);\n\thttpSpan?.addEvent('sendRequest');\n\tconst promise = () => {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tsnHttp\n\t\t\t\t.request(url, method, {\n\t\t\t\t\theaders: updatedHeaders,\n\t\t\t\t\tparams,\n\t\t\t\t\tdata,\n\t\t\t\t\tonUploadProgress,\n\t\t\t\t\tbatch,\n\t\t\t\t\tsignal: abortController.signal,\n\t\t\t\t\tmultipartConfig,\n\t\t\t\t\tspan: httpSpan\n\t\t\t\t})\n\t\t\t\t.then(async results => {\n\t\t\t\t\tif (isCacheEnabled && shouldCache && !isImpersonating) {\n\t\t\t\t\t\tconst cache = await getCache();\n\t\t\t\t\t\tif (cache) {\n\t\t\t\t\t\t\tconst dataToCache = pick(results, ['data', 'headers', 'status', 'statusText']);\n\t\t\t\t\t\t\t// add now as the cached date if its not on the header\n\t\t\t\t\t\t\tif (!dataToCache?.headers?.date) {\n\t\t\t\t\t\t\t\tif (dataToCache?.headers) {\n\t\t\t\t\t\t\t\t\tdataToCache.headers.date = Date.now();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tawait cache.set(cacheKey, dataToCache);\n\n\t\t\t\t\t\t\twhenIdle(() => cache.persist());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\thttpSpan?.setStatus(results.status);\n\t\t\t\t\tresolve(results);\n\t\t\t\t})\n\t\t\t\t.catch(error => {\n\t\t\t\t\tconst {response: {data, status, statusText, headers} = {}, message} = error;\n\t\t\t\t\thttpSpan?.setStatus(status);\n\t\t\t\t\thttpSpan?.recordException(error);\n\n\t\t\t\t\treject({\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\tstatusText,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t...(updatedHeaders && {headers: updatedHeaders}),\n\t\t\t\t\t\t\t...(headers && {responseHeaders: headers}),\n\t\t\t\t\t\t\t...(params && {params}),\n\t\t\t\t\t\t\t...(data && {data})\n\t\t\t\t\t\t},\n\t\t\t\t\t\t...(message && {message})\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t});\n\t};\n\n\tif (cancelPromiseSymbol) {\n\t\tpromise[cancelPromiseSymbol] = () => {\n\t\t\tabortController.abort();\n\t\t};\n\t}\n\tconst cache = await getCache();\n\tconst isCached = cache ? await cache.has(cacheKey) : false;\n\tif (shouldCache && isCached) {\n\t\tconst cachedResult = await cache.get(cacheKey);\n\n\t\tconst {headers} = cachedResult;\n\t\tconst cachedDate = new Date(headers?.date);\n\t\tif (headers?.date && cachedDate) {\n\t\t\tconst minutesSinceCached = (Date.now() - cachedDate) / 1000 / 60;\n\t\t\tif (minutesSinceCached < cacheMaxPersist) {\n\t\t\t\treturn {\n\t\t\t\t\tisCachedResult: true,\n\t\t\t\t\trefetchPromise: promise,\n\t\t\t\t\t...cachedResult\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t} else if (cacheRequested && !shouldCache) {\n\t\tlog(`HTTP caching not available for ${method} method requests`);\n\t}\n\n\treturn {\n\t\tisCachedResult: false,\n\t\trequestPromise: promise\n\t};\n}\n","import pathToRegexp from 'path-to-regexp';\n\nexport default function replacePathParameters(\n\turl = '',\n\tpathParams = {},\n\t{encodeURIComponent} = {}\n) {\n\tconst toPath = pathToRegexp.compile(url, {sensitive: true, whitelist: './'});\n\tconst toPathOptions = encodeURIComponent === false ? {encode: str => str} : {};\n\treturn toPath(pathParams, toPathOptions);\n}\n","import * as uiAnalyticsConsumer from '@servicenow/ui-analytics-consumer';\nimport {mark, types as metrics, getInteractionId} from '@servicenow/ui-metrics';\nimport {createHttpErrorAction} from '@servicenow/ui-effect-helpers';\nimport sendRequest from './sendRequest';\nimport replacePathParameters from './replacePathParams';\nimport {\n\tget,\n\tpick,\n\tisEqual,\n\taddPendingNetworkActionForHost,\n\tremovePendingNetworkActionForHost,\n\tdefer,\n\tgetSpanOptions\n} from '@servicenow/ui-internal';\n\nimport {configConstants, getConfigItem} from '@servicenow/ui-config';\n\nimport log from './log';\nimport {\n\tSPAN_ATTR_HTTP_BATCH,\n\tSPAN_ATTR_HTTP_CACHEABLE,\n\tSPAN_ATTR_HTTP_ERR,\n\tSPAN_ATTR_HTTP_METHOD,\n\tSPAN_ATTR_HTTP_STATUS,\n\tSPAN_ATTR_HTTP_URL,\n\tSPAN_FOR_HTTP,\n\tSPAN_KIND_CLIENT,\n\tSPAN_TRACE_PARENT,\n\tSPAN_ATTR_INTERACTION_ID,\n\tSPAN_DOCUMENT_TRACE_PARENT\n} from './constants';\n\nexport const HTTP_REQUEST_STARTED = 'HTTP_REQUEST_STARTED';\nexport const HTTP_REQUEST_PROGRESS_UPDATED = 'HTTP_REQUEST_PROGRESS_UPDATED';\nexport const HTTP_REQUEST_SUCCEEDED = 'HTTP_REQUEST_SUCCEEDED';\nexport const HTTP_REQUEST_FAILED = 'HTTP_REQUEST_FAILED';\nexport const HTTP_CACHE_UPDATED = 'HTTP_CACHE_UPDATED';\nexport const HTTP_EFFECT_SESSION_NOTIFICATIONS_RECEIVED =\n\t'HTTP_EFFECT_SESSION_NOTIFICATIONS_RECEIVED';\n\nexport const HEADER_X_WANT_AUTH_SESSION_NOTIFICATION_MESSAGES = 'X-WantAuthSessionNotifications';\n\nconst {HTTP_CACHING_REFRESH_DELAY} = configConstants;\n\nconst cacheDelay = getConfigItem(HTTP_CACHING_REFRESH_DELAY) || 10000;\nconst {tracer, createTraceParentHeader} = uiAnalyticsConsumer;\n\nexport const createMultipartConfig = (\n\t{partReceivedActionType, parsePartsAsJson, emitCompletedResponse},\n\tdispatch,\n\tmetaData\n) => {\n\tlet multipartConfig;\n\tif (partReceivedActionType) {\n\t\tmultipartConfig = {\n\t\t\tmultipartConsumer: partRecvd =>\n\t\t\t\tdispatch(partReceivedActionType, partRecvd?.body, {\n\t\t\t\t\t...metaData,\n\t\t\t\t\tresponseHeaders: partRecvd?.headers\n\t\t\t\t})\n\t\t};\n\n\t\tmultipartConfig.parsePartsAsJson =\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tparsePartsAsJson != undefined ? Boolean(parsePartsAsJson) : true;\n\t\tmultipartConfig.emitCompletedResponse =\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\temitCompletedResponse != undefined ? Boolean(emitCompletedResponse) : true;\n\t}\n\n\treturn multipartConfig;\n};\n\nexport function* httpEffect(url, options = {}, coeffects) {\n\tconst {\n\t\tmethod = 'GET',\n\t\theaders = {},\n\t\theaderList = [],\n\t\tpathParams = [],\n\t\tqueryParams = [],\n\t\tdataParam = 'data',\n\t\tbatch = true,\n\t\tcacheable = false,\n\t\tencodeURIComponent = true,\n\t\tcancelPromiseSymbol,\n\t\tstartActionType = HTTP_REQUEST_STARTED,\n\t\tprogressActionType = HTTP_REQUEST_PROGRESS_UPDATED,\n\t\tsuccessActionType = HTTP_REQUEST_SUCCEEDED,\n\t\terrorActionType = HTTP_REQUEST_FAILED,\n\t\tcacheUpdateActionType = HTTP_CACHE_UPDATED,\n\t\tstreaming = {}\n\t} = options;\n\n\tconst {action, dispatch, host} = coeffects;\n\tconst {payload} = action;\n\tconst updatedUrl = replacePathParameters(url, pick(payload, pathParams), {\n\t\tencodeURIComponent\n\t});\n\tconst params = pick(payload, queryParams);\n\tconst data = get(payload, dataParam, undefined);\n\n\tconst httpSpan = tracer.startSpan(SPAN_FOR_HTTP, {\n\t\t...getSpanOptions(host),\n\t\tkind: SPAN_KIND_CLIENT\n\t});\n\thttpSpan.setAttribute(SPAN_ATTR_HTTP_METHOD, method);\n\thttpSpan.setAttribute(SPAN_ATTR_HTTP_URL, updatedUrl);\n\tconst metaData = {\n\t\t...action.meta,\n\t\t...(httpSpan.isRecording() && {span: httpSpan}),\n\t\trequest: {\n\t\t\turl,\n\t\t\tupdatedUrl,\n\t\t\tparams,\n\t\t\tdata,\n\t\t\t...options\n\t\t}\n\t};\n\tconst multipartConfig = createMultipartConfig(streaming, dispatch, metaData);\n\n\tfunction onUploadProgress(progressEvent) {\n\t\tdispatch(progressActionType, {progressEvent}, metaData);\n\t}\n\taddPendingNetworkActionForHost(action, host);\n\ttry {\n\t\tdispatch(startActionType, {}, metaData);\n\t\tconst interactionId = getInteractionId(action.meta);\n\t\tif (updatedUrl.indexOf('/null') !== -1 || updatedUrl.indexOf('/undefined') !== -1) {\n\t\t\tconst {tagName, nowId} = host;\n\t\t\tlog(\n\t\t\t\t`An HTTP request with the url of ${updatedUrl} was made. Please verify that ${updatedUrl} is a valid URL.`,\n\t\t\t\t{\n\t\t\t\t\ttagName,\n\t\t\t\t\tcomponentId: nowId,\n\t\t\t\t\thost,\n\t\t\t\t\torigin: 'httpEffect'\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\t/* Required by WebAPI team to send `session.notifications` as part of the responses */\n\t\tif (headers[HEADER_X_WANT_AUTH_SESSION_NOTIFICATION_MESSAGES] == null) {\n\t\t\theaders[HEADER_X_WANT_AUTH_SESSION_NOTIFICATION_MESSAGES] = true;\n\t\t}\n\t\theaders['NOW-UI-INTERACTION'] = interactionId;\n\t\tif (window.nowUiFramework && window.nowUiFramework.uxrInteractionId) {\n\t\t\theaders['NOW-UX-INTERACTION'] =\n\t\t\t\twindow.nowUiFramework.getUxrInteractionIdByHost?.(host) ||\n\t\t\t\twindow.nowUiFramework.uxrInteractionId;\n\t\t}\n\n\t\tmark(host, interactionId, metrics.HTTP, {\n\t\t\tpath: updatedUrl,\n\t\t\ttype: action.type,\n\t\t\tbatch\n\t\t});\n\t\thttpSpan.setAttribute(SPAN_ATTR_HTTP_BATCH, batch);\n\t\thttpSpan.setAttribute(SPAN_ATTR_HTTP_CACHEABLE, cacheable);\n\t\thttpSpan.setAttribute(SPAN_ATTR_INTERACTION_ID, interactionId);\n\t\tconst traceparent = createTraceParentHeader(httpSpan.id, httpSpan.traceId);\n\t\thttpSpan.setAttribute(SPAN_TRACE_PARENT, traceparent);\n\t\thttpSpan.setAttribute(SPAN_DOCUMENT_TRACE_PARENT, httpSpan.documentTraceParent);\n\t\tconst request = sendRequest(updatedUrl, method, {\n\t\t\theaders: {\n\t\t\t\t...pick(payload, headerList),\n\t\t\t\t...headers,\n\t\t\t\t...(httpSpan.isRecording() && {traceparent})\n\t\t\t},\n\t\t\tparams,\n\t\t\t...(data && {data}),\n\t\t\tonUploadProgress,\n\t\t\tbatch,\n\t\t\tcacheable,\n\t\t\tcancelPromiseSymbol,\n\t\t\tmultipartConfig,\n\t\t\t...(httpSpan.isRecording() && {span: httpSpan})\n\t\t});\n\n\t\tlet result = yield request;\n\t\tconst {isCachedResult = false, requestPromise = async () => {}} = result;\n\t\tif (!isCachedResult) {\n\t\t\tresult = yield requestPromise();\n\t\t}\n\n\t\tconst {\n\t\t\theaders: responseHeaders,\n\t\t\tdata: successData,\n\t\t\trefetchPromise = null,\n\t\t\tstatus,\n\t\t\tstatusText\n\t\t} = result;\n\n\t\tif (isCachedResult && refetchPromise) {\n\t\t\tdispatch(successActionType, successData, {...metaData, responseHeaders, status, statusText});\n\t\t\tdefer(() => {\n\t\t\t\trefetchPromise().then(refetchResult => {\n\t\t\t\t\t// compare cachedResult and refetchResult\n\t\t\t\t\tif (!isEqual(successData, refetchResult.data)) {\n\t\t\t\t\t\tdispatch(cacheUpdateActionType, refetchResult.data, {\n\t\t\t\t\t\t\t...metaData,\n\t\t\t\t\t\t\tresponseHeaders: refetchResult.headers,\n\t\t\t\t\t\t\tstatus: refetchResult.status,\n\t\t\t\t\t\t\tstatusText: refetchResult.statusText\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}, cacheDelay);\n\t\t} else {\n\t\t\thttpSpan.setAttribute(SPAN_ATTR_HTTP_STATUS, status);\n\n\t\t\tdispatch(successActionType, successData, {...metaData, responseHeaders, status, statusText});\n\t\t\tsuccessData?.session &&\n\t\t\t\tdispatch(HTTP_EFFECT_SESSION_NOTIFICATIONS_RECEIVED, successData.session, {\n\t\t\t\t\t...metaData,\n\t\t\t\t\tresponseHeaders,\n\t\t\t\t\tstatus,\n\t\t\t\t\tstatusText\n\t\t\t\t});\n\t\t}\n\t} catch (error) {\n\t\tmetaData.responseHeaders = get(error, 'options.responseHeaders', null);\n\t\tmetaData.status = error.status;\n\t\tmetaData.statusText = error.statusText;\n\t\thttpSpan.setAttribute(SPAN_ATTR_HTTP_ERR, error.message);\n\t\thttpSpan.setAttribute(SPAN_ATTR_HTTP_STATUS, error.status);\n\t\tdispatch(errorActionType, error, metaData, true);\n\n\t\t// Standard action dispatched on HTTP errors from the server\n\t\tconst {status, statusText, message, data} = error;\n\t\tconst {\n\t\t\ttype,\n\t\t\tpayload,\n\t\t\tmeta,\n\t\t\terror: httpError\n\t\t} = createHttpErrorAction(status, statusText, message, data, metaData);\n\t\tdispatch(type, payload, meta, httpError);\n\t} finally {\n\t\tremovePendingNetworkActionForHost(action, host);\n\t\thttpSpan.endSpan();\n\t}\n}\n\n/**\n * Effect that makes an HTTP request and dispatches actions at relevant parts of the life cycle:\n *  - Before the request is sent\n *  - After the request has returned (success or error)\n *  - Upload of progress updates\n *\n * The Success and Action Types that are returned also contain a `meta` property with helpful information\n * useful for debugging purposes including the response headers.\n *\n * @function createHttpEffect\n * @example\n * import {createHttpEffect} from '@servicenow/ui-effect-http';\n *\n * const USER_FETCH_SUCCESS = 'USER_FETCH_SUCCESS'\n *\n * const fetchUserEffect = createHttpEffect('api/users/:id', {\n *      method: 'POST'\n *      headers: {},\n *      pathParams: ['id']\n *      dataParam: 'data',\n *      successActionType: USER_FETCH_SUCCESS\n * });\n *\n * // Register with component action handlers:\n * {\n *     actionHandlers: {\n *         'USER_FETCHED': fetchUserEffect,\n *         [USER_FETCH_SUCCESS]: ({action, updateState}) => {...}\n *     }\n * }\n *\n * @param {String} url - URL to endpoint\n * @param {Object} options\n * @param {String} options.method - Request method: GET, POST, PUT, PATCH, DELETE (default: GET)\n * @param {Object} options.headers - Request headers\n * @param {Object<String>} options.headerList - dynamic HTTP request headers\n * @param {Boolean} options.batch - Enable or disable batching for requests made by this effect (default: true)\n * @param {Boolean} options.encodeURIComponent - Encode URL (default: true)\n * @param {String} options.dataParam - Property in dispatched action to map to the data property of the HTTP request\n * @param {Array<String>} options.pathParams - Array of properties in dispatched action to map values to dynamic path variables (\"api/users/:id\")\n * @param {Array<String>} options.queryParams - Array of properties in dispatched action to map values to URL query string variables (\"api/users?id=abc123)\n * @param {String} options.startActionType - Action to be dispatched when the HTTP request has been issued\n * @param {Object} options.streaming -  JSON object to describe how to handle data when a streaming (multipart/mixed) response is expected\n * @param options.&lt;streaming&gt;.partReceivedActionType {String} - The action to be dispatched when a streaming data part has been received\n * @param options.&lt;streaming&gt;.parsePartsAsJson {Boolean} - Parse each received data part as JSON (default: true)\n * @param options.&lt;streaming&gt;.emitCompletedResponse {Boolean} - Also emit the full response payload via the successActionType (default: true)\n * @param {String} options.progressActionType - Action to be dispatched when onprogress is triggered during the HTTP request\n * @param {String} options.successActionType - Action to be dispatched when the HTTP request has successfully completed. The response data will be available as payload which will be of type object for application/json content-type and String for others\n * @param {String} options.errorActionType - Action to be dispatched when the HTTP request has failed\n *\n * @return {Object} Http Effect Descriptor\n */\nexport default function createHttpEffect(url, options) {\n\treturn {\n\t\teffect: httpEffect,\n\t\targs: [url, options]\n\t};\n}\n","export const BEHAVIOR_NAME = 'reduce-motion';\nexport const REDUCE_MOTION_KEY = 'glide.polaris.animation_disabled';\nexport const REDUCE_MOTION_MATCH_MEDIA = '(prefers-reduced-motion: reduce)';\n","import {createContext} from '@servicenow/ui-core';\nimport {has} from 'lodash'\n\nlet USER_PREFS;\nconst USER_PREF_CONTEXTS_MAP = {};\n\n/**\n * <strong>*** Internal to UXF and should not be used by component authors ***</strong> <br/>\n * functions used to set the context when the component connects.\n * @param {Object} userPrefs - preference map\n * @param {function} updateContext - updateContext function from the coeffects\n */\nexport const setUserPrefs = (userPrefs, updateContext) => {\n\tUSER_PREFS = userPrefs;\n\n\tif(updateContext){\n\t\tfor (const [key, value] of Object.entries(USER_PREF_CONTEXTS_MAP)) {\n\t\t\tif( value.value !== USER_PREFS[key] ){\n\t\t\t\tconst updatedContextObj = {\n\t\t\t\t\tcontext: value.context,\n\t\t\t\t\tvalue: USER_PREFS[key]\n\t\t\t\t};\n\t\t\t\tUSER_PREF_CONTEXTS_MAP[key] = updatedContextObj;\n\t\t\t\tupdateContext(updatedContextObj);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * <strong>*** Internal to UXF and should not be used by component authors ***</strong> <br/>\n * function used to update userPreferences during runtime\n * @param {Object} updatedUserPref -\n * @param {function} updateContext - updateContext function from the coeffects\n */\nexport const updateUserPref = (updatedUserPref, updateContext) => {\n\tconst {name, value} = updatedUserPref;\n\tUSER_PREFS[name] = value;\n\tif(updateContext && USER_PREF_CONTEXTS_MAP[name]){\n\t\tconst updatedContextObj = {\n\t\t\tcontext: USER_PREF_CONTEXTS_MAP[name].context,\n\t\t\tvalue\n\t\t};\n\t\tupdateContext(updatedContextObj);\n\t}\n}\n\n/**\n * This is the ONLY public function exposed to component Authors!! <br/>\n * getUserPrefContext is used to get the context (symbol) of a user preference to subscribe to the changes of the userPreference.\n * Example usage:\n *      const ctx = getUserPrefContext('workspace.showRibbon');\n *      const val = state.context[ctx];\n * @param {String} userPrefName - The name/key of userPreference. Ex: workspace.showRibbon\n * @returns {Symbol} - Symbol used to uniquely identify the context\n */\nexport const getUserPrefContext = userPrefName => {\n\tif(has(USER_PREF_CONTEXTS_MAP, userPrefName)){\n\t\treturn USER_PREF_CONTEXTS_MAP[userPrefName].context;\n\t}\n\tif(has(USER_PREFS,userPrefName)) {\n\t\tconst context = createContext(userPrefName, {default: USER_PREFS[userPrefName]});\n\t\tUSER_PREF_CONTEXTS_MAP[userPrefName] = {context, value: USER_PREFS[userPrefName]};\n\t\treturn context;\n\t}\n\tconsole.warn(`Requested userPref : ${userPrefName} does not exist!!!`);\n}\n","import {createContext} from '@servicenow/ui-core';\nimport {has} from 'lodash';\n\nlet SYS_PROPS;\nconst SYS_PROPS_CONTEXTS_MAP = {};\n\n/**\n * <strong>*** Internal to UXF and should not be used by component authors ***</strong> <br/>\n * functions used to set the context when the component connects.\n * @param {Object} sysProps  - properties map\n * @param {function} updateContext - updateContext function from the coeffects\n */\nexport const setSysProps = (sysProps, updateContext) =>{\n\tSYS_PROPS = sysProps;\n\tif (updateContext) {\n\t\tfor (const [key, value] of Object.entries(SYS_PROPS_CONTEXTS_MAP)) {\n\t\t\tif (value.value !== SYS_PROPS[key]) {\n\t\t\t\tconst updatedContextObject = {\n\t\t\t\t\tcontext: value.context,\n\t\t\t\t\tvalue: SYS_PROPS[key],\n\t\t\t\t}\n\t\t\t\tSYS_PROPS_CONTEXTS_MAP[key] = updatedContextObject\n\t\t\t\tupdateContext(updatedContextObject)\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * This is the ONLY public function exposed to component Authors!! <br/>\n * getSysPropContext is used to get the context (symbol) of a user preference to subscribe to the changes of the sysProps.\n * Example usage:\n *      const ctx = getSysPropContext('glide.product.name');\n *      const val = state.context[ctx];\n * @param sysPropsName - The name/key of userPreference. Ex: glide.product.name\n * @returns {Symbol} - Symbol used to uniquely identify the context\n */\nexport const getSysPropContext = (sysPropsName) =>{\n\tif (has(SYS_PROPS_CONTEXTS_MAP, sysPropsName)) {\n\t\treturn SYS_PROPS_CONTEXTS_MAP[sysPropsName].context;\n\t}\n\tif (has(SYS_PROPS, sysPropsName)) {\n\t\tconst sysPropsContext = createContext(sysPropsName, {default: SYS_PROPS[sysPropsName]});\n\t\tSYS_PROPS_CONTEXTS_MAP[sysPropsName] = {context: sysPropsContext, value: SYS_PROPS[sysPropsName]};\n\t\treturn sysPropsContext;\n\t}\n\tconsole.warn(`Requested sysProp : ${sysPropsName} does not exist!!!`);\n}\n","export const a11yPreferences = Object.freeze( {\n  GLIDE_POLARIS_ACCESSIBILITY_PRESENCE_ICON: 'glide.polaris.accessibility.presence_icon',\n  GLIDE_POLARIS_ACCESSIBILITY_TRUNCATION_TAB_STOP: 'glide.polaris.accessibility.truncation_tab_stop',\n  GLIDE_UI_ACCESSIBILITY: 'glide.ui.accessibility',\n  GLIDE_UI_REPORT_ACCESSIBILITY_SCREEN_READER_TABLE: 'glide.ui.report.accessibility.screen_reader_table',\n  GLIDE_POLARIS_ANIMATION_DISABLED: 'glide.polaris.animation_disabled',\n  GLIDE_UI_KEYBOARD_SHORTCUTS_ENABLED: 'glide.ui.keyboard.shortcuts.enabled',\n  GLIDE_UI_ACCESSIBILITY_ACCESSIBLE_DATEFORMAT : 'glide.ui.accessibility.accessible.dateFormat',\n  GLIDE_UI_REPORT_ACCESSIBILITY_PATTERSN: 'glide.ui.report.accessibility.patterns',\n  GLIDE_UI_ACCESSIBILITY_SHOW_TRUNCATED_TEXT:'glide.ui.accessibility.show_truncated_text',\n  GLIDE_UI_ACCESSIBILITY_SHOW_HIDDEN_CONTROLS: 'glide.ui.accessibility.show_hidden_controls',\n  GLIDE_UI_ACCESSIBILITY_ACCESSIBLE_TOOLTIPS: 'glide.ui.accessibility.accessible.tooltips',\n  GLIDE_UI_ACCESSIBILITY_FOCUS_FIRST_FIELD: 'glide.ui.accessibility.focus_first_field',\n  GLIDE_UI_ACCESSIBILITY_SLUSHBUCKET_RECORD_PREVIEW_TOOLTIPS : 'glide.ui.accessibility.slushbucket.record_preview_tooltips',\n} )\n\n\n","import { actionTypes } from '@servicenow/ui-core';\n\nconst { COMPONENT_RENDER_REQUESTED } = actionTypes;\n\nexport const renderSkipBehavior = {\n\tname: 'RENDER_SKIP_BEHAVIOR',\n\tactionHandlers: {\n\t\t[COMPONENT_RENDER_REQUESTED]({ action }) {\n\t\t\tconst { meta } = action;\n\t\t\tif (!meta.firstRenderOnConnect) {\n\t\t\t\taction.preventDefault();\n\t\t\t}\n\t\t},\n\t},\n};\n","/**\n * Abstracts constructing a Blob object, so it also works in across\n * all modern browsers.\n *\n * Reference: https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob\n *\n * @param parts\n * @param properties\n */\nfunction createBlob(parts, properties) {\n\tparts = parts || [];\n\tproperties = properties || {};\n\ttry {\n\t\treturn new Blob(parts, properties);\n\t} catch (e) {\n\t\tif (e.name !== 'TypeError') {\n\t\t\tconsole.error(\"Blob isn't supported! \");\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport default createBlob;\n","/* eslint-disable no-bitwise */\nimport createBlob from './createBlob';\n\n// TODO: move these constants later\n// The best way to save binary data in localStorage is serializing\n// it to Base64, it helps us to prevent very strange errors with less\n// verbose ways of binary <-> string data storage.\nconst BASE_CHARS =\n\t'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\nconst BLOB_TYPE_PREFIX = '~~nxui_unified_cache_type~';\nconst BLOB_TYPE_PREFIX_REGEX = /^~~nxui_unified_cache_type~([^~]+)~/;\n\nconst SERIALIZED_MARKER = '__nxui_sc__:';\nconst SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;\n\n// let stack some pile of constants for the serializations!\nconst TYPE_ARRAYBUFFER = 'arbf';\nconst TYPE_BLOB = 'blob';\nconst TYPE_INT8ARRAY = 'si08';\nconst TYPE_UINT8ARRAY = 'ui08';\nconst TYPE_UINT8CLAMPEDARRAY = 'uic8';\nconst TYPE_INT16ARRAY = 'si16';\nconst TYPE_INT32ARRAY = 'si32';\nconst TYPE_UINT16ARRAY = 'ur16';\nconst TYPE_UINT32ARRAY = 'ui32';\nconst TYPE_FLOAT32ARRAY = 'fl32';\nconst TYPE_FLOAT64ARRAY = 'fl64';\nconst TYPE_SERIALIZED_MARKER_LENGTH =\n\tSERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;\n\nconst toString = Object.prototype.toString;\n\nfunction stringToBuffer(serializedString) {\n\t// Fill the string into a ArrayBuffer.\n\tlet bufferLength = serializedString.length * 0.75;\n\tconst len = serializedString.length;\n\tlet p = 0;\n\tlet encoded1, encoded2, encoded3, encoded4;\n\n\tif (serializedString[serializedString.length - 1] === '=') {\n\t\tbufferLength--;\n\t\tif (serializedString[serializedString.length - 2] === '=') {\n\t\t\tbufferLength--;\n\t\t}\n\t}\n\n\tconst buffer = new ArrayBuffer(bufferLength);\n\tconst bytes = new Uint8Array(buffer);\n\n\tfor (let i = 0; i < len; i += 4) {\n\t\tencoded1 = BASE_CHARS.indexOf(serializedString[i]);\n\t\tencoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);\n\t\tencoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);\n\t\tencoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);\n\n\t\t/*jslint bitwise: true */\n\t\tbytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n\t\tbytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n\t\tbytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n\t}\n\treturn buffer;\n}\n\n// Converts a buffer to a string to browser storage,\n// serialized, in the unifiedCache library.\nfunction bufferToString(buffer) {\n\t// base64-arraybuffer\n\tconst bytes = new Uint8Array(buffer);\n\tlet base64String = '';\n\n\tfor (let i = 0; i < bytes.length; i += 3) {\n\t\tbase64String += BASE_CHARS[bytes[i] >> 2];\n\t\tbase64String += BASE_CHARS[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n\t\tbase64String +=\n\t\t\tBASE_CHARS[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n\t\tbase64String += BASE_CHARS[bytes[i + 2] & 63];\n\t}\n\n\tif (bytes.length % 3 === 2) {\n\t\tbase64String = base64String.substring(0, base64String.length - 1) + '=';\n\t} else if (bytes.length % 3 === 1) {\n\t\tbase64String = base64String.substring(0, base64String.length - 2) + '==';\n\t}\n\n\treturn base64String;\n}\n\n// Serialize a value, afterwards executing a callback (which usually\n// instructs the `setItem()` callback/promise to be executed). This is how\n// we will be able to store binary data with localStorage.\n// TODO add more robust code to serialize all JS Object Types\nfunction serialize(value, callback) {\n\tlet valueType = '';\n\tif (value) {\n\t\tvalueType = toString.call(value);\n\t}\n\n\t// Cannot use `value instanceof ArrayBuffer` or such here, as these\n\t// checks fail when running the tests\n\tif (\n\t\tvalue &&\n\t\t(valueType === '[object ArrayBuffer]' ||\n\t\t\t(value.buffer && toString.call(value.buffer) === '[object ArrayBuffer]'))\n\t) {\n\t\t// Convert binary arrays to a string and prefix the string with\n\t\t// a special marker.\n\t\tlet buffer;\n\t\tlet marker = SERIALIZED_MARKER;\n\n\t\tif (value instanceof ArrayBuffer) {\n\t\t\tbuffer = value;\n\t\t\tmarker += TYPE_ARRAYBUFFER;\n\t\t} else {\n\t\t\tbuffer = value.buffer;\n\n\t\t\tif (valueType === '[object Int8Array]') {\n\t\t\t\tmarker += TYPE_INT8ARRAY;\n\t\t\t} else if (valueType === '[object Uint8Array]') {\n\t\t\t\tmarker += TYPE_UINT8ARRAY;\n\t\t\t} else if (valueType === '[object Uint8ClampedArray]') {\n\t\t\t\tmarker += TYPE_UINT8CLAMPEDARRAY;\n\t\t\t} else if (valueType === '[object Int16Array]') {\n\t\t\t\tmarker += TYPE_INT16ARRAY;\n\t\t\t} else if (valueType === '[object Uint16Array]') {\n\t\t\t\tmarker += TYPE_UINT16ARRAY;\n\t\t\t} else if (valueType === '[object Int32Array]') {\n\t\t\t\tmarker += TYPE_INT32ARRAY;\n\t\t\t} else if (valueType === '[object Uint32Array]') {\n\t\t\t\tmarker += TYPE_UINT32ARRAY;\n\t\t\t} else if (valueType === '[object Float32Array]') {\n\t\t\t\tmarker += TYPE_FLOAT32ARRAY;\n\t\t\t} else if (valueType === '[object Float64Array]') {\n\t\t\t\tmarker += TYPE_FLOAT64ARRAY;\n\t\t\t} else {\n\t\t\t\tcallback(new Error('Failed to get type for BinaryArray'));\n\t\t\t}\n\t\t}\n\n\t\tcallback(marker + bufferToString(buffer));\n\t} else if (valueType === '[object Blob]') {\n\t\t// Convert the blob to a binaryArray and then to a string.\n\t\tconst fileReader = new FileReader();\n\n\t\tfileReader.onload = function() {\n\t\t\t// Backwards-compatible prefix for the blob type.\n\t\t\tconst str =\n\t\t\t\tBLOB_TYPE_PREFIX + value.type + '~' + bufferToString(this.result);\n\n\t\t\tcallback(SERIALIZED_MARKER + TYPE_BLOB + str);\n\t\t};\n\n\t\tfileReader.readAsArrayBuffer(value);\n\t} else {\n\t\ttry {\n\t\t\tcallback(JSON.stringify(value));\n\t\t} catch (e) {\n\t\t\t// eslint-disable-next-line no-console\n\t\t\tconsole.error(\"Couldn't convert value into a JSON string: \", value);\n\n\t\t\tcallback(null, e);\n\t\t}\n\t}\n}\n\n//\n/**\n * Deserialize data that we've inserted into a value column/field.We place\n * special markers into our strings to mark them as encoded; treat it as a\n * meta field, but it's the only to keep localStorage support intact.\n *\n * Oftentimes this will just deserialize JSON content, but if we have a\n * special marker (SERIALIZED_MARKER, defined above), we will extract\n * some kind of arraybuffer/binary data/typed array out of the string.\n *\n * @param value\n * @returns {Float32Array|Uint8Array|Int8Array|Float64Array|Int32Array|module:buffer.Blob|Blob|Int16Array|Uint16Array|*|Uint32Array|Uint8ClampedArray}\n */\nfunction deserialize(value) {\n\t// haven't marked this string as being specially serialized\n\t// (i.e. something other than serialized JSON), we can just return it\n\tif (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {\n\t\treturn JSON.parse(value);\n\t}\n\n\t// below code deals with deserializing some kind of Blob or TypedArray.\n\t// First, we separate out the type of data we're dealing with from\n\t// the data itself.\n\tlet serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);\n\tconst type = value.substring(\n\t\tSERIALIZED_MARKER_LENGTH,\n\t\tTYPE_SERIALIZED_MARKER_LENGTH\n\t);\n\n\tlet blobType;\n\t// Blob type serialization strategy\n\tif (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {\n\t\tconst matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);\n\t\tblobType = matcher[1];\n\t\tserializedString = serializedString.substring(matcher[0].length);\n\t}\n\tconst buffer = stringToBuffer(serializedString);\n\n\t// Return the right type based on the code/type set during\n\t// serialization.\n\tswitch (type) {\n\t\tcase TYPE_ARRAYBUFFER:\n\t\t\treturn buffer;\n\t\tcase TYPE_BLOB:\n\t\t\treturn createBlob([buffer], {type: blobType});\n\t\tcase TYPE_INT8ARRAY:\n\t\t\treturn new Int8Array(buffer);\n\t\tcase TYPE_UINT8ARRAY:\n\t\t\treturn new Uint8Array(buffer);\n\t\tcase TYPE_UINT8CLAMPEDARRAY:\n\t\t\treturn new Uint8ClampedArray(buffer);\n\t\tcase TYPE_INT16ARRAY:\n\t\t\treturn new Int16Array(buffer);\n\t\tcase TYPE_UINT16ARRAY:\n\t\t\treturn new Uint16Array(buffer);\n\t\tcase TYPE_INT32ARRAY:\n\t\t\treturn new Int32Array(buffer);\n\t\tcase TYPE_UINT32ARRAY:\n\t\t\treturn new Uint32Array(buffer);\n\t\tcase TYPE_FLOAT32ARRAY:\n\t\t\treturn new Float32Array(buffer);\n\t\tcase TYPE_FLOAT64ARRAY:\n\t\t\treturn new Float64Array(buffer);\n\t\tdefault:\n\t\t\tthrow new Error('Unknown type: ' + type);\n\t}\n}\n\nconst serializer = {\n\tserialize,\n\tdeserialize,\n\tstringToBuffer: stringToBuffer,\n\tbufferToString: bufferToString\n};\n\nexport default serializer;\n","export default function normalizeKey(key) {\n\t// Cast the key to a string, as that's all we can set as a key.\n\tif (typeof key !== 'string') {\n\t\tconsole.warn(`${key} used as a key, but it is not a string.`);\n\t\tkey = String(key);\n\t}\n\n\treturn key;\n}\n","// detects whether web storage is both supported and available\nexport function isWebStorageValid(type) {\n\tlet storage;\n\ttry {\n\t\tstorage = window[type];\n\t\treturn (\n\t\t\ttypeof storage !== 'undefined' &&\n\t\t\t'setItem' in storage &&\n\t\t\t!!storage.setItem\n\t\t);\n\t} catch (e) {\n\t\treturn false;\n\t}\n}\n\nexport default isWebStorageValid;\n","function runCallback(promise, callback) {\n\tif (callback) {\n\t\tpromise.then(\n\t\t\tfunction(result) {\n\t\t\t\tcallback(null, result);\n\t\t\t},\n\t\t\tfunction(error) {\n\t\t\t\tcallback(error);\n\t\t\t}\n\t\t);\n\t}\n}\n\nexport default runCallback;\n","export default function getCallback() {\n\tif (\n\t\targuments.length &&\n\t\ttypeof arguments[arguments.length - 1] === 'function'\n\t) {\n\t\treturn arguments[arguments.length - 1];\n\t}\n}\n","/**\n *\n * @constant {{SESSIONSTORAGE: Storage, LOCALSTORAGE: Storage}}\n */\nexport const STORAGE = {\n\tLOCALSTORAGE: window.localStorage,\n\tSESSIONSTORAGE: window.sessionStorage,\n\tCACHE_API: window.caches,\n\tINDEXEDDB: window.indexedDB\n};\n\nconst DEFAULT_TTL = 300000;\nlet ttl = DEFAULT_TTL;\n\nexport const KEY_DELIMITER = '__';\n\nexport const NXUI_UNIFIED_CACHE = 'nxui__unified_cache';\n\nexport const CACHE_VERSION = 'version';\n\nexport const STORAGE_KEYPREFIX = `${KEY_DELIMITER}${NXUI_UNIFIED_CACHE}${KEY_DELIMITER}`;\n\nexport const VERSION_KEY = `${STORAGE_KEYPREFIX}${CACHE_VERSION}`;\n\nexport function getTTL() {\n\treturn ttl;\n}\n\nexport function setTTL(newTtl = DEFAULT_TTL) {\n\tttl = newTtl;\n}\n\nexport const TTL_EXPIRED_ITEM_KEYWORD = '__uc__ttl_expired_item';\n","import {VERSION_KEY} from '../../utils/constants';\n\nexport const isLRUItem = (result) => {\n\treturn (\n\t\tObject.prototype.hasOwnProperty.call(result, 'value') &&\n\t\tObject.prototype.hasOwnProperty.call(result, 'instancePrefix') &&\n\t\tObject.prototype.hasOwnProperty.call(result, 'lastUsedTime')\n\t);\n};\n\nexport const removeItemsByInstance = (adapter, instancePrefix) => {\n\tif (instancePrefix === null) return;\n\n\tlet keys = [];\n\tfor (let i = 0; i < adapter.length; i++) {\n\t\tconst itemKey = adapter.key(i);\n\t\tif (itemKey.startsWith(instancePrefix)) {\n\t\t\tkeys.push(itemKey);\n\t\t}\n\t}\n\n\tfor (const key of keys) {\n\t\tadapter.removeItem(key);\n\t}\n};\n\nexport const createInstanceAccessMap = (adapter, instancePrefix) => {\n\t// Create a hash map instanceAccessMap to track the last used time of each instance except the instance of the current inserting item.\n\t// Each instance is identified by its instance prefix, i.e., key prefix.\n\tlet instanceAccessMap = new Map();\n\tfor (let i = 0; i < adapter.length; i++) {\n\t\tconst itemKey = adapter.key(i);\n\t\tif (itemKey === VERSION_KEY) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet result = adapter.getItem(itemKey);\n\t\tresult = JSON.parse(result);\n\n\t\tif (!isLRUItem(result)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// The instance of the current inserting item is considered as the most recently used instance\n\t\tif (result.instancePrefix === instancePrefix) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!instanceAccessMap.has(result.instancePrefix)) {\n\t\t\tinstanceAccessMap.set(result.instancePrefix, 0);\n\t\t}\n\n\t\tif (result.lastUsedTime > instanceAccessMap.get(result.instancePrefix)) {\n\t\t\tinstanceAccessMap.set(result.instancePrefix, result.lastUsedTime);\n\t\t}\n\t}\n\n\treturn instanceAccessMap;\n};\n","import {\n\tcreateInstanceAccessMap,\n\tremoveItemsByInstance\n} from './helpers/lru.adapter.helpers';\n\n/**\n * Returns the current value associated with the given key, or null if the given key does not exist.\n * @param {string} key\n * @returns {string|null}\n */\nfunction getItem(key) {\n\tlet result = this.adapter.getItem(key);\n\tif (result == null) return null;\n\n\tresult = JSON.parse(result);\n\tresult.lastUsedTime = Date.now();\n\tthis.adapter.setItem(key, JSON.stringify(result));\n\n\treturn result.value;\n}\n\n/**\n * Wrap the value with a last used timestamp, a key prefix which identifies the instance that inserts the current item, and then sets the value of the pair \n * identified by key to value, creating a new key/value pair if none existed for key previously.\n *\n * If the new value couldn't be set due to a \"QuotaExceededError\" DOMException exception, remove all key/value pairs\n * from the least recently used instance, and then from the next least recently used instance until either the new value is set or no other LRU instance left.\n *\n * Throws a \"QuotaExceededError\" DOMException exception if the new value still couldn't be set.\n *\n * @param {string} keyPrefix \n * @param {string} key\n * @param {string} value\n\n */\nfunction setItem(keyPrefix, key, value) {\n\tconst data = {\n\t\tvalue: value,\n\t\tinstancePrefix: keyPrefix,\n\t\tlastUsedTime: Date.now()\n\t};\n\n\ttry {\n\t\tthis.adapter.setItem(keyPrefix + key, JSON.stringify(data));\n\t} catch (e) {\n\t\tif (e.name === 'QuotaExceededError') {\n\t\t\tlet instanceAccessMap = createInstanceAccessMap(this.adapter, keyPrefix);\n\n\t\t\t// if there is no other LRU instances, we should not evict any LRU items\n\t\t\tif (instanceAccessMap.size === 0) {\n\t\t\t\tthrow e;\n\t\t\t}\n\n\t\t\tlet instanceAccessArray = [];\n\t\t\tfor (const instancePrefix of instanceAccessMap.keys()) {\n\t\t\t\tinstanceAccessArray.push({\n\t\t\t\t\tinstancePrefix: instancePrefix,\n\t\t\t\t\tlastUsedTime: instanceAccessMap.get(instancePrefix)\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlet sorted = instanceAccessArray.sort(function(a, b) {\n\t\t\t\treturn a.lastUsedTime - b.lastUsedTime;\n\t\t\t});\n\n\t\t\tlet i = 0;\n\t\t\twhile (i < sorted.length) {\n\t\t\t\tremoveItemsByInstance(this.adapter, sorted[i].instancePrefix);\n\t\t\t\ti++;\n\t\t\t\ttry {\n\t\t\t\t\tthis.adapter.setItem(keyPrefix + key, JSON.stringify(data));\n\t\t\t\t\tbreak;\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (e.name === 'QuotaExceededError' && i < sorted.length) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport default function(adapter) {\n\tconst lru = {\n\t\tadapter: adapter,\n\t\tgetItem: getItem,\n\t\tsetItem: setItem\n\t};\n\n\treturn lru;\n}\n","import {\n\tTTL_EXPIRED_ITEM_KEYWORD,\n\tVERSION_KEY,\n\tgetTTL\n} from '../utils/constants';\n\n/**\n * Returns the current value associated with the given key,\n * null if the given key does not exist,\n * or the 'TTL_EXPIRED_ITEM_KEYWORD' if the entry has already expired.\n *\n * @param {object} adapter\n * @param {string} key\n * @returns {string|null}\n */\nfunction getItem(adapter, key) {\n\tlet originalResult = adapter.getItem(key);\n\tif (originalResult == null) return null;\n\n\tlet result = JSON.parse(originalResult);\n\tif (\n\t\tObject.prototype.hasOwnProperty.call(result, 'value') &&\n\t\tObject.prototype.hasOwnProperty.call(result, 'expiry')\n\t) {\n\t\tvar now = Date.now();\n\t\tif (now > result.expiry) {\n\t\t\tadapter.removeItem(key);\n\t\t\treturn `\"${TTL_EXPIRED_ITEM_KEYWORD}\"`;\n\t\t}\n\t\treturn result.value;\n\t}\n\n\treturn originalResult;\n}\n\n/**\n * Wrap the value with an expiration timestamp, and then sets the value of the pair identified by key to value, creating a new\n * key/value pair if none existed for key previously.\n *\n * If the new value couldn't be set due to a \"QuotaExceededError\" DOMException exception, remove all expired key/value pairs\n * and set the new value again.\n *\n * Throws a \"QuotaExceededError\" DOMException exception if the new value still couldn't be set.\n *\n * @param {object} adapter\n * @param {string} key\n * @param {string} value\n * @param {number} time to live in milliseconds\n */\nfunction setItem(adapter, key, value, ttl = getTTL()) {\n\tfunction getKeysWithTTL() {\n\t\tconst length = adapter.length;\n\t\tlet keys = [];\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst itemKey = adapter.key(i);\n\t\t\tif (itemKey === VERSION_KEY) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet result = adapter.getItem(itemKey);\n\t\t\tresult = JSON.parse(result);\n\t\t\tif (\n\t\t\t\tObject.prototype.hasOwnProperty.call(result, 'value') &&\n\t\t\t\tObject.prototype.hasOwnProperty.call(result, 'expiry')\n\t\t\t) {\n\t\t\t\tkeys.push(itemKey);\n\t\t\t}\n\t\t}\n\n\t\treturn keys;\n\t}\n\n\tconst data = {\n\t\tvalue: value,\n\t\texpiry: Date.now() + ttl\n\t};\n\n\ttry {\n\t\tadapter.setItem(key, JSON.stringify(data));\n\t} catch (e) {\n\t\tif (e.name === 'QuotaExceededError') {\n\t\t\tlet keys = getKeysWithTTL();\n\t\t\tfor (const itemKey of keys) {\n\t\t\t\t//itemKey will be removed if it is expired\n\t\t\t\tgetItem(adapter, itemKey);\n\t\t\t}\n\n\t\t\tadapter.setItem(key, JSON.stringify(data));\n\t\t} else {\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nconst ttl = {\n\tgetItem: getItem,\n\tsetItem: setItem\n};\n\nexport default ttl;\n","import lru from './lru';\nimport ttl from './ttl';\n\n/**\n * Based on eviction policy of the merged adapter configuration, invoking the corresponding getItem(). No eviction policy is applied by default.\n * @param {string} adapter\n * @param {Object} config\n * @param {string} key\n * @returns {string|null}\n */\nfunction getItem(adapter, config, key) {\n\tconst evictionPolicy = config.evictionPolicy;\n\tlet result;\n\tswitch (evictionPolicy) {\n\t\tcase 'TTL':\n\t\t\tresult = ttl.getItem(adapter, key);\n\t\t\tbreak;\n\t\tcase 'LRU':\n\t\t\tresult = lru(adapter).getItem(key);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t//No eviction policy is applied by default.\n\t\t\tresult = adapter.getItem(key);\n\t}\n\treturn result;\n}\n\n/**\n * Based on eviction policy of the merged adapter configuration, invoking the corresponding setItem(). No eviction policy is applied by default.\n *\n * @param {string} adapter\n * @param {Object} config\n * @param {string} keyPrefix\n * @param {string} key\n * @param {string} value\n */\nfunction setItem(adapter, config, keyPrefix, key, value) {\n\tconst evictionPolicy = config.evictionPolicy;\n\tswitch (evictionPolicy) {\n\t\tcase 'TTL':\n\t\t\tttl.setItem(adapter, keyPrefix + key, value);\n\t\t\tbreak;\n\t\tcase 'LRU':\n\t\t\tlru(adapter).setItem(keyPrefix, key, value);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t//No eviction policy is applied by default.\n\t\t\tadapter.setItem(keyPrefix + key, value);\n\t}\n}\n\nconst evictionPolicies = {\n\tgetItem: getItem,\n\tsetItem: setItem\n};\n\nexport default evictionPolicies;\n","import {KEY_DELIMITER, NXUI_UNIFIED_CACHE} from './constants';\n\n/**\n * builds the key prefix and returns it.\n * @param {object} options - configuration\n * @param {object} defaultConfig - default configuration\n * @returns {string} key prefix\n * @private\n */\nfunction getKeyPrefix(options, defaultConfig) {\n\t// keyPrefix string __nxui__unified_cache__keyvaluepairs__\n\tlet keyPrefix = `${KEY_DELIMITER}${NXUI_UNIFIED_CACHE}${KEY_DELIMITER}${options.name}${KEY_DELIMITER}`;\n\n\t// when configuration's storeName is different than the\n\t// default configuration's storeName prepend the keyPrefix\n\t// to build the generated keyPrefix\n\tif (options.storeName !== defaultConfig.storeName) {\n\t\tkeyPrefix += `${options.storeName}${KEY_DELIMITER}`;\n\t}\n\n\treturn keyPrefix;\n}\n\nexport default getKeyPrefix;\n","import serializer from '../utils/serializer';\nimport normalizeKey from '../utils/normalizeKey';\nimport isWebStorageValid from '../utils/isWebStorageValid';\nimport runCallback from '../utils/runCallback';\nimport getCallback from '../utils/getCallback';\nimport {STORAGE, STORAGE_KEYPREFIX, VERSION_KEY} from '../utils/constants';\nimport evictionPolicies from '../evictions/evictionPolicies';\nimport getKeyPrefix from '../utils/getKeyPrefix';\n\n/**\n * @constant {Storage} LOCALSTORAGE - window object's localStorage property\n */\nconst {LOCALSTORAGE} = STORAGE;\n\n/**\n * Check if localStorage throws when saving an item\n * @param {string} type\n * @returns {boolean} true if localStorage is successfully able to set value, otherwise false\n */\nfunction checkIfWebStorageThrows(type) {\n\tconst storage = window[type];\n\tconst localStorageTestKey = '_UnifiedCache_Support_Test';\n\n\ttry {\n\t\tstorage.setItem(localStorageTestKey, true);\n\t\tstorage.removeItem(localStorageTestKey);\n\n\t\treturn false;\n\t} catch (e) {\n\t\treturn true;\n\t}\n}\n\n/**\n * Checks if localStorage is usable and allows to save an item.\n *\n * It covers the use cases like:\n *   - safari private browsing mode\n *   - the available quota for localStorage is 0 and there wasn't any saved items yet\n * Reference: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API\n *\n * @returns {boolean}\n * @private\n */\nfunction _isLocalStorageUsable() {\n\treturn !checkIfWebStorageThrows('localStorage') || LOCALSTORAGE.length > 0;\n}\n\n// Config the localStorage, using options set in the config.\nfunction _initStorage(options) {\n\tconst self = this;\n\tconst dbInfo = {};\n\tif (options) {\n\t\tfor (const i in options) {\n\t\t\tdbInfo[i] = options[i];\n\t\t}\n\t}\n\n\tdbInfo.keyPrefix = getKeyPrefix(options, self._defaultConfig);\n\n\tif (!_isLocalStorageUsable()) {\n\t\treturn Promise.reject();\n\t}\n\n\tself._dbInfo = dbInfo;\n\tdbInfo.serializer = serializer;\n\n\treturn Promise.resolve();\n}\n\nfunction _clear(dbInfo) {\n\tconst {keyPrefix} = dbInfo;\n\tconst storage = LOCALSTORAGE;\n\tfor (let i = storage.length - 1; i >= 0; i--) {\n\t\tconst key = storage.key(i);\n\n\t\tif (key.indexOf(keyPrefix) === 0) {\n\t\t\tstorage.removeItem(key);\n\t\t}\n\t}\n}\n\n/**\n * Remove all keys from the localStorage, effectively destroying\n * all data in the app's key/value\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction clear(callback) {\n\tconst self = this;\n\tconst promise = self.ready().then(function() {\n\t\t_clear(self._dbInfo);\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * Retrieve an item from the localStorage. Unlike the default indexedDB,\n * we don't modify return values at all. If a key's value\n * is `undefined`, we pass that value to the Promise.\n * @param {string} key\n * @param {function} callback\n * @returns {Promise<*>} promise for the value stored\n */\nfunction getItem(key, callback) {\n\tconst self = this;\n\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tlet result = evictionPolicies.getItem(\n\t\t\tLOCALSTORAGE,\n\t\t\tself._config,\n\t\t\tdbInfo.keyPrefix + normalizeKey(key)\n\t\t);\n\n\t\t// If a result was found, parse it from the serialized\n\t\t// string into a JS object. If result isn't truthy, the key\n\t\t// is likely undefined and we'll pass it straight to the promise.\n\t\tif (result) {\n\t\t\tresult = dbInfo.serializer.deserialize(result);\n\t\t}\n\n\t\treturn result;\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * Set a key's value in localStorage.\n *\n * callback support to address use cases like:\n *   - user want to operate on that value only after\n *   they're sure about value is set to the localStorage\n *   e.g. save, or something like that on the current form page\n *\n * @param {string} key\n * @param {*} value\n * @param {function} callback\n * @returns {*}\n */\nfunction setItem(key, value, callback) {\n\tconst self = this;\n\n\tconst promise = self.ready().then(function() {\n\t\t// TODO how should we handle undefined value\n\t\t//  - save null for undefined value??\n\n\t\t// Save the original value to pass to the callback.\n\t\tconst originalValue = value;\n\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst dbInfo = self._dbInfo;\n\t\t\tdbInfo.serializer.serialize(value, function(value, error) {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t} else {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tevictionPolicies.setItem(\n\t\t\t\t\t\t\tLOCALSTORAGE,\n\t\t\t\t\t\t\tself._config,\n\t\t\t\t\t\t\tdbInfo.keyPrefix,\n\t\t\t\t\t\t\tnormalizeKey(key),\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresolve(originalValue);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// window.localStorage capacity exceeded.\n\t\t\t\t\t\t// TODO: Make this a specific error or\n\t\t\t\t\t\t//  a public event for page author to hook handlers on the page\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\te.name === 'QuotaExceededError' ||\n\t\t\t\t\t\t\te.name === 'NS_ERROR_DOM_QUOTA_REACHED'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treject(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treject(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * when passed a number n, returns the name of the nth key\n * in a given localStorage object.\n * @param {number} n\n * @param {function} callback\n * @returns {Promise<*>} promise for a string containing the name of the key.\n * If the index does not exist, null is returned.\n */\nfunction key(n, callback) {\n\tconst self = this;\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = LOCALSTORAGE.key(n);\n\t\t} catch (error) {\n\t\t\tresult = null;\n\t\t}\n\n\t\t// remove the prefix from the key, if a key is found.\n\t\tif (result) {\n\t\t\tresult = result.substring(dbInfo.keyPrefix.length);\n\t\t}\n\n\t\treturn result;\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * gets the list of keys in localStorage.\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction keys(callback) {\n\tconst self = this;\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tconst length = LOCALSTORAGE.length;\n\t\tlet keys = [];\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst itemKey = LOCALSTORAGE.key(i);\n\t\t\tif (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n\t\t\t\tkeys.push(itemKey.substring(dbInfo.keyPrefix.length));\n\t\t\t}\n\t\t}\n\n\t\treturn keys;\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * supply the number of keys in the localStorage\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction length(callback) {\n\tconst self = this;\n\tconst promise = self.keys().then(function(keys) {\n\t\treturn keys.length;\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * Remove an item from the localStorage.\n * @param {string} key\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction removeItem(key, callback) {\n\tconst self = this;\n\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tLOCALSTORAGE.removeItem(dbInfo.keyPrefix + normalizeKey(key));\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * Iterate over all items in the localStorage.\n * @param {function} iterator callback\n * @param {function} success callback\n * @returns {Promise<*>}\n */\nfunction iterate(iterator, callback) {\n\tconst self = this;\n\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tconst keyPrefix = dbInfo.keyPrefix;\n\t\tconst keyPrefixLength = keyPrefix.length;\n\t\tconst length = LOCALSTORAGE.length;\n\n\t\t// use a dedicated iterator instead of the `i` variable below\n\t\t// so other keys we fetch in localStorage aren't counted in\n\t\t// the `iterationNumber` argument passed to the `iterate()`\n\t\tlet iterationNumber = 1;\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst key = LOCALSTORAGE.key(i);\n\t\t\tif (key.indexOf(keyPrefix) !== 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet value = LOCALSTORAGE.getItem(key);\n\n\t\t\t// If a result was found, parse it from the serialized\n\t\t\t// string into a JS object. If result isn't truthy, the\n\t\t\t// key is likely undefined and we'll pass it straight\n\t\t\t// to the iterator.\n\t\t\tif (value) {\n\t\t\t\tvalue = dbInfo.serializer.deserialize(value);\n\t\t\t}\n\n\t\t\tvalue = iterator(\n\t\t\t\tvalue,\n\t\t\t\tkey.substring(keyPrefixLength),\n\t\t\t\titerationNumber++\n\t\t\t);\n\n\t\t\tif (value !== void 0) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * drops the localStorage instance\n * @param {object} options\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction dropInstance(options, callback) {\n\tcallback = getCallback.apply(this, arguments);\n\toptions = (typeof options !== 'function' && options) || {};\n\tif (!options.name) {\n\t\tconst currentConfig = this.config();\n\t\toptions.name = options.name || currentConfig.name;\n\t\toptions.storeName = options.storeName || currentConfig.storeName;\n\t}\n\n\tconst self = this;\n\tlet promise;\n\tif (!options.name) {\n\t\tpromise = Promise.reject('Invalid arguments');\n\t} else {\n\t\tpromise = new Promise(function(resolve) {\n\t\t\tif (!options.storeName) {\n\t\t\t\tresolve(`${options.name}__`);\n\t\t\t} else {\n\t\t\t\tresolve(getKeyPrefix(options, self._defaultConfig));\n\t\t\t}\n\t\t}).then(function(keyPrefix) {\n\t\t\tfor (let i = LOCALSTORAGE.length - 1; i >= 0; i--) {\n\t\t\t\tconst key = LOCALSTORAGE.key(i);\n\n\t\t\t\tif (key.indexOf(keyPrefix) === 0) {\n\t\t\t\t\tLOCALSTORAGE.removeItem(key);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\nfunction _clearAllInstances() {\n\tfor (let i = LOCALSTORAGE.length - 1; i >= 0; i--) {\n\t\tconst key = LOCALSTORAGE.key(i);\n\t\tconsole.debug(`Clearing LocalStorage ${key}`);\n\n\t\tif (key.indexOf(STORAGE_KEYPREFIX) === 0) {\n\t\t\tLOCALSTORAGE.removeItem(key);\n\t\t}\n\n\t\tconsole.debug(`Cleared LocalStorage ${key}`);\n\t}\n}\n\nexport function getCacheVersion() {\n\treturn LOCALSTORAGE.getItem(VERSION_KEY);\n}\n\nexport function setCacheVersion(version) {\n\treturn LOCALSTORAGE.setItem(VERSION_KEY, version);\n}\n\nconst localStorage = {\n\t_adapter: 'localStorage',\n\t_initStorage: _initStorage,\n\t_support: isWebStorageValid('localStorage'),\n\t_clearAllInstances: _clearAllInstances,\n\titerate: iterate,\n\tgetItem: getItem,\n\tsetItem: setItem,\n\tremoveItem: removeItem,\n\tclear: clear,\n\tlength: length,\n\tkey: key,\n\tkeys: keys,\n\tdropInstance: dropInstance\n};\n\nexport default localStorage;\n","import {STORAGE_KEYPREFIX, STORAGE} from '../utils/constants';\n\nconst READ_ONLY = 'readonly';\nconst READ_WRITE = 'readwrite';\n\nconst {INDEXEDDB} = STORAGE;\n\nfunction initStorage() {\n\tconst self = this;\n\tif (!INDEXEDDB) {\n\t\treturn Promise.reject('IndexedDB not supported.');\n\t}\n\n\treturn _connectToDB(`${STORAGE_KEYPREFIX}${self.name}`).then(\n\t\t(db) => (self.db = db)\n\t);\n}\n\nfunction _connectToDB(database) {\n\ttry {\n\t\tconst openRequest = INDEXEDDB.open(database, 1);\n\t\topenRequest.onupgradeneeded = () =>\n\t\t\topenRequest.result.createObjectStore(STORAGE_KEYPREFIX);\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\topenRequest.onsuccess = (event) => {\n\t\t\t\tresolve(event.target.result);\n\t\t\t};\n\n\t\t\topenRequest.onerror = (event) => reject(event.target.error);\n\t\t});\n\t} catch (indexedDBError) {\n\t\treturn Promise.reject(indexedDBError);\n\t}\n}\n\nfunction getObjectStore(indexedDBCache, mode = READ_ONLY) {\n\tconst transaction = indexedDBCache.db.transaction(STORAGE_KEYPREFIX, mode);\n\treturn transaction.objectStore(STORAGE_KEYPREFIX);\n}\n\nfunction processError(indexedDBRequestError) {\n\tconst error = {\n\t\tretryable: true,\n\t\tindexedDBErrorName: indexedDBRequestError.name,\n\t\tindexedDBErrorMessage: indexedDBRequestError.message\n\t};\n\n\t//TODO: Extract error codes so they can be reused if needed.\n\tswitch (indexedDBRequestError.name) {\n\t\tcase 'AbortError':\n\t\t\terror.name = 'ABORT';\n\t\t\terror.message = 'Transaction aborted.';\n\t\t\tbreak;\n\t\tcase 'ConstraintError':\n\t\t\terror.name = 'INDEX_ERROR';\n\t\t\terror.message = 'Index constraint violation.';\n\t\t\terror.retryable = false;\n\t\t\tbreak;\n\t\tcase 'QuotaExceededError':\n\t\t\terror.name = 'DISK_FULL';\n\t\t\terror.message = 'IndexedDB is full.';\n\t\t\tbreak;\n\t\tcase 'VersionError':\n\t\tcase 'InvalidStateError':\n\t\tcase 'NotFoundError':\n\t\t\terror.name = 'INVALID_DB';\n\t\t\terror.message = 'Database in an inconsistent state.';\n\t\t\terror.retryable = false;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\terror.name = 'UNKNOWN';\n\t\t\terror.message = 'Unknown IndexedDB error';\n\t\t\tbreak;\n\t}\n\n\treturn error;\n}\n\nfunction makeRequest(indexedDBCache, request, mode = READ_ONLY) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst objectStore = getObjectStore(indexedDBCache, mode);\n\t\tconst indexedDBRequest = request(objectStore);\n\t\tindexedDBRequest.onsuccess = (event) => resolve(event.target.result);\n\t\tindexedDBRequest.onerror = (event) => reject(event.target.error);\n\t}).catch((error) => {\n\t\tthrow processError(error);\n\t});\n}\n\nfunction getItem(key) {\n\treturn makeRequest(this, (objectStore) => objectStore.get(key));\n}\n\nfunction setItem(key, value) {\n\treturn makeRequest(\n\t\tthis,\n\t\t(objectStore) => objectStore.put(value, key),\n\t\tREAD_WRITE\n\t);\n}\n\nfunction removeItem(key) {\n\treturn makeRequest(\n\t\tthis,\n\t\t(objectStore) => objectStore.delete(key),\n\t\tREAD_WRITE\n\t);\n}\n\nfunction clear() {\n\treturn makeRequest(this, (objectStore) => objectStore.clear(), READ_WRITE);\n}\n\nfunction length() {\n\treturn makeRequest(this, (objectStore) => objectStore.count());\n}\n\nfunction keys() {\n\treturn makeRequest(this, (objectStore) => objectStore.getAllKeys());\n}\n\nfunction key(index) {\n\treturn this.keys().then((keys) => keys[index - 1]);\n}\n\nfunction iterate(iteratorCallback) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst objectStore = getObjectStore(this);\n\n\t\tlet i = 1;\n\t\tconst cursorRequest = objectStore.openCursor();\n\t\tcursorRequest.onsuccess = (event) => {\n\t\t\tconst cursor = event.target.result;\n\t\t\tif (cursor) {\n\t\t\t\titeratorCallback(cursor.key, cursor.value, i++);\n\t\t\t\tcursor.continue();\n\t\t\t} else {\n\t\t\t\tresolve();\n\t\t\t}\n\t\t};\n\t\tcursorRequest.onerror = (event) => reject(event.target.error);\n\t}).catch((error) => {\n\t\tthrow processError(error);\n\t});\n}\n\n/**\n * Given a DB connection, start a new transaction and clear the cache.\n */\nfunction _clearDB(db) {\n\treturn new Promise((resolve, reject) => {\n\t\tconsole.debug(`Clearing IndexedDB ${db.name}`);\n\t\tconst transaction = db.transaction(STORAGE_KEYPREFIX, READ_WRITE);\n\t\tconst objectStore = transaction.objectStore(STORAGE_KEYPREFIX);\n\t\tconst clearRequest = objectStore.clear();\n\n\t\tclearRequest.onsuccess = () => {\n\t\t\tconsole.debug(`Cleared IndexedDB ${db.name}`);\n\t\t\tresolve();\n\t\t};\n\n\t\tclearRequest.onerror = (event) => {\n\t\t\tconsole.debug(`Error clearing IndexedDB ${db.name}`);\n\t\t\treject(event.target.error);\n\t\t};\n\t});\n}\n\nexport function _clearAllInstances() {\n\treturn INDEXEDDB.databases().then((databases) => {\n\t\tconst clearPromises = [];\n\t\tfor (let i = databases.length - 1; i >= 0; i--) {\n\t\t\tconst database = databases[i].name;\n\t\t\tif (database.indexOf(STORAGE_KEYPREFIX) === 0) {\n\t\t\t\tclearPromises.push(_connectToDB(database).then((db) => _clearDB(db)));\n\t\t\t}\n\t\t}\n\n\t\treturn Promise.all(clearPromises);\n\t});\n}\n\nexport default function(name) {\n\tconst IndexedDBCache = {\n\t\tname: name,\n\n\t\tinitStorage: initStorage,\n\t\tgetItem: getItem,\n\t\tsetItem: setItem,\n\t\tremoveItem: removeItem,\n\t\tclear: clear,\n\t\tlength: length,\n\t\tkey: key,\n\t\tkeys: keys,\n\t\titerate: iterate\n\t};\n\n\t//Export internal functions if we are in test environment.\n\tif (typeof jest !== 'undefined') {\n\t\tIndexedDBCache.testing = {\n\t\t\tprocessError: processError,\n\t\t\tmakeRequest: makeRequest\n\t\t};\n\t}\n\n\treturn IndexedDBCache;\n}\n","import serializer from '../utils/serializer';\nimport runCallback from '../utils/runCallback';\nimport IndexedDBCache, {_clearAllInstances} from './IndexedDBCache';\nimport getKeyPrefix from '../utils/getKeyPrefix';\n\n/**\n *\n * @param {string} storeName The name to give to the database.\n * @param {array} options An object containing extra options to configure the cache\n * @returns A promise which is successful when the IndexedDB is initialized.\n */\nfunction initStorage({storeName = 'default', ...options}) {\n\tconst self = this;\n\tself._dbInfo = {\n\t\tserializer: serializer,\n\t\tindexedDBCache: IndexedDBCache(storeName),\n\t\tkeyPrefix: getKeyPrefix({storeName, ...options}, this._defaultConfig),\n\t\t...options\n\t};\n\n\treturn self._dbInfo.indexedDBCache.initStorage();\n}\n\n/**\n * Waits until the UnifiedCache is ready then calls the provided function.\n *\n * @param {UnifiedCache} unifiedCache The UnifiedCache instance to wait for\n * @param {function} callFunction The cache operation being called\n * @param {function} callback An optional callback function.\n * @returns a Promise from the callFunction\n */\nfunction makeDBCall(unifiedCache, callFunction, callback) {\n\tconst promise = unifiedCache\n\t\t.ready()\n\t\t.then(() => callFunction(unifiedCache._dbInfo.indexedDBCache));\n\trunCallback(promise, callback);\n\treturn promise;\n}\n\nfunction clear(callback) {\n\treturn makeDBCall(this, (indexedDBCache) => indexedDBCache.clear(), callback);\n}\n\nfunction getItem(key, callback) {\n\treturn makeDBCall(\n\t\tthis,\n\t\t(indexedDBCache) => indexedDBCache.getItem(key),\n\t\tcallback\n\t);\n}\n\nfunction setItem(key, value, callback) {\n\treturn makeDBCall(\n\t\tthis,\n\t\t(indexedDBCache) => indexedDBCache.setItem(key, value),\n\t\tcallback\n\t);\n}\n\nfunction removeItem(key, callback) {\n\treturn makeDBCall(\n\t\tthis,\n\t\t(indexedDBCache) => indexedDBCache.removeItem(key),\n\t\tcallback\n\t);\n}\n\nfunction key(index, callback) {\n\treturn makeDBCall(\n\t\tthis,\n\t\t(indexedDBCache) => indexedDBCache.key(index),\n\t\tcallback\n\t);\n}\n\nfunction keys(callback) {\n\treturn makeDBCall(this, (indexedDBCache) => indexedDBCache.keys(), callback);\n}\n\nfunction length(callback) {\n\treturn makeDBCall(\n\t\tthis,\n\t\t(indexedDBCache) => indexedDBCache.length(),\n\t\tcallback\n\t);\n}\n\nfunction iterate(iterator, callback) {\n\treturn makeDBCall(\n\t\tthis,\n\t\t(indexedDBCache) => indexedDBCache.iterate(iterator),\n\t\tcallback\n\t);\n}\n\nconst indexedDB = {\n\t_adapter: 'indexedDB',\n\t_initStorage: initStorage,\n\t_clearAllInstances: _clearAllInstances,\n\titerate: iterate,\n\tgetItem: getItem,\n\tsetItem: setItem,\n\tremoveItem: removeItem,\n\tclear: clear,\n\tlength: length,\n\tkey: key,\n\tkeys: keys\n};\n\nexport default indexedDB;\n","import serializer from '../utils/serializer';\nimport normalizeKey from '../utils/normalizeKey';\nimport isWebStorageValid from '../utils/isWebStorageValid';\nimport runCallback from '../utils/runCallback';\nimport getCallback from '../utils/getCallback';\nimport {STORAGE_KEYPREFIX, STORAGE, VERSION_KEY} from '../utils/constants';\nimport evictionPolicies from '../evictions/evictionPolicies';\nimport getKeyPrefix from '../utils/getKeyPrefix';\n\n/**\n * @constant {Storage} SESSIONSTORAGE - window object's sessionStorage property\n */\nconst {SESSIONSTORAGE} = STORAGE;\n\n/**\n * Check if sessionStorage throws when saving an item\n * @param {string} type\n * @returns {boolean} true if sessionStorage is successfully able to set value, otherwise false\n */\nfunction checkIfWebStorageThrows(type) {\n\tconst storage = window[type];\n\tconst sessionStorageTestKey = '_UnifiedCache_Support_Test';\n\n\ttry {\n\t\tstorage.setItem(sessionStorageTestKey, true);\n\t\tstorage.removeItem(sessionStorageTestKey);\n\n\t\treturn false;\n\t} catch (e) {\n\t\treturn true;\n\t}\n}\n\n/**\n * Checks if sessionStorage is usable and allows to save an item.\n *\n * It covers the use cases like:\n *   - safari private browsing mode\n *   - the available quota for sessionStorage is 0 and there wasn't any saved items yet\n * Reference: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API\n *\n * @returns {boolean}\n * @private\n */\nfunction _isSessionStorageUsable() {\n\treturn (\n\t\t!checkIfWebStorageThrows('sessionStorage') || SESSIONSTORAGE.length > 0\n\t);\n}\n\n// Config the sessionStorage, using options set in the config.\nfunction _initStorage(options) {\n\tconst self = this;\n\tconst dbInfo = {};\n\tif (options) {\n\t\tfor (const i in options) {\n\t\t\tdbInfo[i] = options[i];\n\t\t}\n\t}\n\n\tdbInfo.keyPrefix = getKeyPrefix(options, self._defaultConfig);\n\n\tif (!_isSessionStorageUsable()) {\n\t\treturn Promise.reject();\n\t}\n\n\tself._dbInfo = dbInfo;\n\tdbInfo.serializer = serializer;\n\n\treturn Promise.resolve();\n}\n\n/**\n * Remove all keys from the sessionStorage, effectively destroying\n * all data in the app's key/value\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction clear(callback) {\n\tconst self = this;\n\tconst promise = self.ready().then(function() {\n\t\tconst {keyPrefix} = self._dbInfo;\n\t\tconst storage = SESSIONSTORAGE;\n\t\tfor (let i = storage.length - 1; i >= 0; i--) {\n\t\t\tconst key = storage.key(i);\n\n\t\t\tif (key.indexOf(keyPrefix) === 0) {\n\t\t\t\tstorage.removeItem(key);\n\t\t\t}\n\t\t}\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n/**\n * Retrieve an item from the sessionStorage. Unlike the default indexDB,\n * we don't modify return values at all. If a key's value\n * is `undefined`, we pass that value to the Promise.\n * @param {string} key\n * @param {function} callback\n * @returns {Promise<*>} promise for the value stored\n */\nfunction getItem(key, callback) {\n\tconst self = this;\n\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tlet result = evictionPolicies.getItem(\n\t\t\tSESSIONSTORAGE,\n\t\t\tself._config,\n\t\t\tdbInfo.keyPrefix + normalizeKey(key)\n\t\t);\n\n\t\t// If a result was found, parse it from the serialized\n\t\t// string into a JS object. If result isn't truthy, the key\n\t\t// is likely undefined and we'll pass it straight to the promise.\n\t\tif (result) {\n\t\t\tresult = dbInfo.serializer.deserialize(result);\n\t\t}\n\n\t\treturn result;\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * Set a key's value in sessionStorage.\n *\n * callback support to address use cases like:\n *   - user want to operate on that value only after\n *   they're sure about value is set to the sessionStorage\n *   e.g. save, or something like that on the current form page\n *\n * @param {string} key\n * @param {*} value\n * @param {function} callback\n * @returns {*}\n */\nfunction setItem(key, value, callback) {\n\tconst self = this;\n\n\tconst promise = self.ready().then(function() {\n\t\t// TODO how should we handle undefined value\n\t\t//  - save null for undefined value??\n\n\t\t// Save the original value to pass to the callback.\n\t\tconst originalValue = value;\n\n\t\treturn new Promise(function(resolve, reject) {\n\t\t\tconst dbInfo = self._dbInfo;\n\t\t\tdbInfo.serializer.serialize(value, function(value, error) {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t} else {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tevictionPolicies.setItem(\n\t\t\t\t\t\t\tSESSIONSTORAGE,\n\t\t\t\t\t\t\tself._config,\n\t\t\t\t\t\t\tdbInfo.keyPrefix,\n\t\t\t\t\t\t\tnormalizeKey(key),\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t);\n\t\t\t\t\t\tresolve(originalValue);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t// window.sessionStorage capacity exceeded.\n\t\t\t\t\t\t// TODO: Make this a specific error or\n\t\t\t\t\t\t//  a public event for page author to hook handlers on the page\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\te.name === 'QuotaExceededError' ||\n\t\t\t\t\t\t\te.name === 'NS_ERROR_DOM_QUOTA_REACHED'\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\treject(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treject(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * when passed a number n, returns the name of the nth key\n * in a given sessionStorage object.\n * @param {number} n\n * @param {function} callback\n * @returns {Promise<*>} promise for a string containing the name of the key.\n * If the index does not exist, null is returned.\n */\nfunction key(n, callback) {\n\tconst self = this;\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = SESSIONSTORAGE.key(n);\n\t\t} catch (error) {\n\t\t\tresult = null;\n\t\t}\n\n\t\t// remove the prefix from the key, if a key is found.\n\t\tif (result) {\n\t\t\tresult = result.substring(dbInfo.keyPrefix.length);\n\t\t}\n\n\t\treturn result;\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * gets the list of keys in sessionStorage.\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction keys(callback) {\n\tconst self = this;\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tconst length = SESSIONSTORAGE.length;\n\t\tlet keys = [];\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst itemKey = SESSIONSTORAGE.key(i);\n\t\t\tif (itemKey.indexOf(dbInfo.keyPrefix) === 0) {\n\t\t\t\tkeys.push(itemKey.substring(dbInfo.keyPrefix.length));\n\t\t\t}\n\t\t}\n\n\t\treturn keys;\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * supply the number of keys in the sessionStorage\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction length(callback) {\n\tconst self = this;\n\tconst promise = self.keys().then(function(keys) {\n\t\treturn keys.length;\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * Remove an item from the sessionStorage.\n * @param {string} key\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction removeItem(key, callback) {\n\tconst self = this;\n\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tSESSIONSTORAGE.removeItem(dbInfo.keyPrefix + normalizeKey(key));\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * Iterate over all items in the sessionStorage.\n * @param iterator\n * @param callback\n * @returns {Promise<*>}\n */\nfunction iterate(iterator, callback) {\n\tconst self = this;\n\n\tconst promise = self.ready().then(function() {\n\t\tconst dbInfo = self._dbInfo;\n\t\tconst keyPrefix = dbInfo.keyPrefix;\n\t\tconst keyPrefixLength = keyPrefix.length;\n\t\tconst length = SESSIONSTORAGE.length;\n\n\t\t// use a dedicated iterator instead of the `i` variable below\n\t\t// so other keys we fetch in sessionStorage aren't counted in\n\t\t// the `iterationNumber` argument passed to the `iterate()`\n\t\tlet iterationNumber = 1;\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tconst key = SESSIONSTORAGE.key(i);\n\t\t\tif (key.indexOf(keyPrefix) !== 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet value = SESSIONSTORAGE.getItem(key);\n\n\t\t\t// If a result was found, parse it from the serialized\n\t\t\t// string into a JS object. If result isn't truthy, the\n\t\t\t// key is likely undefined and we'll pass it straight\n\t\t\t// to the iterator.\n\t\t\tif (value) {\n\t\t\t\tvalue = dbInfo.serializer.deserialize(value);\n\t\t\t}\n\n\t\t\tvalue = iterator(\n\t\t\t\tvalue,\n\t\t\t\tkey.substring(keyPrefixLength),\n\t\t\t\titerationNumber++\n\t\t\t);\n\n\t\t\tif (value !== void 0) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t});\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\n/**\n * drops the sessionStorage instance\n * @param {object} options\n * @param {function} callback\n * @returns {Promise<*>}\n */\nfunction dropInstance(options, callback) {\n\tcallback = getCallback.apply(this, arguments);\n\toptions = (typeof options !== 'function' && options) || {};\n\tif (!options.name) {\n\t\tconst currentConfig = this.config();\n\t\toptions.name = options.name || currentConfig.name;\n\t\toptions.storeName = options.storeName || currentConfig.storeName;\n\t}\n\n\tconst self = this;\n\tlet promise;\n\tif (!options.name) {\n\t\tpromise = Promise.reject('Invalid arguments');\n\t} else {\n\t\tpromise = new Promise(function(resolve) {\n\t\t\tif (!options.storeName) {\n\t\t\t\tresolve(`${options.name}__`);\n\t\t\t} else {\n\t\t\t\tresolve(getKeyPrefix(options, self._defaultConfig));\n\t\t\t}\n\t\t}).then(function(keyPrefix) {\n\t\t\tfor (let i = SESSIONSTORAGE.length - 1; i >= 0; i--) {\n\t\t\t\tconst key = SESSIONSTORAGE.key(i);\n\n\t\t\t\tif (key.indexOf(keyPrefix) === 0) {\n\t\t\t\t\tSESSIONSTORAGE.removeItem(key);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\trunCallback(promise, callback);\n\n\treturn promise;\n}\n\nfunction _clearAllInstances() {\n\tfor (let i = SESSIONSTORAGE.length - 1; i >= 0; i--) {\n\t\tconst key = SESSIONSTORAGE.key(i);\n\t\tconsole.debug(`Clearing SessionStorage ${key}`);\n\n\t\tif (key.indexOf(STORAGE_KEYPREFIX) === 0) {\n\t\t\tSESSIONSTORAGE.removeItem(key);\n\t\t}\n\n\t\tconsole.debug(`Cleared SessionStorage ${key}`);\n\t}\n}\n\nexport function getCacheVersion() {\n\treturn SESSIONSTORAGE.getItem(VERSION_KEY);\n}\n\nexport function setCacheVersion(version) {\n\treturn SESSIONSTORAGE.setItem(VERSION_KEY, version);\n}\n\nconst sessionStorage = {\n\t_adapter: 'sessionStorage',\n\t_initStorage: _initStorage,\n\t_support: isWebStorageValid('sessionStorage'),\n\t_clearAllInstances: _clearAllInstances,\n\titerate: iterate,\n\tgetItem: getItem,\n\tsetItem: setItem,\n\tremoveItem: removeItem,\n\tclear: clear,\n\tlength: length,\n\tkey: key,\n\tkeys: keys,\n\tdropInstance: dropInstance\n};\n\nexport default sessionStorage;\n","import {STORAGE_KEYPREFIX, STORAGE} from '../utils/constants';\nimport getKeyPrefix from '../utils/getKeyPrefix';\n\nconst {CACHE_API} = STORAGE;\n\n/**\n * Returns a Promise that resolves to true if the Cache Storage instance has been initialized.\n * Otherwise, it throws an Error.\n *\n * @param {object} options configuration used to initialize the Cache Storage instance\n * @return {Promise<boolean>}\n * @private\n */\nasync function _initStorage(options) {\n\ttry {\n\t\tthis._dbInfo = {\n\t\t\t...options,\n\t\t\tkeyPrefix: getKeyPrefix(options, this._defaultConfig)\n\t\t};\n\n\t\tthis._cacheStorage = await CACHE_API.open(this._dbInfo.keyPrefix);\n\t\treturn true;\n\t} catch (error) {\n\t\tthrow new Error(\n\t\t\t`InitError: Unable to initialize the Cache Storage instance - ${error}`\n\t\t);\n\t}\n}\n\n/**\n * Returns a Promise that resolves to the Response associated with the\n * first matching key in the Cache Storage instance.\n * If no match is found, the Promise resolves to undefined.\n *\n * @param {string|Request} key URL string, or a Request object containing the URL string\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<Response|undefined>}\n *\n */\nasync function getItem(key, callback) {\n\tconst fn = async () => {\n\t\tconst response = await this._cacheStorage.match(key);\n\t\tcallback?.(null, response);\n\t\treturn response;\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n/**\n * Adds key/value pairs to the Cache Storage instance overwriting any key/value pair previously stored\n * in the cache that matches the key.\n *\n * If no 'value' is provided, it will fetch from the 'key' URL\n * and add the resulting response object to the cache.\n *\n * It will return a Promise that resolves to undefined upon successful addition.\n *\n * @param {string|Request} key The Request object or URL string that you want to add to the cache.\n * @param {Response} value The value you want to match up to the key.\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<undefined>}\n */\nasync function setItem(key, value, callback) {\n\tconst fn = async () => {\n\t\tif (value == null) {\n\t\t\tawait this._cacheStorage.add(key);\n\t\t} else {\n\t\t\tawait this._cacheStorage.put(key, value.clone());\n\t\t}\n\t\tcallback?.(null);\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n\n/**\n * Invokes the provider iterator function for every entry in the Cache Storage instance.\n *\n * @param {function} iterator function to invoke for every entry. The function is invoked with the following\n * arguments: key, value, index (starts at 1)\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<undefined>}\n */\nasync function iterate(iterator, callback) {\n\tconst fn = async () => {\n\t\tconst requests = await this._cacheStorage.keys();\n\t\tlet index = 1;\n\t\tfor (const request of requests) {\n\t\t\tconst response = await this._cacheStorage.match(request);\n\t\t\titerator(request, response, index++);\n\t\t}\n\t\tcallback?.(null);\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n\n/**\n * Find the entry whose key is the request, and if found, deletes the entry and returns a Promise that\n * resolves to true. If no Cache entry is found, the Promise resolves to false.\n *\n * @param {string|Request} key URL string, or a Request Object containing the URL string.\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<boolean>}\n */\nasync function removeItem(key, callback) {\n\tconst fn = async () => {\n\t\tconst isDeleted = this._cacheStorage.delete(key);\n\t\tcallback?.(null, isDeleted);\n\t\treturn isDeleted;\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n\n/**\n * Removes all entries from the Cache Storage instance.\n * It will return a Promise that resolves to undefined upon successful\n * clearance.\n *\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<undefined>}\n */\nasync function clear(callback) {\n\tconst fn = async () => {\n\t\tconst requests = await this._cacheStorage.keys();\n\t\tconst promises = requests.map((request) =>\n\t\t\tthis._cacheStorage.delete(request)\n\t\t);\n\t\tawait Promise.all(promises);\n\t\tcallback?.(null);\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n\n/**\n * Returns a Promise that resolves to the number of entries in the Cache Storage instance.\n *\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<number>} Promise that resolves to the number of entries in the Cache Storage instance\n */\nasync function length(callback) {\n\tconst fn = async () => {\n\t\tconst requests = await this._cacheStorage.keys();\n\t\tconst length = requests.length;\n\t\tcallback?.(null, length);\n\t\treturn length;\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n\n/**\n * Returns a Promise that resolves to the nth Request Object\n * representing the key in the Cache Storage instance\n *\n * @param {number} index An integer representing the number of the key you want to get the name of. This is a zero-based\n * index.\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<Request>} A Promise that resolves to a Request object. If Request Object does not exist, a null\n * is returned\n */\nasync function key(index, callback) {\n\tconst fn = async () => {\n\t\tconst requests = await this._cacheStorage.keys();\n\t\tconst request = requests[index] || null;\n\t\tcallback?.(null, request);\n\t\treturn request;\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n\n/**\n * Returns a Promise that resolves to an array of Request objects representing the keys of the Cache Storage instance\n *\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<Request[]>}\n */\nasync function keys(callback) {\n\tconst fn = async () => {\n\t\tconst requests = await this._cacheStorage.keys();\n\t\tcallback?.(null, requests);\n\t\treturn requests;\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n\n/**\n * Drops the Cache Storage instance.\n * Returns a Promise that resolves to true if the Cache Storage instance\n * was successfully deleted. Otherwise, the Promise resolves to false.\n *\n * @param {function} callback function to invoke upon completion or error\n * @return {Promise<boolean>}\n */\nasync function dropInstance(callback) {\n\tconst fn = async () => {\n\t\tconst isDeleted = await CACHE_API.delete(this._dbInfo.keyPrefix);\n\t\tcallback?.(null, isDeleted);\n\t\treturn isDeleted;\n\t};\n\n\treturn _runOnReady.call(this, fn, callback);\n}\n\nasync function _clearAllInstances() {\n\tconst keys = await CACHE_API.keys();\n\n\tfor (let i = keys.length - 1; i >= 0; i--) {\n\t\tconst key = keys[i];\n\t\tconsole.debug(`Clearing CacheAPI ${key}`);\n\t\tif (key.indexOf(STORAGE_KEYPREFIX) === 0) {\n\t\t\tconst cacheStorage = await CACHE_API.open(key);\n\t\t\tconst requests = await cacheStorage.keys();\n\t\t\tconst promises = requests.map((request) => cacheStorage.delete(request));\n\t\t\tawait Promise.all(promises);\n\t\t\tconsole.debug(`Cleared CacheAPI ${key}.`);\n\t\t}\n\t}\n}\n\n/**\n * Returns true if Cache Storage is supported by the current browser.\n * Otherwise, it returns false.\n *\n * @return {boolean}\n * @private\n */\nfunction _isCacheAPISupported() {\n\treturn 'caches' in self;\n}\n\nasync function _runOnReady(fn, callback) {\n\ttry {\n\t\tif (await this.ready()) {\n\t\t\treturn fn();\n\t\t}\n\t} catch (error) {\n\t\tcallback?.(error);\n\t\tthrow error;\n\t}\n}\n\nconst cacheAPI = {\n\t_adapter: 'cacheAPI',\n\t_initStorage,\n\t_support: _isCacheAPISupported(),\n\t_clearAllInstances,\n\titerate,\n\tgetItem,\n\tsetItem,\n\tremoveItem,\n\tclear,\n\tlength,\n\tkey,\n\tkeys,\n\tdropInstance\n};\n\nexport default cacheAPI;\n","function initStorage() {\n\tthis.cache = new Map();\n}\n\nfunction getItem(key) {\n\tconst self = this;\n\treturn new Promise((resolve) => {\n\t\tconst value = self.cache.get(key);\n\t\tresolve(value ? value : null);\n\t});\n}\n\nfunction setItem(key, value) {\n\tconst self = this;\n\treturn new Promise((resolve) => {\n\t\tself.cache.set(key, value);\n\t\tresolve();\n\t});\n}\n\nfunction removeItem(key) {\n\tconst self = this;\n\treturn new Promise((resolve) => {\n\t\tself.cache.delete(key);\n\t\tresolve();\n\t});\n}\n\nfunction clear() {\n\tconst self = this;\n\treturn new Promise((resolve) => {\n\t\tself.cache.clear();\n\t\tresolve();\n\t});\n}\n\nfunction length() {\n\tconst self = this;\n\treturn new Promise((resolve) => resolve(self.cache.size));\n}\n\nfunction key(keyIndex) {\n\tconst self = this;\n\treturn new Promise((resolve) => {\n\t\tlet i = 1;\n\t\tfor (const key of self.cache.keys()) {\n\t\t\tif (i === keyIndex) {\n\t\t\t\tresolve(key);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\ti++;\n\t\t}\n\n\t\tresolve(null);\n\t});\n}\n\nfunction keys() {\n\tconst self = this;\n\treturn new Promise((resolve) => {\n\t\tconst keys = [];\n\t\tfor (const key of self.cache.keys()) {\n\t\t\tkeys.push(key);\n\t\t}\n\n\t\tresolve(keys);\n\t});\n}\n\nfunction iterate(iteratorCallback) {\n\tconst self = this;\n\tnew Promise((resolve) => {\n\t\tlet i = 1;\n\t\tfor (const entry of self.cache.entries()) {\n\t\t\titeratorCallback?.(entry[0], entry[1], i);\n\t\t\ti++;\n\t\t}\n\n\t\tresolve();\n\t});\n}\n\nexport default function() {\n\tconst inMemoryCache = {\n\t\tinitStorage: initStorage,\n\t\tgetItem: getItem,\n\t\tsetItem: setItem,\n\t\tremoveItem: removeItem,\n\t\tclear: clear,\n\t\tlength: length,\n\t\tkey: key,\n\t\tkeys: keys,\n\t\titerate: iterate\n\t};\n\n\treturn inMemoryCache;\n}\n","import serializer from '../utils/serializer';\nimport runCallback from '../utils/runCallback';\nimport InMemoryCache from './InMemoryCache';\nimport getKeyPrefix from '../utils/getKeyPrefix';\n\n/**\n * @param {array} options An object containing extra options to configure the cache\n * @returns A promise which is always successful.\n */\nfunction initStorage(options) {\n\tthis._dbInfo = {\n\t\tserializer: serializer,\n\t\tinMemoryCache: InMemoryCache(),\n\t\tkeyPrefix: getKeyPrefix(options, this._defaultConfig),\n\t\t...options\n\t};\n\n\treturn this._dbInfo.inMemoryCache.initStorage();\n}\n\n/**\n * Waits until the UnifiedCache is ready then calls the provided function.\n *\n * @param {UnifiedCache} unifiedCache The UnifiedCache instance to wait for\n * @param {function} callFunction The cache operation being called\n * @param {function} callback An optional callback function.\n * @returns a Promise from the callFunction\n */\nfunction makeInMemoryCall(unifiedCache, callFunction, callback) {\n\tconst promise = unifiedCache\n\t\t.ready()\n\t\t.then(() => callFunction(unifiedCache._dbInfo.inMemoryCache));\n\trunCallback(promise, callback);\n\treturn promise;\n}\n\nfunction getItem(key, callback) {\n\treturn makeInMemoryCall(\n\t\tthis,\n\t\t(inMemoryCache) => inMemoryCache.getItem(key),\n\t\tcallback\n\t);\n}\n\nfunction setItem(key, value, callback) {\n\treturn makeInMemoryCall(\n\t\tthis,\n\t\t(inMemoryCache) => inMemoryCache.setItem(key, value),\n\t\tcallback\n\t);\n}\n\nfunction removeItem(key, callback) {\n\treturn makeInMemoryCall(\n\t\tthis,\n\t\t(inMemoryCache) => inMemoryCache.removeItem(key),\n\t\tcallback\n\t);\n}\n\nfunction clear(callback) {\n\treturn makeInMemoryCall(\n\t\tthis,\n\t\t(inMemoryCache) => inMemoryCache.clear(),\n\t\tcallback\n\t);\n}\n\nfunction key(index, callback) {\n\treturn makeInMemoryCall(\n\t\tthis,\n\t\t(inMemoryCache) => inMemoryCache.key(index),\n\t\tcallback\n\t);\n}\n\nfunction keys(callback) {\n\treturn makeInMemoryCall(\n\t\tthis,\n\t\t(inMemoryCache) => inMemoryCache.keys(),\n\t\tcallback\n\t);\n}\n\nfunction length(callback) {\n\treturn makeInMemoryCall(\n\t\tthis,\n\t\t(inMemoryCache) => inMemoryCache.length(),\n\t\tcallback\n\t);\n}\n\nfunction iterate(iterator, callback) {\n\treturn makeInMemoryCall(\n\t\tthis,\n\t\t(inMemoryCache) => inMemoryCache.iterate(iterator),\n\t\tcallback\n\t);\n}\n\nconst inMemory = {\n\t_adapter: 'inMemory',\n\t_initStorage: initStorage,\n\titerate: iterate,\n\tgetItem: getItem,\n\tsetItem: setItem,\n\tremoveItem: removeItem,\n\tclear: clear,\n\tlength: length,\n\tkey: key,\n\tkeys: keys\n};\n\nexport default inMemory;\n","import {TTL_EXPIRED_ITEM_KEYWORD} from '../utils/constants';\n\nconst cacheStatsProxyHandler = {\n\tget(cacheInstance, prop) {\n\t\tif (prop === 'getItem') {\n\t\t\tconst originalMethod = cacheInstance[prop];\n\t\t\treturn new Proxy(originalMethod, {\n\t\t\t\tapply: async function(targetMethod, cacheInstanceProxy, args) {\n\t\t\t\t\tconst {_stats} = cacheInstanceProxy;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await targetMethod.apply(cacheInstanceProxy, args);\n\t\t\t\t\t\tif (result === TTL_EXPIRED_ITEM_KEYWORD) {\n\t\t\t\t\t\t\t_stats.stale++;\n\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\t_stats.hit++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t_stats.miss++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t_stats.error++;\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (prop === 'setItem') {\n\t\t\tconst originalMethod = cacheInstance[prop];\n\t\t\treturn new Proxy(originalMethod, {\n\t\t\t\tapply: async function(targetMethod, cacheInstanceProxy, args) {\n\t\t\t\t\tconst {_stats} = cacheInstanceProxy;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst start = performance.now();\n\t\t\t\t\t\tconst result = await targetMethod.apply(cacheInstanceProxy, args);\n\t\t\t\t\t\tconst end = performance.now();\n\t\t\t\t\t\t_stats.buildTime += end - start;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t_stats.error++;\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn cacheInstance[prop];\n\t}\n};\n\nexport default cacheStatsProxyHandler;\n","const isArray =\n\tArray.isArray ||\n\tfunction(arg) {\n\t\treturn Object.prototype.toString.call(arg) === '[object Array]';\n\t};\n\nexport default isArray;\n","import isArray from './isArray';\n\nexport function extend() {\n\tfor (let i = 1; i < arguments.length; i++) {\n\t\tconst arg = arguments[i];\n\n\t\tif (arg) {\n\t\t\tfor (let key in arg) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(arg, key)) {\n\t\t\t\t\tif (isArray(arg[key])) {\n\t\t\t\t\t\targuments[0][key] = arg[key].slice();\n\t\t\t\t\t} else {\n\t\t\t\t\t\targuments[0][key] = arg[key];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn arguments[0];\n}\n\nexport default extend;\n","const sameValue = (x, y) =>\n\tx === y ||\n\t(typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y));\n\nconst includes = (array, searchElement) => {\n\tconst len = array.length;\n\tlet i = 0;\n\twhile (i < len) {\n\t\tif (sameValue(array[i], searchElement)) {\n\t\t\treturn true;\n\t\t}\n\t\ti++;\n\t}\n\n\treturn false;\n};\n\nexport default includes;\n","function runTwoCallbacks(promise, callback, errorCallback) {\n\tif (typeof callback === 'function') {\n\t\tpromise.then(callback);\n\t}\n\n\tif (typeof errorCallback === 'function') {\n\t\tpromise.catch(errorCallback);\n\t}\n}\n\nexport default runTwoCallbacks;\n","/**\n * @returns The cache version returned from the server.\n */\nexport function getServerCacheVersion() {\n\tif (!window.NOW) {\n\t\treturn;\n\t}\n\n\treturn window.NOW.unifiedCacheVersion;\n}\n\n/**\n * Checks if the cache version matches the current version. If the current version is undefined,\n * then this always returns false. If the provided version is undefined, this always returns true.\n *\n * @param cacheVersion The current version of the cache in the browser\n * @returns true if the cacheVersion matches the cache version defined by the server.\n */\nexport function isCacheVersionOld(cacheVersion) {\n\tconst serverCacheVersion = getServerCacheVersion();\n\treturn (\n\t\t!cacheVersion || (serverCacheVersion && serverCacheVersion !== cacheVersion)\n\t);\n}\n","function buildGlobalCacheStats(getAggregateCacheStats, getAllCacheStats) {\n\treturn Object.freeze({\n\t\tgetAggregateCacheStats,\n\t\tgetAllCacheStats\n\t});\n}\n\nfunction checkIfUxGlobalsExists() {\n\treturn window && window.ux_globals;\n}\n\n/**\n * Adds the cache stats methods that we want to expose globally in window.ux_globals\n *\n * @param {{getAggregateCacheStats: function, getAllCacheStats: function}} globalCacheStats\n */\nfunction setGlobalCacheStats({getAggregateCacheStats, getAllCacheStats}) {\n\tconst cacheStats = buildGlobalCacheStats(\n\t\tgetAggregateCacheStats,\n\t\tgetAllCacheStats\n\t);\n\tif (checkIfUxGlobalsExists()) {\n\t\twindow.ux_globals.__uc__cacheStats = cacheStats;\n\t} else {\n\t\twindow.ux_globals = {__uc__cacheStats: cacheStats};\n\t}\n}\n\nexport default setGlobalCacheStats;\n","/**\n * Returns a new object containing the sum of the values for every key in objects.\n *\n * @param {...object} objects objects with number values\n * @return {object}\n */\nfunction sumObjectsByKey(...objects) {\n\treturn objects.reduce((obj1, obj2) => {\n\t\tfor (let key in obj2) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(obj2, key))\n\t\t\t\tobj1[key] = (obj1[key] || 0) + obj2[key];\n\t\t}\n\t\treturn obj1;\n\t}, {});\n}\n\nexport default sumObjectsByKey;\n","import localStorageAdapter, * as LocalStorage from './adapters/localStorage';\nimport indexedDBAdapter from './adapters/indexedDB';\nimport sessionStorageAdapter, * as SessionStorage from './adapters/sessionStorage';\nimport cacheAPIAdapter from './adapters/cacheAPI';\nimport inMemoryAdapter from './adapters/inMemory';\nimport cacheStatsProxyHandler from './stats/cacheStatsProxyHandler';\nimport extend from './utils/extend';\nimport includes from './utils/includes';\nimport runCallback from './utils/runCallback';\nimport runTwoCallbacks from './utils/runTwoCallbacks';\nimport serializer from './utils/serializer';\nimport {getServerCacheVersion, isCacheVersionOld} from './utils/cacheVersion';\nimport setGlobalCacheStats from './utils/setGlobalCacheStats';\nimport sumObjectsByKey from './utils/sumObjectsByKey';\n\n/**\n * All defined adapters are stored here when `defineAdapter()` is called.\n * These defined adapters are shared across all instances of UnifiedCache.\n *\n * @type {Object} all defined adapters\n */\nconst DefinedAdapters = {};\n\n/**\n * List of supported adapter mappings.\n *\n * @type {Object} mappings of supported adapters\n */\nconst AdapterSupport = {};\n\n/**\n * List of Default adapters.\n *\n * @type {Object} default adapters\n */\nconst DefaultAdapters = {\n\tLOCALSTORAGE: localStorageAdapter,\n\tSESSIONSTORAGE: sessionStorageAdapter,\n\tINDEXEDDB: indexedDBAdapter,\n\tCACHE_API: cacheAPIAdapter,\n\tIN_MEMORY: inMemoryAdapter\n};\n\nconst dropAllInstancesPromises = [];\n\nfunction clearStorageInstances(adapter) {\n\tif (adapter._clearAllInstances) {\n\t\ttry {\n\t\t\t//Only drop adapters that support it\n\t\t\tdropAllInstancesPromises.push(adapter._clearAllInstances());\n\t\t} catch (error) {\n\t\t\tconsole.error(`Failed to clear cache ${adapter._adapter}.`, error); //Errors shouldn't block the cache\n\t\t}\n\t}\n}\n\nconst cacheVersionCheck = new Promise((resolve) => {\n\ttry {\n\t\t//Drop all persistent adapters except sessionstorage\n\t\tconst browserCacheVersion = LocalStorage.getCacheVersion();\n\t\tif (isCacheVersionOld(browserCacheVersion)) {\n\t\t\tclearStorageInstances(localStorageAdapter);\n\t\t\tclearStorageInstances(indexedDBAdapter);\n\t\t\tclearStorageInstances(cacheAPIAdapter);\n\n\t\t\tLocalStorage.setCacheVersion(getServerCacheVersion());\n\t\t}\n\n\t\t//Sessionstorage is a special case because each browser tab is a separate sessionstorage\n\t\t//instance. We keep a version in each session storage to track when it needs to be cleared.\n\t\tconst sessionStorageVersion = SessionStorage.getCacheVersion();\n\t\tif (isCacheVersionOld(sessionStorageVersion)) {\n\t\t\tclearStorageInstances(sessionStorageAdapter);\n\n\t\t\tSessionStorage.setCacheVersion(getServerCacheVersion());\n\t\t}\n\n\t\t//To prevent using the cache before the clear is done, we want all drop operations to\n\t\t//complete.\n\t\tPromise.all(dropAllInstancesPromises)\n\t\t\t.then(() => resolve())\n\t\t\t.catch(() => resolve()); //Errors shouldn't block the cache\n\t} catch (error) {\n\t\tconsole.error('Failed to clear all caches');\n\t\tresolve(); //Errors shouldn't block the cache\n\t}\n});\n\n/**\n * Default adapter order.\n * @type {string[]}  adapter order\n */\nconst DefaultAdapterOrder = [DefaultAdapters.LOCALSTORAGE._adapter];\n\n/**\n * Default adapter configuration.\n * @type {{adapter: string[], name: string, description: string, storeName: string}} adapter configuration\n */\nconst DefaultConfig = {\n\tdescription: 'NextUI web application unified cache',\n\tadapter: DefaultAdapterOrder.slice(),\n\tname: 'UnifiedCache',\n\tstoreName: 'keyvaluepairs'\n\t//\n\t// TODO: should we add more configuration details\n\t//  - size (default DB size _under_ 5MB, as it's the highest size we can use without any prompt),\n\t//  - version (1.0), etc\n};\n\nconst DefaultStats = {\n\thit: 0,\n\tmiss: 0,\n\terror: 0,\n\tstale: 0,\n\tbuildTime: 0\n};\n\n/**\n * List of supported eviction policies.\n * @type {string[]}  eviction policies\n */\nconst EvictionPolicies = ['TTL', 'LRU'];\n\n/**\n * Optional adapter API method.\n * @type {string[]} optional API methods\n */\nconst OptionalAdapterMethods = ['dropInstance'];\n\n/**\n * Adapter API methods for the UnifiedCache library.\n * @type {string[]} api methods\n */\nconst LibraryMethods = [\n\t'clear',\n\t'getItem',\n\t'iterate',\n\t'key',\n\t'keys',\n\t'length',\n\t'removeItem',\n\t'setItem'\n].concat(OptionalAdapterMethods);\n\n/**\n * Calls the unifiedCache instance adapter API methods, once the\n * adapter initialization is done.\n *\n * @param {UnifiedCache} unifiedCacheInstance\n * @param {LibraryMethods} libraryMethod\n */\nfunction callWhenReady(unifiedCacheInstance, libraryMethod) {\n\tunifiedCacheInstance[libraryMethod] = function() {\n\t\tconst _args = arguments;\n\t\t// once the unifiedCache instance is initialized with adapter\n\t\t// and ready, call the adapter API method with parameters\n\t\treturn unifiedCacheInstance.ready().then(function() {\n\t\t\treturn unifiedCacheInstance[libraryMethod].apply(\n\t\t\t\tunifiedCacheInstance,\n\t\t\t\t_args\n\t\t\t);\n\t\t});\n\t};\n}\n\n/**\n * Validate the eviction policy of the user provided configuration options.\n *\n * @param {{adapter: string[], evictionPolicy: string, name: string, description: string, storeName: string}} options\n * @returns {boolean}\n */\nfunction validateEvictionPolicy(options) {\n\tif (!options) return true;\n\n\tif (!Object.prototype.hasOwnProperty.call(options, 'evictionPolicy'))\n\t\treturn true;\n\n\tif (EvictionPolicies.includes(options.evictionPolicy)) return true;\n\n\tconst error = new Error(\n\t\t'Eviction policy ' +\n\t\t\toptions.evictionPolicy +\n\t\t\t' is not supported. No eviction policy will be applied.'\n\t);\n\tconsole.warn(error);\n\treturn false;\n}\n\n/**\n * An unifiedCache object\n * @param {DefaultConfig} _defaultConfig - default adapter configuration\n * @param {Object} _config - merged adapter configuration\n * @param {Promise<*>} _adapterSet - promise indicating adapter initialization\n * @param {function} _initAdapter - function that initialized the adapter\n * @param {Promise<*>} _ready - promise indicating adapter is ready to use\n * @param {{adapter: string, description: string, keyPrefix: string, name: string, storeName: string, serializer: object}} _dbInfo - adapter store information\n */\nclass UnifiedCache {\n\tstatic cacheInstances = [];\n\n\t/**\n\t * Returns the aggregate stats for all unified cache instances.\n\t *\n\t * @return {object}\n\t */\n\tstatic getAggregateCacheStats() {\n\t\tconst stats = UnifiedCache.cacheInstances.reduce(\n\t\t\t(aggregateStats, cacheInstance) => {\n\t\t\t\treturn Object.entries(cacheInstance._stats).reduce(\n\t\t\t\t\t(accumulator, [attribute, currentValue]) => {\n\t\t\t\t\t\taccumulator[attribute] =\n\t\t\t\t\t\t\t(accumulator[attribute] || 0) + currentValue;\n\t\t\t\t\t\treturn accumulator;\n\t\t\t\t\t},\n\t\t\t\t\taggregateStats\n\t\t\t\t);\n\t\t\t},\n\t\t\t{}\n\t\t);\n\n\t\tconst {hit, miss} = stats;\n\t\treturn {\n\t\t\t...stats,\n\t\t\thitRate: hit / (hit + miss) || 0\n\t\t};\n\t}\n\n\t/**\n\t * Returns an object containing the stats for every unified cache namespace.\n\t *\n\t * @return {object}\n\t */\n\tstatic getAllCacheStats() {\n\t\treturn UnifiedCache.cacheInstances.reduce(\n\t\t\t(allCacheStats, cacheInstance) => {\n\t\t\t\tif (cacheInstance._dbInfo) {\n\t\t\t\t\tconst {adapter, keyPrefix} = cacheInstance._dbInfo;\n\t\t\t\t\tconst key = `${adapter}${keyPrefix}`;\n\t\t\t\t\tallCacheStats[key] = sumObjectsByKey(\n\t\t\t\t\t\tallCacheStats[key] || {},\n\t\t\t\t\t\tcacheInstance._stats\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn allCacheStats;\n\t\t\t},\n\t\t\t{}\n\t\t);\n\t}\n\n\tconstructor(options) {\n\t\t// loop through the default adapters to define the\n\t\t// adapters in synchronous manner\n\t\tfor (let adapterTypeKey in DefaultAdapters) {\n\t\t\tif (\n\t\t\t\tObject.prototype.hasOwnProperty.call(DefaultAdapters, adapterTypeKey)\n\t\t\t) {\n\t\t\t\tconst adapter = DefaultAdapters[adapterTypeKey];\n\t\t\t\tconst adapterName = adapter._adapter;\n\t\t\t\tthis[adapterTypeKey] = adapterName;\n\n\t\t\t\tif (!DefinedAdapters[adapterName]) {\n\t\t\t\t\t// we don't need to wait for the promise,\n\t\t\t\t\t// since the default adapters can be defined\n\t\t\t\t\t// in a blocking manner\n\t\t\t\t\tthis.defineAdapter(adapter);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvalidateEvictionPolicy(options);\n\n\t\tthis._defaultConfig = extend({}, DefaultConfig);\n\t\tthis._stats = extend({}, DefaultStats);\n\t\tthis._config = extend({}, this._defaultConfig, options);\n\t\tthis._adapterSet = null;\n\t\tthis._initAdapter = null;\n\t\tthis._ready = false;\n\t\tthis._dbInfo = null;\n\n\t\tthis._wrapLibraryMethodsWithReady();\n\t\tthis.setAdapter(this._config.adapter).catch(() => {});\n\n\t\tconst unifiedCacheProxy = new Proxy(this, cacheStatsProxyHandler);\n\t\tUnifiedCache.cacheInstances.push(unifiedCacheProxy);\n\t\treturn unifiedCacheProxy;\n\t}\n\n\t/**\n\t * Set any config values for UnifiedCache; can be called anytime before\n\t * the first API call (e.g. `getItem`, `setItem`).\n\t * We loop through options so we don't overwrite existing config values.\n\t * @param {{adapter: string[], evictionPolicy: string, name: string, description: string, storeName: string}} options\n\t * @returns {Error|boolean|Promise<never>|*|null}\n\t */\n\tconfig(options) {\n\t\tvalidateEvictionPolicy(options);\n\t\t// If the options argument is an object, we use it to set values.\n\t\t// Otherwise, we return either a specified config value or all\n\t\t// config values.\n\t\tif (typeof options === 'object') {\n\t\t\t// If UnifiedCache is ready and fully initialized, we can't set\n\t\t\t// any new configuration values. Instead, we return an error.\n\t\t\tif (this._ready) {\n\t\t\t\treturn new Error(\n\t\t\t\t\t\"Can't call config() after UnifiedCache \" + 'has been used.'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfor (let i in options) {\n\t\t\t\t// TODO: set additional configuration options like storeName, version etc.\n\t\t\t\tthis._config[i] = options[i];\n\t\t\t}\n\n\t\t\t// after all config options are set and\n\t\t\t// the adapter option is used, try setting it\n\t\t\tif ('adapter' in options && options.adapter) {\n\t\t\t\treturn this.setAdapter(this._config.adapter);\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} else if (typeof options === 'string') {\n\t\t\treturn this._config[options];\n\t\t} else {\n\t\t\treturn this._config;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the adapter in use.\n\t * @returns {string|null} adapter name in use or null during initialization\n\t * process or when unable to find adapter.\n\t */\n\tadapter() {\n\t\treturn this._adapter || null;\n\t}\n\n\t/**\n\t * Sets the adapter to the unifiedCache.\n\t * @param {string[]} adapters - list of adapter names\n\t * @param {function} callback - success callback\n\t * @param {function} errorCallback - error callback\n\t * @returns {null|Promise<never>|*}\n\t */\n\tsetAdapter(adapters, callback, errorCallback) {\n\t\tconst self = this;\n\t\tconst supportedAdapters = this._getSupportedAdapters(adapters);\n\n\t\tfunction setAdapterToConfig() {\n\t\t\tself._config.adapter = self.adapter();\n\t\t}\n\n\t\tfunction extendSelfWithAdapter(adapter) {\n\t\t\tself._extend(adapter);\n\t\t\tsetAdapterToConfig();\n\t\t\t// TODO initialize the indexedDB adapter when no adapter\n\t\t\t//  is passed to config\n\t\t\tself._ready = self._initStorage(self._config);\n\t\t\treturn self._ready;\n\t\t}\n\n\t\tfunction initAdapter(supportedAdapters) {\n\t\t\tlet currentAdapterIndex = 0;\n\t\t\treturn () => {\n\t\t\t\tfunction adapterPromiseLoop() {\n\t\t\t\t\twhile (currentAdapterIndex < supportedAdapters.length) {\n\t\t\t\t\t\tlet adapterName = supportedAdapters[currentAdapterIndex];\n\n\t\t\t\t\t\tself._dbInfo = null;\n\t\t\t\t\t\tself._ready = null;\n\n\t\t\t\t\t\tcurrentAdapterIndex++;\n\t\t\t\t\t\treturn self\n\t\t\t\t\t\t\t.getAdapter(adapterName)\n\t\t\t\t\t\t\t.then((adapter) => extendSelfWithAdapter(adapter))\n\t\t\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\t\t\tconsole.warn(error);\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.catch(adapterPromiseLoop);\n\t\t\t\t\t}\n\n\t\t\t\t\tsetAdapterToConfig();\n\t\t\t\t\tconst error = new Error('No available storage method found.');\n\t\t\t\t\tself._adapterSet = Promise.reject(error);\n\t\t\t\t\treturn self._adapterSet;\n\t\t\t\t}\n\n\t\t\t\treturn adapterPromiseLoop();\n\t\t\t};\n\t\t}\n\n\t\t// There might be a adapter initialization in progress\n\t\t// so wait for it to finish in order to avoid a possible\n\t\t// race condition to set _dbInfo\n\t\tconst oldAdapterSetDone =\n\t\t\tthis._adapterSet !== null\n\t\t\t\t? this._adapterSet.catch(() => Promise.resolve())\n\t\t\t\t: Promise.resolve();\n\n\t\tthis._adapterSet = oldAdapterSetDone\n\t\t\t.then(() => {\n\t\t\t\tconst adapterName = supportedAdapters[0];\n\t\t\t\tif (adapterName) {\n\t\t\t\t\tself._dbInfo = null;\n\t\t\t\t\tself._ready = null;\n\n\t\t\t\t\treturn self.getAdapter(adapterName).then((adapter) => {\n\t\t\t\t\t\tself._adapter = adapter._adapter;\n\t\t\t\t\t\tsetAdapterToConfig();\n\t\t\t\t\t\tself._wrapLibraryMethodsWithReady();\n\t\t\t\t\t\tself._initAdapter = initAdapter(supportedAdapters);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tsetAdapterToConfig();\n\t\t\t\tconst error = new Error('No available storage method found.');\n\t\t\t\tself._adapterSet = Promise.reject(error);\n\t\t\t\treturn self._adapterSet;\n\t\t\t});\n\n\t\trunTwoCallbacks(this._adapterSet, callback, errorCallback);\n\t\treturn this._adapterSet;\n\t}\n\n\t/**\n\t * Returns the name of the adapter being used, null during the\n\t * asynchronous adapter initialization process, or\n\t * null if the asynchronous adapter initialization process failed\n\t * to find a usable adapter.\n\t * @param {string} adapterName - adapter name\n\t * @param {function} callback - success callback\n\t * @param {function} errorCallback - error callback\n\t * @returns {Promise<unknown> | Promise<never>} promise for the defined adapter\n\t */\n\tgetAdapter(adapterName, callback, errorCallback) {\n\t\tconst getAdapterPromise = DefinedAdapters[adapterName]\n\t\t\t? Promise.resolve(DefinedAdapters[adapterName])\n\t\t\t: Promise.reject(new Error('Adapter not found.'));\n\n\t\trunTwoCallbacks(getAdapterPromise, callback, errorCallback);\n\n\t\treturn getAdapterPromise;\n\t}\n\n\t/**\n\t * Returns the serializer object containing the serialization\n\t * & deserialization methods.\n\t * @param {function} callback\n\t * @returns {Promise<{serialize: function, deserialize: function}>} a promise for serializer object\n\t */\n\tgetSerializer(callback) {\n\t\tconst serializerPromise = Promise.resolve(serializer);\n\t\trunTwoCallbacks(serializerPromise, callback);\n\t\treturn serializerPromise;\n\t}\n\n\t/**\n\t * Defines adapter for the {@link UnifiedCache} and ensures adapter in compliance\n\t * with the API methods contract.\n\t * @param {object} adapterObject - Adapter object with library methods and properties\n\t * @param {function} callback - success callback\n\t * @param {function} errorCallback - error callback\n\t * @returns {Promise<*>}\n\t */\n\tdefineAdapter(adapterObject, callback, errorCallback) {\n\t\tconst promise = new Promise(function(resolve, reject) {\n\t\t\ttry {\n\t\t\t\tconst adapterName = adapterObject._adapter;\n\t\t\t\tconst complianceError = new Error('Custom adapter not compliant');\n\n\t\t\t\t// Adapter name should be defined and not overlap with the\n\t\t\t\t// library-defined, default adapters.\n\t\t\t\tif (!adapterObject._adapter) {\n\t\t\t\t\treject(complianceError);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst adapterMethods = LibraryMethods.concat('_initStorage');\n\t\t\t\tfor (let i = 0, len = adapterMethods.length; i < len; i++) {\n\t\t\t\t\tconst adapterMethodName = adapterMethods[i];\n\n\t\t\t\t\t// when the property is there,\n\t\t\t\t\t// it should be a method even when optional\n\t\t\t\t\tconst isRequired = !includes(\n\t\t\t\t\t\tOptionalAdapterMethods,\n\t\t\t\t\t\tadapterMethodName\n\t\t\t\t\t);\n\t\t\t\t\tif (\n\t\t\t\t\t\t(isRequired || adapterObject[adapterMethodName]) &&\n\t\t\t\t\t\ttypeof adapterObject[adapterMethodName] !== 'function'\n\t\t\t\t\t) {\n\t\t\t\t\t\treject(complianceError);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst configureMissingMethods = function() {\n\t\t\t\t\tconst methodNotImplementedFactory = function(methodName) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tconst error = new Error(\n\t\t\t\t\t\t\t\t`Method ${methodName} is not implemented by the current adapter`\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tconst promise = Promise.reject(error);\n\n\t\t\t\t\t\t\trunCallback(promise, arguments[arguments.length - 1]);\n\n\t\t\t\t\t\t\treturn promise;\n\t\t\t\t\t\t};\n\t\t\t\t\t};\n\n\t\t\t\t\tfor (let i = 0, len = OptionalAdapterMethods.length; i < len; i++) {\n\t\t\t\t\t\tconst optionalAdapterMethod = OptionalAdapterMethods[i];\n\t\t\t\t\t\tif (!adapterObject[optionalAdapterMethod]) {\n\t\t\t\t\t\t\tadapterObject[\n\t\t\t\t\t\t\t\toptionalAdapterMethod\n\t\t\t\t\t\t\t] = methodNotImplementedFactory(optionalAdapterMethod);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tconfigureMissingMethods();\n\n\t\t\t\tconst setAdapterSupport = function(support) {\n\t\t\t\t\tif (DefinedAdapters[adapterName]) {\n\t\t\t\t\t\tconsole.info(`Redefining UnifiedCache adapter: ${adapterName}`);\n\t\t\t\t\t}\n\t\t\t\t\tDefinedAdapters[adapterName] = adapterObject;\n\t\t\t\t\tAdapterSupport[adapterName] = support;\n\t\t\t\t\t// don't use a then, so that we can define\n\t\t\t\t\t// adapters that have simple _support methods\n\t\t\t\t\t// in a blocking manner\n\t\t\t\t\tresolve();\n\t\t\t\t};\n\n\t\t\t\tif ('_support' in adapterObject) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tadapterObject._support &&\n\t\t\t\t\t\ttypeof adapterObject._support === 'function'\n\t\t\t\t\t) {\n\t\t\t\t\t\tadapterObject._support().then(setAdapterSupport, reject);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetAdapterSupport(!!adapterObject._support);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsetAdapterSupport(true);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treject(e);\n\t\t\t}\n\t\t});\n\n\t\trunTwoCallbacks(promise, callback, errorCallback);\n\t\treturn promise;\n\t}\n\n\t/**\n\t * checks for adapter support and returns true if supported, otherwise false\n\t * @param {string} adapterName\n\t * @returns {boolean}\n\t */\n\tsupports(adapterName) {\n\t\treturn !!AdapterSupport[adapterName];\n\t}\n\n\t/**\n\t * ready determine whether the asynchronous adapter\n\t * initialization process has finished.\n\t * @param {function} callback\n\t * @returns {Promise<*>} a promise indicating adapter initialization\n\t */\n\tready(callback) {\n\t\tconst self = this;\n\n\t\t//When cache version check is done, then we can initialize the adapter.\n\t\tconst promise = cacheVersionCheck.then(() => {\n\t\t\treturn self._adapterSet.then(() => {\n\t\t\t\tif (self._ready === null) {\n\t\t\t\t\tself._ready = self._initAdapter();\n\t\t\t\t}\n\n\t\t\t\treturn self._ready;\n\t\t\t});\n\t\t});\n\n\t\trunTwoCallbacks(promise, callback, callback);\n\t\treturn promise;\n\t}\n\n\t/**\n\t * List of supported adapters\n\t * @param {string[]} adapters - list of available adapter names\n\t * @returns {string[]} list of supported adapter names\n\t * @private\n\t */\n\t_getSupportedAdapters(adapters) {\n\t\tconst supportedAdapters = [];\n\t\tfor (let i = 0, len = adapters.length; i < len; i++) {\n\t\t\tconst adapterName = adapters[i];\n\t\t\tif (this.supports(adapterName)) {\n\t\t\t\tsupportedAdapters.push(adapterName);\n\t\t\t}\n\t\t}\n\t\treturn supportedAdapters;\n\t}\n\n\t/**\n\t * extends the instance of unifiedCache with initialized\n\t * adapter API methods and properties\n\t * @param {object} libraryMethodsAndProperties\n\t * @private\n\t */\n\t_extend(libraryMethodsAndProperties) {\n\t\textend(this, libraryMethodsAndProperties);\n\t}\n\n\t/**\n\t * Includes adapter API methods to the UnifiedCache object and replaced\n\t * by the adapter API methods once initialized successfully.\n\t * @private\n\t */\n\t_wrapLibraryMethodsWithReady() {\n\t\t// Add a stub for each adapter API method that delays the call to the\n\t\t// corresponding adapter method until UnifiedCache is ready. These stubs\n\t\t// will be replaced by the adapter methods as soon as the adapter is\n\t\t// loaded, so there is no performance impact.\n\t\tfor (let i = 0, len = LibraryMethods.length; i < len; i++) {\n\t\t\tcallWhenReady(this, LibraryMethods[i]);\n\t\t}\n\t}\n\n\t/**\n\t * creates an instance of {@link UnifiedCache} and returns it.\n\t * @param {{adapter: string[], name: string, description: string, storeName: string}} options - configuration options\n\t * @returns {UnifiedCache} an instance of {@link UnifiedCache}\n\t */\n\tcreateInstance(options) {\n\t\treturn new UnifiedCache(options);\n\t}\n}\n\n/**\n * The actual UnifiedCache object that we expose as a module or via a global.\n * It's extended by pulling in one of our other libraries.\n * @type {UnifiedCache} unifiedCache object\n */\nconst unifiedCache = new UnifiedCache();\n\n// Add cache stats to window.ux_globals\nsetGlobalCacheStats({\n\tgetAggregateCacheStats: UnifiedCache.getAggregateCacheStats,\n\tgetAllCacheStats: UnifiedCache.getAllCacheStats\n});\n\nexport default unifiedCache;\n","import unifiedCache from '@devsnc/library-unified-cache';\n\nconst ucInstances = {};\n\n/**\n * Returns a unified cache instance with the given storageAdapter and name.\n * If that unified cache instance already exists, return that.\n * Otherwise, create and return a new instance.\n *\n * @param {string} storageAdapter  e.g. 'localStorage', 'sessionStorage', 'indexedDB', 'cacheAPI', 'inMemory'\n * @param {string} name namespace\n * @return {UnifiedCache} unified cache instance\n */\nconst getUnifiedCacheInstance = (storageAdapter, name) => {\n\tconst key = `${storageAdapter}-${name}`;\n\tif (ucInstances[key]) {\n\t\treturn ucInstances[key];\n\t}\n\n\tucInstances[key] = unifiedCache.createInstance({\n\t\tadapter: [storageAdapter],\n\t\tname,\n\t\tdescription: `${storageAdapter} for ${name}`,\n\t\tstoreName: 'ux-runtime',\n\t});\n\n\treturn ucInstances[key];\n};\n\nconst resetUcInstances = () => {\n\tObject.keys(ucInstances).forEach((key) => {\n\t\tdelete ucInstances[key];\n\t});\n};\n\nexport { getUnifiedCacheInstance, resetUcInstances };\n","export const PERSIST_STATE_CONSTANTS = {\n\tACTION_PERSIST_STATE: 'PERSIST_STATE',\n\tACTION_PERSIST_STATE_INTERNAL: 'UXR_INTERNAL#PERSIST_STATE',\n\tACTION_PERSIST_STATE_INIT_INTERNAL: 'UXR_INTERNAL#PERSIST_STATE_INIT',\n\tACTION_PERSIST_STATE_URL_CHANGED_INTERNAL:\n\t\t'UXR_INTERNAL#PERSIST_STATE_URL_CHANGED',\n\tSINK_URL: 'URL',\n};\n","/** Cache Buster hash from ux_globals  */\nconst UX_GLOBAL_CLIENT_CACHE_BUSTER = window?.ux_globals?.uxGlobalsClientCacheBuster || '';\n\n/**\n * Construct the URL to get only the requested experience on demand\n * @param {String} pageRegistryId - the requested experience pageRegistryId\n * @param {String} cacheBuster - the cache buster hash\n * @returns {String} returns the formatted client Cacheable ux_globals Request Url\n */\nexport const getClientCacheableUxGlobalExperienceRequestUrl = (pageRegistryId = '', cacheBuster = '') => {\n\treturn `/$uxappimmutables.do?sysparm_request_type=ux_globals_experience&sysparm_page_registry=${pageRegistryId}&uxpcb=${cacheBuster}`;\n};\n\n/**\n * Function used to make the Client Cacheable ux_global Experience Request for the requestedExperience via network call.\n * @param pageRegistryId - the requested experience pageRegistryId\n * @returns {Promise<Object>} returns the requested experienceContent;\n */\nexport const fetchExperienceForUxGlobals = async (pageRegistryId = '') => {\n\tconst requestUrl = getClientCacheableUxGlobalExperienceRequestUrl(pageRegistryId, UX_GLOBAL_CLIENT_CACHE_BUSTER);\n\tconst headers = new Headers();\n\theaders.set('Accept', 'application/json');\n\tconst request = new Request(requestUrl, {headers});\n\tconst response = await fetch(request);\n\tconst experienceContent = await response.json();\n\tconst experienceConfigs = Object.assign(window?.ux_globals?.experienceConfigs, experienceContent);\n\treturn experienceConfigs;\n};\n\n/**\n * Function to determine if the requested experience is complete. When the experience doesn't contain the appRouteConfiguration\n * Then it's an incomplete experience and needs to fetch remaining data.\n * @param {String}requestedExpKey - The requested experience key\n * @returns {boolean}\n */\nexport const isCompleteExperienceConfigs = (requestedExpKey ='') => {\n\tconst uxGlobalExperienceConfigs = window?.ux_globals?.experienceConfigs || {};\n\tconst {appRouteConfiguration= null} = uxGlobalExperienceConfigs[requestedExpKey] || {};//try to destructure and default to falsey value\n\treturn !!appRouteConfiguration;\n};\n\n/**\n * Function to check if requested experience is supported. It's a supported experience if the route is part of the\n * experienceConfigs.  Non supported experiences should open in new tab.\n * @param {String} requestedExpKey - the requested experience\n * @param {Object} prevExperienceRouteConfigs - the  experienceConfig object\n * @returns {boolean}\n */\nexport const isSupportedExperience = (requestedExpKey='', prevExperienceRouteConfigs={}) => {\n\treturn (requestedExpKey in prevExperienceRouteConfigs);//check if key exists in experienceConfigs\n};\n\n/**\n * Function used to fetch the requested experience configs.\n * will then merge the returned configs to the existing configs wit the new data to make the requestedExperience Full.\n * @param {String}requestedExpKey - the requested experience key\n * @param {Object}prevExperienceRouteConfigs - the ExperienceConfig object from ux_globals\n * @returns {Promise<Object>} returns the merged experienceRouteConfigs\n */\nexport const fetchRequestedExperienceConfig = async (requestedExpKey = '', uxglobalsExperienceConfigs = {}, prevRouterConfig = {}) => {\n\tconst {experienceId} = uxglobalsExperienceConfigs[requestedExpKey] || {};\n\tconst experienceConfigs = await fetchExperienceForUxGlobals(experienceId);\n\treturn {...prevRouterConfig.experienceRouteConfigs, ...experienceConfigs};\n};\n\nexport const getRequestedExperienceConfig = async (requestedExpKey = '' ) => {\n\tconst uxGlobalExperienceConfigs = window?.ux_globals?.experienceConfigs || {};\n\tconst isSupported = isSupportedExperience(requestedExpKey, uxGlobalExperienceConfigs);\n\tif (!isSupported) \n\t\treturn null; //return if not supported experience\n\tconst isFullExpConfigs = isCompleteExperienceConfigs(requestedExpKey);\n\tconst experienceConfigs = isFullExpConfigs ? \n\t\tuxGlobalExperienceConfigs : \n\t\tawait fetchRequestedExperienceConfig(requestedExpKey, uxGlobalExperienceConfigs);\n\treturn experienceConfigs;\n};","import { getTypeFieldGroupsMap } from \"./url-parser-utils\";\n\n\nlet activeRouterConfig = {};\n\nconst setActiveRouterConfig = config => activeRouterConfig = config;\nconst getActiveRouterConfig = () => activeRouterConfig;\nconst queryParamsEnabled = () => activeRouterConfig.queryParams;\n\n\n/**\n * Function used to create the routeConfig object property used on the sn-canvas-router component\n * @param {Object} appRouteConfig - the appRouteConfiguration object from the requested experience\n * @param {Object} experienceConfig - current experience config object\n * @returns {Object} routeConfig - returns constructed routeConfig object.\n */\nconst constructRouterConfig = (appRouteConfig={}, experienceConfigs={}) => {\n\tlet routeConfig;\n\tconst routeTypeFieldGroupsMap = getTypeFieldGroupsMap(appRouteConfig);\n\trouteConfig = {\n\t\t...appRouteConfig,\n\t\t...(routeTypeFieldGroupsMap && {routeTypeFieldGroupsMap})\n\t};\n\tconst experienceRouteConfigs = {};\n\tfor (const [path, config] of Object.entries(experienceConfigs)) {\n\t\tconst {\n\t\t\tappShellId,\n\t\t\texperienceId,\n\t\t\texperienceName,\n\t\t\tvendorSitePrefix,\n\t\t\turlPath,\n\t\t\tpath:expPath\n\t\t} = config;\n\t\tconst experienceRouteConfig = config.appRouteConfiguration;\n\t\tconst _routeTypeFieldGroupsMap = experienceRouteConfig\n\t\t\t? getTypeFieldGroupsMap(experienceRouteConfig)\n\t\t\t: {};\n\n\t\texperienceRouteConfigs[path] = {\n\t\t\t...experienceRouteConfig,\n\t\t\trouteTypeFieldGroupsMap: _routeTypeFieldGroupsMap,\n\t\t\tvendorSitePrefix,\n\t\t\tpath: urlPath || expPath,\n\t\t\tappShellId,\n\t\t\texperienceId,\n\t\t\texperienceName\n\t\t};\n\t}\n\trouteConfig.experienceRouteConfigs = experienceRouteConfigs;\n\treturn routeConfig;\n};\n\nexport {setActiveRouterConfig, queryParamsEnabled, getActiveRouterConfig, constructRouterConfig};","import pathToRegexp from 'path-to-regexp';\nimport qs from 'qs';\nimport {camelCase, isEmpty, get} from 'lodash';\nimport * as constants from './constants';\nimport {klona} from 'klona';\nimport { getActiveRouterConfig, queryParamsEnabled } from './router-config';\n\nfunction keysToParams(match, keys) {\n\tconst params = {};\n\tlet index = 1;\n\tfor (let k in keys) {\n\t\tparams[keys[k].name] = match[index];\n\t\tindex++;\n\t}\n\treturn params;\n}\n\n\nexport function getGlobal() {\n\tif (typeof self !== 'undefined') \n\t\treturn self;\n\tif (typeof window !== 'undefined') \n\t\treturn window;\n\tif (typeof global !== 'undefined') \n\t\treturn global; // eslint-disable-line no-undef\n\tthrow new Error('Unable to locate global object');\n}\n\n\nexport function getLocation() {\n\treturn getGlobal().location;\n}\n\n\nfunction getParamsInCamelCase(paramsInKababCase) {\n\tconst paramsInCamelCase = {};\n\tfor (let [key, value] of Object.entries(paramsInKababCase)) \n\t\tparamsInCamelCase[camelCase(key)] = value;\n\treturn paramsInCamelCase;\n}\n\n\nexport function getParametersFromPath(path, url) {\n\tconst keys = [];\n\tconst regex = pathToRegexp(path, keys, { end: false });\n\tif (url) {\n\t\tconst queryIdx = url.indexOf('?');\n\t\tconst match =\n\t\t\tqueryIdx > -1\n\t\t\t\t? regex.exec(url.substring(0, queryIdx))\n\t\t\t\t: regex.exec(url);\n\t\tconst search = queryIdx > -1 ? url.substring(queryIdx) : null;\n\n\t\treturn {\n\t\t\tparams: {\n\t\t\t\tpath: match ? keysToParams(match, keys) : {},\n\t\t\t\tsearch,\n\t\t\t},\n\t\t};\n\t}\n\tconst { pathname, hash, search } = getLocation();\n\tconst match = regex.exec(pathname);\n\n\treturn {\n\t\tpathname,\n\t\thash,\n\t\tparams: {\n\t\t\tquery: getParamsInCamelCase(qs.parse(search.substring(1))),\n\t\t\tsearch,\n\t\t\tpath: match ? keysToParams(match, keys) : {},\n\t\t},\n\t};\n}\n\n\nexport const getTypeFieldGroupsMap = config => {\n\tconst _routerConfig = config || getActiveRouterConfig();\n\tif (_routerConfig && _routerConfig.routeTypeFieldGroupsMap)\n\t\treturn _routerConfig.routeTypeFieldGroupsMap;\n\tconst routeTypeFieldGroupsMap = {};\n\tfor (let [key, value] of Object.entries(_routerConfig.routes || {} )) {\n\t\tvalue.forEach(routeObj => {\n\t\t\tconst {\n\t\t\t\t// eslint-disable-next-line no-unused-vars\n\t\t\t\tmacroponents,\n\t\t\t\t// eslint-disable-next-line no-unused-vars\n\t\t\t\tmacroponentSysId,\n\t\t\t\t// eslint-disable-next-line no-unused-vars\n\t\t\t\tmacroponentConfiguration,\n\t\t\t\t...rest\n\t\t\t} = routeObj; //remove screen info from router info\n\t\t\tconst deepRouteCopy = klona(rest);\n\t\t\tconst { fields } = deepRouteCopy;\n\t\t\tconst n = Array.isArray(fields) ? fields.length : 0;\n\t\t\trouteTypeFieldGroupsMap[key] = {\n\t\t\t\t...routeTypeFieldGroupsMap[key],\n\t\t\t\t[n]: {\n\t\t\t\t\t...deepRouteCopy,\n\t\t\t\t\tparams: new Set(deepRouteCopy.optionalParameters)\n\t\t\t\t}\n\t\t\t};\n\t\t});\n\t}\n\treturn routeTypeFieldGroupsMap;\n};\n\n/**\n * Construct a params object from an array of URL slugs\n * @param options\n */\nexport function getParamsFromUri(options) {\n\tlet params = {};\n\tlet paramFound = false;\n\tlet paramName = null;\n\tif (queryParamsEnabled()) {\n\t\tfor (let i = 0; i < options.length; i++) {\n\t\t\t// Stop parsing if we land on a SUB keyword\n\t\t\tif (options[i] === constants.SUB_URL) \n\t\t\t\tbreak;\n\n\t\t\tif (options[i].indexOf(constants.QUERY_PARAMS_DIVIDER) > -1) {\n\t\t\t\tparams = getParamsInCamelCase(\n\t\t\t\t\tqs.parse(\n\t\t\t\t\t\toptions[i].substring(\n\t\t\t\t\t\t\toptions[i].indexOf(constants.QUERY_PARAMS_DIVIDER) +\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (let i = 0; i < options.length; i++) {\n\t\t\t// Stop parsing if we land on a SUB keyword\n\t\t\tif (options[i] === constants.SUB_URL) \n\t\t\t\tbreak;\n\n\t\t\tif (options[i] === constants.PARAMS_DIVIDER) {\n\t\t\t\t// Stop parsing if we encounter a second PARAMS keyword\n\t\t\t\tif (paramFound) \n\t\t\t\t\tbreak;\n\n\t\t\t\tparamFound = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// No params found yet\n\t\t\tif (!paramFound) \n\t\t\t\tcontinue;\n\t\t\tif (paramName === null)\n\t\t\t\tparamName = camelCase(decodeURL(options[i]));\n\t\t\telse {\n\t\t\t\tparams[paramName] = decodeURL(options[i]);\n\t\t\t\tparamName = null;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (isEmpty(params)) \n\t\treturn;\n\n\treturn params;\n}\n\nexport const getFilteredParams = (params, configuredParams) => {\n\tif (isEmpty(params) || !configuredParams || configuredParams.size === 0)\n\t\treturn;\n\tconst filteredParams = {};\n\tconfiguredParams.forEach( param => {\n\t\t// making sure we include 0 and false\n\t\tif (params[param] || params[param] === 0 || params[param] === false)\n\t\t\tfilteredParams[param] = params[param];\n\t});\n\treturn isEmpty(filteredParams) ? null : filteredParams;\n};\n\nexport const getRoute = (route, fieldsLength, routerConfig) =>\n\tget(getTypeFieldGroupsMap(routerConfig), `${route}[${fieldsLength}]`, {});\n\nexport const decodeURL = (param) => {\n\tif (param === '-1') return param;\n\tlet decodedParam = decodeURIComponent(param)\n\ttry {\n\t\treturn JSON.parse(decodedParam);\n\t  } catch (e) {\n\t\treturn decodedParam;\n\t  }\n};\n\nexport const encodeURL = (param) => {\n\tif (typeof param === 'object') return encodeURIComponent(JSON.stringify(param));\n\treturn encodeURIComponent(param);\n};\n","import { isEmpty, has } from 'lodash';\n\nimport {\n\tgetParametersFromPath,\n\tgetTypeFieldGroupsMap,\n\tgetParamsFromUri,\n\tgetFilteredParams,\n\tgetRoute,\n\tdecodeURL\n} from './url-parser-utils';\nimport {\n\tqueryParamsEnabled\n} from './router-config';\nimport {\n\tSUB_URL,\n\tPARAMS_DIVIDER,\n\tQUERY_PARAMS_DIVIDER,\n\tUNDEFINED_FIELD_VALUE,\n\tPERSISTED_STATE_PARAM\n} from './constants';\n\n\n/**\n * For a given type, generates content using options and configured url fields\n * @param type\n * @param options\n * @returns {*}\n * @private\n */\nconst getContent = (type, options, routerConfig) => {\n\tlet content = {};\n\tlet multiInstFieldIndex = -1;\n\tconst typeFieldGroupsMap = getTypeFieldGroupsMap(routerConfig);\n\tlet _type = type;\n\tlet _options = options;\n\n\tif (!has(typeFieldGroupsMap, type))\n\t\t_options = [type, ...options];\n\n\tcontent.route = _type;\n\tcontent.fields = {};\n\n\t//count fields in url\n\tconst urlFields = [];\n\tfor (let i = 0; i < _options.length; i++) {\n\t\tif (_options[i] === SUB_URL) \n\t\t\tbreak;\n\t\tif (!queryParamsEnabled() && _options[i] === PARAMS_DIVIDER) \n\t\t\tbreak;\n\t\tif (\n\t\t\tqueryParamsEnabled() &&\n\t\t\t_options[i].indexOf(QUERY_PARAMS_DIVIDER) > -1\n\t\t) {\n\t\t\tconst parts = _options[i].split(QUERY_PARAMS_DIVIDER);\n\t\t\tif (!isEmpty(parts[0])) \n\t\t\t\turlFields[i] = decodeURL(parts[0]);\n\t\t\tbreak;\n\t\t}\n\n\t\tif (_options[i].indexOf('_uid_') > -1)\n\t\t\tmultiInstFieldIndex = i;\n\t\turlFields[i] = decodeURL(_options[i]);\n\t\tif (urlFields[i] === UNDEFINED_FIELD_VALUE) \n\t\t\turlFields[i] = undefined;\n\t}\n\n\tconst { fields = [], params: configuredParams } = getRoute(\n\t\t_type,\n\t\turlFields.length,\n\t\trouterConfig\n\t);\n\tfor (let i = 0; fields && i < fields.length; i++)\n\t\tcontent.fields[fields[i]] = urlFields[i];\n\n\n\tif (multiInstFieldIndex >= 0)\n\t\tcontent.multiInstField = fields[multiInstFieldIndex];\n\n\tconst params = getParamsFromUri(_options);\n\n\tconst filteredParams = getFilteredParams(params, configuredParams);\n\n\treturn { ...content, ...(filteredParams && { params: filteredParams }) };\n};\n\n/**\n * For a given array of URL slugs, extract args that can be used to create a sub tab or drilldown\n * @param options\n * @returns {*}\n */\nconst getSubPortion = options => {\n\tconst subUrlIdx = options.findIndex(t => t === SUB_URL);\n\tif (subUrlIdx < 0) \n\t\treturn false;\n\n\treturn getContent(options[subUrlIdx + 1], options.slice(subUrlIdx + 2));\n};\n\nconst getEncodedPersistedStateFromUrl = options => {\n\tconst persistedStateIdx = options.findIndex(t => t === PERSISTED_STATE_PARAM);\n\treturn persistedStateIdx == -1 ? undefined : decodeURL(JSON.parse(options[persistedStateIdx + 1]));\n}\n\nconst getSelectedContentFromUrl = (context, path, newRouterConfig) => {\n\tconst { path: contextPath, experienceName } = context || {};\n\n\tconst pattern = contextPath\n\t\t? `/${contextPath}/:type/:options*`\n\t\t: '/:type/:options*';\n\n\tlet {\n\t\tparams: {\n\t\t\tpath: { type, options },\n\t\t\tsearch\n\t\t}\n\t} = getParametersFromPath(pattern, path);\n\n\tif (!type)\n\t\treturn null;\n\n\toptions = options ? options.split('/') : [];\n\tsearch = search ? search.split('/') : [];\n\n\tif (queryParamsEnabled()) \n\t\toptions = [...options, ...search];\n\tconst content = getContent(type, options, newRouterConfig);\n\tif (!content)\n\t\treturn null;\n\n\tconst subContent = getSubPortion(options);\n\tconst encodedPersistedState = getEncodedPersistedStateFromUrl(options);\n\n\tif (!subContent)\n\t\treturn {\n\t\t\t...content,\n\t\t\t...(contextPath && { context: { path: contextPath, experienceName } }),\n\t\t\t...(encodedPersistedState && {encodedPersistedState})\n\t\t};\n\n\treturn {\n\t\t...subContent,\n\t\tparent: { ...content },\n\t\t...(contextPath && { context: { path: contextPath, experienceName } }),\n\t\t...(encodedPersistedState && {encodedPersistedState})\n\t};\n};\n\n\nexport { getSelectedContentFromUrl, getContent };\n","import {\n\tgetSelectedContentFromUrl, \n\tgetActiveRouterConfig, \n\tgetRequestedExperienceConfig, \n\tconstructRouterConfig\n} from 'sn-canvas-common';\n\nexport const convertUrlToPayload = async url => {\n    const pathname = processPathName(url);\n    let experiencePath;\n    const routerConfig = getActiveRouterConfig();\n    let experienceConfigs = routerConfig?.experienceRouteConfigs || window?.ux_globals?.experienceConfigs || {};\n    for (let path of Object.keys(experienceConfigs)) {\n\t\tif (`${pathname}/`.indexOf(`${path}/`) === 0) {\n            experiencePath = path;\n            break;\n        }\n\t};\n    if(!experiencePath) throw Error(`Experience is Not Supported`);\n    experienceConfigs = await getRequestedExperienceConfig(experiencePath);\n    const experienceConfig = experienceConfigs[experiencePath];\n    if(!experienceConfig) throw Error(`No Experience Config found for ${experiencePath}`);\n    const newRouterConfig = constructRouterConfig(experienceConfig.appRouteConfiguration, experienceConfigs);\n    const selectedContent = getSelectedContentFromUrl(\n        {path: experiencePath, experienceName: experienceConfig?.experienceName},\n        `/${pathname}`,\n        newRouterConfig\n\t);\n    return selectedContent;\n}\n\n\nexport function processPathName(url) {\n    const temp_anchor = document.createElement(\"a\")\n    temp_anchor.href = url;\n    const pathname = temp_anchor.pathname.startsWith(\"/\") ? temp_anchor.pathname.slice(1) : temp_anchor.pathname;\n    return `${pathname}${temp_anchor.search}`;\n}","import {\n\tBEHAVIOR_NAME,\n\tREDUCE_MOTION_KEY,\n\tREDUCE_MOTION_MATCH_MEDIA,\n} from './utils/constants';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {getUserPrefContext} from 'sn-ux-core';\nconst {COMPONENT_CONNECTED} = actionTypes;\n\nexport function detectHeadlessBrowser() {\n\tlet headlessBrowser = false;\n\tif (\n\t\tnavigator.userAgent.includes('HeadlessChrome') ||\n\t\tnavigator.userAgent.includes('PhantomJS')\n\t) {\n\t\t// Headless browser detected via User Agent.\n\t\theadlessBrowser = true;\n\t} else if (window.__playwright__binding__ || window.__pwInitScripts) {\n\t\t// Playwright-controlled headless browser detected.\n\t\theadlessBrowser = true;\n\t} else if (navigator.webdriver) {\n\t\t// Headless browser detected via navigator.webdriver.\n\t\theadlessBrowser = true;\n\t}\n\n\treturn headlessBrowser;\n}\n\nexport function getReduceMotionValue(context) {\n\tlet reduceMotionValue = false;\n\tconst reduceMotionKey = getUserPrefContext(REDUCE_MOTION_KEY);\n\tif (window.matchMedia(REDUCE_MOTION_MATCH_MEDIA).matches) {\n\t\treduceMotionValue = true;\n\t} else if (reduceMotionKey) {\n\t\treduceMotionValue = context?.[reduceMotionKey]?.toLowerCase() === 'true';\n\t} else if (detectHeadlessBrowser()) {\n\t\treduceMotionValue = true;\n\t} else if (window.vertRun) {\n\t\t// Reduce motion if we are running VERT tests\n\t\treduceMotionValue = true;\n\t}\n\n\treturn reduceMotionValue;\n}\n\nexport default {\n\tname: BEHAVIOR_NAME,\n\tinitialState: false,\n\n\tactionHandlers: {\n\t\t[COMPONENT_CONNECTED]: {\n\t\t\teffect: async (coeffects) => {\n\t\t\t\tconst {context, updateState} = coeffects;\n\t\t\t\tconst reduceMotionValue = getReduceMotionValue(context);\n\n\t\t\t\tupdateState(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tpath: `behaviors.${BEHAVIOR_NAME}`,\n\t\t\t\t\t\tvalue: reduceMotionValue,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t},\n};\n","import {default as reduceMotionBehavior} from './reduce-motion';\nexport {getReduceMotionValue} from './reduce-motion';\nexport default reduceMotionBehavior;\n","import {createCustomElement, actionTypes} from '@servicenow/ui-core';\nimport lottie from 'lottie-web';\nimport styles from './_now-icon-animated.scss';\nimport {configAriaLabelRoleSchema} from '@servicenow/library-schemas';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport {createHttpEffect} from '@servicenow/ui-effect-http';\nimport reduceMotionBehavior from '@servicenow/behavior-reduce-motion';\n\nconst {COMPONENT_DOM_READY} = actionTypes;\nconst CACHE_VERSION = 2;\nconst NOW_ICON_ANIMATED_CACHE_NAME = `now-icon-animated-json-cache-v${CACHE_VERSION}`;\nconst NOW_ICON_ANIMATED_ASSETS_PATH = '/images/@servicenow/now-icon/';\nconst getCacheKey = (name) => `${NOW_ICON_ANIMATED_CACHE_NAME}-${name}`;\n\nexport const fetchFromCache = (dispatch, icon, size) => {\n\tconst key = getCacheKey(`${icon}-${size}.json`);\n\tlet data, jsonString;\n\n\ttry {\n\t\tjsonString = localStorage.getItem(key);\n\t} catch (e) {\n\t\tdispatch('PRIVATE#FETCH_ICON_ANIMATION', {icon, size});\n\t\treturn;\n\t}\n\n\tif (jsonString) {\n\t\ttry {\n\t\t\tdata = JSON.parse(jsonString);\n\t\t} catch (e) {\n\t\t\ttry {\n\t\t\t\tlocalStorage.removeItem(key);\n\t\t\t} catch (e) {\n\t\t\t\t// Noop\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!data) {\n\t\tdispatch('PRIVATE#FETCH_ICON_ANIMATION', {icon, size});\n\t\treturn;\n\t}\n\n\tdispatch('PRIVATE#CREATE_ICON_ANIMATION', data);\n};\n\nexport const fetchIconAnimation = createHttpEffect(\n\t`${NOW_ICON_ANIMATED_ASSETS_PATH}:icon-:size.json`,\n\t{\n\t\tmethod: 'GET',\n\t\tbatch: false,\n\t\tpathParams: ['icon', 'size'],\n\t\tsuccessActionType: 'PRIVATE#ANIMATION_FETCH_SUCCEEDED',\n\t\terrorActionType: 'PRIVATE#ANIMATION_FETCH_FAILED',\n\t},\n);\n\nexport const injectAria = (svg, configAriaToUse) => {\n\tconst hasLabel = configAriaToUse && Boolean(configAriaToUse['aria-label']);\n\tif (svg) {\n\t\t// Iterate over the object's properties and set each attribute\n\t\tfor (const [name, value] of Object.entries(configAriaToUse)) {\n\t\t\tsvg.setAttribute(name, value);\n\t\t}\n\n\t\tif (hasLabel) {\n\t\t\tsvg.setAttribute('role', 'img');\n\t\t} else {\n\t\t\tsvg.setAttribute('aria-hidden', 'true');\n\t\t}\n\t}\n};\n\nconst view = (state) => {\n\tconst {size} = state.properties;\n\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t'now-icon-animated': true,\n\t\t\t\t[`-${size}`]: size,\n\t\t\t}}\n\t\t></div>\n\t);\n};\n\n/**\n * A symbol used to launch an action, add clarity, or provide additional context with animation.\n *\n * ```jsx\n * <now-icon-animated icon=\"ai-sparkle-fill\" size=\"md\" />\n * ```\n *\n * @seismicElement now-icon-animated\n * @summary An animated icon component using Lottie to display animations.\n * @uib.label Animated Icon\n * @uib.icon icon\n * @uib.description An animated icon component using Lottie to display animations.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties icon, size, configAria\n * @uib.actions NOW_ICON_ANIMATED#CONTENT_VISIBLE\n */\ncreateCustomElement('now-icon-animated', {\n\tview,\n\tstyles,\n\tinitialState: {\n\t\tanimation: null,\n\t},\n\tproperties: {\n\t\t/**\n\t\t * Name of the icon in dash-case, including the `-fill` or `-outline` suffix to\n\t\t * indicate whether the icon is filled or outlined.\n\t\t * @type {('ai-sparkle-fill')}\n\t\t * @uib.label Icon\n\t\t * @uib.defaultValue ai-sparkle-fill\n\t\t * @uib.description Name of the icon in dash-case, including the '-fill' or '-outline' suffix to indicate whether the icon is filled or outlined.\n\t\t * @uib.fieldType choice\n\t\t */\n\t\ticon: {required: true, schema: {type: 'string', enum: ['ai-sparkle-fill']}},\n\t\t/**\n\t\t * Size of the icon.\n\t\t * @type {('sm'|'md'|'lg'|'xl')}\n\t\t * @uib.description Size of the icon in the format 'sm', 'md', 'lg', or 'xl'\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {type: 'string', enum: ['sm', 'md', 'lg', 'xl']},\n\t\t},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-icon-animated. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'icon' key corresponds to the svg element in\n\t\t * now-icon-animated. See https://www.w3.org/TR/wai-aria-1.2/#img for\n\t\t * properties and accepted values.\n\t\t * @type {{ 'icon': {'aria-*': string}}}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Sets ARIA properties on the inner html 'svg' element\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\ticon: configAriaLabelRoleSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t},\n\tbehaviors: [reduceMotionBehavior],\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_READY]: {\n\t\t\teffect: async ({state, dispatch}) => {\n\t\t\t\tconst {icon, size} = state.properties;\n\n\t\t\t\t//remove the animation instances if they already exist\n\t\t\t\tif (state.animation && Object.keys(state.animation).length !== 0) {\n\t\t\t\t\tstate.animation.destroy();\n\t\t\t\t}\n\t\t\t\tfetchFromCache(dispatch, icon, size);\n\t\t\t},\n\t\t},\n\t\t['PRIVATE#FETCH_ICON_ANIMATION']: fetchIconAnimation,\n\t\t['PRIVATE#ANIMATION_FETCH_SUCCEEDED']: {\n\t\t\teffect: async (coeffects) => {\n\t\t\t\tconst {action, dispatch} = coeffects;\n\n\t\t\t\t// Use request URL to get the file name to prevent\n\t\t\t\t// updated props causing incorrect cache key\n\t\t\t\tconst requestUrl = action.meta.request.updatedUrl;\n\t\t\t\tconst fileName = requestUrl.replace(NOW_ICON_ANIMATED_ASSETS_PATH, '');\n\t\t\t\tconst data = action.payload;\n\t\t\t\tconst key = getCacheKey(fileName);\n\n\t\t\t\tif (!data) return;\n\n\t\t\t\ttry {\n\t\t\t\t\tlocalStorage.setItem(key, JSON.stringify(data));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// Noop\n\t\t\t\t}\n\n\t\t\t\tdispatch('PRIVATE#CREATE_ICON_ANIMATION', data);\n\t\t\t},\n\t\t},\n\t\t['PRIVATE#ANIMATION_FETCH_FAILED']: {\n\t\t\teffect: () => {\n\t\t\t\treturn;\n\t\t\t},\n\t\t},\n\t\t['PRIVATE#CREATE_ICON_ANIMATION']: {\n\t\t\teffect: (coeffects) => {\n\t\t\t\tconst {action, host, properties, updateState, dispatch, state} =\n\t\t\t\t\tcoeffects;\n\n\t\t\t\tconst data = action.payload;\n\t\t\t\tconst {configAria, icon} = properties;\n\t\t\t\tconst getCanvas = host.shadowRoot.querySelector('.now-icon-animated');\n\t\t\t\tconst animation = lottie.loadAnimation({\n\t\t\t\t\tcontainer: getCanvas,\n\t\t\t\t\trenderer: 'svg',\n\t\t\t\t\tanimationData: data,\n\t\t\t\t\tautoplay: false,\n\t\t\t\t\tloop: false,\n\t\t\t\t});\n\n\t\t\t\tconst handleAnimationLoad = () => {\n\t\t\t\t\tconst svg = host.shadowRoot.querySelector('svg');\n\n\t\t\t\t\t//Inject aria attributes\n\t\t\t\t\tconst configAriaToUse = {\n\t\t\t\t\t\t...filterAriaAttributes(configAria, 'icon'),\n\t\t\t\t\t};\n\n\t\t\t\t\tif (svg) injectAria(svg, configAriaToUse);\n\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tpath: 'animation',\n\t\t\t\t\t\tvalue: animation,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: true,\n\t\t\t\t\t});\n\n\t\t\t\t\tdispatch('NOW_ICON_ANIMATED#CONTENT_VISIBLE', {\n\t\t\t\t\t\tanimation,\n\t\t\t\t\t\ticon,\n\t\t\t\t\t\treducedMotion: state.behaviors['reduce-motion'],\n\t\t\t\t\t});\n\t\t\t\t};\n\n\t\t\t\tanimation.addEventListener('DOMLoaded', handleAnimationLoad, {\n\t\t\t\t\tonce: true,\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the lottie animation is rendered on the page.\n\t\t * @uib.label Animated icon content visible\n\t\t * @uib.description Dispatched when the lottie animation is rendered on the page. The payload will include animation, icon name, and if the user prefers reduced motion.\n\t\t * @type {{object}}\n\t\t * Each event will return a reference to the lottie animation instance and the name of icon, allowing users to interact with the lottie API directly. The icon property is included if the user needs to distinguish in the use case where a single event handler is shared.\n\t\t * `['NOW_ICON_ANIMATED#CONTENT_VISIBLE']:({action:{payload}}) => {\n\t\t * \t\tconst {animation} = payload;\n\t\t * \t\tanimation.play();\n\t\t * }`\n\t\t * See [Lottie Usage for animation instance](https://airbnb.io/projects/lottie-web/).\n\t\t *\n\t\t * The payload also contains a boolean value for reduced motion, which can be used to determine if the user prefers reduced motion.\n\t\t * `['NOW_ICON_ANIMATED#CONTENT_VISIBLE']:({action:{payload}}) => {\n\t\t * \t\tconst {animation, reducedMotion} = payload;\n\t\t * \t\tif (!reducedMotion) {\n\t\t * \t\t\tanimation.play();\n\t\t * \t\t}\n\t\t * }`\n\t\t */\n\t\t'NOW_ICON_ANIMATED#CONTENT_VISIBLE': {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'object'},\n\t\t},\n\t},\n});\n","import './now-icon';\nimport './now-icon-presence';\nimport './now-icon-animated';\nexport {default as localizePresence} from './utils/localize-presence';\nimport {getIconStringFromCamel} from './utils/decode-icon';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n\nexport const getIcon = async (nameAndSize) =>\n\tgetIconStringFromCamel(nameAndSize);\n\n// return\nexport const iconSet = new Proxy(\n\t{},\n\t{\n\t\tget() {\n\t\t\t/* eslint-disable-next-line no-console */\n\t\t\tconsole.warn(\n\t\t\t\t'iconSet has been deprecated. Please import async getIcon instead.',\n\t\t\t);\n\t\t\treturn '';\n\t\t},\n\t},\n);\n","export default new Map();\n","import TimeoutStore from './store';\n\n// TODO-SEISMIC-HACK: Remove if we can switch to a scheduled/cancellable action\n// instead of implementing our own approach\n// This scheduling is necessary because changing the target of the tooltip\n// breaks its internal timing mechanism. This is necessary for WCAG which\n// is rigid in its allowable timing\nconst TOOLTIP_DELAY = 300;\n\nconst schedule = (key, fn, ms = TOOLTIP_DELAY) => {\n\twindow.clearTimeout(TimeoutStore.get(key));\n\tconst newTimeout = window.setTimeout(fn, ms);\n\tTimeoutStore.set(key, newTimeout);\n};\n\nconst unschedule = (key) => {\n\tif (TimeoutStore.has(key)) {\n\t\twindow.clearTimeout(TimeoutStore.get(key));\n\t}\n};\n\n/*\n  This action handler should be used in the component managing the tooltip\n  It allows for keyboard esc functionality and generally hiding the tooltip\n*/\nconst createTooltipActionHandler = (hideTooltipCB) => {\n\treturn {\n\t\t'NOW_TOOLTIP#OPENED_SET': ({action, properties, updateState}) => {\n\t\t\tconst {value, target} = action.payload;\n\t\t\tconst componentId = properties.nowId;\n\n\t\t\tif (target === 'content' && value) {\n\t\t\t\tunschedule(componentId);\n\t\t\t}\n\n\t\t\tif ((target === 'content' || target === 'keyboard') && !value) {\n\t\t\t\tschedule(componentId, hideTooltipCB.bind(null, updateState));\n\t\t\t}\n\t\t},\n\t};\n};\n\nexport {\n\tTOOLTIP_DELAY,\n\tTimeoutStore,\n\tschedule,\n\tunschedule,\n\tcreateTooltipActionHandler,\n};\n","export const TOOLTIP_ID = 'behavior-tooltip';\nexport const BEHAVIOR_NAME = 'tooltip';\nexport const TOOLTIP_ADD_TARGET = 'BEHAVIOR_TOOLTIP#ADD_TARGET';\nexport const TOOLTIP_REMOVE_TARGET = 'BEHAVIOR_TOOLTIP#REMOVE_TARGET';\nexport const TOOLTIP_SHOW = 'BEHAVIOR_TOOLTIP#SHOW';\nexport const TOOLTIP_HIDE = 'BEHAVIOR_TOOLTIP#HIDE';\n","/**\n * This deep import is the result of drivers sharing the exports of this file.\n * Removing the deep import will cause the entire tooltip component\n * to be imported in drivers which will fail seismic driver generation.\n *\n * TL;DR removing this deep import will cause downstream failures\n * in driver generation.\n */\nimport {schedule, unschedule} from '@servicenow/now-tooltip/src/scheduler';\nimport {hideTooltip} from './scheduler';\nimport {TOOLTIP_ID} from './constants';\n\n/**\n * Cancels hiding the tooltip if tooltip\n * is opened when triggered.\n * @param {Event}\n */\nconst handleMouseEnter = ({target}) => {\n\tif (!target.opened) return;\n\tunschedule(target.nowId);\n};\n\n/**\n * Schedules hiding the tooltip if tooltip\n * is opened when triggered.\n * @param {Event}\n */\nconst handleMouseLeave = ({target}) => {\n\tif (!target.opened) return;\n\tschedule(target.nowId, () => hideTooltip(target));\n};\n\n/**\n * Returns a singleton tooltip in a shadow root if it exists, and null otherwise.\n * @param {ShadowRoot} root\n */\nexport function getExistingTooltip(root) {\n\treturn root.querySelector(`#${TOOLTIP_ID}`);\n}\n\n/**\n * Creates or returns a singleton tooltip in a shadow root.\n * @param {ShadowRoot} root\n */\nexport function getTooltip(root) {\n\tlet tooltip = getExistingTooltip(root);\n\n\tif (!tooltip) {\n\t\ttooltip = document.createElement('now-tooltip');\n\t\ttooltip.id = TOOLTIP_ID;\n\t\ttooltip.addEventListener('mouseenter', handleMouseEnter);\n\t\ttooltip.addEventListener('mouseleave', handleMouseLeave);\n\t\troot.appendChild(tooltip);\n\t}\n\n\treturn tooltip;\n}\n\n/**\n * Get the tooltip offset from the target element.\n * @param {HTMLElement} target\n */\nexport function getTooltipOffset(target) {\n\tconst defaultOffset = 8;\n\tconst offset = target.dataset.tooltipoffset\n\t\t? target.dataset.tooltipoffset.split(',')\n\t\t: [];\n\tif (offset.length === 1) {\n\t\tconst offsetValue = Number(offset[0]);\n\t\tif (offsetValue >= 0) return offsetValue;\n\t}\n\treturn defaultOffset;\n}\n","/**\n * This deep import is the result of drivers sharing the exports of this file.\n * Removing the deep import will cause the entire tooltip component\n * to be imported in drivers which will fail seismic driver generation.\n *\n * TL;DR removing this deep import will cause downstream failures\n * in driver generation.\n */\nimport {schedule} from '@servicenow/now-tooltip/src/scheduler';\nimport {getShadowRootHost} from '@servicenow/library-enhanced-utils';\nimport {TOOLTIP_ID} from './constants';\nimport {getTooltip, getTooltipOffset} from './get-tooltip';\n\nlet shouldHideTooltip = true;\n\n/**\n * Unsets properties on the tooltip.\n * @param {HTMLElement} tooltip\n */\nconst hideTooltip = (tooltip) => {\n\tif (shouldHideTooltip) {\n\t\ttooltip.opened = false;\n\t\ttooltip.content = '';\n\t\ttooltip.targetRef = null;\n\t}\n};\n\n/**\n * Sets properties on the tooltip\n * @param {HTMLElement} tooltip\n */\nconst showTooltip = (tooltip, target) => {\n\tconst position = target.dataset.tooltipposition\n\t\t? target.dataset.tooltipposition.split(',')\n\t\t: [];\n\tconst content = target.dataset.tooltip;\n\tif (position.length) {\n\t\ttooltip.position = position;\n\t}\n\ttooltip.offset = getTooltipOffset(target);\n\ttooltip.opened = true;\n\ttooltip.content = content;\n\ttooltip.targetRef = target;\n};\n\n/**\n * Schedules the behavior's tooltip to open.\n * @param {Event} event\n */\nconst scheduleTooltipOpen = (event, delay) => {\n\tconst target = event.currentTarget;\n\tconst content = target.dataset.tooltip;\n\tconst ariadescribedby = target.dataset.ariadescribedby;\n\n\tif (content) {\n\t\tconst tooltip = getTooltip(getShadowRootHost(target).shadowRoot);\n\n\t\tif (ariadescribedby !== content) {\n\t\t\ttarget.setAttribute('aria-describedby', TOOLTIP_ID);\n\t\t}\n\n\t\tif (delay === 0) {\n\t\t\tshowTooltip(tooltip, target);\n\t\t} else {\n\t\t\tschedule(tooltip.nowId, () => showTooltip(tooltip, target), delay);\n\t\t}\n\t\tconst tooltipEvent = new CustomEvent('scheduleTooltip', {\n\t\t\tdetail: {\n\t\t\t\topened: true,\n\t\t\t},\n\t\t});\n\n\t\tconst host = getShadowRootHost(target);\n\t\tif (host) {\n\t\t\thost.dispatchEvent(tooltipEvent);\n\t\t}\n\t}\n};\n\n/**\n * Schedules the behavior's tooltip to close.\n * @param {Event} event\n */\nconst scheduleTooltipClose = (event, delay) => {\n\tconst target = event.currentTarget;\n\tif (!target.dataset.tooltip) return;\n\n\tconst host = getShadowRootHost(target);\n\n\tif (!host) return;\n\n\tconst shadowRoot = host.shadowRoot;\n\tconst tooltip = getTooltip(shadowRoot);\n\ttarget.removeAttribute('aria-describedby');\n\tconst hoistedTooltip = document.querySelector('#behavior-tooltip');\n\tif (\n\t\thoistedTooltip &&\n\t\thoistedTooltip.getAttribute('target-for') ===\n\t\t\t`now-tooltip[component-id=\"${tooltip.nowId}\"]`\n\t) {\n\t\tconst tooltipSpan = hoistedTooltip.shadowRoot.querySelector('.now-tooltip');\n\t\ttooltipSpan.addEventListener('mouseenter', () => {\n\t\t\tshouldHideTooltip = false;\n\t\t});\n\t\ttooltipSpan.addEventListener('mouseleave', () => {\n\t\t\tshouldHideTooltip = true;\n\t\t});\n\t}\n\tif (delay === 0) {\n\t\thideTooltip(tooltip);\n\t} else {\n\t\tschedule(tooltip.nowId, () => hideTooltip(tooltip), delay);\n\t}\n\tconst tooltipEvent = new CustomEvent('scheduleTooltip', {\n\t\tdetail: {\n\t\t\topened: false,\n\t\t},\n\t});\n\thost.dispatchEvent(tooltipEvent);\n};\n\nexport {scheduleTooltipOpen, scheduleTooltipClose, hideTooltip};\n","import {scheduleTooltipOpen, scheduleTooltipClose} from './scheduler.js';\nimport {getExistingTooltip, getTooltipOffset} from '../utils/get-tooltip';\nimport {getShadowRootHost} from '@servicenow/library-enhanced-utils';\n\nconst EventTargetMap = new WeakMap();\n\n/**\n * Adds target to registration map.\n * @param {HTMLElement} target\n */\nfunction targetRegistered(target) {\n\treturn EventTargetMap.has(target);\n}\n\n/**\n * Destroys trigger element. All events are removed.\n * @param {HTMLElement} target\n */\nfunction unregisterTarget(target) {\n\tEventTargetMap.delete(target);\n\ttarget.removeEventListener('mouseenter', scheduleTooltipOpen, true);\n\ttarget.removeEventListener('focusin', scheduleTooltipOpen, true);\n\ttarget.removeEventListener('mouseleave', scheduleTooltipClose, true);\n\ttarget.removeEventListener('focusout', scheduleTooltipClose, true);\n}\n\n/**\n * Used as a callback for a Mutation Observer instance. Whenever the observer reports specific\n * DOM mutations it is set to watch for on a target node, update the tooltip element's data\n * correspondingly.\n * @param {MutationRecord} records\n * @returns\n */\nconst updateTooltipOnTargetAttributeChange = (records) => {\n\tfor (const record of records) {\n\t\tconst target = getShadowRootHost(record.target);\n\t\tif (!target) {\n\t\t\treturn;\n\t\t}\n\t\tconst tooltip = getExistingTooltip(target.shadowRoot);\n\t\t// If no tooltip exists, there is no tooltip data to update\n\t\tif (!tooltip) {\n\t\t\treturn;\n\t\t}\n\t\tif (record.attributeName === 'data-tooltip') {\n\t\t\ttooltip.content = record.target.dataset.tooltip;\n\t\t}\n\n\t\tif (record.attributeName === 'data-tooltipposition') {\n\t\t\tconst position = record.target.dataset.tooltipposition.split(',');\n\t\t\tif (position.length) {\n\t\t\t\ttooltip.position = position;\n\t\t\t}\n\t\t}\n\t\tif (record.attributeName === 'data-tooltipoffset') {\n\t\t\ttooltip.offset = getTooltipOffset(record.target);\n\t\t}\n\t}\n};\n\n// Creates a new MutationObserver instance so that we can track changes to a target's DOM,\n// and consequently update the tooltip content that is dependent on these changes\nconst observer = new MutationObserver(updateTooltipOnTargetAttributeChange);\n\n/**\n * Creates a new tooltip trigger element and appends it.\n * Attaches tooltip show/hide events to the trigger and content.\n * If a trigger already exists, nothing happens.\n * @param {HTMLElement} target\n */\nfunction registerTarget(target) {\n\tEventTargetMap.set(target, true);\n\ttarget.addEventListener('mouseenter', scheduleTooltipOpen, true);\n\ttarget.addEventListener('focusin', scheduleTooltipOpen, true);\n\ttarget.addEventListener('mouseleave', scheduleTooltipClose, true);\n\ttarget.addEventListener('focusout', scheduleTooltipClose, true);\n\n\t// Listens for changes filtered by specific attributes on the target element\n\tobserver.observe(target, {\n\t\tattributes: true,\n\t\tattributeFilter: [\n\t\t\t'data-tooltip',\n\t\t\t'data-tooltipposition',\n\t\t\t'data-tooltipoffset',\n\t\t],\n\t});\n}\n\nexport {targetRegistered, unregisterTarget, registerTarget};\n","import {\n\tregisterTarget,\n\tunregisterTarget,\n\ttargetRegistered,\n\tscheduleTooltipOpen,\n\tscheduleTooltipClose,\n\tBEHAVIOR_NAME,\n\tTOOLTIP_ADD_TARGET,\n\tTOOLTIP_REMOVE_TARGET,\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from './utils';\n\nexport default {\n\tname: BEHAVIOR_NAME,\n\tactionHandlers: {\n\t\t[TOOLTIP_ADD_TARGET]: {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({action: {payload}}) => {\n\t\t\t\tconst {target} = payload;\n\t\t\t\tif (!target || targetRegistered(target)) return;\n\t\t\t\tregisterTarget(target);\n\t\t\t},\n\t\t},\n\t\t[TOOLTIP_REMOVE_TARGET]: {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({action: {payload}}) => {\n\t\t\t\tconst {target} = payload;\n\t\t\t\tif (!target || !targetRegistered(target)) return;\n\t\t\t\tunregisterTarget(target);\n\t\t\t},\n\t\t},\n\t\t[TOOLTIP_SHOW]: {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({action: {payload}}) => {\n\t\t\t\tconst {target, delay} = payload;\n\t\t\t\tif (!target) return;\n\t\t\t\tscheduleTooltipOpen({currentTarget: target}, delay);\n\t\t\t},\n\t\t},\n\t\t[TOOLTIP_HIDE]: {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({action: {payload}}) => {\n\t\t\t\tconst {target, delay} = payload;\n\t\t\t\tif (!target) return;\n\t\t\t\tscheduleTooltipClose({currentTarget: target}, delay);\n\t\t\t},\n\t\t},\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['scheduleTooltip'],\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({\n\t\t\t\taction: {\n\t\t\t\t\tpayload: {\n\t\t\t\t\t\tevent: {\n\t\t\t\t\t\t\tdetail: {opened},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tdispatch,\n\t\t\t}) => {\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_TOOLTIP#OPENED_SET',\n\t\t\t\t\t\tpayload: {value: opened, target: 'target'},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t],\n};\n","const TOOLTIP_TAG = 'NOW_TOOLTIP';\n\n/**\n * Attaches a listener to the container, then fires a fake event from the given element\n * to identify all ancestor elements in the element's DOM tree. More efficient than\n * climbing the tree recursively.\n * @param {string} id - unique ID\n * @param {HTMLElement} element - the element to find ancestors of\n * @param {HTMLElement} container - the topmost element to resolve to\n */\nexport const findAncestors = (id, element, container) =>\n\tnew Promise((resolve) => {\n\t\tconst eventName = `findAncestors-${id}`;\n\t\tconst findListener = async (e) => {\n\t\t\tcontainer.removeEventListener(eventName, findListener);\n\t\t\tconst path = e.composedPath();\n\t\t\tconst length = path.length;\n\t\t\tconst ancestors = new Set(path);\n\n\t\t\tfor (let idx = 0; idx < length; idx++) {\n\t\t\t\tconst node = path[idx];\n\t\t\t\tif (\n\t\t\t\t\tnode !== element &&\n\t\t\t\t\tnode.nodeType === Node.ELEMENT_NODE &&\n\t\t\t\t\tnode.tagName === TOOLTIP_TAG\n\t\t\t\t) {\n\t\t\t\t\tconst parentAncestors = await findAncestors(\n\t\t\t\t\t\tnode.nowId,\n\t\t\t\t\t\tnode.nowPopover,\n\t\t\t\t\t\tcontainer,\n\t\t\t\t\t);\n\n\t\t\t\t\tparentAncestors.forEach((ancestor) => ancestors.add(ancestor));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresolve(ancestors);\n\t\t};\n\n\t\tcontainer.addEventListener(eventName, findListener);\n\t\tconst event = new CustomEvent(eventName, {\n\t\t\tbubbles: true,\n\t\t\tcomposed: true,\n\t\t\tcancelable: false,\n\t\t});\n\t\telement.dispatchEvent(event);\n\t});\n","import {findAncestors} from './dom';\n\n/**\n * Attaches scroll listeners to all ancestor elements of the given host element\n * that have shadow roots (because scroll events do not automatically bubble\n * through shadow boundaries). When any of the scroll listeners are fired,\n * trigger the callback function.\n * @param {HTMLElement} host\n * @param {string} componentId\n * @param {function} callback\n */\nexport default function createScrollListener() {\n\tconst attached = new Map();\n\n\treturn {\n\t\tasync add(id, host, container, callback) {\n\t\t\tconst ancestors = await findAncestors(id, host, container);\n\t\t\tconst targets = [];\n\t\t\tancestors.forEach((el) => el.shadowRoot && targets.push(el));\n\n\t\t\tconst listener = (e) => {\n\t\t\t\tconst [source] = e.composedPath();\n\t\t\t\tif (ancestors.has(source)) {\n\t\t\t\t\tcallback(e);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor (const target of targets) {\n\t\t\t\ttarget.shadowRoot.addEventListener('scroll', listener, true);\n\t\t\t}\n\n\t\t\tattached.set(id, {targets, listener});\n\t\t},\n\t\tremove(id) {\n\t\t\tconst value = attached.get(id);\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {targets, listener} = value;\n\t\t\tfor (const target of targets) {\n\t\t\t\ttarget.shadowRoot.removeEventListener('scroll', listener, true);\n\t\t\t}\n\n\t\t\tattached.delete(id);\n\t\t},\n\t};\n}\n","import {debounce} from 'lodash';\nimport {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {\n\tlayerEvents,\n\tfit,\n\tgetAnimationTimingAndDuration,\n} from '@servicenow/library-enhanced-utils';\nimport {actionTypes} from '@servicenow/ui-core';\nimport styles from './_now-tooltip.scss';\nimport {schedule} from './scheduler';\nimport createScrollListener from './utils/scroll-listener';\nimport reduceMotionBehavior from '@servicenow/behavior-reduce-motion';\n\nconst {\n\tCOMPONENT_BOOTSTRAPPED,\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_RENDERED,\n\tCOMPONENT_PROPERTY_CHANGED,\n} = actionTypes;\nconst {getBestFitInfo, resolveFitProperties} = fit;\nconst listenerMap = new WeakMap();\nconst hoistMap = new WeakMap();\nconst FIT_CONSTRAIN = {minHeight: 24, maxWidth: 304};\nconst SEISMIC_HOIST_TAG = 'SEISMIC-HOIST';\nconst debounceDispatch = debounce((fn) => fn(), 250);\n\nconst enterAnim = (state) => {\n\tconst {position} = state.properties;\n\tconst host = document.querySelector(\n\t\t`seismic-hoist[now-id=\"${state.properties.nowId}\"]`,\n\t);\n\tconst element = host?.shadowRoot.querySelector('.fit-content');\n\tconst {duration, easing} = getAnimationTimingAndDuration(element);\n\tconst animations = element.getAnimations();\n\tif (animations.length) {\n\t\t// Don't run the animation if already running\n\t\treturn;\n\t}\n\tconst slideAmount = '10px';\n\tlet startCoords = `0, ${slideAmount}`;\n\n\tconst targetOrigin = position[0].split(' ')[0];\n\tconst anchor = targetOrigin.split('-')[0];\n\tconst isStart = targetOrigin.split('-')[1] === 'start';\n\n\tif (anchor === 'bottom') {\n\t\tstartCoords = `0, -${slideAmount}`;\n\t}\n\n\tif (anchor === 'center') {\n\t\tif (isStart) {\n\t\t\tstartCoords = `${slideAmount}, 0`;\n\t\t} else {\n\t\t\tstartCoords = `-${slideAmount}, 0`;\n\t\t}\n\t}\n\tconst anim = element?.animate(\n\t\t[\n\t\t\t{\n\t\t\t\tvisibility: 'visible',\n\t\t\t\topacity: 0,\n\t\t\t\ttransform: `translate(${startCoords})`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvisibility: 'visible',\n\t\t\t\topacity: 1,\n\t\t\t\ttransform: 'translate(0, 0)',\n\t\t\t},\n\t\t],\n\t\t{\n\t\t\tduration,\n\t\t\teasing,\n\t\t\tfill: 'forwards',\n\t\t},\n\t);\n\n\treturn anim;\n};\n\nconst scrollListener = createScrollListener();\n\nconst fitTooltip = ({host, properties, state, fromMutation}) => {\n\tconst {\n\t\ttargetRef: target,\n\t\tcontainer,\n\t\tposition,\n\t\toffset,\n\t\topened,\n\t\tcontent: label,\n\t\tdir,\n\t} = properties;\n\tconst fitContentArea = host.shadowRoot.querySelector('.fit-content-area');\n\tconst fitContent = host.shadowRoot.querySelector('.fit-content');\n\tconst slottedElements = fitContent?.querySelector('slot').assignedNodes();\n\tconst haveTooltipContent = Boolean(label || slottedElements.length);\n\tconst tooltipVisible = Boolean(\n\t\topened && target && fitContent && haveTooltipContent,\n\t);\n\n\tif (tooltipVisible) {\n\t\tfitContent.querySelector('.now-line-height-crop').textContent = label;\n\t\tfitContent.removeAttribute('style');\n\n\t\tconst fitProps = {\n\t\t\t...resolveFitProperties({\n\t\t\t\tdir,\n\t\t\t\tpositions: position,\n\t\t\t\tconstrain: FIT_CONSTRAIN,\n\t\t\t\thideTail: true,\n\t\t\t\toffset: Array.isArray(offset)\n\t\t\t\t\t? offset\n\t\t\t\t\t: [0, 0, offset, offset, offset, offset],\n\t\t\t}),\n\t\t\ttarget,\n\t\t\tcontainer,\n\t\t\tcontent: fitContent,\n\t\t\tcontentArea: fitContentArea,\n\t\t};\n\n\t\tconst fitStyle = getBestFitInfo({...fitProps}).style;\n\n\t\tObject.assign(fitContentArea.style, fitStyle.contentArea);\n\t\tObject.assign(fitContent.style, fitStyle.content, {\n\t\t\tvisibility: 'visible',\n\t\t\theight: null,\n\t\t});\n\t\tconst shouldAnimate = !state.behaviors['reduce-motion'] && !fromMutation;\n\t\tif (shouldAnimate) {\n\t\t\tenterAnim(state);\n\t\t}\n\t} else if (fitContent) {\n\t\tfitContentArea.removeAttribute('style');\n\t\tfitContent.removeAttribute('style');\n\t}\n};\n\n/**\n * Refitting when the default slot changes ensures\n * the tooltip is positioned correctly on the target.\n *\n * This only matters if the tooltip is opened when the\n * slot changes. It's rare, but does happen.\n */\nfunction refitOnSlotChange(records) {\n\tfor (const record of records) {\n\t\tconst {target} = record;\n\t\tconst maybeHoistHost = target?.parentNode?.closest(SEISMIC_HOIST_TAG);\n\t\tif (hoistMap.has(maybeHoistHost)) {\n\t\t\tfitTooltip({\n\t\t\t\thost: maybeHoistHost,\n\t\t\t\tproperties: maybeHoistHost.sourceElement.getProperties(),\n\t\t\t});\n\t\t}\n\t}\n}\n\nconst observer = new MutationObserver(refitOnSlotChange);\nlet targetObserver;\n\nconst handleKeydown = (dispatch, event) => {\n\tif (event.key === 'Escape') {\n\t\tevent.stopPropagation();\n\t\tdispatch(() => {\n\t\t\treturn {\n\t\t\t\ttype: 'NOW_TOOLTIP#OPENED_SET',\n\t\t\t\tpayload: {value: false, target: 'keyboard'},\n\t\t\t};\n\t\t});\n\t}\n};\n\nconst addTargetListeners = (\n\ttargetRef,\n\tcomponentId,\n\tdelay,\n\tdispatch,\n\thost,\n\tcontainer,\n\tupdateState,\n) => {\n\tif (!targetRef || listenerMap.has(targetRef)) return;\n\tconst showTooltip = () => {\n\t\tschedule(\n\t\t\tcomponentId,\n\t\t\t() => {\n\t\t\t\tupdateState({\n\t\t\t\t\tisTooltipVisible: true,\n\t\t\t\t});\n\t\t\t\tscrollListener.add(componentId, host, container, () => {\n\t\t\t\t\tdebounceDispatch(() => {\n\t\t\t\t\t\tdispatch('PRIVATE#SCROLL_END');\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_TOOLTIP#OPENED_SET',\n\t\t\t\t\t\tpayload: {value: true, target: 'target'},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t},\n\t\t\tdelay.show || delay,\n\t\t);\n\t};\n\n\tconst hideTooltip = () => {\n\t\tschedule(\n\t\t\tcomponentId,\n\t\t\t() => {\n\t\t\t\tupdateState({\n\t\t\t\t\tisTooltipVisible: false,\n\t\t\t\t});\n\t\t\t\tscrollListener.remove(componentId);\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_TOOLTIP#OPENED_SET',\n\t\t\t\t\t\tpayload: {value: false, target: 'target'},\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t},\n\t\t\tdelay.hide || delay,\n\t\t);\n\t};\n\ttargetRef.addEventListener('mouseover', showTooltip, false);\n\ttargetRef.addEventListener('mouseout', hideTooltip, false);\n\ttargetRef.addEventListener('focus', showTooltip, false);\n\ttargetRef.addEventListener('blur', hideTooltip, false);\n\n\tlistenerMap.set(targetRef, {showTooltip, hideTooltip});\n};\n\nconst removeTargetListeners = (targetRef, id) => {\n\tif (!targetRef || !listenerMap.has(targetRef)) return;\n\tconst {showTooltip, hideTooltip} = listenerMap.get(targetRef);\n\ttargetRef.removeEventListener('mouseover', showTooltip, false);\n\ttargetRef.removeEventListener('mouseout', hideTooltip, false);\n\ttargetRef.removeEventListener('focus', showTooltip, false);\n\ttargetRef.removeEventListener('blur', hideTooltip, false);\n\n\tlistenerMap.delete(targetRef);\n\n\tscrollListener.remove(id);\n};\n\nconst view = () => {\n\treturn (\n\t\t<span className=\"fit-content-area\">\n\t\t\t<span className=\"fit-content\">\n\t\t\t\t<span className=\"now-tooltip\" aria-hidden=\"true\">\n\t\t\t\t\t{/* state.properties.content is added here */}\n\t\t\t\t\t{/*\n\t\t\t\t\t\tNOTE: Snabbdom throws an error when the slotted\n\t\t\t\t\t\telement type (tag) changes while tooltip is opened\n\t\t\t\t\t\tand hoisted.\n\n\t\t\t\t\t\tIf the type of node (e.g., div) is changed between\n\t\t\t\t\t\trender states, snabbdom won't be able to diff\n\t\t\t\t\t\tthe new node because it's been hoisted out\n\t\t\t\t\t\tof the current DOM context, and snabbdom\n\t\t\t\t\t\tdepends on the parent node to know where to insert\n\t\t\t\t\t\tthe new node.\n\n\t\t\t\t\t\tThe reason this bug doesn't happen when the node\n\t\t\t\t\t\tremains the same is because snabbdom works off of\n\t\t\t\t\t\tmemoizing each DOM node. So as long as the node\n\t\t\t\t\t\tdoesn't change tag type, Snabbdom retains\n\t\t\t\t\t\tthe reference and continues to update it.\n\t\t\t\t\t*/}\n\t\t\t\t\t<slot>\n\t\t\t\t\t\t<span className=\"now-line-height-crop\" />\n\t\t\t\t\t</slot>\n\t\t\t\t</span>\n\t\t\t</span>\n\t\t</span>\n\t);\n};\n\n/**\n * Descriptive text that appears when the user hovers over or tabs to an element.\n *\n * ```jsx\n * import {createCustomElement} from '@servicenow/ui-core';\n * import snabbdom, {Fragment} from '@servicenow/ui-renderer-snabbdom';\n * import '@servicenow/now-tooltip';\n *\n * const view = (state, {updateState}) => {\n *   const setTargetRef = (ref) => setTimeout(() => updateState({targetRef: ref}));\n *   return (\n *     <Fragment>\n *       <span\n *         hook-insert={({elm}) => setTargetRef(elm)}\n *         hook-destroy={() => setTargetRef(null)}\n *         aria-describedby=\"tooltip1\">\n *           Hover over me for a tooltip\n *       </span>\n *       <now-tooltip\n *         id=\"tooltip1\"\n *         target-ref={state.targetRef}\n *         content=\"This text will appear in the tooltip\"\n *         delay={500}\n *       />\n *     </Fragment>\n *   );\n * };\n *\n * createCustomElement('sn-text-with-tooltip', {\n *   renderer: {\n *     type: snabbdom,\n *     view\n *   }\n * });\n * ```\n *\n * Alternatively, you can slot in content.\n *\n * ```jsx\n * <now-tooltip\n *    id=\"tooltip2\"\n *    target-ref={state.targetRef}>\n *    I am <strong>rich content</strong>\n * </now-tooltip>\n * ```\n *\n * @seismicElement now-tooltip\n * @summary Descriptive text to inform the user of the purpose of or context for an element.\n */\ncreateEnhancedElement('now-tooltip', {\n\tproperties: {\n\t\t/**\n\t\t * The target HTML element that the tooltip appears over when\n\t\t * the user hovers over or tabs to it.\n\t\t * @type {HTMLElement}\n\t\t */\n\t\ttargetRef: {},\n\t\t/**\n\t\t * Text that displays within the tooltip. If you want to display complex content,\n\t\t * use the default slot instead. This property is ignored when the slot is used.\n\t\t * @type {string}\n\t\t */\n\t\tcontent: {schema: {type: 'string'}},\n\t\t/**\n\t\t * True when the user hovers over or tabs to the tooltip's target element.\n\t\t * Use `manage-opened` to override the default behavior and handle the\n\t\t * `NOW_TOOLTIP#OPENED_SET` action manually.\n\t\t * @type {boolean}\n\t\t */\n\t\topened: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Time delay in milliseconds after the user interacts with the\n\t\t * target element before the the tooltip appears or\n\t\t * disappears. Can be specified as an object with `show` and `hide`\n\t\t * keys, or as a simple number that applies to both.\n\t\t * @type {(number | {show: number, hide: number})}\n\t\t */\n\t\tdelay: {\n\t\t\tdefault: 300,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{type: 'number'},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {show: {type: 'number'}, hide: {type: 'number'}},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Element that the tooltip must fit within.\n\t\t *\n\t\t * @type {HTMLElement}\n\t\t */\n\t\tcontainer: {\n\t\t\tget default() {\n\t\t\t\treturn document.body;\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Array of possible positions to place the tooltip relative to its target element.\n\t\t * @type {Array<string>}\n\t\t */\n\t\tposition: {\n\t\t\tdefault: [\n\t\t\t\t'top-center bottom-center',\n\t\t\t\t'bottom-center top-center',\n\t\t\t\t'center-end center-start',\n\t\t\t\t'center-start center-end',\n\t\t\t\t'top-end top-start',\n\t\t\t\t'bottom-end bottom-start',\n\t\t\t\t'top-start top-end',\n\t\t\t\t'bottom-start bottom-end',\n\t\t\t],\n\t\t\tschema: {type: 'array', items: {type: 'string'}},\n\t\t},\n\t\t/**\n\t\t * Number of pixels to shift the tooltip from its target element.\n\t\t * @type {number | Array<number>}\n\t\t */\n\t\toffset: {\n\t\t\tdefault: 8,\n\t\t\tschema: {\n\t\t\t\toneOf: [{type: 'number'}, {type: 'array', items: {type: 'number'}}],\n\t\t\t},\n\t\t},\n\t\t/** @private */\n\t\tariaLabel: {\n\t\t\treflect: true,\n\t\t\tcomputed: ({properties: {content}}) => content,\n\t\t},\n\t\t/** @private */\n\t\tariaHidden: {\n\t\t\treflect: true,\n\t\t\tcomputed: ({properties}) => (properties.opened ? undefined : 'true'),\n\t\t},\n\t\t/** @private */\n\t\trole: {\n\t\t\treflect: true,\n\t\t\tdefault: 'tooltip',\n\t\t},\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['mouseover', 'mouseout'],\n\t\t\teffect: ({properties, dispatch, action}) => {\n\t\t\t\tconst {event} = action.meta;\n\t\t\t\tconst {nowId, delay} = properties;\n\t\t\t\tconst value = event.type === 'mouseover' ? true : false;\n\n\t\t\t\tschedule(\n\t\t\t\t\tnowId,\n\t\t\t\t\t() =>\n\t\t\t\t\t\tdispatch(() => {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\ttype: 'NOW_TOOLTIP#OPENED_SET',\n\t\t\t\t\t\t\t\tpayload: {value, target: 'content'},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}),\n\t\t\t\t\tdelay.show || delay,\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t[COMPONENT_BOOTSTRAPPED]: ({properties, updateState}) => {\n\t\t\tconst {opened} = properties;\n\t\t\tupdateState({\n\t\t\t\tisTooltipVisible: opened,\n\t\t\t});\n\t\t},\n\t\t[COMPONENT_CONNECTED]: ({\n\t\t\thost,\n\t\t\taction,\n\t\t\tproperties,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t}) => {\n\t\t\tconst {\n\t\t\t\tmeta: {id, hoistHost},\n\t\t\t} = action;\n\t\t\tconst {targetRef, delay, container} = properties;\n\t\t\tconst tooltipHost = hoistHost || host;\n\t\t\taddTargetListeners(\n\t\t\t\ttargetRef,\n\t\t\t\tid,\n\t\t\t\tdelay,\n\t\t\t\tdispatch,\n\t\t\t\ttooltipHost,\n\t\t\t\tcontainer,\n\t\t\t\tupdateState,\n\t\t\t);\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({properties, action}) => {\n\t\t\tconst {\n\t\t\t\tmeta: {id},\n\t\t\t} = action;\n\t\t\tremoveTargetListeners(properties.targetRef, id);\n\t\t\tlayerEvents.remove(properties.nowId);\n\t\t\ttargetObserver?.disconnect();\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]({host, properties, action}) {\n\t\t\tconst {name, value} = action.payload;\n\t\t\tconst tooltipHost = action.meta.hoistHost || host;\n\t\t\tif (name === 'opened' && !value) {\n\t\t\t\thoistMap.delete(tooltipHost);\n\t\t\t\tlayerEvents.remove(properties.nowId);\n\t\t\t\tlistenerMap.delete(tooltipHost);\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_RENDERED]: ({\n\t\t\tproperties,\n\t\t\thost,\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tupdateProperties,\n\t\t\tupdateState,\n\t\t\tstate,\n\t\t}) => {\n\t\t\tconst {\n\t\t\t\tpayload: {previousRenderProperties},\n\t\t\t\tmeta: {id, hoistHost},\n\t\t\t} = action;\n\t\t\tconst {\n\t\t\t\topened,\n\t\t\t\tcontent,\n\t\t\t\tcontainer,\n\t\t\t\tposition,\n\t\t\t\toffset,\n\t\t\t\ttargetRef,\n\t\t\t\tnowHoist,\n\t\t\t} = properties;\n\t\t\tconst tooltipHost = hoistHost || host;\n\n\t\t\tif (!nowHoist && opened) {\n\t\t\t\treturn updateProperties({nowHoist: true});\n\t\t\t} else if (nowHoist && !opened) {\n\t\t\t\treturn updateProperties({nowHoist: false});\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tcontent !== previousRenderProperties.content ||\n\t\t\t\tcontainer !== previousRenderProperties.container ||\n\t\t\t\tposition !== previousRenderProperties.position ||\n\t\t\t\toffset !== previousRenderProperties.offset ||\n\t\t\t\topened\n\t\t\t) {\n\t\t\t\tfitTooltip({properties, host: tooltipHost, state});\n\t\t\t}\n\n\t\t\tif (targetRef !== previousRenderProperties.targetRef) {\n\t\t\t\tconst {delay} = properties;\n\t\t\t\tremoveTargetListeners(previousRenderProperties.targetRef, id);\n\t\t\t\taddTargetListeners(\n\t\t\t\t\ttargetRef,\n\t\t\t\t\tid,\n\t\t\t\t\tdelay,\n\t\t\t\t\tdispatch,\n\t\t\t\t\ttooltipHost,\n\t\t\t\t\tcontainer,\n\t\t\t\t\tupdateState,\n\t\t\t\t);\n\t\t\t\tfitTooltip({properties, host: tooltipHost, state});\n\t\t\t}\n\n\t\t\tif (opened && !listenerMap.has(tooltipHost)) {\n\t\t\t\thoistMap.set(tooltipHost, true);\n\t\t\t\tobserver.observe(tooltipHost, {\n\t\t\t\t\tchildList: true,\n\t\t\t\t\tsubtree: true,\n\t\t\t\t\tcharacterData: true,\n\t\t\t\t});\n\t\t\t\tconst boundHandler = (event) => handleKeydown(dispatch, event);\n\t\t\t\tlayerEvents.add({id, events: ['keydown'], callback: boundHandler});\n\t\t\t\tlistenerMap.set(tooltipHost, boundHandler);\n\t\t\t}\n\n\t\t\tif (opened) {\n\t\t\t\ttargetObserver = new MutationObserver(() => {\n\t\t\t\t\tfitTooltip({\n\t\t\t\t\t\tproperties,\n\t\t\t\t\t\thost: tooltipHost,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tfromMutation: true,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\ttargetObserver.observe(targetRef, {\n\t\t\t\t\tattributes: true,\n\t\t\t\t\tattributeFilter: ['style', 'aria-valuenow'],\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t'PRIVATE#CHECK_FIT': {\n\t\t\tstopPropagation: true,\n\t\t\tmodifier: {\n\t\t\t\tname: 'throttle',\n\t\t\t\tlimit: 10,\n\t\t\t},\n\t\t\teffect: ({host, action, properties, state}) => {\n\t\t\t\tfitTooltip({properties, host: action.meta.hoistHost || host, state});\n\t\t\t},\n\t\t},\n\t\t'PRIVATE#SCROLL_END': {\n\t\t\teffect: ({host, state, properties, action}) => {\n\t\t\t\tif (state.isTooltipVisible) {\n\t\t\t\t\tfitTooltip({properties, host: action.meta.hoistHost || host});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\tinitialState: {\n\t\tisTooltipVisible: false,\n\t},\n\tview,\n\tstyles,\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the tooltip opens or closes.\n\t\t * Set the `manage-opened` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{value: boolean}}\n\t\t */\n\t\t'NOW_TOOLTIP#OPENED_SET': {},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Complex content to display inside the tooltip body.\n\t\t * When this slot is used, the `content` property is ignored.\n\t\t *\n\t\t * If the content is plain text,\n\t\t * use the `content` property instead.\n\t\t * @defaultSlot\n\t\t */\n\t\tdefaultSlot: {},\n\t},\n\tbehaviors: [reduceMotionBehavior],\n});\n","import './now-tooltip';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n\nexport {\n\tTOOLTIP_DELAY,\n\tTimeoutStore as timeoutMap,\n\tschedule,\n\tunschedule,\n\tcreateTooltipActionHandler,\n} from './scheduler';\n","import {findTabbableNodes} from '@servicenow/library-enhanced-utils';\n\n/**\n * Returns an object whose properties include relevant focusable elements.\n * @param {HTMLElement} host\n * @returns {{tabbableNodes: HTMLElement[], firstFocusableElement: HTMLElement, lastFocusableElement: HTMLElement}}\n */\nexport const getFocusableNodes = (host) => {\n\tconst tabbableNodes = findTabbableNodes(host);\n\tconst firstFocusableElement = tabbableNodes[0];\n\tconst lastFocusableElement = tabbableNodes[tabbableNodes.length - 1];\n\n\treturn {\n\t\ttabbableNodes,\n\t\tfirstFocusableElement,\n\t\tlastFocusableElement,\n\t};\n};\n","import {findTabbableNodes} from '@servicenow/library-enhanced-utils';\nimport {getFocusableNodes} from './get-focusable-nodes';\n\n/**\n * Synchronously focus the first node inside a host element.\n * @param {HTMLElement} host\n */\nexport const handleFocusFirstNode = (host) => {\n\tlet focusableNodes = findTabbableNodes(host);\n\n\t// Some components, like modeless dialog, don't have any built-in\n\t// nodes, so we shouldn't do anything if none are found.\n\tif (focusableNodes.length) {\n\t\treturn focusableNodes[0].focus();\n\t}\n};\n\nexport const handleFocusTrap = (event, host) => {\n\tconst path = event.composedPath();\n\tconst {firstFocusableElement, lastFocusableElement} = getFocusableNodes(host);\n\n\tif (path[0] !== firstFocusableElement && path[0] !== lastFocusableElement) {\n\t\treturn;\n\t}\n\n\tif (event.shiftKey) {\n\t\tif (path[0] === firstFocusableElement) {\n\t\t\tif (lastFocusableElement instanceof HTMLInputElement) {\n\t\t\t\tlastFocusableElement.select();\n\t\t\t} else {\n\t\t\t\tlastFocusableElement.focus();\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\tif (path[0] === lastFocusableElement) {\n\t\t\tif (firstFocusableElement instanceof HTMLInputElement) {\n\t\t\t\tfirstFocusableElement.select();\n\t\t\t} else {\n\t\t\t\tfirstFocusableElement.focus();\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n","import {handleFocusTrap} from './handle-focus';\n\n/**\n * Effect callback in a `keydown` event handler.\n *\n * Needs to be used in `eventHandlers`:\n *\n * ```js\n * createCustomElement('my-tag', {\n * \teventHandlers: [\n * \t\t{\n * \t\t\tevents: 'keydown',\n * \t\t\teffect: handleTabKeyDown\n * \t\t}\n * \t],\n * \t// ...rest of config\n * });\n * ```\n *\n * @param {Object} coeffects - Callback in a `keydown` event handler.\n */\nexport const handleTabKeydown = ({action, host, properties}) => {\n\tconst {\n\t\tpayload: {event, options},\n\t} = action;\n\n\tif (!options.trap || event.key !== 'Tab' || !properties.opened) return;\n\n\tconst didFocus = handleFocusTrap(event, host);\n\tif (didFocus) action.preventDefault();\n};\n","import isFunction from 'lodash/isFunction';\nimport {getActiveElement} from '@servicenow/library-enhanced-utils';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {handleFocusFirstNode} from './utils/handle-focus';\nimport {handleTabKeydown} from './utils/handle-tab-keydown';\n\nconst BEHAVIOR_NAME = 'focus';\nconst {\n\tCOMPONENT_TREE_RENDERED,\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_DISCONNECTED,\n} = actionTypes;\n\nconst handleOpened = (host, updateState) => {\n\tconst triggerEl = getActiveElement();\n\tupdateState({\n\t\toperation: 'set',\n\t\tpath: 'triggerEl',\n\t\tvalue: triggerEl,\n\t\tshouldRender: false,\n\t});\n\n\thandleFocusFirstNode(host);\n};\n\nconst handleClosed = (triggerEl) => {\n\tif (!triggerEl) return;\n\ttriggerEl.focus();\n};\n\n/**\n * This behavior replaces the native `.focus()` method for the web component's\n * host element in order to allow delegation of focus to internal nodes.\n * By default, `.focus()` will delegate the event to the component's first\n * focusable node.\n *\n * Optionally, you can pass an object to the `options` key for the behavior to\n * further configure focus. See the README for more details. The accepted keys\n * are `focus` and `trap`.\n *\n * After installation, import the behavior at the top of your component JS file\n * and register it in your component behaviors list:\n *\n * ```js\n * import focusBehavior from '@servicenow/behavior-focus';\n *\n * createCustomElement('sn-example', {\n *   // ...\n *   behaviors: [{\n *     behavior: focusBehavior,\n *     options: {\n *       focus: function(host, dispatch) {\n *         // do something when .focus() is called on this component\n *       },\n *       // optionally add focus trapping\n *       trap: true\n *     }\n *   }]\n * });\n * ```\n *\n * @seismicBehavior focusBehavior\n * @summary Manages focus delegation for a web component\n */\nexport default {\n\tname: BEHAVIOR_NAME,\n\teventHandlers: [{events: ['keydown'], effect: handleTabKeydown}],\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_TREE_READY]: ({action, dispatch, host}) => {\n\t\t\tconst {options} = action.payload;\n\n\t\t\thost.focus = (focusOptions = {}) => {\n\t\t\t\treturn isFunction(options.focus)\n\t\t\t\t\t? options.focus(host, dispatch, focusOptions)\n\t\t\t\t\t: handleFocusFirstNode(host);\n\t\t\t};\n\t\t},\n\t\t[COMPONENT_TREE_RENDERED]: ({\n\t\t\taction,\n\t\t\tproperties,\n\t\t\thost,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t}) => {\n\t\t\tconst {previousRenderProperties, options} = action.payload;\n\t\t\tif (!options.trap) return;\n\n\t\t\tconst {opened} = properties;\n\t\t\tif (opened !== previousRenderProperties.opened) {\n\t\t\t\treturn opened\n\t\t\t\t\t? handleOpened(host, updateState)\n\t\t\t\t\t: handleClosed(state.triggerEl);\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({action, state, properties: {opened}}) => {\n\t\t\tconst {options} = action.payload;\n\t\t\tif (options.trap && opened) {\n\t\t\t\thandleClosed(state.triggerEl);\n\t\t\t}\n\t\t},\n\t},\n};\n","import {declarativeOperations} from '@servicenow/ui-core';\nexport const animatedIconHoverBehavior = {\n\tname: 'animatedIconHover',\n\tinitialState: {\n\t\ticonAnimations: [],\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['mouseenter', 'mouseleave'],\n\t\t\teffect({action, state, properties}) {\n\t\t\t\tconst {animatedIcon, animatedIconStart, animatedIconEnd, disabled} =\n\t\t\t\t\tproperties;\n\t\t\t\tconst isLeaveEvent = action.payload.event.type === 'mouseleave';\n\t\t\t\tconst direction = isLeaveEvent ? -1 : 1;\n\t\t\t\tconst speed = isLeaveEvent ? 1.5 : 1;\n\t\t\t\tconst shouldAnimate = !state.behaviors['reduce-motion'];\n\n\t\t\t\tif (\n\t\t\t\t\t(animatedIcon || animatedIconStart || animatedIconEnd) &&\n\t\t\t\t\t!disabled &&\n\t\t\t\t\tshouldAnimate\n\t\t\t\t) {\n\t\t\t\t\tstate.behaviors.animatedIconHover.iconAnimations.forEach(\n\t\t\t\t\t\t(animation) => {\n\t\t\t\t\t\t\tif (animation) {\n\t\t\t\t\t\t\t\tanimation.setDirection(direction);\n\t\t\t\t\t\t\t\tanimation.setSpeed(speed);\n\t\t\t\t\t\t\t\tanimation.play();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t['NOW_ICON_ANIMATED#CONTENT_VISIBLE']: {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({action, updateState}) => {\n\t\t\t\tconst {animation} = action.payload;\n\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'behaviors.animatedIconHover.iconAnimations',\n\t\t\t\t\tvalue: animation,\n\t\t\t\t\toperation: declarativeOperations.PUSH,\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t},\n};\n","export const RIPPLE_PADDING = 0.3;\nexport const DEFAULT_RIPPLE_POSITION = '50%';\nexport const MAX_RIPPLES = 3;\n","import {RIPPLE_PADDING} from './constants';\n\nexport function eventCoordinates(event, elm) {\n\tconst {scrollX, scrollY} = window;\n\tconst {pageX, pageY} = event;\n\tconst {left, top} = elm.getBoundingClientRect();\n\tconst posX = scrollX + left;\n\tconst posY = scrollY + top;\n\n\treturn {x: pageX - posX, y: pageY - posY};\n}\n\nexport function rippleScale({height, width, left, top}) {\n\tconst maxDim = Math.max(height, width);\n\tconst minDim = Math.min(height, width);\n\tconst isWide = maxDim === width;\n\tconst hypotenuse = Math.sqrt(width ** 2 + height ** 2);\n\n\tif (top === left && top === '50%') {\n\t\treturn hypotenuse / maxDim + RIPPLE_PADDING;\n\t}\n\n\tconst px = parseInt(isWide ? left : top, 10);\n\tconst half = maxDim / 2;\n\tconst diff = Math.abs(half - px);\n\tconst scale =\n\t\t(hypotenuse / maxDim + diff / half + RIPPLE_PADDING) *\n\t\t(isWide ? 1 : maxDim / minDim);\n\n\treturn scale;\n}\n","import {actionTypes, declarativeOperations} from '@servicenow/ui-core';\nimport {eventCoordinates, rippleScale} from './utils';\nimport {DEFAULT_RIPPLE_POSITION, MAX_RIPPLES} from './constants';\nimport {getReduceMotionValue} from '@servicenow/behavior-reduce-motion';\n\nconst {COMPONENT_DOM_READY, COMPONENT_RENDERED} = actionTypes;\n\n/*\nThis behavior adds a ripple animation effect to the target element on mouse down and animates the effect out on mouse up.\n\n### Install in your project\n\n```\ntectonic add --saveExact @servicenow/behavior-ripple\n```\n\n### Use it in your project\n\nImport it at the top of your component JS file:\n\n```js\nimport rippleBehavior from '@servicenow/behavior-ripple';\n```\n\nRegister the behavior in your component JS file:\n\n```js\ncreateCustomElement('sn-foo', {\n\trenderer: {\n\t\ttype: snabbdom,\n\t\tview: (state) => {\n\t\t\t...\n\t\t},\n\t},\n\tbehaviors: [{\n\t\tbehavior: rippleBehavior,\n\t\toptions: {target: '.my-target-element'},\n\t}],\n});\n```\n\nSee `example/sn-example-ripple.js` for a more complete example.\n\n### Configuration options\n\nIn the vast majority of cases the defaults should be fine and you should only need to provide the `target`. However, for special use cases the following options can be used to configure the behavior:\n\n- `[target=''] (string)` - query string for the target element. The mouse down and mouse/key up events will be attached to this element and the ripple will be prepended to it.\n- `[maxScale=undefined] (number)` - If a number is provided the ripple will scale to that size (ex: `1.5`). If left undefined the default behavior will measure the target and provide a scale that will cover the entire element\n- `[endScale=undefined] (number)` - If a number is provided the ripple will scale out to that size. If left undefined the default behavior will end without a scale.\n- `[introDurationToken='--now-motion--duration--normal'] (string)` - The token to use for the duration of the mouse down portion of the animation.\n- `[introEaseToken='--now-motion--ease--focus-standard'] (string)` - The token to use for the easing of the mouse down portion of the animation.\n- `[outroDurationToken='--now-motion--duration--faster'] (string)` - The token to use for the duration of the mouse up portion of the animation.\n- `[outroEaseToken=''] (string)` - The token to use for the ease of the mouse up portion of the animation. If none is provided the animation will default to a linear ease.\n\nAdvanced Configuration example:\n\n```js\nimport rippleBehavior from '@servicenow/behavior-ripple';\n\ncreateCustomElement('sn-foo', {\n\t...\n\tbehaviors: [{\n\t\tbehavior: rippleBehavior,\n\t\toptions: {\n\t\t\ttarget: '.my-target',\n\t\t\tmaxScale: 1.1,\n\t\t\tendScale: 0,\n\t\t\tintroDurationToken: '--now-motion--duration--slower',\n\t\t\tintroEaseToken: '--now-motion--ease--bounce',\n\t\t\toutroEaseToken: '--now-motion--ease--focus-standard'\n\t\t}\n\t}]\n});\n```\n\n### Styling\n\nYou are responsible for styling the ripple element. Since the ripple needs to be absolutely positioned for mouse cursor coordinates you will need to add some styles to your target element:\n\n```css\n.my-target {\n\toverflow: hidden; //optional, but most use cases probably want this\n\tposition: absolute;\n}\n```\n\nIn addition to your target element you will want to add some styles for the ripple itself. There is a provided mixin you can import to give you the base styles and then you can just add any background color styles after that. Any items that should appear on top of the ripple will need a `z-index` of `> 0` applied.\n\n```css\n.my-target {\n\t@include now-mx-ripple;\n\n\t.now-ripple {\n\t\tbackground-color: RGBA(\n\t\t\t$now-button--bare_primary--background-color--active,\n\t\t\t$now-button--bare_primary--background-color-alpha--active\n\t\t);\n\t}\n}\n```\n\nFor reference the ripple mixin applies these styles for the ripple element:\n\n```css\n@mixin now-ripple {\n\t.now-ripple {\n\t\tposition: absolute;\n\t\tleft: 50%;\n\t\ttop: 50%;\n\t\tz-index: 0;\n\t\tinline-size: 100%;\n\t\tborder-radius: 100%;\n\t\ttransform: scale(0);\n\t\ttransform-origin: center;\n\t\taspect-ratio: 1/1;\n\t}\n}\n```\n* @seismicBehavior rippleBehavior\n* @summary Adds a ripple animation effect to the target element on mouse down and animates the effect out on mouse up\n*/\nexport default {\n\tname: 'ripple',\n\tinitialState: {\n\t\tactiveRippleTimeStamps: [],\n\t\tintroDuration: 0,\n\t\tintroEase: '',\n\t\toutroDuration: 0,\n\t\tisMouseDown: false,\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_READY]: ({action, dispatch, updateState}) => {\n\t\t\tconst {options} = action.payload;\n\t\t\tconst {\n\t\t\t\tintroDurationToken = '--now-motion--duration--normal',\n\t\t\t\tintroEaseToken = '--now-motion--ease--focus-standard',\n\t\t\t\toutroDurationToken = '--now-motion--duration--faster',\n\t\t\t\toutroEaseToken = '',\n\t\t\t} = options;\n\n\t\t\tlet introDuration = 0;\n\t\t\tlet introEase = 'linear';\n\t\t\tlet outroDuration = 0;\n\t\t\tlet outroEase = 'linear';\n\n\t\t\ttry {\n\t\t\t\tconst style = window.getComputedStyle(document.body);\n\t\t\t\tconst introDurationCSS =\n\t\t\t\t\tstyle.getPropertyValue(introDurationToken) || 0;\n\t\t\t\tintroDuration = parseInt(introDurationCSS, 10);\n\t\t\t\tintroEase = style.getPropertyValue(introEaseToken) || 'linear';\n\t\t\t\tconst outroDurationCSS =\n\t\t\t\t\tstyle.getPropertyValue(outroDurationToken) || 0;\n\t\t\t\toutroDuration = parseInt(outroDurationCSS, 10);\n\t\t\t\toutroEase = style.getPropertyValue(outroEaseToken) || 'linear';\n\t\t\t} catch (e) {\n\t\t\t\t// NOOP\n\t\t\t}\n\n\t\t\tupdateState({\n\t\t\t\tpath: 'behaviors.ripple',\n\t\t\t\tvalue: {\n\t\t\t\t\tintroDuration,\n\t\t\t\t\tintroEase,\n\t\t\t\t\toutroDuration,\n\t\t\t\t\toutroEase,\n\t\t\t\t},\n\t\t\t\toperation: declarativeOperations.MERGE,\n\t\t\t});\n\t\t\tdispatch('PRIVATE#SETUP_RIPPLE');\n\t\t},\n\t\t[COMPONENT_RENDERED]: ({host, dispatch}) => {\n\t\t\tif (host.nowHoistAppendTo) {\n\t\t\t\tdispatch('PRIVATE#SETUP_RIPPLE');\n\t\t\t}\n\t\t},\n\t\t['PRIVATE#SETUP_RIPPLE']: ({action, host, dispatch, context}) => {\n\t\t\tconst reduceMotion = getReduceMotionValue(context);\n\n\t\t\tif (reduceMotion) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {target} = action.payload.options;\n\t\t\tlet triggerElms = host.shadowRoot.querySelectorAll(target);\n\n\t\t\tif (!triggerElms.length && host.nowHoistAppendTo) {\n\t\t\t\t// If the ripple host is hoisted we need to query the appended to element instead of the host\n\t\t\t\ttriggerElms = host.nowHoistAppendTo\n\t\t\t\t\t.querySelector(`seismic-hoist[now-id=\"${host.componentId}\"]`)\n\t\t\t\t\t.shadowRoot.querySelectorAll(target);\n\t\t\t}\n\n\t\t\ttriggerElms.forEach((triggerElm) => {\n\t\t\t\ttriggerElm.classList.add('has-ripple');\n\t\t\t\tconst mousedownHandler = (event) => {\n\t\t\t\t\tdispatch('PRIVATE#MOUSEDOWN', {triggerElm, event});\n\t\t\t\t};\n\t\t\t\tconst mouseleaveHandler = () => {\n\t\t\t\t\tdispatch('PRIVATE#MOUSELEAVE');\n\t\t\t\t};\n\t\t\t\tconst clickHandler = () => {\n\t\t\t\t\tdispatch('PRIVATE#CLICKED', {triggerElm});\n\t\t\t\t};\n\t\t\t\ttriggerElm.addEventListener('mousedown', mousedownHandler);\n\t\t\t\ttriggerElm.addEventListener('mouseleave', mouseleaveHandler);\n\t\t\t\ttriggerElm.addEventListener('click', clickHandler);\n\t\t\t});\n\t\t},\n\t\t['PRIVATE#MOUSEDOWN']: ({action, dispatch, updateState}) => {\n\t\t\tconst {event, triggerElm} = action.payload;\n\t\t\tconst {x, y} = eventCoordinates(event, triggerElm);\n\t\t\tconst {width, height} = triggerElm.getBoundingClientRect();\n\n\t\t\tconst maxDim = Math.max(width, height);\n\t\t\tconst minDim = Math.min(width, height);\n\t\t\tconst ratio = minDim / maxDim;\n\t\t\tconst useCenter = ratio > 0.9;\n\n\t\t\tif (triggerElm && event.button === 0) {\n\t\t\t\tdispatch('PRIVATE#START_RIPPLE', {\n\t\t\t\t\ttriggerElm,\n\t\t\t\t\tleft: useCenter ? DEFAULT_RIPPLE_POSITION : `${x}px`,\n\t\t\t\t\ttop: useCenter ? DEFAULT_RIPPLE_POSITION : `${y}px`,\n\t\t\t\t});\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'behaviors.ripple.isMouseDown',\n\t\t\t\t\tvalue: true,\n\t\t\t\t\toperation: declarativeOperations.SET,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t['PRIVATE#MOUSELEAVE']: ({dispatch}) => {\n\t\t\tdispatch('PRIVATE#END_RIPPLE');\n\t\t},\n\t\t['PRIVATE#CLICKED']: ({action, dispatch, state}) => {\n\t\t\tconst {triggerElm} = action.payload;\n\t\t\tconst {isMouseDown} = state.behaviors.ripple;\n\t\t\tif (isMouseDown) {\n\t\t\t\tdispatch('PRIVATE#END_RIPPLE');\n\t\t\t} else {\n\t\t\t\tdispatch('PRIVATE#START_RIPPLE', {\n\t\t\t\t\ttriggerElm,\n\t\t\t\t\ttop: DEFAULT_RIPPLE_POSITION,\n\t\t\t\t\tleft: DEFAULT_RIPPLE_POSITION,\n\t\t\t\t\tautoEnd: true,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t['PRIVATE#START_RIPPLE']: ({\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t\tcontext,\n\t\t}) => {\n\t\t\tconst {\n\t\t\t\ttriggerElm,\n\t\t\t\tleft = DEFAULT_RIPPLE_POSITION,\n\t\t\t\ttop = DEFAULT_RIPPLE_POSITION,\n\t\t\t\tautoEnd,\n\t\t\t\toptions,\n\t\t\t} = action.payload;\n\t\t\tconst {activeRippleTimeStamps, introDuration, introEase} =\n\t\t\t\tstate.behaviors.ripple;\n\n\t\t\tif (activeRippleTimeStamps.length > MAX_RIPPLES) {\n\t\t\t\t// If there are more than 3 ripples, don't add more\n\t\t\t\t// and trigger outro for the oldest ripples\n\t\t\t\tdispatch('PRIVATE#END_RIPPLE');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!triggerElm) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst rippleElm = document.createElement('span');\n\t\t\tconst timeStamp = Date.now();\n\n\t\t\tupdateState({\n\t\t\t\tpath: 'behaviors.ripple.activeRippleTimeStamps',\n\t\t\t\tvalue: timeStamp,\n\t\t\t\toperation: declarativeOperations.PUSH,\n\t\t\t});\n\n\t\t\trippleElm.className = 'now-ripple';\n\t\t\trippleElm.id = 'ripple-' + timeStamp;\n\t\t\ttriggerElm.prepend(rippleElm);\n\n\t\t\tconst {height, width} = triggerElm.getBoundingClientRect();\n\t\t\tconst scale = options.maxScale || rippleScale({height, width, left, top});\n\n\t\t\tconst forceColor = window.matchMedia('(forced-colors: active)').matches;\n\t\t\tconst reduceMotion = getReduceMotionValue(context);\n\t\t\tconst shouldAnimate = !reduceMotion && !forceColor;\n\n\t\t\tconst rippleAnim = rippleElm.animate(\n\t\t\t\t[\n\t\t\t\t\t{\n\t\t\t\t\t\tleft: left,\n\t\t\t\t\t\ttop: top,\n\t\t\t\t\t\ttransform: 'translate(-50%, -50%) scale(0)',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tleft: left,\n\t\t\t\t\t\ttop: top,\n\t\t\t\t\t\ttransform: `translate(-50%, -50%) scale(${scale})`,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t{\n\t\t\t\t\tduration: shouldAnimate ? introDuration : 0,\n\t\t\t\t\teasing: introEase,\n\t\t\t\t\tfill: 'forwards',\n\t\t\t\t},\n\t\t\t);\n\t\t\trippleAnim.id = 'ripple';\n\n\t\t\trippleAnim.onfinish = () => {\n\t\t\t\tif (autoEnd) {\n\t\t\t\t\tdispatch('PRIVATE#END_RIPPLE');\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\t['PRIVATE#END_RIPPLE']: ({action, host, state, updateState, context}) => {\n\t\t\tupdateState({\n\t\t\t\tpath: 'behaviors.ripple.isMouseDown',\n\t\t\t\tvalue: false,\n\t\t\t\toperation: declarativeOperations.SET,\n\t\t\t});\n\t\t\tconst mouseUpTime = Date.now();\n\t\t\tconst {activeRippleTimeStamps, introDuration, outroDuration, outroEase} =\n\t\t\t\tstate.behaviors.ripple;\n\t\t\tconst {options} = action.payload;\n\t\t\tconst {endScale} = options;\n\n\t\t\tif (!activeRippleTimeStamps.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst currentRipples = activeRippleTimeStamps.filter(\n\t\t\t\t(rippleId, index) =>\n\t\t\t\t\trippleId < mouseUpTime || index < activeRippleTimeStamps.length - 1,\n\t\t\t);\n\n\t\t\tif (!currentRipples) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet newRippleTimeStamps = activeRippleTimeStamps;\n\n\t\t\tcurrentRipples.forEach((currentRippleId) => {\n\t\t\t\tlet rippleElm = host.shadowRoot.querySelector(\n\t\t\t\t\t`#ripple-${currentRippleId}`,\n\t\t\t\t);\n\t\t\t\tif (!rippleElm && host.nowHoistAppendTo) {\n\t\t\t\t\t// If the ripple host is hoisted we need to query the appended to element instead of the host\n\t\t\t\t\trippleElm = host.nowHoistAppendTo\n\t\t\t\t\t\t.querySelector(`seismic-hoist[now-id=\"${host.componentId}\"]`)\n\t\t\t\t\t\t.shadowRoot.querySelector(`#ripple-${currentRippleId}`);\n\t\t\t\t}\n\t\t\t\tconst delay = Math.max(\n\t\t\t\t\t0,\n\t\t\t\t\tMath.min(\n\t\t\t\t\t\tintroDuration,\n\t\t\t\t\t\tintroDuration + currentRippleId - mouseUpTime,\n\t\t\t\t\t),\n\t\t\t\t);\n\n\t\t\t\tif (!rippleElm) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst scaleOut =\n\t\t\t\t\tendScale >= 0\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\ttransform: `translate(-50%, -50%) scale(${endScale})`,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: {};\n\n\t\t\t\tconst forceColor = window.matchMedia('(forced-colors: active)').matches;\n\t\t\t\tconst reduceMotion = getReduceMotionValue(context);\n\t\t\t\tconst shouldAnimate = !reduceMotion && !forceColor;\n\n\t\t\t\tconst outroAnim = rippleElm.animate(\n\t\t\t\t\t[{opacity: 1}, {opacity: 0, ...scaleOut}],\n\t\t\t\t\t{\n\t\t\t\t\t\tduration: shouldAnimate ? outroDuration : 0,\n\t\t\t\t\t\teasing: outroEase,\n\t\t\t\t\t\tdelay: delay,\n\t\t\t\t\t\tfill: 'forwards',\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\toutroAnim.id = 'outro';\n\n\t\t\t\toutroAnim.onfinish = () => {\n\t\t\t\t\trippleElm.remove();\n\t\t\t\t};\n\n\t\t\t\tnewRippleTimeStamps = newRippleTimeStamps.filter(\n\t\t\t\t\t(rippleId) => rippleId !== currentRippleId,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tupdateState({\n\t\t\t\tpath: 'behaviors.ripple.activeRippleTimeStamps',\n\t\t\t\tvalue: newRippleTimeStamps,\n\t\t\t\toperation: declarativeOperations.SET,\n\t\t\t});\n\t\t},\n\t},\n};\n","import {actionTypes} from '@servicenow/ui-core';\nconst {COMPONENT_DOM_READY} = actionTypes;\n\nexport default {\n\tname: 'cssPropertyRegistration',\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_READY]: {\n\t\t\teffect: ({action}) => {\n\t\t\t\tconst {cssProperties = []} = action.payload.options;\n\t\t\t\tcssProperties.forEach((prop) => {\n\t\t\t\t\tconst {\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tsyntax = '*',\n\t\t\t\t\t\tinherits = false,\n\t\t\t\t\t\tinitialValue = '',\n\t\t\t\t\t} = prop;\n\n\t\t\t\t\tif (name) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\twindow.CSS.registerProperty({\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\tsyntax,\n\t\t\t\t\t\t\t\tinherits,\n\t\t\t\t\t\t\t\tinitialValue,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\terror instanceof DOMException &&\n\t\t\t\t\t\t\t\terror.name === 'InvalidModificationError'\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// NOOP property is already registered\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t},\n};\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {\n\textensionSplit,\n\tfilterAriaAttributes,\n} from '@servicenow/library-enhanced-utils';\nimport {actionTypes} from '@servicenow/ui-core';\nimport styles from './_now-button.scss';\nimport '@servicenow/now-icon';\nimport tooltipBehavior, {\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport '@servicenow/now-tooltip';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {configAriaLabelRoleHasPopUpSchema} from '@servicenow/library-schemas';\nimport {animatedIconHoverBehavior} from './behaviors/index.js';\nimport rippleBehavior from '@servicenow/behavior-ripple';\nimport reduceMotionBehavior from '@servicenow/behavior-reduce-motion';\nimport cssPropertyRegistration from '@servicenow/behavior-css-property-registration';\n\nconst {COMPONENT_RENDERED} = actionTypes;\n\nconst handleTooltipShow = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_SHOW, {target: event.target});\n};\n\nconst handleTooltipHide = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_HIDE, {target: event.target});\n};\n\nconst _renderIcon = (icon, size) => {\n\tif (icon) {\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\tclassName=\"now-button-icon\"\n\t\t\t\ticon={icon}\n\t\t\t\tsize={size}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst _renderAnimatedIcon = (animatedIcon, size) => {\n\tif (animatedIcon) {\n\t\treturn (\n\t\t\t<now-icon-animated\n\t\t\t\tclassName=\"now-button-icon\"\n\t\t\t\ticon={animatedIcon}\n\t\t\t\tsize={size}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t);\n\t}\n};\n\n/** @seismicView now-button */\nconst view = (state, {dispatch}) => {\n\tconst {\n\t\tlabel,\n\t\tvariant,\n\t\tsize,\n\t\ticon = state.properties.iconName,\n\t\tbare,\n\t\tdisabled,\n\t\tconfigAria,\n\t\ttooltipContent,\n\t\tanimatedIcon,\n\t\tactive,\n\t} = state.properties;\n\n\tconst ariaLabel = {...filterAriaAttributes(configAria, 'button')}?.[\n\t\t'aria-label'\n\t];\n\n\tlet dataAriaDescribedBy;\n\n\t// If aria-label from configAria is present, it will override\n\t// the button's aria-label; OR if no label is present, but there is\n\t// aria-label from configAria, then set data-ariadescribed by\n\t// to aria-label, which will be compared to tooltip\n\t// in behavior-tooltip's scheduler\n\tif ((ariaLabel && label) || (ariaLabel && !label)) {\n\t\tdataAriaDescribedBy = ariaLabel;\n\t}\n\n\t// If tooltip and label are present but no aria-label\n\t// is provided by configAria\n\t// button's aria-label will default to label.\n\t// Set data-ariadescribedby to label\n\t// to be compared with tooltip in behavior-tooltip's scheduler\n\tif (tooltipContent && label && !ariaLabel) {\n\t\tdataAriaDescribedBy = label;\n\t}\n\n\tconst shouldAnimate = !state.behaviors['reduce-motion'];\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\ton-mousedown={disabled ? (e) => e.preventDefault() : undefined}\n\t\t\tdata-tooltip={tooltipContent}\n\t\t\tdata-ariadescribedby={dataAriaDescribedBy}\n\t\t\ton-mouseenter={handleTooltipShow(dispatch)}\n\t\t\ton-mouseleave={handleTooltipHide(dispatch)}\n\t\t\ton-focusin={handleTooltipShow(dispatch)}\n\t\t\ton-focusout={handleTooltipHide(dispatch)}\n\t\t\ton-click={() => {\n\t\t\t\tdispatch(({properties}) => ({\n\t\t\t\t\ttype: 'NOW_BUTTON#CLICKED',\n\t\t\t\t\tpayload: {},\n\t\t\t\t\tshouldDispatch: !properties.disabled,\n\t\t\t\t}));\n\t\t\t}}\n\t\t\tclass={{\n\t\t\t\t'now-button': true,\n\t\t\t\t...extensionSplit(variant),\n\t\t\t\t['-' + size]: size,\n\t\t\t\t'is-bare': bare,\n\t\t\t\t'is-disabled': disabled,\n\t\t\t\t'only-icon':\n\t\t\t\t\t((!icon && animatedIcon) || (icon && !animatedIcon)) && !label,\n\t\t\t\t'is-active': active,\n\t\t\t\t'should-animate': shouldAnimate,\n\t\t\t}}\n\t\t\t{...filterAriaAttributes(configAria, 'button')}\n\t\t\tdisabled={disabled}\n\t\t>\n\t\t\t<slot>\n\t\t\t\t{_renderIcon(icon, size)}\n\t\t\t\t{_renderAnimatedIcon(animatedIcon, size)}\n\t\t\t\t{label !== null && label !== undefined && (\n\t\t\t\t\t<span className=\"now-line-height-crop\">{label}</span>\n\t\t\t\t)}\n\t\t\t</slot>\n\t\t</button>\n\t);\n};\n\n/**\n * Buttons help users act, undo a mistake, or keep a conversation going.\n *\n * There are many types and sizes of buttons, each with a proper use case.\n * In addition to type and size, buttons use smaller design elements\n * such as containers, borders, colors, icons, or text, to accommodate specific use cases.\n *\n * ```jsx\n * <now-button label=\"Click me\" variant=\"primary\" size=\"lg\" />\n * <now-button label=\"Settings\" icon=\"gear-fill\" />\n * <now-button label=\"Disabled button\" disabled />\n * ```\n *\n * @seismicElement now-button\n * @summary Simple button. Contains a text label and an optional icon.\n * @uib.label Button\n * @uib.icon button\n * @uib.description Button with a background color.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties label, variant, size, disabled, active, icon, animatedIcon, tooltipContent, configAria, landmark\n * @uib.layout.identifier.children icon, animatedIcon\n * @uib.layout.identifier.icon image-outline\n * @uib.layout.accessibility.children tooltipContent, configAria, landmark\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_BUTTON#CLICKED\n * @uib.slots\n */\ncreateEnhancedElement('now-button', {\n\tproperties: {\n\t\t/**\n\t\t * Text displayed inside the button.\n\t\t * @type {string}\n\t\t * @uib.label Label\n\t\t * @uib.defaultValue Button\n\t\t * @uib.description Text displayed inside the button\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {schema: {type: ['string', 'number']}},\n\n\t\t/**\n\t\t * Sets the button style, including color and interaction behavior.\n\t\t * @type {('primary'|'primary-positive'|'primary-negative'|'primary-ai'|'secondary'|'secondary-positive'|'secondary-negative'|'secondary-ai'|'tertiary'|'tertiary-ai')}\n\t\t * @uib.label Variant\n\t\t * @uib.description Sets the button style\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Primary\", \"value\": \"primary\"}, {\"label\": \"Secondary\", \"value\": \"secondary\"}, {\"label\": \"Tertiary\", \"value\": \"tertiary\"}, {\"label\": \"Positive Primary\", \"value\": \"primary-positive\"}, {\"label\": \"Positive Secondary\", \"value\": \"secondary-positive\"}, {\"label\": \"Negative Primary\", \"value\": \"primary-negative\"}, {\"label\": \"Negative Secondary\", \"value\": \"secondary-negative\"}, {\"label\": \"Primary AI\", \"value\": \"primary-ai\"}, {\"label\": \"Secondary AI\", \"value\": \"secondary-ai\"}, {\"label\": \"Tertiary AI\", \"value\": \"tertiary-ai\"}]\n\t\t */\n\t\tvariant: {\n\t\t\tdefault: 'secondary',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [\n\t\t\t\t\t'primary',\n\t\t\t\t\t'primary-positive',\n\t\t\t\t\t'primary-negative',\n\t\t\t\t\t'primary-ai',\n\t\t\t\t\t'secondary',\n\t\t\t\t\t'secondary-positive',\n\t\t\t\t\t'secondary-negative',\n\t\t\t\t\t'secondary-ai',\n\t\t\t\t\t'tertiary',\n\t\t\t\t\t'tertiary-ai',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the button size.\n\t\t * @type {('sm'|'md'|'lg')}\n\t\t * @uib.label Size\n\t\t * @uib.description Sets the button size\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md', 'lg'],\n\t\t\t},\n\t\t},\n\t\t/** @private */\n\t\ticonName: {},\n\t\t/**\n\t\t * If defined, specifies the icon to display at the start of the button.\n\t\t * See the `now-icon` component documentation for valid inputs.\n\t\t * For icon-only buttons, use `<now-button-iconic>` instead.\n\t\t * @type {string}\n\t\t * @uib.label Icon\n\t\t * @uib.description Defines icon displayed at the start of the button\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticon: {schema: {type: 'string'}},\n\t\t/**\n\t\t * If defined, specifies the animated icon to display at the start of the button.\n\t\t * See the `now-icon-animated` component documentation for valid inputs.\n\t\t * For icon-only buttons, use `<now-button-iconic>` instead.\n\t\t * @type {string}\n\t\t * @uib.label Animated Icon\n\t\t * @uib.description Defines the animated icon displayed at the start of the button\n\t\t */\n\t\tanimatedIcon: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Deprecated in favor of the `<now-button-bare>` tag.\n\t\t * @private\n\t\t */\n\t\tbare: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * If true, sets the button to have an active state (pressed).\n\t\t * @type {boolean}\n\t\t * @uib.label Active\n\t\t * @uib.description If true, sets the button to have an active state\n\t\t */\n\t\tactive: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, mutes the button color and prevents user click interactions.\n\t\t * @type {boolean}\n\t\t * @uib.label Disabled\n\t\t * @uib.description When true, disables user click interactions\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-button. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties will be set on the specified element.\n\t\t * The 'button' key corresponds to the inner html `<button>` in\n\t\t * now-button. See https://www.w3.org/TR/wai-aria-1.2/#button for\n\t\t * properties and accepted values.\n\t\t * @type {{ 'aria-*': string, role: string }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tbutton: configAriaLabelRoleHasPopUpSchema,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tconfigAriaLabelRoleHasPopUpSchema,\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Text content shown inside the tooltip. Not displayed if button is\n\t\t * disabled.\n\t\t * @type {string}\n\t\t * @uib.label Tooltip label\n\t\t * @uib.defaultValue Enter a label\n\t\t * @uib.description Text shown inside the tooltip\n\t\t * @uib.translatable true\n\t\t */\n\t\ttooltipContent: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this button\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t},\n\tview,\n\tstyles,\n\tbehaviors: [\n\t\tfocusBehavior,\n\t\ttooltipBehavior,\n\t\tanimatedIconHoverBehavior,\n\t\t{behavior: reduceMotionBehavior},\n\t\t{\n\t\t\tbehavior: rippleBehavior,\n\t\t\toptions: {target: '.now-button'},\n\t\t},\n\t\t{\n\t\t\tbehavior: cssPropertyRegistration,\n\t\t\toptions: {\n\t\t\t\tcssProperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: '--now-button--ai--gradient-start',\n\t\t\t\t\t\tsyntax: '<color>',\n\t\t\t\t\t\tinherits: false,\n\t\t\t\t\t\tinitialValue: 'transparent',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: '--now-button--ai--gradient-end',\n\t\t\t\t\t\tsyntax: '<color>',\n\t\t\t\t\t\tinherits: false,\n\t\t\t\t\t\tinitialValue: 'transparent',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t[COMPONENT_RENDERED]: ({host, properties, dispatch}) => {\n\t\t\tconst buttonEl = host.shadowRoot.querySelector('.now-button');\n\n\t\t\tif (!buttonEl) {\n\t\t\t\t// In the case of a hoisted button the shadowRoot will be empty and the above query will be null\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (properties.disabled || !properties.tooltipContent) {\n\t\t\t\tdispatch(TOOLTIP_HIDE, {target: buttonEl});\n\t\t\t\tPromise.resolve().then(() => {\n\t\t\t\t\tdelete buttonEl.dataset.tooltip;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tbuttonEl.dataset.tooltip = properties.tooltipContent;\n\t\t\t}\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the button is clicked.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the button is clicked\n\t\t */\n\t\t'NOW_BUTTON#CLICKED': {default: false, schema: {type: 'object'}},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Content placed in the default slot appears inside\n\t\t * the button body, taking the place of the `icon` and/or `label`.\n\t\t * @defaultSlot\n\t\t */\n\t\tdefaultSlot: {},\n\t},\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport styles from './_now-button-bare.scss';\nimport '@servicenow/now-icon';\nimport '@servicenow/now-tooltip';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport tooltipBehavior, {\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport {configAriaLabelRoleHasPopUpSchema} from '@servicenow/library-schemas';\nimport {animatedIconHoverBehavior} from './behaviors/index.js';\nimport rippleBehavior from '@servicenow/behavior-ripple';\nimport reduceMotionBehavior from '@servicenow/behavior-reduce-motion';\n\nconst _renderIcon = (icon, logicalProperty, size) => {\n\tif (icon) {\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\tclass={{\n\t\t\t\t\t'now-button-bare-icon': true,\n\t\t\t\t\t['now-m-' + logicalProperty + '--xs']: size === 'lg',\n\t\t\t\t\t['now-m-' + logicalProperty + '--xxs']: size !== 'lg',\n\t\t\t\t}}\n\t\t\t\ticon={icon}\n\t\t\t\tsize={size}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t);\n\t}\n};\nconst _renderAnimatedIcon = (animatedIcon, logicalProperty, size) => {\n\tif (animatedIcon) {\n\t\treturn (\n\t\t\t<now-icon-animated\n\t\t\t\tclass={{\n\t\t\t\t\t'now-button-bare-icon': true,\n\t\t\t\t\t['now-m-' + logicalProperty + '--xs']: size === 'lg',\n\t\t\t\t\t['now-m-' + logicalProperty + '--xxs']: size !== 'lg',\n\t\t\t\t}}\n\t\t\t\ticon={animatedIcon}\n\t\t\t\tsize={size}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst handleTooltipShow = (e, dispatch) => {\n\tconst labelSpan = e.target.querySelector('.now-button-bare-label');\n\tconst isOverset = labelSpan && labelSpan.scrollWidth > labelSpan.clientWidth;\n\tif (isOverset) {\n\t\treturn dispatch(TOOLTIP_SHOW, {target: e.target});\n\t}\n};\n\nconst handleTooltipHide = (e, dispatch) => {\n\tconst labelSpan = e.target.querySelector('.now-button-bare-label');\n\tconst isOverset = labelSpan && labelSpan.scrollWidth > labelSpan.clientWidth;\n\tif (isOverset) {\n\t\treturn dispatch(TOOLTIP_HIDE, {target: e.target});\n\t}\n};\n\n/** @seismicView now-button-bare */\nconst view = (state, {dispatch}) => {\n\tconst {\n\t\tlabel,\n\t\tvariant,\n\t\thighContrast,\n\t\tsize,\n\t\ticonStart = state.properties.iconNameStart,\n\t\ticonEnd = state.properties.iconNameEnd,\n\t\thidePadding,\n\t\thideBlockPadding,\n\t\tshowInlinePadding,\n\t\tdisabled,\n\t\tactive,\n\t\tconfigAria,\n\t\tanimatedIconStart,\n\t\tanimatedIconEnd,\n\t} = state.properties;\n\n\tconst dataAriaDescribedBy =\n\t\t{...filterAriaAttributes(configAria, 'button')}?.['aria-label'] ?? label;\n\n\tconst shouldAnimate = !state.behaviors['reduce-motion'];\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\ton-click={() => {\n\t\t\t\tdispatch(({properties}) => ({\n\t\t\t\t\ttype: 'NOW_BUTTON_BARE#CLICKED',\n\t\t\t\t\tpayload: {},\n\t\t\t\t\tshouldDispatch: !properties.disabled,\n\t\t\t\t}));\n\t\t\t}}\n\t\t\tclass={{\n\t\t\t\t'now-button-bare': true,\n\t\t\t\t['-' + variant]: variant,\n\t\t\t\t['-' + size]: size,\n\t\t\t\t'high-contrast': highContrast,\n\t\t\t\t'hide-block-padding': hideBlockPadding || hidePadding,\n\t\t\t\t'show-inline-padding': showInlinePadding,\n\t\t\t\t'is-disabled': disabled,\n\t\t\t\t'is-active': active,\n\t\t\t\t'should-animate': shouldAnimate,\n\t\t\t}}\n\t\t\tdata-ariadescribedby={dataAriaDescribedBy}\n\t\t\tdata-tooltip={label}\n\t\t\ton-mouseenter={(e) => handleTooltipShow(e, dispatch)}\n\t\t\ton-focusin={(e) => handleTooltipShow(e, dispatch)}\n\t\t\ton-mouseleave={(e) => handleTooltipHide(e, dispatch)}\n\t\t\ton-focusout={(e) => handleTooltipHide(e, dispatch)}\n\t\t\tdisabled={disabled}\n\t\t\t{...filterAriaAttributes(configAria, 'button')}\n\t\t>\n\t\t\t<slot>\n\t\t\t\t{_renderAnimatedIcon(animatedIconStart, 'inline-end', size)}\n\t\t\t\t{_renderIcon(iconStart, 'inline-end', size)}\n\t\t\t\t<span className=\"now-line-height-crop\">\n\t\t\t\t\t<span className=\"now-button-bare-label\">{label}</span>\n\t\t\t\t</span>\n\t\t\t\t{_renderAnimatedIcon(animatedIconEnd, 'inline-start', size)}\n\t\t\t\t{_renderIcon(iconEnd, 'inline-start', size)}\n\t\t\t</slot>\n\t\t</button>\n\t);\n};\n\n/**\n * Bare button is a type of button used to display text with an action.\n * The bare button does not share all the properties of the standard button component.\n *\n * ```jsx\n * <now-button-bare label=\"Click me\" variant=\"primary\" size=\"lg\" />\n * <now-button-bare label=\"With icon\" icon-start=\"gear-fill\" />\n * <now-button-bare label=\"Disabled button\" disabled />\n * ```\n *\n * @seismicElement now-button-bare\n * @summary Simple bare button. Can contain a text label, with or without icons\n * (before and/or after the label).\n * @uib.label Button bare\n * @uib.icon button-bare\n * @uib.description Button with no background color or border\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties label, variant, size, disabled, active, iconStart, iconEnd, animatedIconStart, animatedIconEnd, hideBlockPadding, showInlinePadding, configAria, highContrast, landmark\n * @uib.layout.identifier.children iconStart, iconEnd, animatedIconStart, animatedIconEnd\n * @uib.layout.identifier.icon image-outline\n * @uib.layout.padding.children hideBlockPadding, showInlinePadding\n * @uib.layout.padding.icon arrow-up-down-outline\n * @uib.layout.accessibility.children configAria, highContrast, landmark\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_BUTTON_BARE#CLICKED\n */\ncreateEnhancedElement('now-button-bare', {\n\tproperties: {\n\t\t/**\n\t\t * Text displayed inside the bare button.\n\t\t * @type {string}\n\t\t * @uib.label Label\n\t\t * @uib.description Text displayed inside the button.\n\t\t * @uib.defaultValue Button\n\t\t * @uib.translatable true\n\t\t */\n\t\tlabel: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Sets the bare button styles, including colors and interaction behaviors.\n\t\t * @type {('primary'|'secondary'|'tertiary')}\n\t\t * @uib.label Variant\n\t\t * @uib.description Sets the button style.\n\t\t */\n\t\tvariant: {\n\t\t\tdefault: 'primary',\n\t\t\tschema: {type: 'string', enum: ['primary', 'secondary', 'tertiary']},\n\t\t},\n\t\t/**\n\t\t * Sets the bare button size.\n\t\t * @type {('sm'|'md'|'lg')}\n\t\t * @uib.label Size\n\t\t * @uib.description Sets the button size.\n\t\t */\n\t\tsize: {default: 'md', schema: {type: 'string', enum: ['sm', 'md', 'lg']}},\n\t\t/**\n\t\t * When true, variant colors have higher contrast.\n\t\t * @type {boolean}\n\t\t * @uib.description Increases the accessibility contrast ratio of the icon and label when displayed on darker backgrounds.\n\t\t */\n\t\thighContrast: {default: false, schema: {type: 'boolean'}},\n\t\t/** @private */\n\t\ticonNameStart: {},\n\t\t/**\n\t\t * If defined, specifies the icon to display at the start of the bare button.\n\t\t * See the `now-icon` component documentation for valid inputs.\n\t\t * @type {string}\n\t\t * @uib.label Icon left of label\n\t\t * @uib.description Displays an icon at the start of the button.\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticonStart: {schema: {type: 'string'}},\n\t\t/**\n\t\t * If defined, specifies the animated icon to display at the start of the bare button.\n\t\t * See the `now-icon-animated` component documentation for valid inputs.\n\t\t * @type {string}\n\t\t * @uib.label Animated Icon left of label\n\t\t * @uib.description Displays an animated icon at the start of the button.\n\t\t */\n\t\tanimatedIconStart: {schema: {type: 'string'}},\n\t\t/** @private */\n\t\ticonNameEnd: {},\n\t\t/**\n\t\t * If defined, specifies the icon to display at the end of the bare button.\n\t\t * See the `now-icon` component documentation for valid inputs.\n\t\t * @type {string}\n\t\t * @uib.label Icon right of label\n\t\t * @uib.description Displays an icon at the end of the button.\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticonEnd: {schema: {type: 'string'}},\n\t\t/**\n\t\t * If defined, specifies the animated icon to display at the end of the bare button.\n\t\t * See the `now-icon-animated` component documentation for valid inputs.\n\t\t * @type {string}\n\t\t * @uib.label Animated Icon right of label\n\t\t * @uib.description Displays an animated icon at the end of the button.\n\t\t */\n\t\tanimatedIconEnd: {schema: {type: 'string'}},\n\t\t/**\n\t\t * @private\n\t\t * Deprecated. Use `hideBlockPadding` instead.\n\t\t * @uib.aliasedWith hideBlockPadding\n\t\t */\n\t\thidePadding: {},\n\t\t/**\n\t\t * By default, a bare button's height is based on the `size` property. Set\n\t\t * this to reduce this height so that the bare button only takes up the\n\t\t * height required by the label and/or icons. Note: Buttons with this\n\t\t * property do not align vertically with other button types.\n\t\t * @type {boolean}\n\t\t * @uib.label Hide Block Padding\n\t\t * @uib.description By default, the button's height is based on the size. Select to reduce the button height. This sets the button height to the size of the text. Buttons with this property do not align vertically with other button types.\n\t\t */\n\t\thideBlockPadding: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * By default, a bare button's width is based on the button's content. Set\n\t\t * this to add inline padding either side of the button's content.\n\t\t * @type {boolean}\n\t\t * @uib.label Show Inline Padding\n\t\t * @uib.description By default, a bare button's width is based on the button's content. Set this to add inline padding either side of the button's content.\n\t\t */\n\t\tshowInlinePadding: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, mutes the button color and prevents user click interactions.\n\t\t * @type {boolean}\n\t\t * @uib.label Disabled\n\t\t * @uib.description Disables user click interactions.\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * If true, sets the button to have an active state (pressed).\n\t\t * @type {boolean}\n\t\t * @uib.label Active\n\t\t * @uib.description If true, sets the button to have an active state\n\t\t */\n\t\tactive: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-button. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'button' key corresponds to the inner html `<button>` in\n\t\t * now-button. See https://www.w3.org/TR/wai-aria-1.2/#button for\n\t\t * properties and accepted values.\n\t\t * @type {{ 'aria-*': string,  role: string }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description ARIA properties that are set on the inner html. See https://www.w3.org/TR/wai-aria-1.2/#button for properties and accepted values.\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tbutton: configAriaLabelRoleHasPopUpSchema,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\tconfigAriaLabelRoleHasPopUpSchema,\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this button\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t},\n\tview,\n\tstyles,\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t},\n\t\ttooltipBehavior,\n\t\tanimatedIconHoverBehavior,\n\t\t{behavior: reduceMotionBehavior},\n\t\t{\n\t\t\tbehavior: rippleBehavior,\n\t\t\toptions: {target: '.now-button-bare'},\n\t\t},\n\t],\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the button is clicked.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the button is clicked\n\t\t */\n\t\t'NOW_BUTTON_BARE#CLICKED': {schema: {type: 'object'}},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Content placed in the default slot of the now-button-bare appears\n\t\t * inside the body of the button, taking the place of `iconStart`,\n\t\t * `iconEnd`, and/or `label`.\n\t\t * @defaultSlot\n\t\t */\n\t\tdefaultSlot: {},\n\t},\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport styles from './_now-button-iconic.scss';\nimport '@servicenow/now-icon';\nimport tooltipBehavior, {\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport '@servicenow/now-tooltip';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {configAriaLabelRoleHasPopUpSchema} from '@servicenow/library-schemas';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {animatedIconHoverBehavior} from './behaviors/index.js';\nimport rippleBehavior from '@servicenow/behavior-ripple';\nimport reduceMotionBehavior from '@servicenow/behavior-reduce-motion';\nimport cssPropertyRegistration from '@servicenow/behavior-css-property-registration';\n\nconst {COMPONENT_RENDERED} = actionTypes;\n\nconst handleTooltipShow = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_SHOW, {target: event.target});\n};\n\nconst handleTooltipHide = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_HIDE, {target: event.target});\n};\n\n/** @seismicView now-button-iconic */\nconst view = (state, {dispatch}) => {\n\tconst {\n\t\tvariant,\n\t\tbare,\n\t\thighContrast,\n\t\tsize,\n\t\ticon,\n\t\thidePadding,\n\t\tdisabled,\n\t\tactive,\n\t\tconfigAria,\n\t\ttooltipContent,\n\t\tanimatedIcon,\n\t} = state.properties;\n\tconst shouldAnimate = !state.behaviors['reduce-motion'];\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclass={{\n\t\t\t\t'now-button-iconic': true,\n\t\t\t\t['-' + variant]: variant,\n\t\t\t\t['-' + size]: size,\n\t\t\t\t'high-contrast': highContrast,\n\t\t\t\t'hide-padding': hidePadding,\n\t\t\t\t'is-disabled': disabled,\n\t\t\t\t'is-active': active,\n\t\t\t\t'is-bare': bare,\n\t\t\t\t'should-animate': shouldAnimate,\n\t\t\t}}\n\t\t\tdata-tooltip={tooltipContent}\n\t\t\tdata-ariadescribedby={\n\t\t\t\t{...filterAriaAttributes(configAria, 'button')}?.['aria-label']\n\t\t\t}\n\t\t\ton-mouseenter={handleTooltipShow(dispatch)}\n\t\t\ton-mouseleave={handleTooltipHide(dispatch)}\n\t\t\ton-focusin={handleTooltipShow(dispatch)}\n\t\t\ton-focusout={handleTooltipHide(dispatch)}\n\t\t\ton-mousedown={disabled ? (e) => e.preventDefault() : undefined}\n\t\t\ton-click={() => {\n\t\t\t\tdispatch(({properties}) => ({\n\t\t\t\t\ttype: 'NOW_BUTTON_ICONIC#CLICKED',\n\t\t\t\t\tpayload: {},\n\t\t\t\t\tshouldDispatch: !properties.disabled,\n\t\t\t\t}));\n\t\t\t}}\n\t\t\t{...filterAriaAttributes(configAria, 'button')}\n\t\t\tdisabled={disabled}\n\t\t>\n\t\t\t{animatedIcon ? (\n\t\t\t\t<now-icon-animated\n\t\t\t\t\tclassName=\"now-button-iconic-icon\"\n\t\t\t\t\ticon={animatedIcon}\n\t\t\t\t\tsize={size}\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t\t{icon ? (\n\t\t\t\t<now-icon\n\t\t\t\t\tclassName=\"now-button-iconic-icon\"\n\t\t\t\t\ticon={icon}\n\t\t\t\t\tsize={size}\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t/>\n\t\t\t) : null}\n\t\t</button>\n\t);\n};\n\n/**\n * Iconic buttons use an icon instead of text to convey an action.\n * Although similar to a standard button component, iconic buttons don’t share\n * all of the same properties. The iconic button only displays an icon and\n * cannot display other elements, such as labels.\n *\n * ```jsx\n * <now-button-iconic icon=\"envelope-fill\" variant=\"primary\" bare />\n * <now-button-iconic icon=\"envelope-fill\" variant=\"tertiary\" />\n * <now-button-iconic icon=\"envelope-outline\" />\n * ```\n *\n * @seismicElement now-button-iconic\n * @summary Iconic button is a button used to display an actionable icon.\n * @uib.label Button iconic\n * @uib.icon button-iconic\n * @uib.description Iconic buttons use an icon instead of text to convey an action.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties icon, variant, bare, size, disabled, active, hidePadding, tooltipContent, configAria, highContrast, landmark, animatedIcon\n * @uib.layout.accessibility.children tooltipContent, configAria, highContrast, landmark\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_BUTTON_ICONIC#CLICKED\n */\ncreateEnhancedElement('now-button-iconic', {\n\tproperties: {\n\t\t/**\n\t\t * Defines the icon displayed.\n\t\t * See the `now-icon` component documentation for valid inputs.\n\t\t * @type {string}\n\t\t * @uib.label Icon\n\t\t * @uib.description Name of the icon to use in the button\n\t\t * @uib.defaultValue magnifying-glass-outline\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticon: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Sets the iconic button styles.\n\t\t * @type {('primary'|'secondary'|'tertiary'|'primary-ai'|'secondary-ai'|'tertiary-ai')}\n\t\t * @uib.label Variant\n\t\t * @uib.description Color and behavior of the button\n\t\t */\n\t\tvariant: {\n\t\t\tdefault: 'secondary',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [\n\t\t\t\t\t'primary',\n\t\t\t\t\t'primary-ai',\n\t\t\t\t\t'secondary',\n\t\t\t\t\t'secondary-ai',\n\t\t\t\t\t'tertiary',\n\t\t\t\t\t'tertiary-ai',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Removes iconic button border and sets the default background to be\n\t\t * transparent.\n\t\t * @type {boolean}\n\t\t * @uib.description Removes the border and sets the default background to be transparent\n\t\t */\n\t\tbare: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Sets the iconic button size.\n\t\t * @type {('sm'|'md'|'lg')}\n\t\t * @uib.label Size\n\t\t * @uib.description Size of the button\n\t\t */\n\t\tsize: {default: 'md', schema: {type: 'string', enum: ['sm', 'md', 'lg']}},\n\t\t/**\n\t\t * Sets whether variant colors have higher contrast. Only works when `bare`\n\t\t * is `true`.\n\t\t * @type {boolean}\n\t\t */\n\t\thighContrast: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, mutes the button color and disables user click interactions.\n\t\t * @type {boolean}\n\t\t * @uib.label Disabled\n\t\t * @uib.description Disables the button by muting the colors and preventing click interactions\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * If true, sets the button to have an active state (pressed).\n\t\t * @type {boolean}\n\t\t * @uib.label Active\n\t\t * @uib.description If true, sets the button to have an active state\n\t\t */\n\t\tactive: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * By default, an iconic button's height is based on the `size` property.\n\t\t * Set to `true` to reduce the iconic button height. This ensures that the\n\t\t * iconic button only takes up the height required by its icon. Buttons\n\t\t * with this property do not align vertically with other button types.\n\t\t * Not recommended for iconic buttons without `bare` property.\n\t\t * @type {boolean}\n\t\t * @uib.label Padding\n\t\t * @uib.description Removes padding from the bare button. Note: The button won't align vertically with other buttons\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Show\",\"value\": false}, {\"label\": \"Hide\",\"value\": true}]\n\t\t * @uib.defaultValue false\n\t\t */\n\t\thidePadding: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-button. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'button' key corresponds to the inner html `<button>` in\n\t\t * now-button. See https://www.w3.org/TR/wai-aria-1.2/#button for\n\t\t * properties and accepted values.\n\t\t * @type {{ 'aria-*': string,  role: string }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\trequired: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\t\t...configAriaLabelRoleHasPopUpSchema,\n\t\t\t\t\t\t\t\trequired: ['aria-label'],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\t{...configAriaLabelRoleHasPopUpSchema, required: ['aria-label']},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Text content shown inside the tooltip. Not displayed if button is\n\t\t * disabled.\n\t\t * @type {string}\n\t\t * @uib.label Tooltip text\n\t\t * @uib.defaultValue Enter a label\n\t\t * @uib.description Text to display in a tooltip that describes the button's action\n\t\t * @uib.translatable true\n\t\t */\n\t\ttooltipContent: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this button\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * If defined, specifies the animated icon to display inside the button.\n\t\t * See the `now-icon-animated` component documentation for valid inputs.\n\t\t * For icon-only buttons, use `<now-button-iconic>` instead.\n\t\t * @type {string}\n\t\t * @uib.label Animated Icon\n\t\t * @uib.description Defines the animated icon displayed inside the button\n\t\t */\n\t\tanimatedIcon: {schema: {type: 'string'}},\n\t},\n\tview,\n\tstyles,\n\tbehaviors: [\n\t\tfocusBehavior,\n\t\ttooltipBehavior,\n\t\tanimatedIconHoverBehavior,\n\t\t{behavior: reduceMotionBehavior},\n\t\t{\n\t\t\tbehavior: rippleBehavior,\n\t\t\toptions: {target: '.now-button-iconic'},\n\t\t},\n\t\t{\n\t\t\tbehavior: cssPropertyRegistration,\n\t\t\toptions: {\n\t\t\t\tcssProperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: '--now-button--ai--gradient-start',\n\t\t\t\t\t\tsyntax: '<color>',\n\t\t\t\t\t\tinherits: false,\n\t\t\t\t\t\tinitialValue: 'transparent',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: '--now-button--ai--gradient-end',\n\t\t\t\t\t\tsyntax: '<color>',\n\t\t\t\t\t\tinherits: false,\n\t\t\t\t\t\tinitialValue: 'transparent',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t[COMPONENT_RENDERED]: ({host, properties, dispatch}) => {\n\t\t\tconst buttonEl = host.shadowRoot.querySelector('.now-button-iconic');\n\t\t\tif (properties.disabled || !properties.tooltipContent) {\n\t\t\t\tdispatch(TOOLTIP_HIDE, {target: buttonEl});\n\t\t\t\tPromise.resolve().then(() => {\n\t\t\t\t\tdelete buttonEl.dataset.tooltip;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tbuttonEl.dataset.tooltip = properties.tooltipContent;\n\t\t\t}\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the button is clicked.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the button is clicked\n\t\t */\n\t\t'NOW_BUTTON_ICONIC#CLICKED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t},\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {\n\textensionSplit,\n\tfilterAriaAttributes,\n} from '@servicenow/library-enhanced-utils';\nimport styles from './_now-button-stateful.scss';\nimport '@servicenow/now-icon';\nimport tooltipBehavior, {\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport '@servicenow/now-tooltip';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport {configAriaLabelRoleHasPopUpSchema} from '@servicenow/library-schemas';\nimport {actionTypes} from '@servicenow/ui-core';\nimport rippleBehavior from '@servicenow/behavior-ripple';\nimport reduceMotionBehavior from '@servicenow/behavior-reduce-motion';\n\nconst {COMPONENT_RENDERED} = actionTypes;\n\nconst handleTooltipShow = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_SHOW, {target: event.target});\n};\n\nconst handleTooltipHide = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_HIDE, {target: event.target});\n};\n\nconst _renderIcon = (icon, size, variant, selected) => {\n\tif (icon) {\n\t\tlet iconFilledOrOutline = icon;\n\t\tif (selected) {\n\t\t\ticonFilledOrOutline = icon.replace('-outline', '-fill');\n\t\t} else {\n\t\t\ticonFilledOrOutline = icon.replace('-fill', '-outline');\n\t\t}\n\n\t\treturn (\n\t\t\t<now-icon\n\t\t\t\tclassName=\"now-button-stateful-icon\"\n\t\t\t\ticon={iconFilledOrOutline}\n\t\t\t\tsize={size}\n\t\t\t\taria-hidden=\"true\"\n\t\t\t/>\n\t\t);\n\t}\n};\n\nconst roleBasedSelection = {\n\tbutton: 'aria-pressed',\n\tradio: 'aria-checked',\n\ttab: 'aria-selected',\n};\n\n/** @seismicView now-button-stateful */\nconst view = (state, {dispatch}) => {\n\tconst {\n\t\tconfigRole,\n\t\tvariant,\n\t\thighContrast,\n\t\thighlighted,\n\t\tsize,\n\t\ticon,\n\t\tselected,\n\t\thidePadding,\n\t\tdisabled,\n\t\tactive,\n\t\ttooltipContent,\n\t} = state.properties;\n\tlet {configAria = {}} = state.properties;\n\tconfigAria = configAria || {}; //this adds a null check\n\n\tif (configAria?.button === undefined) {\n\t\tconfigAria.button = {role: configRole};\n\t} else if (configAria?.button?.role === undefined) {\n\t\tconfigAria.button = configAria.button || {}; //this adds a null check for the `button.role`\n\t\tconfigAria.button.role = configRole;\n\t}\n\n\tconst selectedState = roleBasedSelection[configAria.button.role];\n\tif (selectedState) {\n\t\tconfigAria.button[selectedState] = selected ? 'true' : 'false';\n\t}\n\n\tconst onButtonClicked = (evt) => {\n\t\tevt.preventDefault();\n\t\tdispatch(({properties}) => ({\n\t\t\ttype: 'NOW_BUTTON_STATEFUL#SELECTED_SET',\n\t\t\tpayload: {value: !properties.selected},\n\t\t\tshouldDispatch: !properties.disabled,\n\t\t}));\n\t};\n\n\tconst shouldAnimate = !state.behaviors['reduce-motion'];\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclass={{\n\t\t\t\t'now-button-stateful': true,\n\t\t\t\t'is-selected': selected,\n\t\t\t\t'is-highlighted': highlighted,\n\t\t\t\t...extensionSplit(variant),\n\t\t\t\t['-' + size]: size,\n\t\t\t\t'high-contrast': highContrast,\n\t\t\t\t'hide-padding': hidePadding,\n\t\t\t\t'is-disabled': disabled,\n\t\t\t\t'is-active': active,\n\t\t\t\t'should-animate': shouldAnimate,\n\t\t\t}}\n\t\t\tdata-tooltip={tooltipContent}\n\t\t\tdata-ariadescribedby={\n\t\t\t\t{...filterAriaAttributes(configAria, 'button')}?.['aria-label']\n\t\t\t}\n\t\t\ton-mouseenter={handleTooltipShow(dispatch)}\n\t\t\ton-mouseleave={handleTooltipHide(dispatch)}\n\t\t\ton-focusin={handleTooltipShow(dispatch)}\n\t\t\ton-focusout={handleTooltipHide(dispatch)}\n\t\t\ton-mousedown={disabled ? (e) => e.preventDefault() : undefined}\n\t\t\t{...filterAriaAttributes(configAria, 'button')}\n\t\t\tdisabled={disabled}\n\t\t\ton-click={onButtonClicked}\n\t\t>\n\t\t\t{icon ? _renderIcon(icon, size, variant, selected) : undefined}\n\t\t</button>\n\t);\n};\n\n/**\n * The stateful button can be toggled between two states that are visually\n * distinguishable from each other. It also provides an option for displaying\n * an active or selected state.\n *\n * Currently, the stateful button only displays an icon and doesn't support\n * other elements, such as labels.\n *\n * Examples\n *\n * ```jsx\n * <now-button-stateful\n *\t\ticon=\"magnifying-glass-outline\"\n *\t\tvariant=\"primary\"\n * />\n *\n * <now-button-stateful\n *\t\ticon=\"magnifying-glass-outline\"\n *\t\tvariant=\"primary\"\n *\t\thighlighted\n *\t\tconfig-role=\"radio\"\n * />\n *\n * <now-button-stateful\n *\t\ticon=\"magnifying-glass-outline\"\n *\t\tvariant=\"tertiary\"\n *\t\thigh-contrast\n *\t\tconfig-role=\"tab\"\n * />\n *\n * <now-button-stateful\n *\t\ticon=\"magnifying-glass-outline\"\n *\t\tconfig-role=\"radio\"\n *\t\tconfig-aria={{\n *\t\t\tbutton: {'aria-label': 'Search'}\n *\t\t}}\n * />\n *\n * <now-button-stateful\n *\t\ticon=\"envelope-outline\"\n *\t\ttooltip-content=\"Email\"\n * />\n * ```\n *\n * @seismicElement now-button-stateful\n * @summary The stateful button is a button used to display an actionable icon.\n * The stateful button doesn't share all the properties of the standard button\n * component.\n * The stateful button only displays an icon and cannot display any other\n * elements, like labels.\n * The button can be toggled between an on and off state.\n * @uib.label Button stateful\n * @uib.icon button-stateful\n * @uib.description The stateful button is a button used to display an actionable icon. The stateful button doesn't share all the properties of the standard button component. The stateful button only displays an icon and cannot display any other elements, like labels.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties icon, variant, highlighted, size, selected, manageSelected, disabled, active, hidePadding, configRole, tooltipContent, configAria, highContrast, landmark\n * @uib.layout.padding.children hidePadding\n * @uib.layout.padding.icon arrow-up-down-outline\n * @uib.layout.accessibility.children configRole, tooltipContent, configAria, highContrast, landmark\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_BUTTON_STATEFUL#SELECTED_SET\n */\n\ncreateEnhancedElement('now-button-stateful', {\n\tproperties: {\n\t\t/**\n\t\t * Deprecated, use `config-aria` instead\n\t\t * Defines the aria role of the component.\n\t\t * @type {('button'|'radio'|'tab')}\n\t\t * @private\n\t\t */\n\t\tconfigRole: {\n\t\t\tdefault: 'button',\n\t\t\tschema: {type: 'string', enum: ['button', 'radio', 'tab']},\n\t\t},\n\t\t/**\n\t\t * Defines the icon displayed.\n\t\t * See the `now-icon` component documentation for valid inputs.\n\t\t * Note: By default, the `-outline` version of this icon displays,\n\t\t * even if the `-fill` version is assigned. The `-fill` version\n\t\t * shows if the button is selected by the user.\n\t\t * @type {string}\n\t\t * @uib.label Icon\n\t\t * @uib.description Defines the now-icon displayed. By default, the `-outline` version of this icon displays, even if the `-fill` version is assigned. The `-fill` version shows if the button is selected by the user.\n\t\t * @uib.defaultValue magnifying-glass-plus-outline\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticon: {required: true, schema: {type: 'string'}},\n\t\t/**\n\t\t * Indicates the selected state of the stateful button.\n\t\t * The selected style is indicated with a filled icon. When the\n\t\t * `highlighted` property is `true` a background-color is also added.\n\t\t * Maps to `aria-pressed` for a toggle button, `aria-checked` for a radio\n\t\t * button, and `aria-selected` for a tab.\n\t\t * Use `manage-selected` to override the default behavior and handle the\n\t\t * `NOW_BUTTON_STATEFUL#SELECTED_SET` action manually.\n\t\t * @type {boolean}\n\t\t * @uib.description Indicates the selected state of the stateful button.Maps to `aria-pressed` for a toggle button, `aria-checked` for a radio button, and `aria-selected` for a tab.\n\t\t */\n\t\tselected: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Enable this property to override automatic updates to the `selected` property.\n\t\t * An action with type `NOW_BUTTON_STATEFUL#SELECTED_SET` will be dispatched to request updates,\n\t\t * which should be handled by the parent or application.\n\t\t * @type {boolean}\n\t\t * @uib.description Enable this property to override automatic updates to the selected property. Use the selected set event to intercept the requested change and handle it manually.\n\t\t */\n\t\tmanageSelected: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Sets the stateful button styles.\n\t\t * @type {('primary'|'primary-selection'|'secondary'|'secondary-selection'|'tertiary'|'tertiary-selection')}\n\t\t * @uib.label Variant\n\t\t * @uib.description Color and behavior of the button.\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Primary\", \"value\": \"primary\"}, {\"label\": \"Secondary\", \"value\": \"secondary\"}, {\"label\": \"Tertiary\", \"value\": \"tertiary\"}, {\"label\": \"Primary (selection)\", \"value\": \"primary-selection\"}, {\"label\": \"Secondary (selection)\", \"value\": \"secondary-selection\"}, {\"label\": \"Tertiary (selection)\", \"value\": \"tertiary-selection\"}, {\"label\": \"Primary (highlighted)\", \"value\": \"primary-highlighted\"}, {\"label\": \"Secondary (highlighted)\", \"value\": \"secondary-highlighted\"}]\n\t\t * @uib.defaultValue secondary\n\t\t */\n\t\tvariant: {\n\t\t\tdefault: 'secondary',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [\n\t\t\t\t\t'primary',\n\t\t\t\t\t'primary-selection',\n\t\t\t\t\t'secondary',\n\t\t\t\t\t'secondary-selection',\n\t\t\t\t\t'tertiary',\n\t\t\t\t\t'tertiary-selection',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the button size.\n\t\t * @type {('sm'|'md'|'lg')}\n\t\t * @uib.label Size\n\t\t * @uib.description Size of the button\n\t\t */\n\t\tsize: {default: 'md', schema: {type: 'string', enum: ['sm', 'md', 'lg']}},\n\t\t/**\n\t\t * Sets the style to add a color background when selected.\n\t\t * @type {boolean}\n\t\t */\n\t\thighlighted: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Sets the style to increase the contrast when a stateful button is\n\t\t * displayed on a colored background.\n\t\t * @type {boolean}\n\t\t */\n\t\thighContrast: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * By default, a stateful button's height is based on the `size` property.\n\t\t * Set to `true` to reduce this height so that the stateful button only\n\t\t * occupies the height required by its icon. Note: Buttons with this\n\t\t * property don't align vertically with other button types.\n\t\t * @type {boolean}\n\t\t * @uib.label Padding\n\t\t * @uib.description Removes padding from the bare button. Note that the button won't align vertically with other buttons\n\t\t * @uib.fieldType choice\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Show\", \"value\": false}, {\"label\": \"Hide\",\"value\": true}]\n\t\t * @uib.defaultValue false\n\t\t */\n\t\thidePadding: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * When true, mutes the button color and prevents user-click interactions.\n\t\t * @type {boolean}\n\t\t * @uib.label Disabled\n\t\t * @uib.description Disables the button by muting the colors and preventing click interactions\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * If true, sets the button to have an active state (pressed).\n\t\t * @type {boolean}\n\t\t * @uib.label Active\n\t\t * @uib.description If true, sets the button to have an active state\n\t\t */\n\t\tactive: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-button-stateful. The value of each key is an object that contains an\n\t\t * ARIA property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'button' key corresponds to the inner html `<button>` in\n\t\t * now-button-stateful.\n\t\t * Set the \"role\" attribute to specify the aria role of the component.\n\t\t * Set the role to \"button\" for a toggle button.\n\t\t * Set the role to \"radio\" for a radio button.\n\t\t * Set the role to \"tab\" for a button used as a tab.\n\t\t * @type {{ button: { 'aria-*': string, role: string }}}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\trequired: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\t\t...configAriaLabelRoleHasPopUpSchema,\n\t\t\t\t\t\t\t\trequired: ['aria-label'],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\t{...configAriaLabelRoleHasPopUpSchema, required: ['aria-label']},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Text content shown inside the tooltip. Not displayed if button is\n\t\t * disabled.\n\t\t * @type {string}\n\t\t * @uib.label Tooltip text\n\t\t * @uib.defaultValue Start search\n\t\t * @uib.description Text to display in a tooltip when hovering over the button\n\t\t * @uib.translatable true\n\t\t */\n\t\ttooltipContent: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this button\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t},\n\tview,\n\tstyles,\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the user toggles the selected status of the button.\n\t\t * Set the `manage-selected` property to override the default behavior and\n\t\t * handle this action manually.\n\t\t * @type {{value: boolean}}\n\t\t * @uib.description Dispatched when the user toggles the selected status of the button\n\t\t */\n\t\t'NOW_BUTTON_STATEFUL#SELECTED_SET': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tvalue: {type: 'boolean'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n\tbehaviors: [\n\t\tfocusBehavior,\n\t\ttooltipBehavior,\n\t\t{behavior: reduceMotionBehavior},\n\t\t{\n\t\t\tbehavior: rippleBehavior,\n\t\t\toptions: {target: '.now-button-stateful'},\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t[COMPONENT_RENDERED]: ({host, properties, dispatch}) => {\n\t\t\tconst buttonEl = host.shadowRoot.querySelector('.now-button-stateful');\n\t\t\tif (properties.disabled || !properties.tooltipContent) {\n\t\t\t\tdispatch(TOOLTIP_HIDE, {target: buttonEl});\n\t\t\t\tPromise.resolve().then(() => {\n\t\t\t\t\tdelete buttonEl.dataset.tooltip;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tbuttonEl.dataset.tooltip = properties.tooltipContent;\n\t\t\t}\n\t\t},\n\t},\n});\n","import {createCustomElement} from '@servicenow/ui-core';\nimport {\n\tfilterAriaAttributes,\n\tgetAnimationTimingAndDuration,\n} from '@servicenow/library-enhanced-utils';\nimport '@servicenow/now-icon';\nimport tooltipBehavior, {\n\tTOOLTIP_SHOW,\n\tTOOLTIP_HIDE,\n} from '@servicenow/behavior-tooltip';\nimport '@servicenow/now-tooltip';\nimport styles from './_now-button-circular.scss';\nimport {configAriaLabelRoleHasPopUpSchema} from '@servicenow/library-schemas';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {animatedIconHoverBehavior} from './behaviors/index.js';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport rippleBehavior from '@servicenow/behavior-ripple';\nimport reduceMotionBehavior from '@servicenow/behavior-reduce-motion';\nimport cssPropertyRegistrationBehavior from '@servicenow/behavior-css-property-registration';\n\nconst {COMPONENT_RENDERED} = actionTypes;\n\nexport const SCALE_SHRINK = 1;\nexport const SCALE_GROW = 1.1;\n\nconst handleTooltipShow = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_SHOW, {target: event.target});\n};\n\nconst handleTooltipHide = (dispatch) => (event) => {\n\tdispatch(TOOLTIP_HIDE, {target: event.target});\n};\n\nconst handleClick = (dispatch) => {\n\tdispatch(({properties}) => ({\n\t\ttype: 'NOW_BUTTON_CIRCULAR#CLICKED',\n\t\tpayload: {},\n\t\tshouldDispatch: !properties.disabled,\n\t}));\n};\n\nexport const handleScaleAnimation = (element, scale, durationName, state) => {\n\tif (!element || state.behaviors['reduce-motion']) return null;\n\n\tconst {duration, easing} = getAnimationTimingAndDuration(\n\t\telement,\n\t\tdurationName,\n\t);\n\n\treturn element.animate([{transform: `scale(${scale})`}], {\n\t\tduration,\n\t\teasing,\n\t\tfill: 'forwards',\n\t});\n};\n\nconst handleMouseDown = (host, state) => {\n\tconst buttonEl = host.shadowRoot.querySelector('.now-button-circular');\n\tconst iconEl = host.shadowRoot.querySelector('.now-button-circular-icon');\n\n\tif (!buttonEl || buttonEl.classList.contains('is-disabled')) return;\n\n\tbuttonEl.classList.add('animating');\n\n\tconst shrinkAnimation = handleScaleAnimation(\n\t\tbuttonEl,\n\t\tSCALE_SHRINK,\n\t\t'--now-button-circular--duration--faster',\n\t\tstate,\n\t);\n\thandleScaleAnimation(\n\t\ticonEl,\n\t\tSCALE_SHRINK,\n\t\t'--now-button-circular--duration--faster',\n\t\tstate,\n\t);\n\n\tshrinkAnimation.onfinish = () => {\n\t\tconst growAnimation = handleScaleAnimation(\n\t\t\tbuttonEl,\n\t\t\tSCALE_GROW,\n\t\t\t'--now-motion--duration',\n\t\t\tstate,\n\t\t);\n\t\thandleScaleAnimation(\n\t\t\ticonEl,\n\t\t\tSCALE_GROW,\n\t\t\t'--now-button-circular--duration--faster',\n\t\t\tstate,\n\t\t);\n\n\t\tgrowAnimation.onfinish = () => {\n\t\t\tbuttonEl.classList.remove('animating');\n\n\t\t\tif (buttonEl.classList.contains('should-shrink')) {\n\t\t\t\tbuttonEl.classList.remove('should-shrink');\n\t\t\t\thandleScaleAnimation(\n\t\t\t\t\tbuttonEl,\n\t\t\t\t\tSCALE_SHRINK,\n\t\t\t\t\t'--now-button-circular--duration--faster',\n\t\t\t\t\tstate,\n\t\t\t\t);\n\t\t\t\thandleScaleAnimation(\n\t\t\t\t\ticonEl,\n\t\t\t\t\tSCALE_SHRINK,\n\t\t\t\t\t'--now-button-circular--duration--faster',\n\t\t\t\t\tstate,\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\t};\n};\n\nconst handleAnimationStart = (host, state) => {\n\tconst buttonEl = host.shadowRoot.querySelector('.now-button-circular');\n\tconst iconEl = host.shadowRoot.querySelector('.now-button-circular-icon');\n\n\tif (\n\t\t!buttonEl ||\n\t\tbuttonEl.classList.contains('is-disabled') ||\n\t\tbuttonEl.classList.contains('animating')\n\t)\n\t\treturn;\n\n\thandleScaleAnimation(\n\t\tbuttonEl,\n\t\tSCALE_GROW,\n\t\t'--now-button-circular--duration--faster',\n\t\tstate,\n\t);\n\thandleScaleAnimation(\n\t\ticonEl,\n\t\tSCALE_GROW,\n\t\t'--now-button-circular--duration--faster',\n\t\tstate,\n\t);\n};\n\nconst handleAnimationEnd = (host, state) => {\n\tconst buttonEl = host.shadowRoot.querySelector('.now-button-circular');\n\tconst iconEl = host.shadowRoot.querySelector('.now-button-circular-icon');\n\n\tif (!buttonEl || buttonEl.classList.contains('is-disabled')) return;\n\n\tif (buttonEl.classList.contains('animating')) {\n\t\tbuttonEl.classList.add('should-shrink');\n\t} else {\n\t\thandleScaleAnimation(\n\t\t\tbuttonEl,\n\t\t\tSCALE_SHRINK,\n\t\t\t'--now-button-circular--duration--faster',\n\t\t\tstate,\n\t\t);\n\t\thandleScaleAnimation(\n\t\t\ticonEl,\n\t\t\tSCALE_SHRINK,\n\t\t\t'--now-button-circular--duration--faster',\n\t\t\tstate,\n\t\t);\n\t}\n};\n\nconst handleKeyDown = (event, host, state) => {\n\tif (!event || typeof event.key !== 'string' || !host) return;\n\tconst buttonEl = host.shadowRoot.querySelector('.now-button-circular');\n\tif (!buttonEl || buttonEl.classList.contains('is-disabled')) return;\n\tif (event.key === 'Enter' || event.key === ' ') {\n\t\thandleMouseDown(host, state);\n\t}\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {\n\t\tdisabled,\n\t\tactive,\n\t\thasShadow,\n\t\ticon,\n\t\ttooltipContent,\n\t\tconfigAria,\n\t\tanimatedIcon,\n\t\tvariant,\n\t} = state.properties;\n\n\tconst shouldAnimate = !state.behaviors['reduce-motion'];\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclass={{\n\t\t\t\t'now-button-circular': true,\n\t\t\t\t'is-disabled': disabled,\n\t\t\t\t'is-active': active,\n\t\t\t\t'has-shadow': hasShadow,\n\t\t\t\t['-' + variant]: variant,\n\t\t\t\t'should-animate': shouldAnimate,\n\t\t\t}}\n\t\t\tdata-tooltip={tooltipContent}\n\t\t\tdata-ariadescribedby={\n\t\t\t\t{...filterAriaAttributes(configAria, 'button')}?.['aria-label']\n\t\t\t}\n\t\t\ton-mouseenter={handleTooltipShow(dispatch)}\n\t\t\ton-mouseleave={handleTooltipHide(dispatch)}\n\t\t\ton-focusin={handleTooltipShow(dispatch)}\n\t\t\ton-focusout={handleTooltipHide(dispatch)}\n\t\t\ton-mousedown={disabled ? (e) => e.preventDefault() : undefined}\n\t\t\t{...filterAriaAttributes(configAria, 'button')}\n\t\t\tdisabled={disabled}\n\t\t\ton-click={() => handleClick(dispatch)}\n\t\t>\n\t\t\t<slot name=\"custom-icon\">\n\t\t\t\t{animatedIcon ? (\n\t\t\t\t\t<now-icon-animated\n\t\t\t\t\t\tclassName=\"now-button-circular-icon\"\n\t\t\t\t\t\ticon={animatedIcon}\n\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t/>\n\t\t\t\t) : undefined}\n\t\t\t\t{icon ? (\n\t\t\t\t\t<now-icon\n\t\t\t\t\t\tclassName=\"now-button-circular-icon\"\n\t\t\t\t\t\ticon={icon}\n\t\t\t\t\t\tsize=\"lg\"\n\t\t\t\t\t/>\n\t\t\t\t) : undefined}\n\t\t\t</slot>\n\t\t</button>\n\t);\n};\n\n/**\n * Circular buttons use a circle container to display\n * an actionable icon and do not include a label. Always include\n * a `config-aria` property with `aria-label` set to denote its relationship to other elements\n * or describe its action.\n *\n * ```jsx\n * <now-button-circular icon=\"chat-fill\" />\n * <now-button-circular icon=\"chat-fill\" has-shadow />\n * <now-button-circular icon=\"chat-fill\" disabled />\n * <now-button-circular icon=\"ai-sparkle-fill\" variant=\"ai\" />\n * ```\n *\n * @seismicElement now-button-circular\n * @summary An actionable icon in a circular format.\n * @uib.label Button circular\n * @uib.icon button-circular\n * @uib.description An actionable icon in a circular format.\n * @uib.category primitives\n * @uib.associatedTypes global.core\n * @uib.properties icon, hasShadow, disabled, active, tooltipContent, configAria, landmark, animatedIcon, variant\n * @uib.layout.accessibility.children tooltipContent, configAria, landmark\n * @uib.layout.accessibility.icon accessibility-outline\n * @uib.actions NOW_BUTTON_CIRCULAR#CLICKED\n */\ncreateCustomElement('now-button-circular', {\n\tproperties: {\n\t\t/**\n\t\t * Defines the icon to display inside the button.\n\t\t * See the `now-icon` component documentation for valid inputs.\n\t\t * @type {string}\n\t\t * @uib.label Icon\n\t\t * @uib.defaultValue chat-fill\n\t\t * @uib.fieldType icon\n\t\t */\n\t\ticon: {schema: {type: 'string'}},\n\t\t/**\n\t\t * When true, mutes the button color and disables user interactions.\n\t\t * @type {boolean}\n\t\t * @uib.label Disabled\n\t\t * @uib.description When true, mutes the button color and disables user interactions\n\t\t */\n\t\tdisabled: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * If true, sets the button to have an active state (pressed).\n\t\t * @type {boolean}\n\t\t * @uib.label Active\n\t\t * @uib.description If true, sets the button to have an active state\n\t\t */\n\t\tactive: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-button. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s that are set on the specified element.\n\t\t * The 'button' key corresponds to the inner html `<button>` in\n\t\t * now-button. See https://www.w3.org/TR/wai-aria-1.2/#button for\n\t\t * properties and accepted values.\n\t\t * @type {{ 'aria-*': string, role: string }}\n\t\t * @uib.label ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\toneOf: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\t\t...configAriaLabelRoleHasPopUpSchema,\n\t\t\t\t\t\t\t\trequired: ['aria-label'],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tadditionalProperties: false,\n\t\t\t\t\t},\n\t\t\t\t\t{...configAriaLabelRoleHasPopUpSchema, required: ['aria-label']},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * When true, adds a box shadow to the button.\n\t\t * @type {boolean}\n\t\t * @uib.label Show Shadow\n\t\t * @uib.description Select to add a box shadow to the button\n\t\t */\n\t\thasShadow: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Includes this component as a target for the Now-Trigger-Library's\n\t\t * Landmark Focus feature.\n\t\t * @type {boolean}\n\t\t * @uib.label Landmark\n\t\t * @uib.description Allow the Landmark Focus keyboard shortcut to focus this button\n\t\t */\n\t\tlandmark: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * Text content shown inside the tooltip. Not displayed if button is\n\t\t * disabled.\n\t\t * @type {string}\n\t\t * @uib.label Tooltip text\n\t\t * @uib.defaultValue Open chat window\n\t\t * @uib.description Text shown inside the tooltip.\n\t\t * @uib.translatable true\n\t\t */\n\t\ttooltipContent: {schema: {type: 'string'}},\n\t\t/**\n\t\t * If defined, specifies the animated icon to display inside the button.\n\t\t * See the `now-icon-animated` component documentation for valid inputs.\n\t\t * @type {string}\n\t\t * @uib.label Animated Icon\n\t\t * @uib.description Defines the animated icon displayed inside the button\n\t\t */\n\t\tanimatedIcon: {schema: {type: 'string'}},\n\t\t/**\n\t\t * Sets the button style, including color and interaction behavior.\n\t\t * @type {('initial'|'ai')}\n\t\t * @uib.label Variant\n\t\t * @uib.description Sets the button style\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Initial\", \"value\": \"initial\"}, {\"label\": \"AI\", \"value\": \"ai\"}]\n\t\t */\n\t\tvariant: {\n\t\t\tdefault: 'initial',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['initial', 'ai'],\n\t\t\t},\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the button is clicked.\n\t\t * @type {{}}\n\t\t * @uib.description Dispatched when the button is clicked\n\t\t */\n\t\t'NOW_BUTTON_CIRCULAR#CLICKED': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t},\n\t\t},\n\t},\n\tbehaviors: [\n\t\tfocusBehavior,\n\t\ttooltipBehavior,\n\t\tanimatedIconHoverBehavior,\n\t\t{behavior: reduceMotionBehavior},\n\t\t{\n\t\t\tbehavior: cssPropertyRegistrationBehavior,\n\t\t\toptions: {\n\t\t\t\tcssProperties: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: '--now-button--ai--gradient-start',\n\t\t\t\t\t\tsyntax: '<color>',\n\t\t\t\t\t\tinherits: false,\n\t\t\t\t\t\tinitialValue: 'transparent',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: '--now-button--ai--gradient-end',\n\t\t\t\t\t\tsyntax: '<color>',\n\t\t\t\t\t\tinherits: false,\n\t\t\t\t\t\tinitialValue: 'transparent',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tbehavior: rippleBehavior,\n\t\t\toptions: {\n\t\t\t\ttarget: '.now-button-circular',\n\t\t\t\tmaxScale: 1,\n\t\t\t\tintroDurationToken: '--now-motion--duration--slower',\n\t\t\t\tintroEaseToken: '--now-motion--ease--bounce',\n\t\t\t\toutroEaseToken: '--now-motion--ease--focus-standard',\n\t\t\t},\n\t\t},\n\t],\n\tview,\n\tstyles,\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['mousedown'],\n\t\t\teffect: ({host, state}) => handleMouseDown(host, state),\n\t\t},\n\t\t{\n\t\t\tevents: ['mouseenter'],\n\t\t\teffect: ({host, state}) => handleAnimationStart(host, state),\n\t\t},\n\t\t{\n\t\t\tevents: ['mouseleave'],\n\t\t\teffect: ({host, state}) => handleAnimationEnd(host, state),\n\t\t},\n\t\t{\n\t\t\tevents: ['focusin'],\n\t\t\teffect: ({host, state}) => handleAnimationStart(host, state),\n\t\t},\n\t\t{\n\t\t\tevents: ['focusout'],\n\t\t\teffect: ({host, state}) => handleAnimationEnd(host, state),\n\t\t},\n\t\t{\n\t\t\tevents: ['keydown'],\n\t\t\teffect: function (context) {\n\t\t\t\tconst event = context.action?.meta?.event;\n\t\t\t\tconst host = context.host;\n\t\t\t\tconst state = context.state;\n\t\t\t\thandleKeyDown(event, host, state);\n\t\t\t},\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t[COMPONENT_RENDERED]: ({host, properties, dispatch}) => {\n\t\t\tconst buttonEl = host.shadowRoot.querySelector('.now-button-circular');\n\t\t\tif (properties.disabled || !properties.tooltipContent) {\n\t\t\t\tdispatch(TOOLTIP_HIDE, {target: buttonEl});\n\t\t\t\tPromise.resolve().then(() => {\n\t\t\t\t\tdelete buttonEl.dataset.tooltip;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tbuttonEl.dataset.tooltip = properties.tooltipContent;\n\t\t\t}\n\t\t},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Content placed in the `custom-icon` slot appears inside\n\t\t * the button body, taking the place of the `icon`.\n\t\t * @uib.hidePlaceholder true\n\t\t */\n\t\t'custom-icon': {},\n\t},\n});\n","import './now-button';\nimport './now-button-bare';\nimport './now-button-iconic';\nimport './now-button-stateful';\nimport './now-button-circular';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","export const AncestorMap = new Map();\nexport const ActionTypes = {SHOW: 'show', HIDE: 'hide'};\n","import {ActionTypes, AncestorMap} from './constants';\n\nconst BODY_TAG = 'BODY';\nconst ARIA_HIDDEN_ATTR = 'aria-hidden';\nconst HIDDEN_ATTR = 'hidden';\nconst INVISIBLE_TAGNAMES = ['SCRIPT', 'LINK', 'STYLE', 'TEMPLATE'];\nconst LANDMARK_TAGNAMES = [\n\t'ARTICLE',\n\t'ASIDE',\n\t'MAIN',\n\t'NAV',\n\t'SECTION',\n\t'FORM',\n];\nconst LANDMARK_ROLES = [\n\t'complementary',\n\t'contentinfo',\n\t'form',\n\t'banner',\n\t'main',\n\t'navigation',\n\t'region',\n];\n\nconst isInvisibleNode = (tagName) => INVISIBLE_TAGNAMES.indexOf(tagName) > -1;\n\nconst isLandmark = (element) => {\n\treturn (\n\t\tLANDMARK_TAGNAMES.indexOf(element.tagName) > -1 ||\n\t\tLANDMARK_ROLES.indexOf(element.role) > -1\n\t);\n};\n\nconst isAriaLiveRegion = (element) => element.hasAttribute('aria-live');\n\n/**\n * Sets a given element with `aria-hidden='true'`. If it\n * already has this attribute/value pair or has the `hidden`\n * attribute, a data attribute is set to ignore it when\n * the node needs to be unhidden later.\n * @param {HTMLElement} element\n */\nconst hideElement = (element) => {\n\tif (element.getAttribute(ARIA_HIDDEN_ATTR) === 'true') {\n\t\telement.dataset.behaviorModalIgnore = true;\n\t} else if (!element.hasAttribute(HIDDEN_ATTR)) {\n\t\telement.setAttribute(ARIA_HIDDEN_ATTR, 'true');\n\t}\n};\n\n/**\n * Removes a given element's `aria-hidden` attribute. If\n * a `data.behaviorModalIgnore` was added previously, it's removed.\n * @param {HTMLElement} element\n */\nconst showElement = (element) => {\n\tif (element.dataset.behaviorModalIgnore) {\n\t\tdelete element.dataset.behaviorModalIgnore;\n\t} else if (element.getAttribute(ARIA_HIDDEN_ATTR) === 'true') {\n\t\telement.removeAttribute(ARIA_HIDDEN_ATTR);\n\t}\n};\n\n/**\n * If true, the given `siblingNode` is a sibling to `node`.\n * It filters out invisible nodes. e.g. script, style, template\n * It also filters out ARIA live regions, which need to be visible to screen readers.\n * @param {Node} node\n * @param {Node} siblingNode\n * @returns {boolean}\n */\nconst isValidSibling = (node, siblingNode) => {\n\tif (\n\t\tsiblingNode.nodeType !== Node.ELEMENT_NODE ||\n\t\tsiblingNode === node ||\n\t\tisInvisibleNode(siblingNode.tagName) ||\n\t\tisAriaLiveRegion(siblingNode)\n\t) {\n\t\treturn false;\n\t}\n\n\treturn true;\n};\n\n/**\n * Returns an array of HTMLElement node siblings in the\n * given element's tree context, excluding the element.\n * @param {(HTMLElement|DocumentFragment)} element\n * @returns {HTMLElement[]}\n */\nconst getElementSiblings = (prevNode, node) => {\n\treturn Array.from(node.childNodes).filter((siblingNode) =>\n\t\tisValidSibling(prevNode, siblingNode),\n\t);\n};\n\n/**\n * If the node's parent has a shadow root, then the\n * current node is slotted. Traverse its corresponding\n * shadow root and hide or show its sibling shadow nodes.\n * @param {string} action - one of 'show' or 'hide'\n * @param {HTMLElement} node\n * @param {string} id - id of the origin host element\n */\nconst updateShadowRootElements = (node, action, id, slottedNodes) => {\n\tif (!node) return;\n\n\tconst parent = node.parentNode;\n\n\tif (parent && parent.shadowRoot) {\n\t\tconst shadowRoot = parent.shadowRoot;\n\t\tconst slot = node.assignedSlot;\n\n\t\tupdateElements(action, null, slot, id, shadowRoot, true, slottedNodes);\n\t}\n};\n\n/**\n * If an ancestor of the modal is a landmark element, we\n * need to set its role to 'none' to prevent focus from\n * reaching the landmark.\n * If the element has a `role` defined, we'll store it\n * in a data attribute.\n * @param {HTMLElement} element\n */\nconst unsetAncestorLandmark = (element) => {\n\tif (element.nodeType !== Node.ELEMENT_NODE || !isLandmark(element)) return;\n\n\tconst currentRole = element.getAttribute('role');\n\tif (currentRole) {\n\t\telement.dataset.behaviorModalAncestorRole = currentRole;\n\t} else {\n\t\telement.dataset.behaviorModalAncestorRole = true;\n\t}\n\n\telement.setAttribute('role', 'none');\n};\n\n/**\n * If an ancestor was flagged with a data attribute, add its\n * value back to the element role and remove the data attribute.\n * Otherwise,\n * @param {HTMLElement} element\n */\nconst restoreAncestorLandmark = (element) => {\n\tif (element.nodeType !== Node.ELEMENT_NODE) return;\n\n\tconst role = element.dataset.behaviorModalAncestorRole;\n\tif (role) {\n\t\tif (role !== 'true') {\n\t\t\telement.setAttribute('role', role);\n\t\t} else {\n\t\t\telement.removeAttribute('role');\n\t\t}\n\t\tdelete element.dataset.behaviorModalAncestorRole;\n\t}\n};\n\n/**\n * Returns a boolean indicating if a given ancestor node\n * matches the domLimit.\n * @param {Node} node\n * @param {(Node|string)} domLimit\n * @returns {boolean}\n */\nconst isDomLimit = (node, domLimit) => {\n\tconst limitReached =\n\t\ttypeof domLimit === 'string' && node.nodeType === Node.ELEMENT_NODE\n\t\t\t? node.matches(domLimit)\n\t\t\t: node === domLimit;\n\n\treturn limitReached || node.tagName === BODY_TAG;\n};\n\n/**\n * Uses the starting node to walk upwards through the tree, showing\n * or hiding all sibling nodes (including those in shadow roots).\n * @param {string} action - one of 'show' or 'hide'\n * @param {(HTMLElement|ShadowRoot)} prevNode\n * @param {(HTMLElement|ShadowRoot)} node\n * @param {string} id - id of the origin host element\n * @param {(Node|string)} domLimit\n * @param {boolean} isTreeOrigin - flag given if the current node is the originating host\n */\nexport const updateElements = (\n\taction,\n\tprevNode,\n\tnode,\n\tid,\n\tdomLimit,\n\tisTreeOrigin,\n\tslottedNodes,\n) => {\n\tconst parentNode = node.parentNode || node.host;\n\tlet limitReached = false;\n\n\t// There's no prevNode which means we're at the host or\n\t// at an element slot.\n\tif (isTreeOrigin) {\n\t\t// Move on to the next parent element\n\t\treturn updateElements(\n\t\t\taction,\n\t\t\tnode,\n\t\t\tparentNode,\n\t\t\tid,\n\t\t\tdomLimit,\n\t\t\tfalse,\n\t\t\tslottedNodes,\n\t\t);\n\t}\n\n\t// If a domLimit was given OR we are at the body element, we shouldn't\n\t// update any further.\n\tif (isDomLimit(node, domLimit)) {\n\t\tlimitReached = true;\n\t}\n\n\t// Get all sibling elements, excluding `node`\n\tconst elementSiblings = getElementSiblings(prevNode, node);\n\n\t// It's possible the current node is in a slotted context,\n\t// e.g. a modal slotted into a modal, or something similar.\n\t//\n\t// As a result we need to traverse its corresponding shadow root\n\t// and hide siblings up through the shadow root itself.\n\tupdateShadowRootElements(\n\t\tprevNode || elementSiblings[0],\n\t\taction,\n\t\tid,\n\t\tslottedNodes,\n\t);\n\n\t// Loop through all the siblings and hide them from screen readers.\n\tlet length = elementSiblings.length;\n\tif (action === ActionTypes.HIDE) {\n\t\tunsetAncestorLandmark(node);\n\t\tAncestorMap.get(id).push(node);\n\t\twhile (--length >= 0) {\n\t\t\tconst element = elementSiblings[length];\n\t\t\tconst scid = element.getAttribute('slot-content-id') || '-';\n\t\t\tif (!slottedNodes || !slottedNodes.has(scid)) hideElement(element);\n\t\t}\n\t} else if (action === ActionTypes.SHOW) {\n\t\trestoreAncestorLandmark(node);\n\t\twhile (--length >= 0) {\n\t\t\tshowElement(elementSiblings[length]);\n\t\t}\n\t}\n\n\t// Recursively update all siblings to our direct ancestor nodes.\n\t// Stops at the body element or the defined domLimit\n\tif (!limitReached) {\n\t\tupdateElements(action, node, parentNode, id, domLimit, false, slottedNodes);\n\t}\n};\n","import {AncestorMap} from './constants';\n\n/**\n * Creates a origin ref node alongside the host, so\n * in case the host is removed from the DOM while `opened`\n * is set, we can undo the DOM changes caused by this behavior.\n * @param {HTMLElement} hostEl\n * @param {Function} updateState\n */\nconst addTreeOriginNode = (hostEl, updateState) => {\n\tconst treeOriginRef = document.createElement('div');\n\ttreeOriginRef.id = 'modal-origin-' + hostEl.nowId;\n\thostEl.parentNode.insertBefore(treeOriginRef, hostEl);\n\tupdateState({\n\t\toperation: 'set',\n\t\tpath: 'treeOriginRef',\n\t\tvalue: treeOriginRef,\n\t\tshouldRender: false,\n\t});\n\treturn treeOriginRef;\n};\n\n/**\n * Removes the backup node and removes the ref from state.\n * @param {HTMLElement} treeOriginRef\n * @param {Function} updateState\n */\nconst removeTreeOriginNode = (treeOriginRef, updateState) => {\n\t// The dummy node may have already been removed\n\t// if a direct parent element was removed\n\tif (treeOriginRef.isConnected) {\n\t\ttreeOriginRef.parentNode.removeChild(treeOriginRef);\n\t}\n\n\tupdateState({\n\t\toperation: 'set',\n\t\tpath: 'treeOriginRef',\n\t\tvalue: null,\n\t\tshouldRender: false,\n\t});\n};\n\nconst removeArtifacts = (treeOriginRef, updateState, nowId) => {\n\tremoveTreeOriginNode(treeOriginRef, updateState);\n\tAncestorMap.delete(nowId);\n};\n\nexport {addTreeOriginNode, removeArtifacts};\n","import {actionTypes} from '@servicenow/ui-core';\nimport {updateElements} from './utils/update-elements';\nimport {AncestorMap, ActionTypes} from './utils/constants';\nimport {addTreeOriginNode, removeArtifacts} from './utils/tree-origin-node';\n\nconst {\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_DOM_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n} = actionTypes;\nconst BEHAVIOR_NAME = 'modal';\nconst WATCH_PROPERTY_NAME_DEFAULT = 'opened';\n\n// Debug in development:\n// window.ancestors = AncestorMap;\n\n/**\n * Checks for the nearest DOM-connected ancestor\n * to the host if it happened to be removed from the\n * DOM while opened. This way we can restore the DOM\n * to its original state even if one of its direct\n * ancestors has been removed.\n * NOTE: This will never reach the document body.\n * @param {string} id - id of the origin host element\n * @returns {HTMLElement}\n */\nconst getNearestConnectedAncestor = (id) => {\n\tconst ancestors = AncestorMap.get(id);\n\n\tif (ancestors) {\n\t\tfor (const node of ancestors) {\n\t\t\tif (node.isConnected) return node;\n\t\t}\n\t}\n\n\treturn null;\n};\n\nlet slottedNodes = {};\nlet originalBodyOverflow;\nlet activeModalCount = 0;\n\n/**\n * Updates the overflow style on the body element\n * @param {boolean} isHidden - Whether to set overflow to hidden\n */\nconst updateBodyOverflow = (isHidden) => {\n\tif (isHidden) {\n\t\tactiveModalCount++;\n\n\t\tif (activeModalCount === 1) {\n\t\t\toriginalBodyOverflow = document.body.style.overflow;\n\t\t\tdocument.body.style.overflow = 'hidden';\n\t\t}\n\t} else {\n\t\tactiveModalCount = Math.max(0, activeModalCount - 1);\n\n\t\tif (activeModalCount === 0) {\n\t\t\tdocument.body.style.overflow = originalBodyOverflow || '';\n\t\t}\n\t}\n};\n\nconst setSlotId = (compId, el) => {\n\tconst uid = Math.round(Math.random() * 100000);\n\tel.setAttribute('slot-content-id', uid);\n\tslottedNodes[compId].add(uid.toString());\n};\n\nconst setNodes = (compId, slots) => {\n\tif (!slottedNodes[compId]) slottedNodes[compId] = new Set();\n\tif (slots) {\n\t\tslots.forEach((slot) => {\n\t\t\tconst nodes = slot.assignedNodes({flatten: true});\n\t\t\tfor (let n in nodes) {\n\t\t\t\tif (!nodes[n].getAttribute('slot-content-id')) {\n\t\t\t\t\tsetSlotId(compId, nodes[n]);\n\t\t\t\t}\n\t\t\t\tconst children = nodes[n].childNodes;\n\t\t\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\t\t\tif (children[i].nodeName === 'SLOT') {\n\t\t\t\t\t\tconst n = children[i].assignedNodes({flatten: true});\n\t\t\t\t\t\tsetSlotId(compId, n[0]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nconst initSlots = (hostEl) => {\n\tconst cid = hostEl.getAttribute('component-id');\n\tconst slots = hostEl.shadowRoot.querySelectorAll('slot');\n\tsetNodes(cid, slots);\n};\n\n/**\n * Kicks off hiding page elements from screen readers.\n * @param {HTMLElement} hostEl\n * @param {string} id - id of the origin host element\n */\nconst hidePageContent = (hostEl, id, updateState, limit) => {\n\tconst treeOriginRef = addTreeOriginNode(hostEl, updateState);\n\tconst cid = hostEl.getAttribute('component-id');\n\tif (!AncestorMap.has(id)) {\n\t\tAncestorMap.set(id, [treeOriginRef]);\n\t}\n\tupdateElements(\n\t\tActionTypes.HIDE,\n\t\tnull,\n\t\thostEl,\n\t\tid,\n\t\tlimit,\n\t\ttrue,\n\t\tslottedNodes[cid],\n\t);\n};\n\nexport default {\n\tname: BEHAVIOR_NAME,\n\tinitialState: {treeOriginRef: null},\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_READY]: ({host, action, properties, updateState}) => {\n\t\t\tconst hostEl = action.meta.hoistHost || host;\n\t\t\tconst cid = hostEl.getAttribute('component-id');\n\t\t\tconst {options} = action.payload;\n\t\t\tconst watchPropertyName =\n\t\t\t\toptions.watchPropertyName || WATCH_PROPERTY_NAME_DEFAULT;\n\t\t\tif (properties[watchPropertyName]) {\n\t\t\t\tconst slots = hostEl.shadowRoot.querySelectorAll('slot');\n\t\t\t\tif (slots.length > 0) setNodes(cid, slots);\n\t\t\t\tconst {nowId} = properties;\n\t\t\t\thidePageContent(hostEl, nowId, updateState, options.limit);\n\t\t\t} else {\n\t\t\t\tinitSlots(hostEl);\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({\n\t\t\tupdateState,\n\t\t\taction,\n\t\t\thost,\n\t\t\tproperties: {nowId},\n\t\t\tstate: {treeOriginRef},\n\t\t}) => {\n\t\t\tconst {name, value, options} = action.payload;\n\t\t\tconst hostEl = action.meta.hoistHost || host;\n\t\t\tconst cid = hostEl.getAttribute('component-id');\n\t\t\tconst watchPropertyName =\n\t\t\t\toptions.watchPropertyName || WATCH_PROPERTY_NAME_DEFAULT;\n\t\t\tif (name === watchPropertyName) {\n\t\t\t\t//scenarios when UIB dynamically hoists content to modal slot when opened\n\t\t\t\tsetNodes(cid, hostEl.shadowRoot.querySelectorAll('slot'));\n\t\t\t\tif (value) {\n\t\t\t\t\thidePageContent(\n\t\t\t\t\t\thostEl,\n\t\t\t\t\t\tnowId,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\toptions.limit,\n\t\t\t\t\t\tslottedNodes[cid],\n\t\t\t\t\t);\n\t\t\t\t\tupdateBodyOverflow(true);\n\t\t\t\t} else {\n\t\t\t\t\tupdateElements(\n\t\t\t\t\t\tActionTypes.SHOW,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\thostEl,\n\t\t\t\t\t\tnowId,\n\t\t\t\t\t\toptions.limit,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\tslottedNodes[cid],\n\t\t\t\t\t);\n\t\t\t\t\tremoveArtifacts(treeOriginRef, updateState, nowId);\n\t\t\t\t\tupdateBodyOverflow(false);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({\n\t\t\taction: {\n\t\t\t\tpayload: {options},\n\t\t\t},\n\t\t\thost,\n\t\t\tupdateState,\n\t\t\tproperties,\n\t\t\tstate: {treeOriginRef},\n\t\t}) => {\n\t\t\tconst cid = host.getAttribute('component-id');\n\t\t\tif (slottedNodes[cid]) delete slottedNodes[cid];\n\t\t\tconst {nowId} = properties;\n\t\t\tconst nearestConnectedAncestor = getNearestConnectedAncestor(nowId);\n\t\t\tconst watchPropertyName =\n\t\t\t\toptions.watchPropertyName || WATCH_PROPERTY_NAME_DEFAULT;\n\n\t\t\tif (properties[watchPropertyName] && nearestConnectedAncestor) {\n\t\t\t\t// host has been removed at this point,\n\t\t\t\t// so we need to use nearestConnectedAncestor\n\t\t\t\t// instead.\n\t\t\t\tupdateElements(\n\t\t\t\t\tActionTypes.SHOW,\n\t\t\t\t\tnull,\n\t\t\t\t\tnearestConnectedAncestor,\n\t\t\t\t\tnowId,\n\t\t\t\t\toptions.limit,\n\t\t\t\t\tnearestConnectedAncestor !== treeOriginRef ? false : true,\n\t\t\t\t);\n\t\t\t\tremoveArtifacts(treeOriginRef, updateState, nowId);\n\t\t\t\tupdateBodyOverflow(false);\n\t\t\t}\n\t\t},\n\t},\n};\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n    if (typeof Map !== 'undefined') {\r\n        return Map;\r\n    }\r\n    /**\r\n     * Returns index in provided array that matches the specified key.\r\n     *\r\n     * @param {Array<Array>} arr\r\n     * @param {*} key\r\n     * @returns {number}\r\n     */\r\n    function getIndex(arr, key) {\r\n        var result = -1;\r\n        arr.some(function (entry, index) {\r\n            if (entry[0] === key) {\r\n                result = index;\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n        return result;\r\n    }\r\n    return /** @class */ (function () {\r\n        function class_1() {\r\n            this.__entries__ = [];\r\n        }\r\n        Object.defineProperty(class_1.prototype, \"size\", {\r\n            /**\r\n             * @returns {boolean}\r\n             */\r\n            get: function () {\r\n                return this.__entries__.length;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        /**\r\n         * @param {*} key\r\n         * @returns {*}\r\n         */\r\n        class_1.prototype.get = function (key) {\r\n            var index = getIndex(this.__entries__, key);\r\n            var entry = this.__entries__[index];\r\n            return entry && entry[1];\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @param {*} value\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.set = function (key, value) {\r\n            var index = getIndex(this.__entries__, key);\r\n            if (~index) {\r\n                this.__entries__[index][1] = value;\r\n            }\r\n            else {\r\n                this.__entries__.push([key, value]);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.delete = function (key) {\r\n            var entries = this.__entries__;\r\n            var index = getIndex(entries, key);\r\n            if (~index) {\r\n                entries.splice(index, 1);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.has = function (key) {\r\n            return !!~getIndex(this.__entries__, key);\r\n        };\r\n        /**\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.clear = function () {\r\n            this.__entries__.splice(0);\r\n        };\r\n        /**\r\n         * @param {Function} callback\r\n         * @param {*} [ctx=null]\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.forEach = function (callback, ctx) {\r\n            if (ctx === void 0) { ctx = null; }\r\n            for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n                var entry = _a[_i];\r\n                callback.call(ctx, entry[1], entry[0]);\r\n            }\r\n        };\r\n        return class_1;\r\n    }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n    if (typeof global !== 'undefined' && global.Math === Math) {\r\n        return global;\r\n    }\r\n    if (typeof self !== 'undefined' && self.Math === Math) {\r\n        return self;\r\n    }\r\n    if (typeof window !== 'undefined' && window.Math === Math) {\r\n        return window;\r\n    }\r\n    // eslint-disable-next-line no-new-func\r\n    return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n    if (typeof requestAnimationFrame === 'function') {\r\n        // It's required to use a bounded function because IE sometimes throws\r\n        // an \"Invalid calling object\" error if rAF is invoked without the global\r\n        // object on the left hand side.\r\n        return requestAnimationFrame.bind(global$1);\r\n    }\r\n    return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n    var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n    /**\r\n     * Invokes the original callback function and schedules new invocation if\r\n     * the \"proxy\" was called during current request.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function resolvePending() {\r\n        if (leadingCall) {\r\n            leadingCall = false;\r\n            callback();\r\n        }\r\n        if (trailingCall) {\r\n            proxy();\r\n        }\r\n    }\r\n    /**\r\n     * Callback invoked after the specified delay. It will further postpone\r\n     * invocation of the original function delegating it to the\r\n     * requestAnimationFrame.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function timeoutCallback() {\r\n        requestAnimationFrame$1(resolvePending);\r\n    }\r\n    /**\r\n     * Schedules invocation of the original function.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function proxy() {\r\n        var timeStamp = Date.now();\r\n        if (leadingCall) {\r\n            // Reject immediately following calls.\r\n            if (timeStamp - lastCallTime < trailingTimeout) {\r\n                return;\r\n            }\r\n            // Schedule new call to be in invoked when the pending one is resolved.\r\n            // This is important for \"transitions\" which never actually start\r\n            // immediately so there is a chance that we might miss one if change\r\n            // happens amids the pending invocation.\r\n            trailingCall = true;\r\n        }\r\n        else {\r\n            leadingCall = true;\r\n            trailingCall = false;\r\n            setTimeout(timeoutCallback, delay);\r\n        }\r\n        lastCallTime = timeStamp;\r\n    }\r\n    return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserverController.\r\n     *\r\n     * @private\r\n     */\r\n    function ResizeObserverController() {\r\n        /**\r\n         * Indicates whether DOM listeners have been added.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.connected_ = false;\r\n        /**\r\n         * Tells that controller has subscribed for Mutation Events.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.mutationEventsAdded_ = false;\r\n        /**\r\n         * Keeps reference to the instance of MutationObserver.\r\n         *\r\n         * @private {MutationObserver}\r\n         */\r\n        this.mutationsObserver_ = null;\r\n        /**\r\n         * A list of connected observers.\r\n         *\r\n         * @private {Array<ResizeObserverSPI>}\r\n         */\r\n        this.observers_ = [];\r\n        this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n        this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n    }\r\n    /**\r\n     * Adds observer to observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be added.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.addObserver = function (observer) {\r\n        if (!~this.observers_.indexOf(observer)) {\r\n            this.observers_.push(observer);\r\n        }\r\n        // Add listeners if they haven't been added yet.\r\n        if (!this.connected_) {\r\n            this.connect_();\r\n        }\r\n    };\r\n    /**\r\n     * Removes observer from observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.removeObserver = function (observer) {\r\n        var observers = this.observers_;\r\n        var index = observers.indexOf(observer);\r\n        // Remove observer if it's present in registry.\r\n        if (~index) {\r\n            observers.splice(index, 1);\r\n        }\r\n        // Remove listeners if controller has no connected observers.\r\n        if (!observers.length && this.connected_) {\r\n            this.disconnect_();\r\n        }\r\n    };\r\n    /**\r\n     * Invokes the update of observers. It will continue running updates insofar\r\n     * it detects changes.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.refresh = function () {\r\n        var changesDetected = this.updateObservers_();\r\n        // Continue running updates if changes have been detected as there might\r\n        // be future ones caused by CSS transitions.\r\n        if (changesDetected) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Updates every observer from observers list and notifies them of queued\r\n     * entries.\r\n     *\r\n     * @private\r\n     * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n     *      dimensions of it's elements.\r\n     */\r\n    ResizeObserverController.prototype.updateObservers_ = function () {\r\n        // Collect observers that have active observations.\r\n        var activeObservers = this.observers_.filter(function (observer) {\r\n            return observer.gatherActive(), observer.hasActive();\r\n        });\r\n        // Deliver notifications in a separate cycle in order to avoid any\r\n        // collisions between observers, e.g. when multiple instances of\r\n        // ResizeObserver are tracking the same element and the callback of one\r\n        // of them changes content dimensions of the observed target. Sometimes\r\n        // this may result in notifications being blocked for the rest of observers.\r\n        activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n        return activeObservers.length > 0;\r\n    };\r\n    /**\r\n     * Initializes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.connect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already added.\r\n        if (!isBrowser || this.connected_) {\r\n            return;\r\n        }\r\n        // Subscription to the \"Transitionend\" event is used as a workaround for\r\n        // delayed transitions. This way it's possible to capture at least the\r\n        // final state of an element.\r\n        document.addEventListener('transitionend', this.onTransitionEnd_);\r\n        window.addEventListener('resize', this.refresh);\r\n        if (mutationObserverSupported) {\r\n            this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n            this.mutationsObserver_.observe(document, {\r\n                attributes: true,\r\n                childList: true,\r\n                characterData: true,\r\n                subtree: true\r\n            });\r\n        }\r\n        else {\r\n            document.addEventListener('DOMSubtreeModified', this.refresh);\r\n            this.mutationEventsAdded_ = true;\r\n        }\r\n        this.connected_ = true;\r\n    };\r\n    /**\r\n     * Removes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.disconnect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already removed.\r\n        if (!isBrowser || !this.connected_) {\r\n            return;\r\n        }\r\n        document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n        window.removeEventListener('resize', this.refresh);\r\n        if (this.mutationsObserver_) {\r\n            this.mutationsObserver_.disconnect();\r\n        }\r\n        if (this.mutationEventsAdded_) {\r\n            document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n        }\r\n        this.mutationsObserver_ = null;\r\n        this.mutationEventsAdded_ = false;\r\n        this.connected_ = false;\r\n    };\r\n    /**\r\n     * \"Transitionend\" event handler.\r\n     *\r\n     * @private\r\n     * @param {TransitionEvent} event\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n        var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n        // Detect whether transition may affect dimensions of an element.\r\n        var isReflowProperty = transitionKeys.some(function (key) {\r\n            return !!~propertyName.indexOf(key);\r\n        });\r\n        if (isReflowProperty) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Returns instance of the ResizeObserverController.\r\n     *\r\n     * @returns {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.getInstance = function () {\r\n        if (!this.instance_) {\r\n            this.instance_ = new ResizeObserverController();\r\n        }\r\n        return this.instance_;\r\n    };\r\n    /**\r\n     * Holds reference to the controller's instance.\r\n     *\r\n     * @private {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.instance_ = null;\r\n    return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n    for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n        var key = _a[_i];\r\n        Object.defineProperty(target, key, {\r\n            value: props[key],\r\n            enumerable: false,\r\n            writable: false,\r\n            configurable: true\r\n        });\r\n    }\r\n    return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n    // Assume that the element is an instance of Node, which means that it\r\n    // has the \"ownerDocument\" property from which we can retrieve a\r\n    // corresponding global object.\r\n    var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n    // Return the local global object if it's not possible extract one from\r\n    // provided element.\r\n    return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n    return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n    var positions = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        positions[_i - 1] = arguments[_i];\r\n    }\r\n    return positions.reduce(function (size, position) {\r\n        var value = styles['border-' + position + '-width'];\r\n        return size + toFloat(value);\r\n    }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n    var positions = ['top', 'right', 'bottom', 'left'];\r\n    var paddings = {};\r\n    for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n        var position = positions_1[_i];\r\n        var value = styles['padding-' + position];\r\n        paddings[position] = toFloat(value);\r\n    }\r\n    return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n *      to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n    var bbox = target.getBBox();\r\n    return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n    // Client width & height properties can't be\r\n    // used exclusively as they provide rounded values.\r\n    var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n    // By this condition we can catch all non-replaced inline, hidden and\r\n    // detached elements. Though elements with width & height properties less\r\n    // than 0.5 will be discarded as well.\r\n    //\r\n    // Without it we would need to implement separate methods for each of\r\n    // those cases and it's not possible to perform a precise and performance\r\n    // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n    // gives wrong results for elements with width & height less than 0.5.\r\n    if (!clientWidth && !clientHeight) {\r\n        return emptyRect;\r\n    }\r\n    var styles = getWindowOf(target).getComputedStyle(target);\r\n    var paddings = getPaddings(styles);\r\n    var horizPad = paddings.left + paddings.right;\r\n    var vertPad = paddings.top + paddings.bottom;\r\n    // Computed styles of width & height are being used because they are the\r\n    // only dimensions available to JS that contain non-rounded values. It could\r\n    // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n    // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n    var width = toFloat(styles.width), height = toFloat(styles.height);\r\n    // Width & height include paddings and borders when the 'border-box' box\r\n    // model is applied (except for IE).\r\n    if (styles.boxSizing === 'border-box') {\r\n        // Following conditions are required to handle Internet Explorer which\r\n        // doesn't include paddings and borders to computed CSS dimensions.\r\n        //\r\n        // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n        // properties then it's either IE, and thus we don't need to subtract\r\n        // anything, or an element merely doesn't have paddings/borders styles.\r\n        if (Math.round(width + horizPad) !== clientWidth) {\r\n            width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n        }\r\n        if (Math.round(height + vertPad) !== clientHeight) {\r\n            height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n        }\r\n    }\r\n    // Following steps can't be applied to the document's root element as its\r\n    // client[Width/Height] properties represent viewport area of the window.\r\n    // Besides, it's as well not necessary as the <html> itself neither has\r\n    // rendered scroll bars nor it can be clipped.\r\n    if (!isDocumentElement(target)) {\r\n        // In some browsers (only in Firefox, actually) CSS width & height\r\n        // include scroll bars size which can be removed at this step as scroll\r\n        // bars are the only difference between rounded dimensions + paddings\r\n        // and \"client\" properties, though that is not always true in Chrome.\r\n        var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n        var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n        // Chrome has a rather weird rounding of \"client\" properties.\r\n        // E.g. for an element with content width of 314.2px it sometimes gives\r\n        // the client width of 315px and for the width of 314.7px it may give\r\n        // 314px. And it doesn't happen all the time. So just ignore this delta\r\n        // as a non-relevant.\r\n        if (Math.abs(vertScrollbar) !== 1) {\r\n            width -= vertScrollbar;\r\n        }\r\n        if (Math.abs(horizScrollbar) !== 1) {\r\n            height -= horizScrollbar;\r\n        }\r\n    }\r\n    return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n    // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n    // interface.\r\n    if (typeof SVGGraphicsElement !== 'undefined') {\r\n        return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n    }\r\n    // If it's so, then check that element is at least an instance of the\r\n    // SVGElement and that it has the \"getBBox\" method.\r\n    // eslint-disable-next-line no-extra-parens\r\n    return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n        typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n    return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n    if (!isBrowser) {\r\n        return emptyRect;\r\n    }\r\n    if (isSVGGraphicsElement(target)) {\r\n        return getSVGContentRect(target);\r\n    }\r\n    return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n    var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n    // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n    var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n    var rect = Object.create(Constr.prototype);\r\n    // Rectangle's properties are not writable and non-enumerable.\r\n    defineConfigurable(rect, {\r\n        x: x, y: y, width: width, height: height,\r\n        top: y,\r\n        right: x + width,\r\n        bottom: height + y,\r\n        left: x\r\n    });\r\n    return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n    return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObservation.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     */\r\n    function ResizeObservation(target) {\r\n        /**\r\n         * Broadcasted width of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastWidth = 0;\r\n        /**\r\n         * Broadcasted height of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastHeight = 0;\r\n        /**\r\n         * Reference to the last observed content rectangle.\r\n         *\r\n         * @private {DOMRectInit}\r\n         */\r\n        this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n        this.target = target;\r\n    }\r\n    /**\r\n     * Updates content rectangle and tells whether it's width or height properties\r\n     * have changed since the last broadcast.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObservation.prototype.isActive = function () {\r\n        var rect = getContentRect(this.target);\r\n        this.contentRect_ = rect;\r\n        return (rect.width !== this.broadcastWidth ||\r\n            rect.height !== this.broadcastHeight);\r\n    };\r\n    /**\r\n     * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n     * from the corresponding properties of the last observed content rectangle.\r\n     *\r\n     * @returns {DOMRectInit} Last observed content rectangle.\r\n     */\r\n    ResizeObservation.prototype.broadcastRect = function () {\r\n        var rect = this.contentRect_;\r\n        this.broadcastWidth = rect.width;\r\n        this.broadcastHeight = rect.height;\r\n        return rect;\r\n    };\r\n    return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObserverEntry.\r\n     *\r\n     * @param {Element} target - Element that is being observed.\r\n     * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n     */\r\n    function ResizeObserverEntry(target, rectInit) {\r\n        var contentRect = createReadOnlyRect(rectInit);\r\n        // According to the specification following properties are not writable\r\n        // and are also not enumerable in the native implementation.\r\n        //\r\n        // Property accessors are not being used as they'd require to define a\r\n        // private WeakMap storage which may cause memory leaks in browsers that\r\n        // don't support this type of collections.\r\n        defineConfigurable(this, { target: target, contentRect: contentRect });\r\n    }\r\n    return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n     *      when one of the observed elements changes it's content dimensions.\r\n     * @param {ResizeObserverController} controller - Controller instance which\r\n     *      is responsible for the updates of observer.\r\n     * @param {ResizeObserver} callbackCtx - Reference to the public\r\n     *      ResizeObserver instance which will be passed to callback function.\r\n     */\r\n    function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n        /**\r\n         * Collection of resize observations that have detected changes in dimensions\r\n         * of elements.\r\n         *\r\n         * @private {Array<ResizeObservation>}\r\n         */\r\n        this.activeObservations_ = [];\r\n        /**\r\n         * Registry of the ResizeObservation instances.\r\n         *\r\n         * @private {Map<Element, ResizeObservation>}\r\n         */\r\n        this.observations_ = new MapShim();\r\n        if (typeof callback !== 'function') {\r\n            throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n        }\r\n        this.callback_ = callback;\r\n        this.controller_ = controller;\r\n        this.callbackCtx_ = callbackCtx;\r\n    }\r\n    /**\r\n     * Starts observing provided element.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.observe = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is already being observed.\r\n        if (observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.set(target, new ResizeObservation(target));\r\n        this.controller_.addObserver(this);\r\n        // Force the update of observations.\r\n        this.controller_.refresh();\r\n    };\r\n    /**\r\n     * Stops observing provided element.\r\n     *\r\n     * @param {Element} target - Element to stop observing.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.unobserve = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is not being observed.\r\n        if (!observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.delete(target);\r\n        if (!observations.size) {\r\n            this.controller_.removeObserver(this);\r\n        }\r\n    };\r\n    /**\r\n     * Stops observing all elements.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.disconnect = function () {\r\n        this.clearActive();\r\n        this.observations_.clear();\r\n        this.controller_.removeObserver(this);\r\n    };\r\n    /**\r\n     * Collects observation instances the associated element of which has changed\r\n     * it's content rectangle.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.gatherActive = function () {\r\n        var _this = this;\r\n        this.clearActive();\r\n        this.observations_.forEach(function (observation) {\r\n            if (observation.isActive()) {\r\n                _this.activeObservations_.push(observation);\r\n            }\r\n        });\r\n    };\r\n    /**\r\n     * Invokes initial callback function with a list of ResizeObserverEntry\r\n     * instances collected from active resize observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.broadcastActive = function () {\r\n        // Do nothing if observer doesn't have active observations.\r\n        if (!this.hasActive()) {\r\n            return;\r\n        }\r\n        var ctx = this.callbackCtx_;\r\n        // Create ResizeObserverEntry instance for every active observation.\r\n        var entries = this.activeObservations_.map(function (observation) {\r\n            return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n        });\r\n        this.callback_.call(ctx, entries, ctx);\r\n        this.clearActive();\r\n    };\r\n    /**\r\n     * Clears the collection of active observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.clearActive = function () {\r\n        this.activeObservations_.splice(0);\r\n    };\r\n    /**\r\n     * Tells whether observer has active observations.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObserverSPI.prototype.hasActive = function () {\r\n        return this.activeObservations_.length > 0;\r\n    };\r\n    return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n     *      dimensions of the observed elements change.\r\n     */\r\n    function ResizeObserver(callback) {\r\n        if (!(this instanceof ResizeObserver)) {\r\n            throw new TypeError('Cannot call a class as a function.');\r\n        }\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        var controller = ResizeObserverController.getInstance();\r\n        var observer = new ResizeObserverSPI(callback, controller, this);\r\n        observers.set(this, observer);\r\n    }\r\n    return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n    'observe',\r\n    'unobserve',\r\n    'disconnect'\r\n].forEach(function (method) {\r\n    ResizeObserver.prototype[method] = function () {\r\n        var _a;\r\n        return (_a = observers.get(this))[method].apply(_a, arguments);\r\n    };\r\n});\n\nvar index = (function () {\r\n    // Export existing implementation if available.\r\n    if (typeof global$1.ResizeObserver !== 'undefined') {\r\n        return global$1.ResizeObserver;\r\n    }\r\n    return ResizeObserver;\r\n})();\n\nexport default index;\n","import {actionTypes} from '@servicenow/ui-core';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\n\nconst {COMPONENT_DISCONNECTED, COMPONENT_RENDER_REQUESTED} = actionTypes;\nconst BEHAVIOR_NAME = 'resize';\nconst globalResizeBehaviorTimer =\n\tNumber(window?.ux_globals?.nds?.sysprops?.resize_timer) || 50;\n\nconst getTimerSysProps = (componentName) => {\n\tif (\n\t\t!window?.ux_globals?.nds?.sysprops?.[componentName]?.resize_timer ||\n\t\t!componentName\n\t) {\n\t\treturn null;\n\t}\n\treturn Number(window.ux_globals.nds.sysprops[componentName].resize_timer);\n};\n\n// exported for testing\nexport const CALLBACK = Symbol();\nexport const TARGET = Symbol();\n\nconst resize = new ResizeObserver((entries) => {\n\tfor (const entry of entries) {\n\t\tlet {\n\t\t\ttarget,\n\t\t\tcontentRect: {width, height},\n\t\t} = entry;\n\n\t\tif (target.clientHeight !== target.scrollHeight) {\n\t\t\twidth += target.offsetWidth - target.clientWidth;\n\t\t}\n\t\ttarget[CALLBACK]({width, height});\n\t}\n});\n\nconst getTimerFn = (type) => {\n\tswitch (type) {\n\t\tcase 'throttle':\n\t\t\treturn throttle;\n\t\tcase 'debounce':\n\t\tdefault:\n\t\t\treturn debounce;\n\t}\n};\n\nconst observe = ({host, options, dispatch}) => {\n\t// when hoisted, we want to observe the <seismic-hoist /> node rather\n\t// than the original host.\n\tlet target = host.nowRootNode.host;\n\tconst {resizeTarget} = options;\n\n\tif (resizeTarget) {\n\t\ttarget = host?.shadowRoot?.querySelector(resizeTarget);\n\t}\n\n\tif (host[TARGET] !== target) {\n\t\tunobserve(host);\n\t\thost[TARGET] = target;\n\n\t\tconst {type = 'debounce'} = options.timer || {};\n\t\t/**\n\t\t * following order of preference for the timer (ms)\n\t\t * - component sys property if defined, e.g. 'window.ux_globals?.nds.sysprops.['now-tabs'].resize_timer'\n\t\t * - value defined in behavior option, if given\n\t\t * - global timer sys property if defined, e.g. 'window.ux_globals?.nds.sysprops.resize_timer'\n\t\t * - default hardcoded: 50\n\t\t */\n\t\tconst componentName = (resizeTarget ? host : target)?.tagName.toLowerCase();\n\t\tconst componentTimerSysProp = getTimerSysProps(componentName);\n\t\tconst waitOption = options?.timer?.wait;\n\t\tlet resizeBehaviorTimer = componentTimerSysProp || waitOption;\n\t\tif (!resizeBehaviorTimer) {\n\t\t\tresizeBehaviorTimer = globalResizeBehaviorTimer;\n\t\t}\n\t\tconst timerFn = getTimerFn(type);\n\t\tconst dispatchSize = (payload) => {\n\t\t\tconst {shouldDispatch} = options;\n\t\t\tconst dispatchNeeded =\n\t\t\t\ttypeof shouldDispatch === 'function' ? shouldDispatch(payload) : true;\n\n\t\t\tif (dispatchNeeded) {\n\t\t\t\tdispatch(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: 'NOW_RESIZE#ELEMENT_RESIZED',\n\t\t\t\t\t\tpayload,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tconst leadTrailOptions = {};\n\n\t\tif (options && options.timer) {\n\t\t\t// only add them if provided to not override lodash defaults\n\t\t\t// eslint-disable-next-line no-prototype-builtins\n\t\t\tif (options.timer.hasOwnProperty('trailing')) {\n\t\t\t\tleadTrailOptions.trailing = options.timer.trailing;\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-prototype-builtins\n\t\t\tif (options.timer.hasOwnProperty('leading')) {\n\t\t\t\tleadTrailOptions.leading = options.timer.leading;\n\t\t\t}\n\t\t}\n\n\t\tif (options.preventRenderUntilSizeAvailable) {\n\t\t\t// don't debounce/throttle the first measurement\n\t\t\ttarget[CALLBACK] = (payload) => {\n\t\t\t\tdispatchSize(payload);\n\t\t\t\ttarget[CALLBACK] = timerFn(\n\t\t\t\t\tdispatchSize,\n\t\t\t\t\tresizeBehaviorTimer,\n\t\t\t\t\tleadTrailOptions,\n\t\t\t\t);\n\t\t\t};\n\t\t} else {\n\t\t\ttarget[CALLBACK] = timerFn(\n\t\t\t\tdispatchSize,\n\t\t\t\tresizeBehaviorTimer,\n\t\t\t\tleadTrailOptions,\n\t\t\t);\n\t\t}\n\t\tresize.observe(target);\n\t}\n};\n\nconst unobserve = (host) => {\n\tif (host[TARGET]) {\n\t\tresize.unobserve(host[TARGET]);\n\t\tdelete host[TARGET];\n\t}\n};\n\n/**\n * Determines whether the render is allowed given a size update and options (in particular preventRender)\n * @param {*} width\n * @param {*} height\n * @param {*} oldWidth\n * @param {*} oldHeight\n * @param {*} options\n * @returns true if update should render, false otherwise\n */\nconst isRenderAllowed = (width, height, oldWidth, oldHeight, options) => {\n\tlet shouldRender = true;\n\tconst prevent = options ? options.preventRender : false;\n\n\tif (prevent) {\n\t\tif (prevent === true) {\n\t\t\tshouldRender = false;\n\t\t} else if (typeof prevent === 'object') {\n\t\t\tif (prevent.width !== prevent.height) {\n\t\t\t\t// either width or height is prevented\n\t\t\t\tif (prevent.width) {\n\t\t\t\t\tshouldRender = height !== oldHeight;\n\t\t\t\t} else {\n\t\t\t\t\tshouldRender = width !== oldWidth;\n\t\t\t\t}\n\t\t\t} else if (prevent.width) {\n\t\t\t\t// both prevented\n\t\t\t\tshouldRender = false;\n\t\t\t} else {\n\t\t\t\t// both not prevented\n\t\t\t\tshouldRender = true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn shouldRender;\n};\n\n/**\n * This behavior measures the height and width of components dynamically and\n * adds those measurements to state. This helps components that need to know\n * their size to determine what to show/hide, and need to update dynamically.\n *\n * You probably don't need this behavior. See **This should be your last\n * resort** for details.\n *\n * See the **How it works** section below for restrictions and performance\n * details.\n *\n * **Register behavior**\n *\n * After installation import the behavior at the top of your component JS file\n * and register it in your component behaviors list:\n *\n * ```js\n * import resizeBehavior from '@servicenow/behavior-resize';\n *\n * createCustomElement('sn-example', {\n *   renderer: {\n *     type: snabbdom,\n *     view: (state) => {\n *       const {width, height} = state.behaviors.resize.size;\n *       // These will be `null` initially. When the component first attaches it'll\n *       // re-render with integer values in pixels (e.g. `width === 100`).\n *       // When the component's width is changed it'll re-render again with the\n *       // new integer values.\n *     }\n *   },\n *   behaviors: [{behavior: resizeBehavior}]\n * });\n * ```\n *\n * See `example/sn-example-resize.js` for a more complete example.\n *\n * **Configuration options**\n *\n * The following options can be used to configure the behavior\n *\n * - `[timer={}] (Object)` - configures the timer used debounce/throttle invocation of the resize observer\n * - `[timer.type=\"debounce\"] (string)` - the type of timer to use, \"debounce\" or \"throttle\"\n * - `[timer.wait=20] (number)` - milliseconds to delay invocation of observer\n * - `[timer.leading=true] (bool)` - Whether to invoke the debounced/throttle function on the leading edge. False by default for debounce, true by default for throttle\n * - `[timer.trailing=true] (bool)` - Whether to invoke the debounced/throttle function on the trailing edge. True by default. Note: If both leading and trailing options are true, func is invoked on the trailing edge of the timeout only if the function is invoked more than once during the wait timeout.\n * - `[componentManaged=false]` - if true then the behavior won't automatically observer/unobserve and the component is reponsible for turning it ON and OFF through `NOW_RESIZE#ENABLE` and 'NOW_RESIZE#DISABLE'\n * - `[preventRender=false] (bool or Object)` - if a boolean then true means that any size update in the state won't trigger a render. If an object then it can have `height` or `width` as a key, with a boolean value, to respectively prevent rendering on height and width size update\n * - `[preventRenderUntilSizeAvailable=false] (bool)` - when set to true the behavior will prevent the component from rendering until an initial size is available\n * - `[shouldDispatch] (function)` - when this function returns true, the behavior will dispatch ELEMENT_RESIZED action else not.\n * - `[resizeTarget] (string)` - a selector to query the target element to observe. If not provided, the host element is observed.\n * Configuration example:\n *\n * ```js\n * import resizeBehavior from '@servicenow/behavior-resize';\n *\n * createCustomElement('sn-foo', {\n *   ...\n *   behaviors: [{\n *     behavior: resizeBehavior,\n *     options: {timer: {type: 'throttle', wait: 200}}\n *   }]\n * });\n * ```\n *\n * **How it works**\n *\n * This behavior is based on the [ResizeObserver browser specification](https://www.google.com/search?q=resizeobserver&oq=resizeobserver&aqs=chrome.0.69i59l2j0l2j69i61j69i60.3313j0j7&sourceid=chrome&ie=UTF-8).\n * The behavior will use the browser's native ResizeObserver if the browser has\n * that feature.\n *\n * For older browsers, it falls back to using MutationObserver and dirty\n * checking to react to component size changes. It currently uses the\n * [resize-observer-polyfill](https://github.com/que-etc/resize-observer-polyfill)\n * for fallback, but we may change that out to improve performance in the\n * future. This is unlikely to break the API but may lead to slight timing\n * differences for older browsers only.\n *\n * **This should be your last resort**\n *\n * Measuring things is expensive. You probably don't need to use this behavior\n * to measure things. Try every other recourse before you use this behavior. Use\n * CSS media queries instead. Or use CSS flex/truncation behaviors to closely\n * simulate what you're trying to do. No matter how performant we try to make\n * this behavior, it'll always cause a performance hit when a lot of elements on\n * the page use it.\n *\n * **Component requirements**\n *\n * To use this behavior your component MUST meet the following criteria:\n *\n * - Its CSS `display` value can't be `inline` or `inline-*`. Use a non-inline\n * value like `block` or `flex`.\n * - It can't change its size dynamically based on its measured width/height if\n * in the flow of the document. When it renders in response to a width/height\n * change it can't change its size, otherwise it'll go into an infinite loop.\n * For example, if you want to truncate text based on the width of the\n * component, you should set the text container to a non-auto width and height\n * to ensure that the truncation doesn't cause a resize, which triggers another\n * truncation.\n * - It's nice if the component isn't usually stretched across the full viewport\n * width. If many components stretched across the full viewport width use this\n * behavior it can lead to jank and dropped frames when the user resizes the\n * browser or animates a page out of visibility.\n * - In the componentManaged resize behavior, if the behaviour is dynamically\n * added within the COMPONENT_CONNECTED lifecycle, the width and height might\n * not be accessible during the initial rendering of the view. This could result\n * in the component receiving null values for width/height since the behavior\n * may not be initialized prior to the view method being invoked.\n * Consequently, the component's rendering could be delayed, as the actual dimensions\n * will only be supplied by the resize behavior after some time has passed. To address\n * this issue, you may want to explicitly compute the width/height during the\n * COMPONENT_TREE_RENDERED lifecycle to prevent any delays in rendering the component.\n * For additional information, please refer to buildtools1/DEF0395251.\n *\n * @seismicBehavior resizeBehavior\n * @summary Measures the height/width of components and adds values to state\n */\nexport default {\n\tname: BEHAVIOR_NAME,\n\tinitialState: {\n\t\tsize: {\n\t\t\twidth: null,\n\t\t\theight: null,\n\t\t},\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_RENDER_REQUESTED]: ({action, state, host, dispatch}) => {\n\t\t\tconst {options} = action.payload,\n\t\t\t\tcurrentWidth = state.behaviors[BEHAVIOR_NAME].size.width,\n\t\t\t\tcurrentHeight = state.behaviors[BEHAVIOR_NAME].size.height;\n\t\t\tif (!options.componentManaged) {\n\t\t\t\tobserve({host, options, dispatch});\n\t\t\t}\n\t\t\tif (\n\t\t\t\toptions.preventRenderUntilSizeAvailable &&\n\t\t\t\t!currentWidth &&\n\t\t\t\tcurrentWidth !== 0 &&\n\t\t\t\t!currentHeight &&\n\t\t\t\tcurrentHeight !== 0\n\t\t\t) {\n\t\t\t\taction.preventDefault();\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({host, action}) => {\n\t\t\tif (!action.payload.options.componentManaged) {\n\t\t\t\tunobserve(host);\n\t\t\t}\n\t\t},\n\t\t'NOW_RESIZE#ENABLE': ({host, dispatch, action}) => {\n\t\t\tconst {options} = action.payload;\n\t\t\tobserve({host, dispatch, options});\n\t\t},\n\t\t'NOW_RESIZE#DISABLE': ({host}) => {\n\t\t\tunobserve(host);\n\t\t},\n\t\t'NOW_RESIZE#ELEMENT_RESIZED': {\n\t\t\t// ensure no parents get the action\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({updateState, action, state}) => {\n\t\t\t\tconst {width, height, options} = action.payload;\n\n\t\t\t\tlet shouldRender = isRenderAllowed(\n\t\t\t\t\twidth,\n\t\t\t\t\theight,\n\t\t\t\t\tstate.behaviors[BEHAVIOR_NAME].size.width,\n\t\t\t\t\tstate.behaviors[BEHAVIOR_NAME].size.height,\n\t\t\t\t\toptions,\n\t\t\t\t);\n\n\t\t\t\tupdateState(() => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tpath: `behaviors.${BEHAVIOR_NAME}.size`,\n\t\t\t\t\t\tvalue: {width, height},\n\t\t\t\t\t\tshouldRender,\n\t\t\t\t\t};\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t},\n};\n","// normal flow restricts the directions that we can resize\nconst FLOW_NORMAL_EDGES = ['-bottom', '-right', '-bottom-right'];\n//flipped for RTL mode\nconst FLOW_NORMAL_EDGES_RTL = ['-bottom', '-left', '-bottom-left'];\n\n/**\n * Applies the calculated width, height, top, left position during a resize cycle\n * @param {Element} elm - target element to apply styles\n * @param {Object} param - this is the object param\n * @param {number|null} param.width - width to set the element\n * @param {number|null} param.height - height to set the element\n * @param {number|null} param.top - top position to set the element\n * @param {number|null} param.left - left position to set the element\n **/\nconst resize = (\n\telm,\n\t{width = null, height = null, top = null, left = null} = {},\n) => {\n\tif (width !== null) {\n\t\telm.style['max-width'] = '100%';\n\t\telm.style.width = `${width}px`;\n\t}\n\n\tif (height !== null) {\n\t\telm.style['max-height'] = '100%';\n\t\telm.style.height = `${height}px`;\n\t}\n\n\tif (top !== null || left !== null) {\n\t\telm.style['position'] = 'fixed';\n\t\tif (left !== null) elm.style.left = `${Math.max(left, 0)}px`;\n\t\tif (top !== null) elm.style.top = `${Math.max(top, 0)}px`;\n\t}\n};\n\n/**\n * Calculates the required size and position changes based on configuration\n * @param {Object} param - this is the object param\n * @param {String} param.source - the source edge of the container that is to be evaluated\n * @param {number} param.sourceWidth - the original width of the container\n * @param {number} param.sourceHeight - the original height of the container\n * @param {number} param.sourceTop - the original top position of the container\n * @param {number} param.sourceLeft - the original left position of the container\n * @param {Node}   param.resizeTarget - the resize target DOM element\n * @param {number} param.resizableMinHeight - the min height of the container\n * @param {number} param.resizableMinWidth - the min width of the container\n * @param {number} param.resizableMaxHeight - the min height of the container\n * @param {number} param.resizableMaxWidth - the max width of the container\n * @param {String} param.context - how the container flows within the page document\n * @param {number} param.deltaX - the distance moved in the X direction\n * @param {number} param.deltaY - the distance moved in the Y direction\n * @param {String} param.dir - the direction of the page\n */\nconst update = ({\n\tsource,\n\tsourceWidth,\n\tsourceHeight,\n\tsourceTop,\n\tsourceLeft,\n\tresizeTarget,\n\tresizableMaxWidth,\n\tresizableMinWidth,\n\tresizableMaxHeight,\n\tresizableMinHeight,\n\tcontext,\n\tdeltaX,\n\tdeltaY,\n\tdir,\n}) => {\n\tlet width = null;\n\tlet height = null;\n\tlet top = null;\n\tlet left = null;\n\tlet scale = 1;\n\n\t// normal document flow can only resize in the directions of standard to layout; down and to the right\n\tif (\n\t\tdir === 'ltr' &&\n\t\tcontext === 'normal' &&\n\t\t!FLOW_NORMAL_EDGES.includes(source)\n\t) {\n\t\treturn;\n\t}\n\t// this is flipped if in RTL mode\n\tif (\n\t\tdir === 'rtl' &&\n\t\tcontext === 'normal' &&\n\t\t!FLOW_NORMAL_EDGES_RTL.includes(source)\n\t) {\n\t\treturn;\n\t}\n\t// we need increase the scale if the conatiner is maintaing its position\n\t// relative to an area (IE: modal that is centered) versus a normal position or floating position\n\tif (context === 'fixed') scale = 2;\n\n\tconst currentLeft = parseInt(resizeTarget?.style?.left || sourceLeft, 10);\n\tconst currentTop = parseInt(resizeTarget?.style?.top || sourceTop, 10);\n\tconst currentWidth = parseInt(resizeTarget?.style?.width || sourceWidth, 10);\n\tconst currentHeight = parseInt(\n\t\tresizeTarget?.style?.height || sourceHeight,\n\t\t10,\n\t);\n\n\tswitch (source) {\n\t\tcase '-bottom':\n\t\t\theight = sourceHeight + scale * deltaY;\n\t\t\ttop = currentTop;\n\t\t\tleft = currentLeft;\n\t\t\tbreak;\n\t\tcase '-top':\n\t\t\theight = sourceHeight - scale * deltaY;\n\t\t\ttop = sourceTop + deltaY;\n\t\t\tleft = currentLeft;\n\t\t\tbreak;\n\t\tcase '-left':\n\t\t\twidth = sourceWidth - scale * deltaX;\n\t\t\tleft = sourceLeft + deltaX;\n\t\t\ttop = currentTop;\n\t\t\tbreak;\n\t\tcase '-right':\n\t\t\twidth = sourceWidth + scale * deltaX;\n\t\t\ttop = currentTop;\n\t\t\tleft = currentLeft;\n\t\t\tbreak;\n\t\tcase '-bottom-left':\n\t\t\theight = sourceHeight + scale * deltaY;\n\t\t\twidth = sourceWidth - scale * deltaX;\n\t\t\tleft = sourceLeft + deltaX;\n\t\t\ttop = currentTop;\n\t\t\tbreak;\n\t\tcase '-top-left':\n\t\t\theight = sourceHeight - scale * deltaY;\n\t\t\twidth = sourceWidth - scale * deltaX;\n\t\t\ttop = sourceTop + deltaY;\n\t\t\tleft = sourceLeft + deltaX;\n\t\t\tbreak;\n\t\tcase '-bottom-right':\n\t\t\theight = sourceHeight + scale * deltaY;\n\t\t\twidth = sourceWidth + scale * deltaX;\n\t\t\ttop = currentTop;\n\t\t\tleft = currentLeft;\n\t\t\tbreak;\n\t\tcase '-top-right':\n\t\t\theight = sourceHeight - scale * deltaY;\n\t\t\twidth = sourceWidth + scale * deltaX;\n\t\t\ttop = sourceTop + deltaY;\n\t\t\tleft = currentLeft;\n\t\t\tbreak;\n\t}\n\n\tconst maxWidth = resizableMaxWidth ?? document.documentElement.clientWidth;\n\tconst maxHeight =\n\t\tresizableMaxHeight ??\n\t\t(context === 'document'\n\t\t\t? Number.MAX_SAFE_INTEGER\n\t\t\t: document.documentElement.clientHeight);\n\n\tif (width !== null) {\n\t\t// ensure width does not go beyond bounds of viewport\n\t\tif (\n\t\t\tcontext === 'float' &&\n\t\t\twidth + left > document.documentElement.clientWidth\n\t\t) {\n\t\t\twidth = document.documentElement.clientWidth - left;\n\t\t}\n\n\t\t// ensure width is confined to min and max ranges\n\t\tif (width < resizableMinWidth || width > maxWidth) {\n\t\t\twidth = Math.max(Math.min(width, maxWidth), resizableMinWidth);\n\n\t\t\t// only adjust left when sizing from left\n\t\t\tif (source.includes('left')) {\n\t\t\t\tleft = currentLeft + (currentWidth - width);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (height !== null) {\n\t\t// ensure height does not go beyond bounds of viewport\n\t\tif (height + top > document.documentElement.clientHeight) {\n\t\t\theight = document.documentElement.clientHeight - top;\n\t\t}\n\n\t\t// ensure height is confined to min and max ranges\n\t\tif (height < resizableMinHeight || height > maxHeight) {\n\t\t\theight = Math.max(Math.min(height, maxHeight), resizableMinHeight);\n\n\t\t\t// only adjust top when resizing from top\n\t\t\tif (source.includes('top')) {\n\t\t\t\ttop = currentTop + (currentHeight - height);\n\t\t\t}\n\t\t}\n\t}\n\n\t// zero out left/top if we're not floating\n\tif (context !== 'float') {\n\t\tleft = null;\n\t\ttop = null;\n\t}\n\n\tresize(resizeTarget, {width, height, top, left});\n};\n\nexport const emitEnd = (dispatch, {resizeTarget, updateState, tooltip}) => {\n\tconst {width, height, top, left} =\n\t\tresizeTarget?.getBoundingClientRect() ?? {};\n\tdispatch('PRIVATE#RESIZABLE_END', {width, height, top, left});\n\n\tupdateState({tooltip});\n};\n\n/**\n * Event handler for when mousedown occurs\n * @param {Event} e - mouse down event\n * @param {Object} args - configuration of the behavior\n */\nconst mouseResize = (e, args) => {\n\tconst {clientX: startX, clientY: startY} = e;\n\tconst {dispatch} = args;\n\tlet last = false;\n\n\tlet raf;\n\tconst handleMouseMove = (event) => {\n\t\tevent.preventDefault();\n\n\t\tif (raf) cancelAnimationFrame(raf);\n\n\t\traf = requestAnimationFrame(() => {\n\t\t\tconst {clientX, clientY} = event;\n\n\t\t\tupdate({\n\t\t\t\t...args,\n\t\t\t\tdeltaX: clientX - startX,\n\t\t\t\tdeltaY: clientY - startY,\n\t\t\t});\n\t\t\traf = null;\n\n\t\t\t// if last is true, then the requestAnimationFrame fired after the mouseup / contextmenu event\n\t\t\t// so we need to find our bounds and dispatch out\n\t\t\tif (last) {\n\t\t\t\temitEnd(dispatch, args);\n\t\t\t}\n\t\t});\n\t};\n\n\tconst unregisterMouseMove = (event) => {\n\t\t// if there is no pending requestAnimationFrame, we can dispatch the end event\n\t\tif (!raf) {\n\t\t\temitEnd(dispatch, args);\n\t\t}\n\t\tlast = true;\n\t\tdocument.removeEventListener('mousemove', handleMouseMove);\n\n\t\t// breaking mouse move can happen 2 different ways, so try to clean up both\n\t\tswitch (event.type) {\n\t\t\tcase 'mouseup':\n\t\t\t\treturn document.removeEventListener('contextmenu', unregisterMouseMove);\n\t\t\tcase 'contextmenu':\n\t\t\t\treturn document.removeEventListener('mouseup', unregisterMouseMove);\n\t\t}\n\t};\n\n\tdocument.addEventListener('mousemove', handleMouseMove);\n\tdocument.addEventListener('mouseup', unregisterMouseMove, {once: true});\n\tdocument.addEventListener('contextmenu', unregisterMouseMove, {once: true});\n};\n\n/**\n * Event handler for when keydown or mousedown occurs\n * @param {Event} e - mouse down event\n * @param {Object} args - configuration of the behavior\n */\nexport const startResize = (e, args) => {\n\tconst {resizeTarget, updateState} = args;\n\tconst {\n\t\twidth: sourceWidth,\n\t\theight: sourceHeight,\n\t\ttop: sourceTop,\n\t\tleft: sourceLeft,\n\t} = resizeTarget?.getBoundingClientRect() ?? {};\n\tlet source;\n\n\tupdateState({tooltip: ''});\n\n\tif (e.type === 'keydown') {\n\t\tlet deltaX = 20;\n\t\tlet deltaY = 20;\n\n\t\tswitch (e.key) {\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tsource = e.shiftKey ? '-right' : '-left';\n\t\t\t\tdeltaX *= -1;\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowRight':\n\t\t\t\tsource = e.shiftKey ? '-left' : '-right';\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tsource = e.shiftKey ? '-bottom' : '-top';\n\t\t\t\tdeltaY *= -1;\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tsource = e.shiftKey ? '-top' : '-bottom';\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst modifier = parseFloat(args?.resizeTarget?.dataset?.modifier ?? 1);\n\t\tdeltaX = deltaX * (e.repeat ? modifier : 1);\n\t\tdeltaY = deltaY * (e.repeat ? modifier : 1);\n\n\t\tif (args.resizeTarget) {\n\t\t\targs.resizeTarget.dataset.modifier = e.repeat ? modifier + 1 : 1;\n\t\t}\n\n\t\treturn update({\n\t\t\t...args,\n\t\t\tsource,\n\t\t\tsourceWidth,\n\t\t\tsourceHeight,\n\t\t\tsourceTop,\n\t\t\tsourceLeft,\n\t\t\tdeltaX,\n\t\t\tdeltaY,\n\t\t});\n\t}\n\n\tsource = e\n\t\t.composedPath()\n\t\t.find((e) => e?.classList?.contains('now-resizable-target'))\n\t\t?.classList?.[2];\n\n\treturn mouseResize(e, {\n\t\t...args,\n\t\tsource,\n\t\tsourceWidth,\n\t\tsourceHeight,\n\t\tsourceTop,\n\t\tsourceLeft,\n\t\ttooltip: '',\n\t});\n};\n\n/**\n * Handles accessible resize - allows resize via double-click, mousemove (without drag), and single-click to finalize\n * @param {Object} args - Configuration for the resize behavior\n * @param {Element} args.resizeTarget - The element to resize\n * @param {Function} args.dispatch - Function to dispatch events\n * @param {String} args.source - The edge or corner being resized\n */\nexport const startResizeOperation = (args) => {\n\tconst {\n\t\tresizeTarget,\n\t\tdispatch,\n\t\tsource,\n\t\tcontext,\n\t\tresizableMaxHeight,\n\t\tresizableMaxWidth,\n\t\tresizableMinHeight,\n\t\tresizableMinWidth,\n\t\tdir,\n\t\tupdateState,\n\t\tresizeHandle,\n\t\ttooltip,\n\t} = args;\n\n\tlet raf;\n\n\tif (resizeHandle) {\n\t\tif (source.includes('-top-') || source.includes('-bottom-')) {\n\t\t\tconst edges = source.split('-').filter((part) => part !== '');\n\t\t\tedges.forEach((edge) => {\n\t\t\t\tif (\n\t\t\t\t\tedge === 'top' ||\n\t\t\t\t\tedge === 'bottom' ||\n\t\t\t\t\tedge === 'left' ||\n\t\t\t\t\tedge === 'right'\n\t\t\t\t) {\n\t\t\t\t\tconst edgeElement = resizeHandle.parentElement.querySelector(\n\t\t\t\t\t\t`.now-resizable-target.-${edge}`,\n\t\t\t\t\t);\n\t\t\t\t\tif (edgeElement) {\n\t\t\t\t\t\tedgeElement.classList.add('resize-edge-highlight');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tresizeHandle.classList.add('resize-edge-highlight');\n\t\t}\n\t}\n\n\tconst {\n\t\twidth: sourceWidth,\n\t\theight: sourceHeight,\n\t\ttop: sourceTop,\n\t\tleft: sourceLeft,\n\t} = resizeTarget?.getBoundingClientRect() ?? {};\n\n\tlet initialMouseX, initialMouseY;\n\n\tconst handleMouseMove = (event) => {\n\t\tevent.preventDefault();\n\n\t\tif (!initialMouseX || !initialMouseY) {\n\t\t\tinitialMouseX = event.clientX;\n\t\t\tinitialMouseY = event.clientY;\n\t\t\treturn;\n\t\t}\n\n\t\tif (raf) cancelAnimationFrame(raf);\n\n\t\traf = requestAnimationFrame(() => {\n\t\t\tconst {clientX, clientY} = event;\n\t\t\tconst deltaX = clientX - initialMouseX;\n\t\t\tconst deltaY = clientY - initialMouseY;\n\n\t\t\tupdate({\n\t\t\t\tsource,\n\t\t\t\tsourceWidth,\n\t\t\t\tsourceHeight,\n\t\t\t\tsourceTop,\n\t\t\t\tsourceLeft,\n\t\t\t\tresizeTarget,\n\t\t\t\tresizableMaxWidth,\n\t\t\t\tresizableMinWidth,\n\t\t\t\tresizableMaxHeight,\n\t\t\t\tresizableMinHeight,\n\t\t\t\tcontext,\n\t\t\t\tdeltaX,\n\t\t\t\tdeltaY,\n\t\t\t\tdir,\n\t\t\t});\n\t\t});\n\t};\n\tconst cleanup = () => {\n\t\tif (resizeHandle) {\n\t\t\tif (source.includes('-top-') || source.includes('-bottom-')) {\n\t\t\t\tconst edges = ['top', 'bottom', 'left', 'right'];\n\t\t\t\tedges.forEach((edge) => {\n\t\t\t\t\tconst edgeElement = resizeHandle.parentElement.querySelector(\n\t\t\t\t\t\t`.now-resizable-target.-${edge}`,\n\t\t\t\t\t);\n\t\t\t\t\tif (edgeElement) {\n\t\t\t\t\t\tedgeElement.classList.remove('resize-edge-highlight', '-edge');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tresizeHandle.classList.remove('resize-edge-highlight');\n\t\t\t}\n\t\t}\n\n\t\tdocument.removeEventListener('mousemove', handleMouseMove);\n\t\tdocument.removeEventListener('click', finalizeResize);\n\t};\n\n\tconst finalizeResize = () => {\n\t\tcleanup();\n\t\temitEnd(dispatch, {\n\t\t\tresizeTarget,\n\t\t\tupdateState,\n\t\t\ttooltip,\n\t\t});\n\t};\n\n\tdocument.addEventListener('mousemove', handleMouseMove);\n\tdocument.addEventListener('click', finalizeResize);\n};\n","import {createCustomElement} from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\nimport styles from './_resizable-target.scss';\nimport {t} from 'sn-translate';\nimport {emitEnd, startResize} from './utils';\nimport tooltipBehavior, {\n\tTOOLTIP_ADD_TARGET,\n\tTOOLTIP_REMOVE_TARGET,\n} from '@servicenow/behavior-tooltip';\nimport '@servicenow/now-tooltip';\nimport {startResizeOperation} from './utils';\n\nconst TOOLTIP = t('Space or enter to resize.');\nconst ACTIVE_TOOLTIP = t(\n\t'Arrow keys increase size. Shift + Arrow keys decrease.',\n);\n\nconst view = ({active, tooltip, properties: {dir, context}}, {dispatch}) => {\n\treturn (\n\t\t<div class={{'now-resizable': true, 'is-active': active}}>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-resizable-target': true,\n\t\t\t\t\t'-inline': true,\n\t\t\t\t\t'-right': true,\n\t\t\t\t\t'-cursor': !(context === 'normal' && dir === 'rtl'),\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-resizable-target': true,\n\t\t\t\t\t'-inline': true,\n\t\t\t\t\t'-left': true,\n\t\t\t\t\t'-cursor': !(context === 'normal' && dir === 'ltr'),\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-resizable-target': true,\n\t\t\t\t\t'-block': true,\n\t\t\t\t\t'-top': true,\n\t\t\t\t\t'-cursor': context !== 'normal',\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-resizable-target': true,\n\t\t\t\t\t'-block': true,\n\t\t\t\t\t'-bottom': true,\n\t\t\t\t\t'-cursor': true,\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-resizable-target': true,\n\t\t\t\t\t'-corner': true,\n\t\t\t\t\t'-top-left': true,\n\t\t\t\t\t'-cursor': context !== 'normal',\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-resizable-target': true,\n\t\t\t\t\t'-corner': true,\n\t\t\t\t\t'-top-right': true,\n\t\t\t\t\t'-cursor': context !== 'normal',\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-resizable-target': true,\n\t\t\t\t\t'-corner': true,\n\t\t\t\t\t'-bottom-left': dir === 'ltr',\n\t\t\t\t\t'-bottom-right': dir === 'rtl',\n\t\t\t\t\t'-cursor': context !== 'normal',\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-resizable-target': true,\n\t\t\t\t\t'-corner': true,\n\t\t\t\t\t'-bottom-left': dir === 'rtl',\n\t\t\t\t\t'-bottom-right': dir === 'ltr',\n\t\t\t\t\t'-cursor': true,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-resizable-target-button': true,\n\t\t\t\t\t\t'is-selected': active,\n\t\t\t\t\t}}\n\t\t\t\t\tdata-tooltip={tooltip}\n\t\t\t\t\tdata-ariadescribedby={tooltip}\n\t\t\t\t\thook-insert={({elm: target}) => {\n\t\t\t\t\t\tdispatch(TOOLTIP_ADD_TARGET, {target});\n\t\t\t\t\t}}\n\t\t\t\t\thook-destroy={({elm: target}) => {\n\t\t\t\t\t\tdispatch(TOOLTIP_REMOVE_TARGET, {target});\n\t\t\t\t\t}}\n\t\t\t\t\taria-label={tooltip}\n\t\t\t\t\taria-pressed={active ? 'true' : 'false'}\n\t\t\t\t>\n\t\t\t\t\t<svg\n\t\t\t\t\t\tattr-width=\"12\"\n\t\t\t\t\t\tattr-height=\"12\"\n\t\t\t\t\t\tattr-viewBox=\"0 0 12 12\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<path\n\t\t\t\t\t\t\tfill-rule=\"evenodd\"\n\t\t\t\t\t\t\tclip-rule=\"evenodd\"\n\t\t\t\t\t\t\tattr-d=\"M10.8536 1.14645C11.0488 1.34171 11.0488 1.65829 10.8536 1.85355L1.85355 10.8536C1.65829 11.0488 1.34171 11.0488 1.14645 10.8536C0.951184 10.6583 0.951184 10.3417 1.14645 10.1464L10.1464 1.14645C10.3417 0.951184 10.6583 0.951184 10.8536 1.14645ZM10.8536 6.14645C11.0488 6.34171 11.0488 6.65829 10.8536 6.85355L6.85355 10.8536C6.65829 11.0488 6.34171 11.0488 6.14645 10.8536C5.95118 10.6583 5.95118 10.3417 6.14645 10.1464L10.1464 6.14645C10.3417 5.95118 10.6583 5.95118 10.8536 6.14645Z\"\n\t\t\t\t\t\t\tfill=\"black\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\ncreateCustomElement('now-resizable-target', {\n\trenderer: {type: snabbdom},\n\tproperties: {\n\t\tdir: {\n\t\t\tget default() {\n\t\t\t\treturn document.dir || 'ltr';\n\t\t\t},\n\t\t\treflect: true,\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t\tcontext: {\n\t\t\tdefault: 'normal',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['normal', 'float', 'fixed'],\n\t\t\t},\n\t\t},\n\t\tresizeTarget: {default: null},\n\t\tresizableMaxWidth: {\n\t\t\tdefault: null,\n\t\t\tschema: {\n\t\t\t\ttype: ['integer', 'null'],\n\t\t\t},\n\t\t},\n\t\tresizableMaxHeight: {\n\t\t\tdefault: null,\n\t\t\tschema: {\n\t\t\t\ttype: ['integer', 'null'],\n\t\t\t},\n\t\t},\n\t\tresizableMinWidth: {\n\t\t\tdefault: null,\n\t\t\tschema: {\n\t\t\t\ttype: ['integer', 'null'],\n\t\t\t},\n\t\t},\n\t\tresizableMinHeight: {\n\t\t\tdefault: null,\n\t\t\tschema: {\n\t\t\t\ttype: ['integer', 'null'],\n\t\t\t},\n\t\t},\n\t},\n\tsetInitialState() {\n\t\treturn {\n\t\t\tactive: false,\n\t\t\ttooltip: TOOLTIP,\n\t\t};\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['mousedown'],\n\t\t\teffect({\n\t\t\t\taction: {\n\t\t\t\t\tpayload: {event},\n\t\t\t\t},\n\t\t\t\tdispatch,\n\t\t\t\tproperties,\n\t\t\t\tupdateState,\n\t\t\t}) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst {\n\t\t\t\t\tcontext,\n\t\t\t\t\tresizableMaxHeight,\n\t\t\t\t\tresizableMaxWidth,\n\t\t\t\t\tresizableMinHeight,\n\t\t\t\t\tresizableMinWidth,\n\t\t\t\t\tresizeTarget,\n\t\t\t\t\tdir,\n\t\t\t\t} = properties;\n\n\t\t\t\tstartResize(event, {\n\t\t\t\t\tcontext,\n\t\t\t\t\tdispatch,\n\t\t\t\t\tresizableMaxHeight,\n\t\t\t\t\tresizableMaxWidth,\n\t\t\t\t\tresizableMinHeight,\n\t\t\t\t\tresizableMinWidth,\n\t\t\t\t\tresizeTarget,\n\t\t\t\t\tupdateState,\n\t\t\t\t\tdir,\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tevents: ['dblclick'],\n\t\t\teffect({action, dispatch, properties, updateState}) {\n\t\t\t\tconst {event} = action.payload;\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tconst {\n\t\t\t\t\tcontext,\n\t\t\t\t\tresizableMaxHeight,\n\t\t\t\t\tresizableMaxWidth,\n\t\t\t\t\tresizableMinHeight,\n\t\t\t\t\tresizableMinWidth,\n\t\t\t\t\tresizeTarget,\n\t\t\t\t\tdir,\n\t\t\t\t} = properties;\n\t\t\t\tlet resizeHandle = event\n\t\t\t\t\t.composedPath()\n\t\t\t\t\t.find((e) => e?.classList?.contains('now-resizable-target'));\n\t\t\t\tlet source = resizeHandle?.classList?.[2];\n\n\t\t\t\tif (resizeHandle) {\n\t\t\t\t\tstartResizeOperation({\n\t\t\t\t\t\tsource,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tresizableMaxHeight,\n\t\t\t\t\t\tresizableMaxWidth,\n\t\t\t\t\t\tresizableMinHeight,\n\t\t\t\t\t\tresizableMinWidth,\n\t\t\t\t\t\tresizeTarget,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tdir,\n\t\t\t\t\t\tresizeHandle,\n\t\t\t\t\t\ttooltip: TOOLTIP,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tevents: ['keydown', 'keyup'],\n\t\t\teffect({\n\t\t\t\taction: {\n\t\t\t\t\tpayload: {event},\n\t\t\t\t},\n\t\t\t\tdispatch,\n\t\t\t\tproperties,\n\t\t\t\tstate,\n\t\t\t\tupdateState,\n\t\t\t}) {\n\t\t\t\tconst {key} = event;\n\t\t\t\tconst {active} = state;\n\n\t\t\t\t// actuate the resizable beahvior\n\t\t\t\tif (['Enter', ' '].includes(key) && event.type === 'keydown') {\n\t\t\t\t\treturn updateState({\n\t\t\t\t\t\tactive: !active,\n\t\t\t\t\t\ttooltip: active ? TOOLTIP : ACTIVE_TOOLTIP,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// disable active state if they tab away or using escape\n\t\t\t\tif (active && ['Tab', 'Escape'].includes(key)) {\n\t\t\t\t\t// do not prevent default in this case as we want tab and escape to work\n\t\t\t\t\treturn updateState({\n\t\t\t\t\t\tactive: !active,\n\t\t\t\t\t\ttooltip: TOOLTIP,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!active ||\n\t\t\t\t\t!['ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight'].includes(key)\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst {\n\t\t\t\t\tcontext,\n\t\t\t\t\tresizableMaxHeight,\n\t\t\t\t\tresizableMaxWidth,\n\t\t\t\t\tresizableMinHeight,\n\t\t\t\t\tresizableMinWidth,\n\t\t\t\t\tresizeTarget,\n\t\t\t\t} = properties;\n\n\t\t\t\tif (event.type === 'keyup') {\n\t\t\t\t\treturn emitEnd(dispatch, {\n\t\t\t\t\t\tresizeTarget,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\ttooltip: ACTIVE_TOOLTIP,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tevent.preventDefault(); // prevent scroll effects when we are trying to resize\n\t\t\t\tstartResize(event, {\n\t\t\t\t\tcontext,\n\t\t\t\t\tresizableMaxHeight,\n\t\t\t\t\tresizableMaxWidth,\n\t\t\t\t\tresizableMinHeight,\n\t\t\t\t\tresizableMinWidth,\n\t\t\t\t\tresizeTarget,\n\t\t\t\t\tupdateState,\n\t\t\t\t\ttooltip: ACTIVE_TOOLTIP,\n\t\t\t\t});\n\n\t\t\t\t// TODO port over aria logic - probably should use new seismic aria live feature\n\t\t\t\t// @ui-core -> actionTypes -> ARIA_LIVE_REGION_UPDATE_REQUESTED -> disaptch({message, type})\n\t\t\t},\n\t\t},\n\t],\n\tview,\n\tstyles,\n\tbehaviors: [tooltipBehavior],\n});\n","import {actionTypes} from '@servicenow/ui-core';\nimport './components/resizable-target';\nconst {\n\tCOMPONENT_DOM_TREE_READY,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_DISCONNECTED,\n} = actionTypes;\n\nconst DEFAULT_ENBALED = false;\nconst DEFAULT_MIN_WIDTH = 0;\nconst DEFAULT_MAX_WIDTH = null; // null means it will honor the viewport at the time of calc\nconst DEFAULT_MIN_HEIGHT = 0;\nconst DEFAULT_MAX_HEIGHT = null; // null means it will honor the viewport at the time of calc\nconst DEFAULT_CONTEXT = 'normal';\nlet RESIZABLE_TARGET_NODES = new Map();\n\nexport default {\n\tname: 'resizableBehavior',\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_TREE_READY]: (coeffects) => {\n\t\t\tconst {action, host} = coeffects;\n\t\t\tconst {resizeTarget: target, getResizableConfig} = action.payload.options;\n\n\t\t\tconst config = getResizableConfig ? getResizableConfig(coeffects) : null;\n\n\t\t\tlet {\n\t\t\t\tenableResizable = DEFAULT_ENBALED,\n\t\t\t\tcontext = DEFAULT_CONTEXT,\n\t\t\t\tresizableMaxWidth = DEFAULT_MAX_WIDTH,\n\t\t\t\tresizableMinWidth = DEFAULT_MIN_WIDTH,\n\t\t\t\tresizableMaxHeight = DEFAULT_MAX_HEIGHT,\n\t\t\t\tresizableMinHeight = DEFAULT_MIN_HEIGHT,\n\t\t\t} = config ?? {};\n\n\t\t\tif (!enableResizable) return;\n\n\t\t\tconst resizeTarget = host?.shadowRoot?.querySelector(target) ?? host;\n\n\t\t\tif (!resizeTarget) return;\n\n\t\t\tconst latestTargetNode = Object.assign(\n\t\t\t\tdocument.createElement('now-resizable-target'),\n\t\t\t\t{\n\t\t\t\t\tcontext,\n\t\t\t\t\tresizeTarget,\n\t\t\t\t\tresizableMaxWidth,\n\t\t\t\t\tresizableMaxHeight,\n\t\t\t\t\tresizableMinHeight,\n\t\t\t\t\tresizableMinWidth,\n\t\t\t\t},\n\t\t\t);\n\t\t\tRESIZABLE_TARGET_NODES.set(host, latestTargetNode);\n\t\t\tresizeTarget.appendChild(latestTargetNode);\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: (coeffects) => {\n\t\t\tconst {action, host, properties} = coeffects;\n\t\t\tconst {resizeTarget: target} = action.payload.options;\n\t\t\tif (\n\t\t\t\ttarget !== '.now-modeless-dialog' ||\n\t\t\t\taction.payload.name !== 'resizableConfig'\n\t\t\t)\n\t\t\t\treturn;\n\n\t\t\tconst resizeTarget = host?.shadowRoot?.querySelector(target) ?? host;\n\t\t\tconst isFullscreen = resizeTarget?.classList?.contains('is-fullscreen');\n\t\t\tconst resizeTargetNode = RESIZABLE_TARGET_NODES.get(host);\n\t\t\tconst shouldResize =\n\t\t\t\tproperties?.resizableConfig?.enableResizable ?? false;\n\n\t\t\tconst canResize = resizeTargetNode === resizeTarget.lastChild;\n\t\t\tif ((canResize && isFullscreen) || (canResize && !shouldResize)) {\n\t\t\t\tif (resizeTargetNode) {\n\t\t\t\t\tresizeTarget.removeChild(resizeTargetNode);\n\t\t\t\t}\n\t\t\t} else if (!isFullscreen && resizeTargetNode && shouldResize) {\n\t\t\t\tresizeTarget.appendChild(resizeTargetNode);\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: (coeffects) => {\n\t\t\tconst {host} = coeffects;\n\t\t\tif (RESIZABLE_TARGET_NODES.has(host)) {\n\t\t\t\tRESIZABLE_TARGET_NODES.delete(host);\n\t\t\t}\n\t\t},\n\t\t'PRIVATE#RESIZABLE_END': {\n\t\t\tstopPropagation: true,\n\t\t},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the resize of the component has ended.\n\t\t * Payload contains a reference to the targets size and position.\n\t\t * @type {{width: number, height: number, left: number, top: number}}\n\t\t * @uib.description Dispatched when resize of the component has ended.\n\t\t */\n\t\t'PRIVATE#RESIZABLE_END': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\twidth: {type: 'number'},\n\t\t\t\t\theight: {type: 'number'},\n\t\t\t\t\tleft: {type: 'number'},\n\t\t\t\t\ttop: {type: 'number'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t},\n};\n","import {t} from 'sn-translate';\n\nexport const DRAG_BUTTON_DEFAULT_TOOLTIP_MSG = t(\n\t'Press SPACE to enable dragging.',\n);\n\nexport const DRAG_ENABLED_ANNOUNCEMENT_MSG = t(\n\t'Drag enabled. Press arrows to move by 1 pixel. Hold SHIFT and press arrows to move by 10 pixels. Press SPACE to place or cancel.',\n);\n\nexport const DRAG_PLACEMENT_MSG = t('Press SPACE to place or cancel.');\n\nexport const DRAG_ENABLED_TOOLTIP_MSG = t(\n\t'Use arrow keys to move by 1 px. Hold SHIFT to move by 10 px.',\n);\n\nexport const ORIGINAL_POSITION_MSG = t('Original Position');\n\nexport const DEFAULT_DIALOG_TITLE = t('Dialog');\n\nexport const VALID_DRAG_DIRECTIONS = ['up', 'down', 'left', 'right'];\n\nexport const VERTICAL_MOVEMENT_KEYS = [\n\t'ArrowUp',\n\t'ArrowDown',\n\t'PageUp',\n\t'PageDown',\n];\n\nexport const LOCALIZED_DIRECTIONS = {\n\tleft: t('Left'),\n\tright: t('Right'),\n\ttop: t('Top'),\n\tbottom: t('Bottom'),\n\tup: t('Up'),\n\tdown: t('Down'),\n};\n\nexport const DEFAULT_HEIGHT = 600;\nexport const DEFAULT_WIDTH = 380;\nexport const MIN_HEIGHT = 200;\nexport const MIN_WIDTH = 320;\n","import {t} from 'sn-translate';\n\nimport {LOCALIZED_DIRECTIONS} from './constants';\nimport {findTabbableNodes} from '@servicenow/library-enhanced-utils';\n\n// deteremine direction of drag movement based on event key. Return empty string if key is not supporting for dialog movement\nexport const getKeyToDirection = (key) => {\n\tlet direction = '';\n\tswitch (key) {\n\t\tcase 'ArrowRight':\n\t\t\tdirection = LOCALIZED_DIRECTIONS.right;\n\t\t\tbreak;\n\t\tcase 'ArrowLeft':\n\t\tcase 'Home':\n\t\t\tdirection = LOCALIZED_DIRECTIONS.left;\n\t\t\tbreak;\n\t\tcase 'PageUp':\n\t\tcase 'ArrowUp':\n\t\t\tdirection = LOCALIZED_DIRECTIONS.top;\n\t\t\tbreak;\n\t\tcase 'PageDown':\n\t\tcase 'ArrowDown':\n\t\tcase 'End':\n\t\t\tdirection = LOCALIZED_DIRECTIONS.bottom;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tdirection = '';\n\t}\n\treturn direction;\n};\n\nexport const getPanelCurrentPosition = (panel) => {\n\tconst elementRect = panel?.getBoundingClientRect();\n\n\treturn {\n\t\ttop: Math.floor(elementRect.top),\n\t\tleft: Math.floor(elementRect.left),\n\t};\n};\n\nexport const getDistanceAndDirectionMessage = (distanceInPixels, direction) => {\n\treturn t(\n\t\t{\n\t\t\tcode: 'now-modeless-dialog-directional-drag-messasge',\n\t\t\tmessage: '{distanceInPixels} pixels {direction}',\n\t\t\tcomment:\n\t\t\t\t'Describes the distance & direction dialog is located from the original position',\n\t\t},\n\t\t{distanceInPixels, direction},\n\t);\n};\n\nexport const getViewportEdgeMessage = (viewportEdge) => {\n\treturn t(\n\t\t{\n\t\t\tcode: 'now-modeless-dialog-viewport-edge-messasge',\n\t\t\tmessage: '{viewportEdge} boundary',\n\t\t\tcomment:\n\t\t\t\t'Describes the viewport edge during drag of dialog. Edge could be one of top, left, bottom, right',\n\t\t},\n\t\t{viewportEdge},\n\t);\n};\n\n/**\n * Sets focus on the modeless-dialog when initially opened. Modeless dialog, does not have any built-in\n * nodes, so we shouldn't do anything if none are found.\n * @param {HTMLElement} host\n */\nexport const handleFocus = (host) => {\n\tlet focusableNodes = findTabbableNodes(host);\n\tconst dialog = host.shadowRoot.querySelector('.now-modeless-dialog');\n\n\tif (focusableNodes.length) {\n\t\tfocusableNodes[0].focus();\n\t} else {\n\t\tdialog?.focus();\n\t}\n};\n\n/**\n * Checks if the dialog is within the viewport boundaries and returns if the dialog should be moved left, top, or bottom.\n * @param {HTMLElement} panelRef\n * @param {Window} window\n * @param {Object} resizableConfig\n * @param {Object} rect\n * @param {number} scrollbarWidth\n * @returns {Object} moveLeft, moveTop, moveBottom\n */\nexport const checkDialogBoundary = (\n\tpanelRef,\n\twindow,\n\tresizableConfig,\n\trect,\n\tscrollbarWidth,\n) => {\n\tconst {innerWidth: width, innerHeight: height} = window;\n\tconst leftOffset = parseFloat(panelRef.current.style.left);\n\n\tconst topOffset =\n\t\tpanelRef.current.style.top !== 'unset'\n\t\t\t? parseFloat(panelRef.current.style.top)\n\t\t\t: null;\n\tconst bottomOffset =\n\t\tpanelRef.current.style.bottom !== 'unset'\n\t\t\t? parseFloat(panelRef.current.style.bottom)\n\t\t\t: null;\n\n\tconst moveLeft = leftOffset + rect.width > width - scrollbarWidth;\n\tlet moveTop;\n\tlet moveBottom;\n\n\tif (resizableConfig) {\n\t\tif (topOffset > 0 && !bottomOffset) {\n\t\t\tmoveTop = topOffset + rect.height > height;\n\t\t} else if (!topOffset && bottomOffset > 0) {\n\t\t\tmoveBottom = bottomOffset + rect.height > height;\n\t\t}\n\t}\n\treturn {moveLeft, moveTop, moveBottom};\n};\n","import {t} from 'sn-translate';\nimport {actionTypes} from '@servicenow/ui-core';\nimport debounce from 'lodash/debounce';\nimport {\n\tORIGINAL_POSITION_MSG,\n\tVALID_DRAG_DIRECTIONS,\n\tDRAG_ENABLED_ANNOUNCEMENT_MSG,\n\tLOCALIZED_DIRECTIONS,\n\tDRAG_PLACEMENT_MSG,\n} from './constants';\nimport {getDistanceAndDirectionMessage, getViewportEdgeMessage} from './helper';\n\nconst {ARIA_LIVE_REGION_UPDATE_REQUESTED} = actionTypes;\n\n// wait timer value to detect idle movement for announcement of modal position\nconst DRAG_POSITION_ANNOUNCEMENT_DELAY = 5000;\nlet debounceDispatch = debounce((fn) => fn(), DRAG_POSITION_ANNOUNCEMENT_DELAY);\n\n// VO announcement when drag button gets focused\nexport const announceDragFocus = (dispatch) => {\n\tlet message = t({\n\t\tcode: 'now-modeless-dialog-drag-focus',\n\t\tmessage: 'Dialog drag, button. Press SPACE to enable dragging.',\n\t\tcomment: 'Announcement message when drag button is focused.',\n\t});\n\n\treturn dispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage,\n\t\ttype: 'polite',\n\t});\n};\n\n// VO announcement when button is toggled ON i.e drag function is activated\nexport const announceDragEnabled = (dispatch) => {\n\treturn dispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage: DRAG_ENABLED_ANNOUNCEMENT_MSG,\n\t\ttype: 'polite',\n\t});\n};\n\n// VO announcement when dialog is moved back at original position.\nexport const announceOriginalPosition = (dispatch) => {\n\treturn dispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage: ORIGINAL_POSITION_MSG,\n\t\ttype: 'assertive',\n\t});\n};\n\n// VO announcement when dialog moved in any direction by any amount of pixels, includes taking consideration of 4 sides of viewport boundary\nexport const announceDirectionalDrag = (\n\tdispatch,\n\tpixels,\n\tdirection,\n\tdirectionalBoundary,\n) => {\n\tlet message = getDistanceAndDirectionMessage(Math.abs(pixels), direction);\n\tlet viewportEdgeMessage = '';\n\tif (directionalBoundary !== '') {\n\t\tviewportEdgeMessage = getViewportEdgeMessage(directionalBoundary);\n\t\tviewportEdgeMessage += '. ';\n\t}\n\n\tmessage = `${viewportEdgeMessage}${message}`;\n\n\t// VALID_DRAG_DIRECTIONS check filters any other key that does not trigger any movement\n\tif (pixels !== 0 && VALID_DRAG_DIRECTIONS.includes(direction)) {\n\t\treturn dispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\tmessage,\n\t\t\ttype: 'assertive',\n\t\t});\n\t}\n};\n\n// VO announcement when drag is over.\nexport const announceDragEnd = (dispatch) => {\n\tlet message = t({\n\t\tcode: 'now-modeless-dialog-drag-end',\n\t\tmessage: 'Dialog placed. Press SPACE to enable dragging.',\n\t\tcomment: 'Announcement message when keyboard drag is finished.',\n\t});\n\n\treturn dispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\tmessage,\n\t\ttype: 'polite',\n\t});\n};\n\n// add delay to announce position when drag is active\nexport const announcePosition = (dispatch, dialogPositionMessage) => {\n\tlet finalMessage = t(\n\t\t{\n\t\t\tcode: 'now-modeless-dialog-drag-idle-position',\n\t\t\tmessage: '{dialogPositionMessage}. {DRAG_PLACEMENT_MSG}',\n\t\t\tcomment: 'Announcement message when drag movement is idle.',\n\t\t},\n\t\t{dialogPositionMessage, DRAG_PLACEMENT_MSG},\n\t);\n\n\tdebounceDispatch(() => {\n\t\tdispatch(ARIA_LIVE_REGION_UPDATE_REQUESTED, {\n\t\t\tmessage: finalMessage,\n\t\t\ttype: 'polite',\n\t\t});\n\t});\n};\n\n// drag button tooltip message when dialog is moved in any direction\n// x and y offset help determine movement left-right and up-down distance from original position when drag started\nexport const dragMovementTooltip = (xOffset, yOffset) => {\n\tconst leftOrRight =\n\t\txOffset > 0 ? LOCALIZED_DIRECTIONS.right : LOCALIZED_DIRECTIONS.left;\n\tconst upOrDown =\n\t\tyOffset > 0 ? LOCALIZED_DIRECTIONS.up : LOCALIZED_DIRECTIONS.down;\n\n\t// when there is no offset return original position\n\tif (xOffset === 0 && yOffset === 0) {\n\t\treturn ORIGINAL_POSITION_MSG;\n\t}\n\n\tlet leftOrRightOffsetMessage = '';\n\tlet upOrDownOffsetMessage = '';\n\tlet messageSeperator = '';\n\n\tif (xOffset !== 0) {\n\t\tleftOrRightOffsetMessage = getDistanceAndDirectionMessage(\n\t\t\tMath.abs(xOffset),\n\t\t\tleftOrRight,\n\t\t);\n\t}\n\n\tif (yOffset !== 0) {\n\t\tupOrDownOffsetMessage = getDistanceAndDirectionMessage(\n\t\t\tMath.abs(yOffset),\n\t\t\tupOrDown,\n\t\t);\n\t}\n\n\tif (leftOrRightOffsetMessage !== '' && upOrDownOffsetMessage !== '') {\n\t\tmessageSeperator = ', ';\n\t}\n\tconst finalMessage =\n\t\tleftOrRightOffsetMessage + messageSeperator + upOrDownOffsetMessage;\n\treturn finalMessage;\n};\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {actionTypes, modifierTypes} from '@servicenow/ui-core';\nimport {createRef} from '@servicenow/ui-renderer-snabbdom';\nimport {\n\tlayerEvents,\n\tfilterAriaAttributes,\n} from '@servicenow/library-enhanced-utils';\nimport {configAriaSchema} from '@servicenow/library-schemas';\nimport focusBehavior from '@servicenow/behavior-focus';\nimport modalBehavior from '@servicenow/behavior-modal';\nimport resizeBehavior from '@servicenow/behavior-resize';\nimport resizableBehavior from '@servicenow/behavior-resizable';\nimport styles from './_now-modeless-dialog.scss';\nimport {t} from 'sn-translate';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport '@servicenow/now-button';\nimport '@servicenow/now-icon';\n\nimport {\n\tDRAG_BUTTON_DEFAULT_TOOLTIP_MSG,\n\tVALID_DRAG_DIRECTIONS,\n\tDRAG_ENABLED_TOOLTIP_MSG,\n\tMIN_WIDTH,\n\tMIN_HEIGHT,\n\tDEFAULT_HEIGHT,\n\tDEFAULT_WIDTH,\n} from './utils/constants';\nimport {\n\tgetKeyToDirection,\n\tgetPanelCurrentPosition,\n\thandleFocus,\n\tcheckDialogBoundary,\n} from './utils/helper';\nimport {\n\tannounceDirectionalDrag,\n\tannounceOriginalPosition,\n\tdragMovementTooltip,\n\tannounceDragEnd,\n\tannounceDragEnabled,\n\tannounceDragFocus,\n\tannouncePosition,\n} from './utils/voiceover';\n\nconst {\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_PROPERTY_CHANGED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_DOM_TREE_READY,\n} = actionTypes;\n\nconst DEFAULT_MOVE_STEP = 1;\nconst SHIFT_MOVE_STEP = 10;\nlet VIEWPORT_WIDTH, VIEWPORT_HEIGHT;\n\nconst COMPONENT_RESIZED = 'NOW_RESIZE#ELEMENT_RESIZED';\n\nconst getMoveDistance = (isShiftKeyPressed) => {\n\treturn isShiftKeyPressed ? SHIFT_MOVE_STEP : DEFAULT_MOVE_STEP;\n};\n\nconst isSizeSet = (height, width) => {\n\treturn height !== DEFAULT_HEIGHT || width !== DEFAULT_WIDTH;\n};\n\nconst movePanel = (\n\tkey,\n\tisShiftKeyPressed,\n\tpanel,\n\tdispatch,\n\tstate,\n\tupdateState,\n) => {\n\tif (!panel) return;\n\n\tconst elementRect = panel?.getBoundingClientRect();\n\tconst moveDistance = getMoveDistance(isShiftKeyPressed);\n\tconst {panelPositionAtDragStart} = state;\n\n\tlet newTop = elementRect?.top;\n\tlet newLeft = elementRect?.left;\n\tconst elementWidth = elementRect?.width;\n\tconst elementHeight = elementRect?.height;\n\n\tlet directionalBoundary = '';\n\tif (key === 'ArrowUp' && newTop - moveDistance > 0) {\n\t\tnewTop -= moveDistance;\n\t} else if (\n\t\tkey === 'ArrowDown' &&\n\t\tnewTop + elementHeight + moveDistance < VIEWPORT_HEIGHT\n\t) {\n\t\tnewTop += moveDistance;\n\t} else if (key === 'ArrowLeft' && newLeft - moveDistance > 0) {\n\t\tnewLeft -= moveDistance;\n\t} else if (\n\t\tkey === 'ArrowRight' &&\n\t\tnewLeft + elementWidth + moveDistance < VIEWPORT_WIDTH\n\t) {\n\t\tnewLeft += moveDistance;\n\t} else if (key === 'PageUp') {\n\t\tnewTop = 0;\n\t} else if (key === 'PageDown') {\n\t\tnewTop = VIEWPORT_HEIGHT - elementHeight;\n\t} else if (key === 'Home') {\n\t\tnewLeft = 0;\n\t} else if (key === 'End') {\n\t\tnewLeft = VIEWPORT_WIDTH - elementWidth;\n\t} else {\n\t\tdirectionalBoundary = getKeyToDirection(key);\n\t}\n\n\tconst newBottom = VIEWPORT_HEIGHT - newTop - elementHeight;\n\n\tconst xOffset = Math.floor(newLeft - panelPositionAtDragStart.left);\n\tconst yOffset = Math.floor(panelPositionAtDragStart.top - newTop);\n\tconst dragMovementMessage = dragMovementTooltip(xOffset, yOffset);\n\tconst dragButtonTooltipMessage = `(${dragMovementMessage})`;\n\n\tlet pixels;\n\tlet direction = key.replace(/(Page|Arrow)/, '').toLowerCase();\n\n\t// handle direction determination for meta / function keys that component care\n\tif (key === 'Home') {\n\t\tdirection = 'left';\n\t} else if (key === 'End') {\n\t\tdirection = 'right';\n\t}\n\n\tpixels = direction === 'up' || direction === 'down' ? yOffset : xOffset;\n\n\t// key pressed is one of the valid direction key\n\tif (VALID_DRAG_DIRECTIONS.includes(direction)) {\n\t\t// ensuring there is offset for position announcement\n\t\tif (xOffset !== 0 || yOffset !== 0) {\n\t\t\tannounceDirectionalDrag(dispatch, pixels, direction, directionalBoundary);\n\t\t\tannouncePosition(dispatch, dragMovementMessage);\n\t\t} else {\n\t\t\tannounceOriginalPosition(dispatch);\n\t\t}\n\t}\n\n\tupdateState({\n\t\tpath: 'dragButtonTooltipMessage',\n\t\tvalue: dragButtonTooltipMessage,\n\t\toperation: 'set',\n\t\tshouldRender: true,\n\t});\n\t// update panel styles only if panel has not reached any edge / boundary of viewport\n\tif (directionalBoundary === '') {\n\t\tpanel.style.inset = 'unset';\n\t\tpanel.style.left = `${newLeft}px`;\n\n\t\t// If the dialog is closer to the bottom edge of the viewport than the top, allow it to expand upwards.\n\t\tif (newBottom < newTop) {\n\t\t\tpanel.style.bottom = `${newBottom}px`;\n\t\t\tpanel.style.top = 'unset';\n\t\t} else {\n\t\t\tpanel.style.top = `${newTop}px`;\n\t\t\tpanel.style.bottom = 'unset';\n\t\t}\n\n\t\tpanel.style.position = 'fixed';\n\t\tpanel.style.zIndex = '4000';\n\t\tpanel.style.margin = '0';\n\t}\n};\nconst getComputedDimension = (styles, property) => {\n\treturn Math.floor(\n\t\tparseFloat(styles.getPropertyValue(property).replace('px', '')),\n\t);\n};\n\nconst getMaximizedButtonConfigAria = (fullscreen) => {\n\tif (fullscreen) {\n\t\treturn {\n\t\t\tbutton: {\n\t\t\t\t'aria-label': t('Maximize dialog'),\n\t\t\t\t'aria-pressed': 'true',\n\t\t\t},\n\t\t};\n\t}\n\treturn {\n\t\tbutton: {\n\t\t\t'aria-label': t('Maximize dialog'),\n\t\t\t'aria-pressed': 'false',\n\t\t},\n\t};\n};\n\nconst getPanelPayload = ({event, styles, panel}) => {\n\tconst {left, top, x: clientX, y: clientY} = panel.getBoundingClientRect();\n\n\treturn {\n\t\tpositions: {\n\t\t\tmouse: {\n\t\t\t\tX: Math.floor(event?.clientX ?? clientX),\n\t\t\t\tY: Math.floor(event?.clientY ?? clientY),\n\t\t\t},\n\t\t\toffset: {\n\t\t\t\tleft: Math.floor(left),\n\t\t\t\ttop: Math.floor(top),\n\t\t\t},\n\t\t},\n\t\tdimensions: {\n\t\t\twidth: getComputedDimension(styles, 'width'),\n\t\t\theight: getComputedDimension(styles, 'height'),\n\t\t},\n\t};\n};\n\nconst setHeaderSlotsState = (host, updateState) => {\n\tconst hasHeaderSlots =\n\t\tBoolean(host.querySelector(\":scope > [slot='heading']\")) ||\n\t\tBoolean(host.querySelector(\":scope > [slot='actions']\"));\n\tupdateState({hasHeaderSlots});\n};\n\nconst generatePayload = (fullscreen, panelPayload, panel) => {\n\tconst styles = getComputedStyle(panel);\n\tconst payload = panelPayload ?? getPanelPayload({styles, panel});\n\treturn {...payload, fullscreen};\n};\n\nconst addDialogToStack = (\n\tid,\n\tdispatch,\n\tfullscreen,\n\tpanelPayload,\n\tpanel,\n\thost,\n) => {\n\tlayerEvents.add({\n\t\tid,\n\t\tevents: ['keydown'],\n\t\tcallback: (event) => {\n\t\t\tif (event.key !== 'Escape') return;\n\t\t\tpanel = panel ?? host?.shadowRoot?.querySelector('.now-modeless-dialog');\n\t\t\tif (panel) {\n\t\t\t\tdispatch(\n\t\t\t\t\t'NOW_MODELESS_DIALOG#CLOSE',\n\t\t\t\t\tgeneratePayload(fullscreen, panelPayload, panel),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tdispatch(() => {\n\t\t\t\treturn {\n\t\t\t\t\ttype: 'NOW_MODELESS_DIALOG#OPENED_SET',\n\t\t\t\t\tpayload: {value: false},\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t});\n};\n\nconst getPositionOffsetStyles = (offset, position) => {\n\tif (\n\t\t!Array.isArray(offset) ||\n\t\toffset.length != 2 ||\n\t\ttypeof offset?.[0] != 'number' ||\n\t\ttypeof offset?.[1] != 'number' ||\n\t\toffset?.[0] < 0 ||\n\t\toffset?.[1] < 0\n\t) {\n\t\t//offset must be an array with length 2, each value must be a number >= 0\n\t\toffset = [0, 0];\n\t} //reset to default if offset is invalid\n\tswitch (position) {\n\t\tcase 'top-left':\n\t\t\treturn {\n\t\t\t\tposition: 'fixed',\n\t\t\t\tinsetInlineStart: `${offset[0]}px`,\n\t\t\t\tinsetBlockStart: `${offset[1]}px`,\n\t\t\t};\n\t\tcase 'top-right':\n\t\t\treturn {\n\t\t\t\tposition: 'fixed',\n\t\t\t\tinsetInlineEnd: `${offset[0]}px`,\n\t\t\t\tinsetBlockStart: `${offset[1]}px`,\n\t\t\t};\n\t\tcase 'centered':\n\t\t\treturn {\n\t\t\t\tposition: 'fixed',\n\t\t\t\tinset: '0',\n\t\t\t\tmargin: 'auto',\n\t\t\t};\n\t\tcase 'bottom-left':\n\t\t\treturn {\n\t\t\t\tposition: 'fixed',\n\t\t\t\tinsetInlineStart: `${offset[0]}px`,\n\t\t\t\tinsetBlockEnd: `${offset[1]}px`,\n\t\t\t};\n\t\tcase 'bottom-right':\n\t\t\treturn {\n\t\t\t\tposition: 'fixed',\n\t\t\t\tinsetInlineEnd: `${offset[0]}px`,\n\t\t\t\tinsetBlockEnd: `${offset[1]}px`,\n\t\t\t};\n\t\tdefault: //unset\n\t\t\treturn undefined;\n\t}\n};\n\nconst getSizeStyles = (\n\theight,\n\twidth,\n\tresizableConfig = {},\n\tautoResizableConfig = {},\n) => {\n\tconst {\n\t\tenableAutoResizableHeight,\n\t\tautoResizableMinHeight,\n\t\tautoResizableMaxHeight,\n\t} = autoResizableConfig;\n\tconst {\n\t\tenableResizable,\n\t\tresizableMinHeight = DEFAULT_HEIGHT,\n\t\tresizableMaxHeight,\n\t} = resizableConfig;\n\n\tif (!enableAutoResizableHeight) {\n\t\treturn {\n\t\t\theight: `${height}px`,\n\t\t\twidth: `${width}px`,\n\t\t};\n\t}\n\n\tconst sizeStyles = {width: `${width}px`};\n\n\t// If both enableAutoResizableHeight and enableResizable are set, use the max-height and min-height values from the resizableConfig.\n\tif (enableResizable) {\n\t\tsizeStyles.minHeight = `${resizableMinHeight}px`;\n\n\t\tif (resizableMaxHeight) {\n\t\t\tsizeStyles.maxHeight = `${resizableMaxHeight}px`;\n\t\t}\n\n\t\treturn sizeStyles;\n\t}\n\n\tif (autoResizableMaxHeight) {\n\t\tsizeStyles.maxHeight = `${autoResizableMaxHeight}px`;\n\t}\n\tif (autoResizableMinHeight) {\n\t\tsizeStyles.minHeight = `${autoResizableMinHeight}px`;\n\t}\n\n\treturn sizeStyles;\n};\n\nconst accessibleDrag = (args) => {\n\tconst {panel, payload, dispatch} = args;\n\tlet raf;\n\n\tpanel.classList.add('resize-edge-highlight');\n\n\tconst handleMouseMove = (event) => {\n\t\tevent.preventDefault();\n\n\t\tif (raf) cancelAnimationFrame(raf);\n\t\traf = requestAnimationFrame(() => {\n\t\t\tchangePanelPosition(panel, payload, event);\n\t\t});\n\t};\n\n\tconst finalizeDrag = (event) => {\n\t\tconst styles = getComputedStyle(panel);\n\t\tconst updatedPayload = getPanelPayload({event, styles, panel});\n\t\tcleanup();\n\t\tdispatch('NOW_MODELESS_DIALOG#CLICK', updatedPayload);\n\t};\n\n\tconst cleanup = () => {\n\t\tpanel.classList.remove('resize-edge-highlight');\n\n\t\tdocument.removeEventListener('mousemove', handleMouseMove);\n\t\tdocument.removeEventListener('click', finalizeDrag);\n\t};\n\tdocument.addEventListener('mousemove', handleMouseMove);\n\tdocument.addEventListener('click', finalizeDrag);\n};\n\nconst canEnableDrag = ({event, host, fullscreen}) => {\n\tconst header = host.nowRootNode.querySelector('.now-modeless-dialog-header');\n\tconst footer = host.nowRootNode.querySelector('.now-modeless-dialog-footer');\n\tconst path = event.composedPath();\n\tconst isHeaderFooterInPath = path.includes(header) || path.includes(footer);\n\tif (isHeaderFooterInPath && !fullscreen) return true;\n\treturn false;\n};\n\nconst calculateDragPayload = ({event, panel}) => {\n\t/**\n\t * Provide initial position calculations up front so consuming\n\t * applications can run their own `mousemove` event and\n\t * calculate new positions relative to these:\n\t *\n\t * 1) Container top left corner's X and Y coordinates\n\t * 2) Container left and top offsets\n\t * 3) Mouse X and Y coordinates\n\t */\n\tconst rect = panel.getBoundingClientRect();\n\tconst styles = getComputedStyle(panel);\n\tconst payload = {\n\t\tpositions: {\n\t\t\tmouse: {\n\t\t\t\tX: Math.floor(event.pageX - pageXOffset),\n\t\t\t\tY: Math.floor(event.pageY - pageYOffset),\n\t\t\t},\n\t\t\toffset: {\n\t\t\t\tleft: Math.floor(rect.left),\n\t\t\t\ttop: Math.floor(rect.top),\n\t\t\t},\n\t\t},\n\t\tdimensions: {\n\t\t\twidth: getComputedDimension(styles, 'width'),\n\t\t\theight: getComputedDimension(styles, 'height'),\n\t\t},\n\t};\n\treturn payload;\n};\n\nconst mouseDrag = (args) => {\n\tconst {panel, payload, enableDrag, dispatch} = args;\n\tlet raf;\n\tif (!enableDrag) return;\n\tconst handleMouseMove = (event) => {\n\t\tevent.preventDefault();\n\n\t\tif (raf) cancelAnimationFrame(raf);\n\t\traf = requestAnimationFrame(() => {\n\t\t\tchangePanelPosition(panel, payload, event);\n\t\t});\n\t};\n\tconst unregisterMouseMove = (event) => {\n\t\tconst styles = getComputedStyle(panel);\n\t\tconst updatedPayload = getPanelPayload({event, styles, panel});\n\t\tif (!raf) dispatch('NOW_MODELESS_DIALOG#MOUSEUP', updatedPayload);\n\t\tdocument.removeEventListener('mousemove', handleMouseMove);\n\n\t\t// breaking mouse move can happen 2 different ways, so try to clean up both\n\t\tswitch (event.type) {\n\t\t\tcase 'mouseup':\n\t\t\t\tdispatch('NOW_MODELESS_DIALOG#MOUSEUP', updatedPayload);\n\t\t\t\treturn document.removeEventListener('mouseup', unregisterMouseMove);\n\t\t\tcase 'contextmenu':\n\t\t\t\treturn document.removeEventListener('contextmenu', unregisterMouseMove);\n\t\t}\n\t};\n\tdocument.addEventListener('mousemove', handleMouseMove);\n\tdocument.addEventListener('mouseup', unregisterMouseMove, {once: true});\n\tdocument.addEventListener('contextmenu', unregisterMouseMove, {once: true});\n};\n\nconst changePanelPosition = (panel, payload, event) => {\n\tconst {\n\t\tpositions: {offset, mouse},\n\t\tdimensions,\n\t} = payload;\n\tconst xPosition = mouse.X - offset.left;\n\tconst yPosition = mouse.Y - offset.top;\n\n\t// Calculate the new position of the dialog based on the mouse movement\n\tconst offsetX = event.clientX - xPosition;\n\tconst offsetY = event.clientY - yPosition;\n\n\tconst newTop = Math.min(\n\t\tMath.max(offsetY, 0),\n\t\tVIEWPORT_HEIGHT - dimensions.height,\n\t);\n\n\tconst newBottom = VIEWPORT_HEIGHT - newTop - dimensions.height;\n\n\t// Ensure the element stays within the viewport boundaries\n\tpanel.style.inset = 'unset';\n\tpanel.style.left = `${Math.min(\n\t\tMath.max(offsetX, 0),\n\t\tVIEWPORT_WIDTH - dimensions.width,\n\t)}px`;\n\n\t// If the dialog is closer to the bottom or top edge of the viewport, allow it to expand in the opposite direction.\n\tif (newBottom < newTop) {\n\t\tpanel.style.bottom = `${newBottom}px`;\n\t\tpanel.style.top = 'unset';\n\t} else {\n\t\tpanel.style.top = `${newTop}px`;\n\t\tpanel.style.bottom = 'unset';\n\t}\n\n\tpanel.style.position = 'fixed';\n\tpanel.style.zIndex = '4000';\n\tpanel.style.margin = '0';\n};\n\nconst renderHeading = (headingLabel, headingIcon, size) => {\n\tconst iconSize = {sm: 'md', md: 'lg'};\n\tconst {icon, variant} = headingIcon;\n\tif (icon) {\n\t\treturn (\n\t\t\t<div className=\"now-modeless-dialog-heading-container\">\n\t\t\t\t<now-icon\n\t\t\t\t\ticon={icon}\n\t\t\t\t\tsize={iconSize[size]}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t'now-modeless-dialog-heading-icon': true,\n\t\t\t\t\t\t['-' + variant]: variant,\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<h2 className=\"now-modeless-dialog-heading\">{headingLabel}</h2>\n\t\t\t</div>\n\t\t);\n\t} else {\n\t\treturn <h2 className=\"now-modeless-dialog-heading\">{headingLabel}</h2>;\n\t}\n};\n\nconst view = (state, {dispatch}) => {\n\tconst {\n\t\topened,\n\t\tcanDrag,\n\t\tenableDrag,\n\t\tposition,\n\t\toffset,\n\t\theight,\n\t\twidth,\n\t\tfitContent,\n\t\tautoResizableConfig,\n\t\theadingLabel,\n\t\theadingIcon,\n\t\tcanMaximize,\n\t\tcanMinimize,\n\t\tcanClose,\n\t\tvariant,\n\t\tsize,\n\t\tconfigAria,\n\t\tresizableConfig,\n\t} = state.properties;\n\n\tconst {\n\t\thasHeaderSlots,\n\t\tfullscreen,\n\t\tstartKeyboardDrag,\n\t\tdragButtonTooltipMessage,\n\t\tinResponsive,\n\t\tpanelRef,\n\t} = state;\n\n\tconst hasConfiguredContent =\n\t\tcanClose || canMaximize || canMinimize || headingLabel || enableDrag;\n\tconst shouldApplyFitContent = fitContent && !isSizeSet(height, width);\n\tconst sizeStyles = shouldApplyFitContent\n\t\t? {}\n\t\t: getSizeStyles(height, width, resizableConfig, autoResizableConfig);\n\tconst inFullscreen = fullscreen || inResponsive;\n\n\tconst buttonSize = {sm: 'md', md: 'lg'};\n\treturn (\n\t\t<div\n\t\t\tref={panelRef}\n\t\t\tclass={{\n\t\t\t\t'now-modeless-dialog': true,\n\t\t\t\t'is-open': opened,\n\t\t\t\t'is-fullscreen': inFullscreen,\n\t\t\t\t'can-drag': enableDrag,\n\t\t\t\t'fit-content': shouldApplyFitContent,\n\t\t\t\t'auto-resizable-height': autoResizableConfig?.enableAutoResizableHeight,\n\t\t\t}}\n\t\t\trole=\"dialog\"\n\t\t\ttabindex=\"-1\"\n\t\t\taria-hidden={opened ? 'false' : 'true'}\n\t\t\taria-labelledby={\n\t\t\t\thasHeaderSlots ? 'now-modeless-dialog-heading' : undefined\n\t\t\t}\n\t\t\t{...filterAriaAttributes(configAria, 'dialog')}\n\t\t\tstyle={{\n\t\t\t\t...getPositionOffsetStyles(offset, position),\n\t\t\t\t...sizeStyles,\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-modeless-dialog-header': true,\n\t\t\t\t\t'can-drag': canDrag || (enableDrag && !fullscreen),\n\t\t\t\t\t'-border-block-end': hasHeaderSlots || hasConfiguredContent,\n\t\t\t\t\t['-' + variant]: variant,\n\t\t\t\t\t['-' + size]: size,\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{hasConfiguredContent ? (\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t'now-modeless-dialog-header-container': true,\n\t\t\t\t\t\t\t['-' + size]: size,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{renderHeading(headingLabel, headingIcon, size)}\n\t\t\t\t\t\t<div className=\"now-modeless-dialog-header-actions\">\n\t\t\t\t\t\t\t<slot\n\t\t\t\t\t\t\t\tname=\"actions\"\n\t\t\t\t\t\t\t\tclassName=\"now-modeless-dialog-action-slot\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{canMinimize && (\n\t\t\t\t\t\t\t\t<now-button-iconic\n\t\t\t\t\t\t\t\t\tclassName=\"now-modeless-dialog-action-button-iconic\"\n\t\t\t\t\t\t\t\t\ticon=\"minimize-fill\"\n\t\t\t\t\t\t\t\t\tsize={buttonSize[size]}\n\t\t\t\t\t\t\t\t\thide-padding\n\t\t\t\t\t\t\t\t\tbare\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\ttooltip-content={t('Minimize dialog')}\n\t\t\t\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\t\t\t\t\t'aria-label': t('Minimize dialog'),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tappend-to-meta={{minimize: true}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{canMaximize && (\n\t\t\t\t\t\t\t\t<now-button-iconic\n\t\t\t\t\t\t\t\t\tclassName=\"now-modeless-dialog-action-button-iconic\"\n\t\t\t\t\t\t\t\t\ticon={inFullscreen ? 'collapse-fill' : 'expand-fill'}\n\t\t\t\t\t\t\t\t\tdisabled={inResponsive}\n\t\t\t\t\t\t\t\t\tsize={buttonSize[size]}\n\t\t\t\t\t\t\t\t\tbare\n\t\t\t\t\t\t\t\t\thide-padding\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\ttooltip-content={\n\t\t\t\t\t\t\t\t\t\tinResponsive\n\t\t\t\t\t\t\t\t\t\t\t? ''\n\t\t\t\t\t\t\t\t\t\t\t: inFullscreen\n\t\t\t\t\t\t\t\t\t\t\t\t? t('Exit Maximize')\n\t\t\t\t\t\t\t\t\t\t\t\t: t('Maximize dialog')\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconfig-aria={getMaximizedButtonConfigAria(inFullscreen)}\n\t\t\t\t\t\t\t\t\tappend-to-meta={{maximize: true}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{canClose && (\n\t\t\t\t\t\t\t\t<now-button-iconic\n\t\t\t\t\t\t\t\t\tclassName=\"now-modeless-dialog-action-button-iconic\"\n\t\t\t\t\t\t\t\t\ticon=\"close-fill\"\n\t\t\t\t\t\t\t\t\tsize={buttonSize[size]}\n\t\t\t\t\t\t\t\t\tbare\n\t\t\t\t\t\t\t\t\thide-padding\n\t\t\t\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\t\t\t\ttooltip-content={t('Close dialog')}\n\t\t\t\t\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\t\t\t\t\t'aria-label': t('Close dialog'),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tappend-to-meta={{close: true}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t) : (\n\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t<slot name=\"heading\" id=\"now-modeless-dialog-heading\" />\n\t\t\t\t\t\t<slot name=\"actions\" className=\"now-modeless-dialog-action-slot\" />\n\t\t\t\t\t</Fragment>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclassName=\"now-modeless-dialog-content\"\n\t\t\t\trole=\"document\"\n\t\t\t\t{...filterAriaAttributes(configAria, 'document')}\n\t\t\t>\n\t\t\t\t<slot name=\"content\" />\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'now-modeless-dialog-footer': true,\n\t\t\t\t\t'can-drag': canDrag || (enableDrag && !fullscreen),\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<slot name=\"footer\" />\n\t\t\t</div>\n\t\t\t{hasConfiguredContent && enableDrag && (\n\t\t\t\t<now-button-stateful\n\t\t\t\t\tclass={{'now-modeless-dialog-drag-button': true, ['-' + size]: size}}\n\t\t\t\t\ticon=\"grid-vertical-outline\"\n\t\t\t\t\tsize={buttonSize[size]}\n\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\thide-padding\n\t\t\t\t\tbare\n\t\t\t\t\tmanage-selected\n\t\t\t\t\thighlighted={startKeyboardDrag}\n\t\t\t\t\tselected={startKeyboardDrag}\n\t\t\t\t\ttooltip-content={dragButtonTooltipMessage}\n\t\t\t\t\tdisabled={fullscreen}\n\t\t\t\t\tappend-to-meta={{drag: true}}\n\t\t\t\t\ton-focus={() => headingLabel && dispatch('PRIVATE#DRAG_FOCUS')}\n\t\t\t\t\ton-blur={() => dispatch('PRIVATE#DRAG_BLUR')}\n\t\t\t\t\tconfig-aria={{\n\t\t\t\t\t\tbutton: {\n\t\t\t\t\t\t\t'aria-label': t('Dialog drag'),\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n\n/**\n * A modeless dialog element to be placed fixed on a page.\n * It has several slots to provide a wide range of customization\n * of its header, actions, content and footer.\n *\n * To fully utilize this component, you will need:\n * 1. A way to track the `opened` state of the dialog. E.g., an enclosing component.\n * 2. DIVs around the trigger and `now-modeless-dialog` element for fixed positioning.\n * 3. Styles to position the dialog within the wrapping DIVs.\n *\n * Example view, with wrappers and state:\n *\n * ```jsx\n * // sn-modeless-dialog.js\n *\n * <div className=\"sn-modeless-dialog-overlay\">\n * \t<div className=\"sn-modeless-dialog-position-container\">\n * \t\t<now-button-circular\n *\t\t\tclassName=\"sn-modeless-dialog-trigger\"\n *\t\t\tconfig-aria={{'aria-label': \"Open dialog\"}}\n *\t\t\ticon=\"chat-fill\"\n *\t\t\ttooltip-content=\"Open dialog\"\n *\t\t\taria-expanded={state.opened ? 'true' : 'false'}\n *\t\t\ton-click={() => updateState({open: !state.opened})}\n *\t\t/>\n * \t\t<now-modeless-dialog can-drag opened={state.opened}>\n * \t\t\t<h3 slot=\"heading\">\n *\t\t\t\t<!-- heading content -->\n *\t\t\t</h3>\n *\t\t\t<div slot=\"actions\">\n *\t\t\t\t<!-- buttons handle close, minimize, make full screen, etc -->\n *\t\t\t</div>\n *\t\t\t<div slot=\"content\">\n *\t\t\t\t<!-- body content -->\n *\t\t\t</div>\n *\t\t\t<div slot=\"footer\">\n *\t\t\t\t<!-- footer for actions, metadata, etc -->\n *\t\t\t</div>\n * \t\t</now-modeless-dialog>\n * \t</div>\n * </div>\n * ```\n *\n * Example styles for positioning:\n *\n * ```scss\n * .sn-modeless-dialog-overlay {\n * \tposition: fixed;\n * \ttop: 0;\n * \tright: 0;\n * \tbottom: 0;\n * \tleft: 0;\n * \tz-index: $now-global-layer--notify;\n * \tpointer-events: none;\n * }\n *\n * .sn-modeless-dialog-position-container {\n * \tposition: absolute;\n * \ttop: 0;\n * \tright: 0;\n * \twidth: 380px;\n * \theight: auto;\n * \tmargin: 20px;\n * \tpointer-events: none;\n * }\n * ```\n *\n * Additionally, you can add `overflow-y: auto;` to the content slot\n * element to allow its content to be scrollable.\n *\n * @seismicElement now-modeless-dialog\n * @summary A non-modal dialog element.\n * @uib.label Modeless Dialog\n * @uib.icon modeless-dialog\n * @uib.description A non-modal dialog element.\n * @uib.category modeless_dialog\n * @uib.associatedTypes global.core\n * @uib.properties variant, size, width, height, position, offset, opened, fitContent, enableDrag, canClose, canMinimize, canMaximize, headingLabel, headingIcon, resizableConfig, autoResizableConfig, enableFocus, configAria\n * @uib.actions NOW_MODELESS_DIALOG#OPENED_SET, NOW_MODELESS_DIALOG#MOUSEDOWN, NOW_MODELESS_DIALOG#CLOSE, NOW_MODELESS_DIALOG#MINIMIZE, NOW_MODELESS_DIALOG#MAXIMIZE, NOW_MODELESS_DIALOG#MOUSEUP, NOW_MODELESS_DIALOG#CONTENT_VISIBLE, NOW_MODELESS_DIALOG#RESIZABLE_END, NOW_MODELESS_DIALOG#CLICK, NOW_MODELESS_DIALOG#DOUBLE_CLICK\n */\ncreateEnhancedElement('now-modeless-dialog', {\n\tproperties: {\n\t\t/**\n\t\t * Deprecated, use `enableDrag`. If enabled, mousedown events\n\t\t * on the header and/or footer (if slots are given) will dispatch the\n\t\t * `NOW_MODELESS_DIALOG#MOUSEDOWN` action.\n\t\t * @type {boolean}\n\t\t * @private\n\t\t */\n\t\tcanDrag: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Indicates if the component is currently opened. Use `manage-opened` to override\n\t\t * the default behavior and handle the `NOW_MODELESS_DIALOG#OPENED_SET` action manually.\n\t\t * @type {boolean}\n\t\t * @uib.description If true, the dialog is opened.\n\t\t * @uib.label Opened\n\t\t */\n\t\topened: {\n\t\t\tdefault: false,\n\t\t\tmanageable: true,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Initial height in pixels of the dialog window\n\t\t * @type {number}\n\t\t * @uib.label Height\n\t\t * @uib.description Initial height of the dialog window\n\t\t */\n\t\theight: {\n\t\t\tdefault: 600,\n\t\t\tschema: {type: 'number'},\n\t\t},\n\t\t/**\n\t\t * Initial width in pixels of the dialog window\n\t\t * @type {number}\n\t\t * @uib.label Width\n\t\t * @uib.description Initial width of the dialog window\n\t\t */\n\t\twidth: {\n\t\t\tdefault: 380,\n\t\t\tschema: {type: 'number'},\n\t\t},\n\t\t/**\n\t\t * When set to true, the dialog will adjust its size to fit its content. This adjustment is static and occurs only at the time of rendering. Subsequent changes in content size will not trigger a resize.\n\t\t * @type {boolean}\n\t\t * @uib.description If true, the dialog will adjust it's size to fit its content.\n\t\t * @uib.label Fit Content\n\t\t */\n\t\tfitContent: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * An object representing the configuration for the auto resizable behavior.\n\t\t * Accepted values:\n\t\t * - enableAutoResizableHeight : @type {boolean} When true, auto resizable height behavior will be enabled.\n\t\t * - autoResizableMinHeight : @type {number} Minimum height in pixels that the dialog can be auto resized from. Default value is 200px.\n\t\t * - autoResizableMaxHeight : @type {number} Maximum height in pixels that the dialog can be auto resized to. Default value is window's height.\n\t\t *\n\t\t * NOTE: autoResizableMinHeight and autoResizableMaxHeight properties are not applicable when resizableConfig is enabled.\n\t\t * @type {{ enableAutoResizableHeight: boolean, autoResizableMinHeight: integer, autoResizableMaxHeight: integer }}\n\t\t * @uib.label Auto Resizable Config\n\t\t * @uib.description An object representing the configuration for the auto resizable behavior.\n\t\t * @uib.defaultValue {\"enableAutoResizableHeight\":true, \"autoResizableMinHeight\":200, \"autoResizableMaxHeight\":null}\n\t\t */\n\t\tautoResizableConfig: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tenableAutoResizableHeight: {type: 'boolean'},\n\t\t\t\t\tautoResizableMinHeight: {type: 'number'},\n\t\t\t\t\tautoResizableMaxHeight: {type: 'number'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Indicates if both the `opened` property and `state.fullscreen`\n\t\t * both true.\n\t\t * @private\n\t\t */\n\t\tsmallModalOpened: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * @private\n\t\t */\n\t\tisSmallModal: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * An object representing the configuration for the resizable behavior.\n\t\t * Accepted values:\n\t\t * - enableResizable : @type {boolean} When true, resize handles will be shown on the borders of the modal to support resizing.\n\t\t * - resizableMaxHeight : @type {number} Maximum height in pixels that the target element can be resized to. Default value is window's height.\n\t\t * - resizableMaxWidth : @type {number} Maximum width in pixels that the target element can be resized to. Default value is window's width\n\t\t * - resizableMinHeight : @type {number} Minimum height in pixels that the modal can be resized to. Default value is 600px.\n\t\t * - resizableMinWidth : @type {number} Minimum width in pixels that the modal can be resized to. Default value is 380px.\n\t\t * - context: @type {string} Defines how the resizable element exists on the page and within the document flow.\n\t\t * Note: The resizableMaxHeight, resizableMaxWidth, resizableMinHeight, and resizableMinWidth properties are not applicable when fitContent is set to true.\n\t\t * Context defines how the elements exists on the document.\n\t\t * Accepted values:\n\t\t * - normal, standard document flow. The element resides in the normal normal block or inline context and effects the surrounding elements.\n\t\t * - fixed, detached from the document flow. The element resides on top of the document, but its position over the document is maintained. (IE modal)\n\t\t * - float, detached from the document flow. The element resides on top of the document, but its position changes based off the resize directions (IE modeless-dialog)\n\t\t *\n\t\t * @type {{ enableResizable: boolean, resizableMinWidth: integer, resizableMinHeight: integer, resizableMaxWidth: integer, resizableMaxHeight: integer, context: ('normal' | 'fixed' | 'float') }}\n\t\t * @uib.label Resizable Config\n\t\t * @uib.description A. An object representing the configuration for the resizable behavior.\n\t\t * @uib.defaultValue {\"enableResizable\":true,\"resizableMinWidth\":380,\"resizableMinHeight\":600,\"resizableMaxWidth\":null,\"resizableMaxHeight\":null,\"context\":\"normal\"}\n\t\t */\n\t\tresizableConfig: {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tenableResizable: {type: 'boolean'},\n\t\t\t\t\tresizableMinWidth: {type: 'number'},\n\t\t\t\t\tresizableMinHeight: {\n\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t},\n\t\t\t\t\tresizableMaxWidth: {\n\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t},\n\t\t\t\t\tresizableMaxHeight: {\n\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t},\n\t\t\t\t\tcontext: {\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tenum: ['normal', 'fixed', 'float'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * A string representing the position of the modeless dialog.\n\t\t * Accepted values:\n\t\t * - top-left : @type {string} Top left position that the dialog will be positioned to.\n\t\t * - top-right : @type {string} Top right position that the dialog will be positioned to.\n\t\t * - centered : @type {string} Centered position that the dialog will be positioned to.\n\t\t * - bottom-right : @type {string} Bottom right position that the dialog will be positioned to.\n\t\t * - bottom-left: @type {string} Bottom left position that the dialog will be positioned to.\n\t\t * @type {( 'top-left'|'top-right'|'centered'|'bottom-right'|'bottom-left' )}\n\t\t * @uib.label Position\n\t\t * @uib.description A string representing the position of the modeless dialog.\n\t\t * @uib.defaultValue unset\n\t\t * @uib.fieldType choice\n\t\t */\n\t\tposition: {\n\t\t\tdefault: 'unset',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [\n\t\t\t\t\t'unset',\n\t\t\t\t\t'top-left',\n\t\t\t\t\t'top-right',\n\t\t\t\t\t'centered',\n\t\t\t\t\t'bottom-right',\n\t\t\t\t\t'bottom-left',\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Number of pixels to shift the modeless dialog.\n\t\t * The first value is the horizontal offset and the second value is the vertical offset.\n\t\t * The offset values must be greater than or equal to 0.\n\t\t * The offset is relative to the position of the dialog and moves the dialog towards the center of the screen.\n\t\t * The offset property is only used when the position property is set to top-left, top-right, bottom-left, or bottom-right.\n\t\t * @type {Array<number>}\n\t\t * @uib.label Offset\n\t\t * @uib.description Array or number of pixels to shift the modeless dialog.\n\t\t * @uib.defaultValue [0,0]\n\t\t * @uib.fieldType array\n\t\t *\n\t\t */\n\t\toffset: {\n\t\t\tdefault: [0, 0],\n\t\t\tschema: {type: 'array', items: {type: 'integer'}},\n\t\t},\n\t\t/** When true, enables the dragging of the dialog by clicking on the header or footer (if slots are given). Dispatches the NOW_MODELESS_DIALOG#MOUSEDOWN and NOW_MODELESS_DIALOG#MOUSEUP actions. When double click is used to drag the dialog, dispatches NOW_MODELESS_DIALOG#DOUBLE_CLICK and NOW_MODELESS_DIALOG#CLICK actions.\n\t\t * @type {boolean}\n\t\t * @uib.label Enable Drag\n\t\t * @uib.description When true, enables the dragging of the dialog by clicking on the header or footer (if slots are given). Dispatches the NOW_MODELESS_DIALOG#MOUSEDOWN and NOW_MODELESS_DIALOG#MOUSEUP actions. When double click is used to drag the dialog, dispatches NOW_MODELESS_DIALOG#DOUBLE_CLICK and NOW_MODELESS_DIALOG#CLICK actions.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\tenableDrag: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/** Heading for the modeless dialog. If provided, it will overwrite the heading slot.\n\t\t * @type {string}\n\t\t * @uib.label Heading\n\t\t * @uib.description Heading for the modeless dialog. If provided, it will overwrite the heading slot.\n\t\t */\n\t\theadingLabel: {\n\t\t\tschema: {type: 'string'},\n\t\t},\n\t\t/** Icon which will appear next to the modeless dialog `headingLabel`. Can also have a variant applied.\n\t\t * @type {{ icon: string, variant: ('initial' | 'primary' | 'secondary') }}\n\t\t * @uib.label Heading Icon\n\t\t * @uib.description Icon which will appear next to the Heading Label for the modeless dialog.\n\t\t */\n\t\theadingIcon: {\n\t\t\tdefault: {},\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\ticon: {\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t},\n\t\t\t\t\tvariant: {\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tenum: ['initial', 'primary', 'secondary'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/** When true, enables the maximize button. Dispatches NOW_MODELESS_DIALOG#MAXIMIZE.\n\t\t * @type {boolean}\n\t\t * @uib.label Show Maximize\n\t\t * @uib.description When true, enables the maximize button. Dispatches NOW_MODELESS_DIALOG#MAXIMIZE.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\tcanMaximize: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/** When true, enables the minimize button. Dispatches NOW_MODELESS_DIALOG#MINIMIZE.\n\t\t * @type {boolean}\n\t\t * @uib.label Show Minimize\n\t\t * @uib.description When true, enables the minimize button. Dispatches NOW_MODELESS_DIALOG#MINIMIZE.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\tcanMinimize: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/** When true, enables the close button. Dispatches NOW_MODELESS_DIALOG#CLOSE.\n\t\t * @type {boolean}\n\t\t * @uib.label Show Close\n\t\t * @uib.description When true, enables the close button. Dispatches NOW_MODELESS_DIALOG#CLOSE.\n\t\t * @uib.defaultValue false\n\t\t */\n\t\tcanClose: {\n\t\t\tdefault: false,\n\t\t\tschema: {type: 'boolean'},\n\t\t},\n\t\t/**\n\t\t * Sets the header content styles.\n\t\t * @type {('initial'|'primary'|'secondary')}\n\t\t * @uib.label Variant\n\t\t * @uib.description Sets the header content styles.\n\t\t */\n\t\tvariant: {\n\t\t\tdefault: 'initial',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['initial', 'primary', 'secondary'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Sets the header content size.\n\t\t * @type {('sm'|'md')}\n\t\t * @uib.label Size\n\t\t * @uib.description Sets the header content size.\n\t\t */\n\t\tsize: {\n\t\t\tdefault: 'md',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['sm', 'md'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * If set to true, sets focus within modeless-dialog on open.\n\t\t * @type {boolean}\n\t\t * @uib.label Enable Focus\n\t\t * @uib.description If set to true, sets focus within modeless-dialog on open.\n\t\t * @uib.defaultValue true\n\t\t * @uib.fieldType boolean\n\t\t */\n\t\tenableFocus: {default: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * modeless dialog. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'dialog' key corresponds to the element in the modeless dialog which has the aria\n\t\t * `role` of `dialog`. See https://www.w3.org/TR/wai-aria-1.2/#dialog for\n\t\t * properties and accepted values.\n\t\t * The 'document' key corresponds to the element in the modeless dialog which has the aria\n\t\t * `role` of `document`. See https://www.w3.org/TR/wai-aria-1.2/#document for\n\t\t * properties and accepted values.\n\t\t * @type {{ dialog: {'aria-*': string, role: string}, document: {'aria-*': string, role: string} }}\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tdialog: configAriaSchema,\n\t\t\t\t\tdocument: configAriaSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Slot to add heading content to the top of the dialog.\n\t\t * Use padding utility classes to add spacing.\n\t\t */\n\t\theading: {},\n\t\t/**\n\t\t * Slot to add dialog controls to close, minimize, or expand.\n\t\t * Use padding utility classes to add spacing.\n\t\t */\n\t\tactions: {},\n\t\t/**\n\t\t * Slot to add body content to the dialog.\n\t\t * Use padding utility classes to add spacing.\n\t\t */\n\t\tcontent: {},\n\t\t/**\n\t\t * Slot to add footer content, such as a toolbar or text input, to the dialog.\n\t\t * Use padding utility classes to add spacing.\n\t\t */\n\t\tfooter: {},\n\t},\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when the header or footer areas are clicked (assuming slots are\n\t\t * present) while the `can-drag` or `enable-drag` property is present.\n\t\t * @type {{positions: {mouse: {X: number, Y: number}, offset: {left: number, top: number}}, dimensions: {width: number, height: number}}}\n\t\t * @uib.description Dispatched when the header or footer areas are clicked (assuimng slots are presents) while the can-drag or enable-drag property is present.\n\t\t */\n\t\t'NOW_MODELESS_DIALOG#MOUSEDOWN': {},\n\t\t/**\n\t\t * Dispatched when the mouse key is released in header or footer areas (assuming slots are\n\t\t * present) while the `enable-drag` property is present.\n\t\t * @type {{positions: {mouse: {X: number, Y: number}, offset: {left: number, top: number}}, dimensions: {width: number, height: number}}}\n\t\t * @uib.description Dispatched when the mouse key is released in header or footer areas (assuimng slots are presents) while the enable-drag property is present.\n\t\t */\n\n\t\t'NOW_MODELESS_DIALOG#MOUSEUP': {},\n\t\t/**\n\t\t * Dispatched when the modal is dismissed by the user pressing the `Escape`\n\t\t * key while the modal is opened. Set the `manage-opened` property to\n\t\t * override the default behavior and handle this action manually.\n\t\t * @type {{value: boolean}}\n\t\t * @uib.description Dispatched when the modal is dismissed by the user pressing the Escape\n\t\t */\n\t\t'NOW_MODELESS_DIALOG#OPENED_SET': {},\n\t\t/**\n\t\t * Dispatched when close button is clicked (assuming `can-close` property is present). Sets the opened property of modeless dialog to false. Set the `manage-opened` property to\n\t\t * override the default behavior.\n\t\t * @type {{positions: {mouse: {X: number, Y: number}, offset: {left: number, top: number}}, dimensions: {width: number, height: number},fullscreen:boolean}}\n\t\t * @uib.description Dispatched when close button is clicked (assuming can-close property is present). Sets the opened property of modeless dialog to false. Set the manage-opened property to\n\t\t * override the default behavior.\n\t\t */\n\t\t'NOW_MODELESS_DIALOG#CLOSE': {},\n\t\t/**\n\t\t * Dispatched when maximized button is clicked (assuming `can-maximize` property is present). Sets modeless dialog to fullscreen mode\n\t\t * @type {{positions: {mouse: {X: number, Y: number}, offset: {left: number, top: number}}, dimensions: {width: number, height: number},fullscreen:boolean}}\n\t\t * @uib.description Dispatched when maximized button is clicked (assuming can-maximize property is present). Sets modeless dialog to fullscreen mode\n\t\t */\n\t\t'NOW_MODELESS_DIALOG#MAXIMIZE': {},\n\t\t/**\n\t\t * Dispatched when minimize button is clicked (assuming `can-minimize` property is present). Sets the opened property of modeless dialog to false. Set the `manage-opened` property to\n\t\t * override the default behavior.\n\t\t * @type {{positions: {mouse: {X: number, Y: number}, offset: {left: number, top: number}}, dimensions: {width: number, height: number},fullscreen:boolean}}\n\t\t * @uib.description Dispatched when minimize button is clicked (assuming can-minimize property is present). Sets the opened property of modeless dialog to false. Set the manage-opened property to\n\t\t * override the default behavior.\n\t\t */\n\t\t'NOW_MODELESS_DIALOG#MINIMIZE': {},\n\t\t/**\n\t\t * Dispatched when the modeless dialog opens and renders the content. Unlike\n\t\t * `NOW_MODELESS_DIALOG#OPENED_SET`, this action only fires after the\n\t\t * content is rendered.\n\t\t * @uib.description Dispatched when the modeless dialog opens and renders the content\n\t\t * @type {{}}\n\t\t */\n\t\t'NOW_MODELESS_DIALOG#CONTENT_VISIBLE': {},\n\t\t/**\n\t\t * Dispatched when manual resizing of the component is completed.\n\t\t * Payload contains a reference to the targets size and position.\n\t\t * @type {{width: number, height: number, left: number, top: number}}\n\t\t * @uib.description Dispatched when manual resizing of the component is completed.\n\t\t */\n\t\t'NOW_MODELESS_DIALOG#RESIZABLE_END': {},\n\t\t/**\n\t\t * Dispatched when the accessible drag operation is completed with a click (assuming slots are present) while the `can-drag` or `enable-drag` property is present.\n\t\t * Payload contains the final position and dimensions of the dialog.\n\t\t * @type {{positions: {mouse: {X: number, Y: number}, offset: {left: number, top: number}}, dimensions: {width: number, height: number}}}\n\t\t * @uib.description Dispatched when the accessible drag operation is completed with a click (assuming slots are present) while the `can-drag` or `enable-drag` property is present.\n\t\t */\n\t\t'NOW_MODELESS_DIALOG#CLICK': {},\n\t\t/**\n\t\t * Dispatched when the accessible drag operation is initiated with a double click (assuming slots are present) while the `can-drag` or `enable-drag` property is present.\n\t\t * Payload contains the final position and dimensions of the dialog.\n\t\t * @type {{positions: {mouse: {X: number, Y: number}, offset: {left: number, top: number}}, dimensions: {width: number, height: number}}}\n\t\t * @uib.description Dispatched when the accessible drag operation is initiated with a double click (assuming slots are present) while the `can-drag` or `enable-drag` property is present.\n\t\t */\n\t\t'NOW_MODELESS_DIALOG#DOUBLE_CLICK': {},\n\t},\n\tsetInitialState() {\n\t\treturn {\n\t\t\ttriggerEl: null,\n\t\t\thasHeaderSlots: false,\n\t\t\tfullscreen: false,\n\t\t\tdragButtonTooltipMessage: DRAG_BUTTON_DEFAULT_TOOLTIP_MSG,\n\t\t\tpanelPositionAtDragStart: {top: 0, left: 0},\n\t\t\tinResponsive: false,\n\t\t\tsavedResizableConfig: {},\n\t\t\tisManuallyResized: false,\n\t\t\tpanelRef: createRef(),\n\t\t\tkeepInViewport: false,\n\t\t};\n\t},\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: focusBehavior,\n\t\t},\n\t\t{\n\t\t\tbehavior: modalBehavior,\n\t\t\toptions: {\n\t\t\t\tlimit: 'now-modeless-dialog',\n\t\t\t\twatchPropertyName: 'smallModalOpened',\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tbehavior: resizeBehavior,\n\t\t\toptions: {\n\t\t\t\tresizeTarget: '.now-modeless-dialog',\n\t\t\t\ttimer: {type: 'debounce', wait: 200},\n\t\t\t\tcomponentManaged: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tbehavior: resizableBehavior,\n\t\t\toptions: {\n\t\t\t\tresizeTarget: '.now-modeless-dialog',\n\t\t\t\tgetResizableConfig: ({properties}) => {\n\t\t\t\t\tconst {fitContent, width, height, resizableConfig = {}} = properties;\n\n\t\t\t\t\tlet {\n\t\t\t\t\t\tresizableMinWidth: minWidth = width,\n\t\t\t\t\t\tresizableMinHeight: minHeight = height,\n\t\t\t\t\t\tresizableMaxWidth: maxWidth,\n\t\t\t\t\t\tresizableMaxHeight: maxHeight,\n\t\t\t\t\t} = resizableConfig;\n\n\t\t\t\t\tif (fitContent && !isSizeSet(height, width)) {\n\t\t\t\t\t\tminHeight = MIN_HEIGHT;\n\t\t\t\t\t\tmaxHeight = null;\n\t\t\t\t\t\tminWidth = MIN_WIDTH;\n\t\t\t\t\t\tmaxWidth = null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontext: 'normal',\n\t\t\t\t\t\t...resizableConfig,\n\t\t\t\t\t\tresizableMinWidth: minWidth,\n\t\t\t\t\t\tresizableMinHeight: minHeight,\n\t\t\t\t\t\tresizableMaxWidth: maxWidth,\n\t\t\t\t\t\tresizableMaxHeight: maxHeight,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t],\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['resize'],\n\t\t\teffect({dispatch, properties, state: {fullscreen, keepInViewport}}) {\n\t\t\t\tconst {enableDrag, opened} = properties;\n\t\t\t\tif (!opened) return;\n\t\t\t\tVIEWPORT_WIDTH = document.documentElement.clientWidth;\n\t\t\t\tVIEWPORT_HEIGHT = document.documentElement.clientHeight;\n\t\t\t\tdispatch('PRIVATE#CHECK_FIT');\n\t\t\t\tif ((enableDrag || keepInViewport) && !fullscreen) {\n\t\t\t\t\tdispatch('PRIVATE#VIEWPORT_RESIZE');\n\t\t\t\t}\n\t\t\t},\n\t\t\ttarget: window,\n\t\t},\n\t\t{\n\t\t\tevents: ['mousedown'],\n\t\t\teffect({\n\t\t\t\thost,\n\t\t\t\tdispatch,\n\t\t\t\tproperties: {canDrag, enableDrag},\n\t\t\t\taction,\n\t\t\t\tstate: {fullscreen},\n\t\t\t\tupdateState,\n\t\t\t}) {\n\t\t\t\tif (!canDrag && !enableDrag) return;\n\n\t\t\t\tconst {event} = action.payload;\n\n\t\t\t\tconst panel = host.nowRootNode.querySelector('.now-modeless-dialog');\n\t\t\t\tconst payload = calculateDragPayload({event, panel});\n\t\t\t\tif (canEnableDrag({event, host, fullscreen})) {\n\t\t\t\t\tmouseDrag({\n\t\t\t\t\t\tpanel,\n\t\t\t\t\t\tpayload,\n\t\t\t\t\t\tenableDrag,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t});\n\t\t\t\t\tupdateState([\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: 'panel',\n\t\t\t\t\t\t\tvalue: panel,\n\t\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: 'panelPayload',\n\t\t\t\t\t\t\tvalue: payload,\n\t\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tdispatch(() => ({type: 'NOW_MODELESS_DIALOG#MOUSEDOWN', payload}));\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tevents: ['keydown'],\n\t\t\teffect({\n\t\t\t\taction: {\n\t\t\t\t\tpayload: {event},\n\t\t\t\t},\n\t\t\t\thost,\n\t\t\t\tstate,\n\t\t\t\tupdateState,\n\t\t\t\tdispatch,\n\t\t\t}) {\n\t\t\t\tconst {\n\t\t\t\t\tproperties: {enableDrag},\n\t\t\t\t\tstartKeyboardDrag,\n\t\t\t\t} = state;\n\t\t\t\tif (!enableDrag) return;\n\t\t\t\tconst {key} = event;\n\t\t\t\tconst dragButtonElement = host.shadowRoot.querySelector(\n\t\t\t\t\t'.now-modeless-dialog-drag-button',\n\t\t\t\t);\n\t\t\t\tconst dragButtonExistsInEvent = Boolean(\n\t\t\t\t\tdragButtonElement && event.composedPath().includes(dragButtonElement),\n\t\t\t\t);\n\n\t\t\t\tif (dragButtonExistsInEvent && (key === 'Enter' || key === ' ')) {\n\t\t\t\t\tif (startKeyboardDrag) {\n\t\t\t\t\t\t// deactivate drag\n\t\t\t\t\t\tdispatch('PRIVATE#KEYBOARD_DRAG_END');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatch('PRIVATE#KEYBOARD_DRAG_START');\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if drag is active & user tab's ignore\n\t\t\t\tif (dragButtonExistsInEvent && key === 'Tab' && startKeyboardDrag) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst isShiftKeyPressed = event.shiftKey;\n\t\t\t\tif (startKeyboardDrag) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tconst panel =\n\t\t\t\t\t\tstate?.panel ??\n\t\t\t\t\t\thost?.shadowRoot?.querySelector('.now-modeless-dialog');\n\t\t\t\t\tmovePanel(\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tisShiftKeyPressed,\n\t\t\t\t\t\tpanel,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tevents: ['click'],\n\t\t\teffect({state, updateState}) {\n\t\t\t\tconst {startKeyboardDrag} = state;\n\t\t\t\tif (startKeyboardDrag) {\n\t\t\t\t\tupdateState([\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: 'startKeyboardDrag',\n\t\t\t\t\t\t\tvalue: false,\n\t\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t},\n\t\t\ttarget: window,\n\t\t},\n\t\t{\n\t\t\tevents: ['dblclick'],\n\t\t\teffect({\n\t\t\t\thost,\n\t\t\t\tdispatch,\n\t\t\t\tproperties: {canDrag, enableDrag},\n\t\t\t\taction,\n\t\t\t\tstate: {fullscreen},\n\t\t\t\tupdateState,\n\t\t\t}) {\n\t\t\t\tif (!canDrag && !enableDrag) return;\n\n\t\t\t\tconst {event} = action.payload;\n\t\t\t\tif (canEnableDrag({event, host, fullscreen})) {\n\t\t\t\t\tconst panel = host.nowRootNode.querySelector('.now-modeless-dialog');\n\t\t\t\t\tconst payload = calculateDragPayload({event, panel});\n\t\t\t\t\taccessibleDrag({\n\t\t\t\t\t\tpanel,\n\t\t\t\t\t\tpayload,\n\t\t\t\t\t\tenableDrag,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t});\n\t\t\t\t\tupdateState([\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpath: 'panel',\n\t\t\t\t\t\t\tvalue: panel,\n\t\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t]);\n\t\t\t\t\tdispatch(() => ({type: 'NOW_MODELESS_DIALOG#DOUBLE_CLICK', payload}));\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t],\n\tactionHandlers: {\n\t\t[COMPONENT_CONNECTED]: ({\n\t\t\thost,\n\t\t\tproperties,\n\t\t\tdispatch,\n\t\t\taction,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t}) => {\n\t\t\tconst {resizableConfig, opened} = properties;\n\t\t\tconst {id} = action.meta;\n\t\t\tconst {fullscreen, panelPayload, panel} = state;\n\t\t\tif (opened) {\n\t\t\t\taddDialogToStack(id, dispatch, fullscreen, panelPayload, panel, host);\n\t\t\t}\n\t\t\tif (resizableConfig) {\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'savedResizableConfig',\n\t\t\t\t\tvalue: resizableConfig,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t});\n\t\t\t}\n\t\t\tdispatch('PRIVATE#CHECK_FIT');\n\t\t\tdispatch('NOW_RESIZE#ENABLE');\n\t\t},\n\t\t[COMPONENT_DOM_TREE_READY]: ({\n\t\t\thost,\n\t\t\taction,\n\t\t\tproperties,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t}) => {\n\t\t\tconst {firstRenderOnConnect} = action.meta;\n\t\t\tif (!firstRenderOnConnect) return;\n\n\t\t\tVIEWPORT_HEIGHT = document.documentElement.clientHeight;\n\t\t\tVIEWPORT_WIDTH = document.documentElement.clientWidth;\n\t\t\t// There should only be a bottom border on the heading/actions\n\t\t\t// slots wrapper when either is present. We detect them in the light\n\t\t\t// dom, set state, and add a class to the wrapper. This is necessary\n\t\t\t// because there's no way to add a style to a parent from a child\n\t\t\t// selector in CSS.\n\t\t\tsetHeaderSlotsState(host, updateState);\n\n\t\t\tconst {\n\t\t\t\tfitContent,\n\t\t\t\theight,\n\t\t\t\twidth,\n\t\t\t\tautoResizableConfig,\n\t\t\t\topened,\n\t\t\t\tenableFocus,\n\t\t\t} = properties;\n\t\t\tif (fitContent && !isSizeSet(height, width)) {\n\t\t\t\t// Using requestAnimationFrame to ensure the slot content within the dialog is rendered before calculating the width and height.\n\t\t\t\twindow.requestAnimationFrame(() => {\n\t\t\t\t\tconst dialog = host.shadowRoot.querySelector('.now-modeless-dialog');\n\t\t\t\t\tconst rect = dialog.getBoundingClientRect();\n\t\t\t\t\tconst calculatedWidth = Math.ceil(rect.width);\n\t\t\t\t\tconst calculatedHeight = Math.ceil(rect.height);\n\n\t\t\t\t\tdialog.style.width = `${calculatedWidth}px`;\n\t\t\t\t\tif (!autoResizableConfig?.enableAutoResizableHeight) {\n\t\t\t\t\t\tdialog.style.height = `${calculatedHeight}px`;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (opened && enableFocus) {\n\t\t\t\thandleFocus(host);\n\t\t\t}\n\n\t\t\tdispatch('NOW_MODELESS_DIALOG#CONTENT_VISIBLE', {});\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: ({\n\t\t\tdispatch,\n\t\t\taction: {meta, payload},\n\t\t\tstate: {\n\t\t\t\tproperties: {opened, enableFocus},\n\t\t\t\tfullscreen,\n\t\t\t\tinResponsive,\n\t\t\t\tpanelPayload,\n\t\t\t\tpanel,\n\t\t\t},\n\t\t\tupdateState,\n\t\t\tupdateProperties,\n\t\t\thost,\n\t\t}) => {\n\t\t\tif (payload.name === 'isSmallModal') {\n\t\t\t\tupdateProperties({\n\t\t\t\t\tsmallModalOpened: opened && payload.value,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (payload.name === 'opened') {\n\t\t\t\tupdateProperties({\n\t\t\t\t\tsmallModalOpened: fullscreen && payload.value,\n\t\t\t\t});\n\t\t\t\tif (payload.value) {\n\t\t\t\t\taddDialogToStack(\n\t\t\t\t\t\tmeta.id,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tfullscreen,\n\t\t\t\t\t\tpanelPayload,\n\t\t\t\t\t\tpanel,\n\t\t\t\t\t\thost,\n\t\t\t\t\t);\n\t\t\t\t\tif (enableFocus) {\n\t\t\t\t\t\thandleFocus(host);\n\t\t\t\t\t}\n\t\t\t\t\tdispatch('NOW_MODELESS_DIALOG#CONTENT_VISIBLE', {});\n\t\t\t\t} else {\n\t\t\t\t\tlayerEvents.remove(meta.id);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (payload.name === 'resizableConfig') {\n\t\t\t\tif (!fullscreen && !inResponsive) {\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tpath: 'savedResizableConfig',\n\t\t\t\t\t\tvalue: payload.value,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (\n\t\t\t\tpayload.name === 'enableDrag' &&\n\t\t\t\tpayload.previousValue !== payload.value &&\n\t\t\t\t!fullscreen &&\n\t\t\t\t!inResponsive\n\t\t\t) {\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'keepInViewport',\n\t\t\t\t\tvalue: !payload.value,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: false,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: ({properties}) => {\n\t\t\tif (properties.opened) layerEvents.remove(properties.nowId);\n\t\t},\n\t\t['PRIVATE#KEYBOARD_DRAG_END']: ({host, state, updateState, dispatch}) => {\n\t\t\tconst panel =\n\t\t\t\tstate?.panel ?? host?.shadowRoot?.querySelector('.now-modeless-dialog');\n\t\t\tconst panelPosition = getPanelCurrentPosition(panel);\n\n\t\t\tupdateState([\n\t\t\t\t{\n\t\t\t\t\tpath: 'dragButtonTooltipMessage',\n\t\t\t\t\tvalue: DRAG_BUTTON_DEFAULT_TOOLTIP_MSG,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: 'startKeyboardDrag',\n\t\t\t\t\tvalue: false,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: 'panelPositionAtDragStart',\n\t\t\t\t\tvalue: panelPosition,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: true,\n\t\t\t\t},\n\t\t\t]);\n\t\t\tannounceDragEnd(dispatch);\n\t\t},\n\t\t['PRIVATE#KEYBOARD_DRAG_START']: ({host, updateState, dispatch}) => {\n\t\t\tconst panel = host?.shadowRoot?.querySelector('.now-modeless-dialog');\n\t\t\tif (!panel) return;\n\n\t\t\tconst panelPosition = getPanelCurrentPosition(panel);\n\t\t\tupdateState([\n\t\t\t\t{\n\t\t\t\t\tpath: 'dragButtonTooltipMessage',\n\t\t\t\t\tvalue: DRAG_ENABLED_TOOLTIP_MSG,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: 'startKeyboardDrag',\n\t\t\t\t\tvalue: true,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: true,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tpath: 'panelPositionAtDragStart',\n\t\t\t\t\tvalue: panelPosition,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: true,\n\t\t\t\t},\n\t\t\t]);\n\t\t\tannounceDragEnabled(dispatch);\n\t\t},\n\t\t['PRIVATE#DRAG_FOCUS']: ({host, dispatch, properties}) => {\n\t\t\tconst headingIcon = properties.headingIcon.icon;\n\t\t\tlet heading;\n\t\t\tif (headingIcon) {\n\t\t\t\theading = host.shadowRoot.querySelector(\n\t\t\t\t\t'.now-modeless-dialog-heading-container',\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\theading = host.shadowRoot.querySelector('.now-modeless-dialog-heading');\n\t\t\t}\n\t\t\tif (!heading) return;\n\t\t\theading.classList.add('drag-button-has-focus');\n\t\t\tannounceDragFocus(dispatch);\n\t\t},\n\n\t\t['PRIVATE#VIEWPORT_RESIZE']: {\n\t\t\tmodifier: {\n\t\t\t\tname: modifierTypes.DEBOUNCE,\n\t\t\t\tdelay: 50,\n\t\t\t\tmaxWait: 50,\n\t\t\t\tcollate: false,\n\t\t\t},\n\t\t\tstopPropagation: true,\n\t\t\teffect({state, properties}) {\n\t\t\t\tconst {panelRef, fullscreen, inResponsive, keepInViewport} = state;\n\t\t\t\tconst {resizableConfig} = properties;\n\t\t\t\tif (\n\t\t\t\t\tfullscreen ||\n\t\t\t\t\tinResponsive ||\n\t\t\t\t\t!panelRef ||\n\t\t\t\t\t(panelRef?.current?.style?.position !== 'fixed' && !keepInViewport)\n\t\t\t\t)\n\t\t\t\t\treturn;\n\n\t\t\t\tconst {innerWidth: width, innerHeight: height} = window;\n\n\t\t\t\tconst rect = panelRef.current.getBoundingClientRect();\n\t\t\t\tconst scrollbarWidth =\n\t\t\t\t\twindow.innerWidth - document.documentElement.clientWidth;\n\t\t\t\t// Fixes edge case where dialog would be in the incorrect position after going from fullscreen to default size\n\t\t\t\tif (rect.width === width - scrollbarWidth) return;\n\t\t\t\tlet {moveLeft, moveTop, moveBottom} = checkDialogBoundary(\n\t\t\t\t\tpanelRef,\n\t\t\t\t\twindow,\n\t\t\t\t\tresizableConfig,\n\t\t\t\t\trect,\n\t\t\t\t\tscrollbarWidth,\n\t\t\t\t);\n\n\t\t\t\twindow.requestAnimationFrame(() => {\n\t\t\t\t\tif (moveLeft) {\n\t\t\t\t\t\tpanelRef.current.style.left = `${width - rect.width - scrollbarWidth}px`;\n\t\t\t\t\t}\n\t\t\t\t\tif (moveTop) {\n\t\t\t\t\t\tpanelRef.current.style.top = `${height - rect.height}px`;\n\t\t\t\t\t}\n\t\t\t\t\tif (moveBottom) {\n\t\t\t\t\t\tpanelRef.current.style.bottom = `${height - rect.height}px`;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\t['PRIVATE#DRAG_BLUR']: ({host, properties}) => {\n\t\t\tconst headingIcon = properties.headingIcon.icon;\n\t\t\tlet heading;\n\t\t\tif (headingIcon) {\n\t\t\t\theading = host.shadowRoot.querySelector(\n\t\t\t\t\t'.now-modeless-dialog-heading-container',\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\theading = host.shadowRoot.querySelector('.now-modeless-dialog-heading');\n\t\t\t}\n\t\t\tif (!heading) return;\n\t\t\theading.classList.remove('drag-button-has-focus');\n\t\t},\n\t\t[COMPONENT_RESIZED]: ({host, updateProperties, state, properties}) => {\n\t\t\tconst {fullscreen, isManuallyResized} = state;\n\t\t\tconst {autoResizableConfig, enableDrag} = properties;\n\n\t\t\tupdateProperties({isSmallModal: fullscreen});\n\n\t\t\tif (isManuallyResized || !enableDrag) return;\n\n\t\t\tif (autoResizableConfig?.enableAutoResizableHeight) {\n\t\t\t\tconst panel = host.shadowRoot.querySelector('.now-modeless-dialog');\n\t\t\t\tconst rect = panel.getBoundingClientRect();\n\n\t\t\t\tconst isAtTopEdge = rect.top <= 0;\n\t\t\t\tconst isAtBottomEdge = rect.bottom >= VIEWPORT_HEIGHT;\n\n\t\t\t\t// If the dialog hits the top or bottom edge of the viewport, set 'top' or 'bottom' so it expands in the opposite direction.\n\t\t\t\tif (isAtTopEdge && panel.style.top === 'unset') {\n\t\t\t\t\tpanel.style.top = rect.top >= 0 ? `${rect.top}px` : '0px';\n\t\t\t\t\tpanel.style.bottom = 'unset';\n\t\t\t\t} else if (isAtBottomEdge && panel.style.bottom === 'unset') {\n\t\t\t\t\tpanel.style.bottom =\n\t\t\t\t\t\trect.bottom <= VIEWPORT_HEIGHT\n\t\t\t\t\t\t\t? `${VIEWPORT_HEIGHT - rect.bottom}px`\n\t\t\t\t\t\t\t: '0px';\n\t\t\t\t\tpanel.style.top = 'unset';\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'PRIVATE#CHECK_FIT': {\n\t\t\tmodifier: {\n\t\t\t\tname: modifierTypes.DEBOUNCE,\n\t\t\t\tdelay: 25,\n\t\t\t\tmaxWait: 100,\n\t\t\t\tcollate: false,\n\t\t\t},\n\t\t\teffect({\n\t\t\t\tproperties,\n\t\t\t\tstate: {inResponsive, fullscreen},\n\t\t\t\tupdateState,\n\t\t\t\tdispatch,\n\t\t\t}) {\n\t\t\t\tconst {innerHeight: height, innerWidth: width} = window;\n\t\t\t\tconst {\n\t\t\t\t\tresizableConfig: {\n\t\t\t\t\t\tresizableMinWidth = properties.width,\n\t\t\t\t\t\tresizableMinHeight = properties.height,\n\t\t\t\t\t} = {},\n\t\t\t\t} = properties;\n\n\t\t\t\tconst value = width < resizableMinWidth || height < resizableMinHeight;\n\t\t\t\tif (value !== inResponsive && !fullscreen) {\n\t\t\t\t\tif (value) {\n\t\t\t\t\t\tdispatch('PRIVATE#ENTER_FULLSCREEN');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdispatch('PRIVATE#EXIT_FULLSCREEN');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tupdateState({\n\t\t\t\t\tpath: 'inResponsive',\n\t\t\t\t\tvalue,\n\t\t\t\t\toperation: 'set',\n\t\t\t\t\tshouldRender: value !== inResponsive,\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\t'PRIVATE#ENTER_FULLSCREEN': {\n\t\t\tmodifier: {\n\t\t\t\tname: modifierTypes.DEBOUNCE,\n\t\t\t\tdelay: 5,\n\t\t\t\tmaxWait: 5,\n\t\t\t\tcollate: false,\n\t\t\t},\n\t\t\teffect: ({properties, updateProperties, host, updateState}) => {\n\t\t\t\tconst {resizableConfig, opened} = properties;\n\t\t\t\tif (!opened) return;\n\n\t\t\t\t// Set the top before going fullscreen to allow for a smooth animation\n\t\t\t\tconst panel = host.nowRootNode.querySelector('.now-modeless-dialog');\n\t\t\t\tconst rect = panel.getBoundingClientRect();\n\t\t\t\tpanel.style.top = `${rect.top}px`;\n\t\t\t\t// Wait a frame to allow the new style to be set before triggering a render\n\t\t\t\trequestAnimationFrame(() => updateState({fullscreen: true}));\n\n\t\t\t\tif (resizableConfig?.enableResizable) {\n\t\t\t\t\tupdateProperties({resizableConfig: {enableResizable: false}});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t'PRIVATE#EXIT_FULLSCREEN': {\n\t\t\tmodifier: {\n\t\t\t\tname: modifierTypes.DEBOUNCE,\n\t\t\t\tdelay: 5,\n\t\t\t\tmaxWait: 5,\n\t\t\t\tcollate: false,\n\t\t\t},\n\t\t\teffect: ({\n\t\t\t\tstate: {savedResizableConfig},\n\t\t\t\tproperties,\n\t\t\t\tupdateProperties,\n\t\t\t\tupdateState,\n\t\t\t}) => {\n\t\t\t\tconst {resizableConfig, opened} = properties;\n\t\t\t\tupdateState({fullscreen: false});\n\t\t\t\tif (!opened) return;\n\t\t\t\tif (!resizableConfig?.enableResizable) {\n\t\t\t\t\tupdateProperties({resizableConfig: savedResizableConfig});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\t['NOW_BUTTON_ICONIC#CLICKED']: ({action, dispatch, state, host}) => {\n\t\t\tconst {\n\t\t\t\tmeta: {appended},\n\t\t\t} = action;\n\n\t\t\tconst panel =\n\t\t\t\tstate?.panel ?? host?.shadowRoot?.querySelector('.now-modeless-dialog');\n\t\t\tif (!panel) return;\n\t\t\tconst {fullscreen, panelPayload} = state;\n\t\t\tconst payload = generatePayload(fullscreen, panelPayload, panel);\n\t\t\tif (appended?.minimize) {\n\t\t\t\tdispatch('NOW_MODELESS_DIALOG#MINIMIZE', payload);\n\t\t\t\tdispatch('NOW_MODELESS_DIALOG#OPENED_SET', {value: false});\n\t\t\t} else if (appended?.maximize) {\n\t\t\t\tdispatch('NOW_MODELESS_DIALOG#MAXIMIZE', payload);\n\t\t\t\tif (!fullscreen) {\n\t\t\t\t\tdispatch('PRIVATE#ENTER_FULLSCREEN');\n\t\t\t\t} else {\n\t\t\t\t\tdispatch('PRIVATE#EXIT_FULLSCREEN');\n\t\t\t\t}\n\t\t\t} else if (appended?.close) {\n\t\t\t\tdispatch('NOW_MODELESS_DIALOG#CLOSE', payload);\n\t\t\t\tdispatch('NOW_MODELESS_DIALOG#OPENED_SET', {value: false});\n\t\t\t}\n\t\t},\n\t\t['PRIVATE#RESIZABLE_END']: {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({action: {payload}, dispatch, updateState}) => {\n\t\t\t\tupdateState({isManuallyResized: true});\n\t\t\t\tdispatch('NOW_MODELESS_DIALOG#RESIZABLE_END', {...payload});\n\t\t\t},\n\t\t},\n\t},\n\tstyles,\n\tview,\n});\n","import './now-modeless-dialog';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","const TAIL_LENGTH = 20;\nconst OFFSET = 8;\nconst MIN_SIZE = TAIL_LENGTH + OFFSET * 2;\n\nexport default function setTailPosition({\n\tpanel,\n\tcontentArea,\n\ttargetDimensions,\n\tcontentDimensions,\n\tcontentAreaDimensions,\n\ttargetPosition,\n\tcontentPosition,\n}) {\n\tconst {offset, direction} = getTailPosition({\n\t\ttargetDimensions,\n\t\tcontentDimensions,\n\t\tcontentAreaDimensions,\n\t\ttargetPosition,\n\t\tcontentPosition,\n\t});\n\tif (offset >= 0) {\n\t\tcontentArea.style.setProperty('--popover-tail', `${offset}px`);\n\t}\n\tpanel.tailDirection = direction;\n}\n\nfunction getMinOffset(targetDimensions, contentDimensions, dim) {\n\t// space to display tail with OFFSET padding on both sides\n\tif (targetDimensions[dim] >= MIN_SIZE && contentDimensions[dim] >= MIN_SIZE) {\n\t\treturn OFFSET;\n\t}\n\t// no space to display any padding\n\tif (contentDimensions[dim] <= MIN_SIZE) {\n\t\treturn 0;\n\t}\n\t// in between - center the tail by dividing the available space\n\treturn (targetDimensions[dim] - TAIL_LENGTH) / 2;\n}\n\nexport function getTailPosition({\n\ttargetDimensions,\n\tcontentDimensions,\n\tcontentAreaDimensions,\n\ttargetPosition,\n\tcontentPosition,\n}) {\n\tlet offset, direction;\n\tif (\n\t\tcontentPosition[0] === targetPosition[0] &&\n\t\tcontentPosition[1] !== targetPosition[1]\n\t) {\n\t\t// block positions match, so alignment is on inline / horizontal axis\n\t\tdirection = contentPosition[1] === 'end' ? 'right' : 'left';\n\t\tconst minYOffset = getMinOffset(\n\t\t\ttargetDimensions,\n\t\t\tcontentDimensions,\n\t\t\t'height',\n\t\t);\n\t\tif (contentPosition[0] === 'top') {\n\t\t\toffset = minYOffset;\n\t\t} else if (contentPosition[0] === 'center') {\n\t\t\tconst middleOfTarget = targetDimensions.height / 2;\n\t\t\tconst deltaY = targetDimensions.top - contentAreaDimensions.top;\n\t\t\toffset = deltaY + middleOfTarget - TAIL_LENGTH / 2;\n\t\t} else if (contentPosition[0] === 'bottom') {\n\t\t\toffset = contentAreaDimensions.height - minYOffset - TAIL_LENGTH;\n\t\t}\n\t} else if (\n\t\tcontentPosition[1] === targetPosition[1] &&\n\t\tcontentPosition[0] !== targetPosition[0]\n\t) {\n\t\t// inline positions match, so alignment is on block / vertical axis\n\t\tdirection = contentPosition[0] === 'top' ? 'up' : 'down';\n\t\tconst minXOffset = getMinOffset(\n\t\t\ttargetDimensions,\n\t\t\tcontentDimensions,\n\t\t\t'width',\n\t\t);\n\t\tif (contentPosition[1] === 'start') {\n\t\t\toffset = minXOffset;\n\t\t} else if (contentPosition[1] === 'center') {\n\t\t\tconst middleOfTarget = targetDimensions.width / 2;\n\t\t\tconst deltaX = targetDimensions.left - contentAreaDimensions.left;\n\t\t\toffset = deltaX + middleOfTarget - TAIL_LENGTH / 2;\n\t\t} else if (contentPosition[1] === 'end') {\n\t\t\toffset = contentAreaDimensions.width - minXOffset - TAIL_LENGTH;\n\t\t}\n\t}\n\n\treturn {\n\t\tdirection,\n\t\toffset,\n\t};\n}\n","import find from 'lodash/find';\n\nconst HOIST_TAG = 'SEISMIC-HOIST';\nconst POPOVER_PANEL_TAG = 'NOW-POPOVER-PANEL';\n\nexport function getContent(host) {\n\treturn host.querySelectorAll('[slot=content]');\n}\n\nexport function getFirstTrigger(host) {\n\treturn host.querySelector('[slot=trigger]');\n}\n\n/**\n * Gets the parent popover panel of the current panel, if it exists.\n *\n * @param {HTMLElement} panel - The panel to recurse.\n * @returns {(HTMLElement|null)}\n */\n\nfunction getNextPanel(panel) {\n\tlet parent = panel.nowPopover;\n\n\twhile ((parent = parent.getRootNode().host) !== undefined) {\n\t\t// If we end up at seismic-hoist, our next\n\t\t// parent should be now-popover-panel. This\n\t\t// happens for non-slotted content.\n\t\tif (parent.tagName === HOIST_TAG) {\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\t// If we're slotted, we can find the panel in the direct parent\n\t\tconst directParent = parent.closest(POPOVER_PANEL_TAG);\n\t\tif (directParent) {\n\t\t\tparent = directParent;\n\t\t}\n\n\t\tif (parent.tagName === POPOVER_PANEL_TAG) {\n\t\t\treturn parent;\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * Checks if the given element is a popover panel that is nested within a\n * another panel.\n *\n * @param {HTMLElement[]} path - The elements in the event path\n * @param {HTMLElement} panel - The root panel\n *\n * @returns {boolean} `true` if the element is itself a panel that is\n * originally contained within the `panel`. Otherwise, returns `false`.\n */\nexport function isInPanel(path, panel) {\n\tif (!panel) return false;\n\n\tfor (const node of path) {\n\t\tif (node === panel || node === panel.nowPopover) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (node.tagName === POPOVER_PANEL_TAG) {\n\t\t\tconst nextPanel = getNextPanel(node);\n\t\t\tif (nextPanel && isInPanel([nextPanel], panel)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Determine which slotted trigger was interacted with.\n */\nexport function findTriggerFromEvent(event, slot) {\n\tconst assignedNodes = slot.assignedNodes({flatten: true});\n\n\tif (assignedNodes.length === 0) {\n\t\treturn null;\n\t}\n\n\tif (assignedNodes.length === 1) {\n\t\treturn assignedNodes[0];\n\t}\n\n\t// if there are multiple slotted triggers, the one that we want will be right\n\t// before the <slot> node in the composed path\n\treturn find(event.composedPath(), (node, index, path) => {\n\t\tconst nextNode = path[index + 1];\n\t\treturn nextNode === slot;\n\t});\n}\n\n/**\n * Dynamically create a `<now-popover-panel />` element in the correct location\n * in the DOM and hoist slotted content to that element. We want Seismic to\n * control hoisting the content so that actions and events can be re-routed\n * correctly, but we still need want to include the now-popover-panel as a\n * parent to ensure we have the correct markup and styles required to use\n * getBestFitInfo.\n *\n * We also can't hoist the now-popover-panel directly, because it wouldn't be\n * able to take the content (slotted into the parent now-popover) along with\n * it.\n */\nexport async function hoist(host, container, nodes) {\n\tconst panel = document.createElement(POPOVER_PANEL_TAG);\n\n\t// provide a reference back to the original <now-popover> from the panel\n\t// element. This is used so that we can figure out the original DOM order of\n\t// elements when we receive an event from the hoisted panel.\n\tpanel.nowPopover = host;\n\n\t// Seismic will render the panel asynchronously, so we need to wait for that\n\t// to happen. Since we're creating the panel outside of a normal view\n\t// function/render hierarchy, we can't really listen for an action to be\n\t// dispatched from the panel. Instead, we have a custom callback function\n\t// that panel calls once it has been rendered :(\n\treturn await new Promise((resolve) => {\n\t\tpanel.onReady = resolve;\n\n\t\tcontainer.append(panel);\n\n\t\tfor (const node of nodes) {\n\t\t\tnode.nowHoistAppendTo = panel;\n\t\t\tnode.nowHoist = true;\n\t\t}\n\t});\n}\n\nexport function unhoist(panel, content) {\n\tfor (const node of content) {\n\t\tnode.nowHoist = false;\n\t\tnode.nowHoistAppendTo = null;\n\t}\n\n\tif (panel) {\n\t\tpanel.remove();\n\t}\n}\n\n/**\n * Attaches a listener to the container, then fires a fake event from the given element\n * to identify all ancestor elements in the element's DOM tree. More efficient than\n * climbing the tree recursively.\n * @param {string} id - unique ID\n * @param {HTMLElement} element - the element to find ancestors of\n * @param {HTMLElement} container - the topmost element to resolve to\n */\nexport const findAncestors = (id, element, container) =>\n\tnew Promise((resolve) => {\n\t\tconst eventName = `findAncestors-${id}`;\n\t\tconst findListener = async (e) => {\n\t\t\tcontainer.removeEventListener(eventName, findListener);\n\t\t\tconst path = e.composedPath();\n\t\t\tconst length = path.length;\n\t\t\tconst ancestors = new Set(path);\n\n\t\t\t// This is gross but since popovers are hoisted,\n\t\t\t// any child popovers will lose context of their parent's\n\t\t\t// scroll containers. To fix this, we can lookup the parent\n\t\t\t// popover and recurse for its ancestors, then merge\n\t\t\t// the hoisted and non-hoisted ancestor lists. Ideally we\n\t\t\t// could memoize these but since we don't control data on\n\t\t\t// the host, it's risky to store the memoized nodes\n\t\t\t// in a public property.\n\t\t\tfor (let idx = 0; idx < length; idx++) {\n\t\t\t\tconst node = path[idx];\n\t\t\t\tif (\n\t\t\t\t\tnode !== element &&\n\t\t\t\t\tnode.nodeType === Node.ELEMENT_NODE &&\n\t\t\t\t\tnode.tagName === POPOVER_PANEL_TAG\n\t\t\t\t) {\n\t\t\t\t\tconst parentAncestors = await findAncestors(\n\t\t\t\t\t\tnode.nowId,\n\t\t\t\t\t\tnode.nowPopover,\n\t\t\t\t\t\tcontainer,\n\t\t\t\t\t);\n\n\t\t\t\t\tparentAncestors.forEach((ancestor) => ancestors.add(ancestor));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresolve(ancestors);\n\t\t};\n\n\t\tcontainer.addEventListener(eventName, findListener);\n\t\tconst event = new CustomEvent(eventName, {\n\t\t\tbubbles: true,\n\t\t\tcomposed: true,\n\t\t\tcancelable: false,\n\t\t});\n\t\telement.dispatchEvent(event);\n\t});\n\n/**\n * Waits for the next animation frame to ensure DOM elements have been rendered.\n */\nexport function waitForNextFrame() {\n\treturn new Promise((resolve) => {\n\t\tsetTimeout(() => {\n\t\t\trequestAnimationFrame(resolve);\n\t\t}, 0);\n\t});\n}\n","import isEmpty from 'lodash/isEmpty';\nimport forEachRight from 'lodash/forEachRight';\nimport debounce from 'lodash/debounce';\n\n/**\n * Factory function to provide a way to have multiple callbacks triggered from\n * a single (optionally debounced) DOM event listener on the window.\n *\n * This has a couple of benefits over direct `addEventListeners`\n *\n * - Re-using a single event listener to run multiple callbacks leads to a\n *   performance gain in Chrome + Safari (Firefox doesn't seem to care much)\n *\n * - Callbacks can be deleted just by just ID, rather than needing to maintain\n *   a reference to the callback that was used in `addEventListener`\n *\n * - We can easily guarantee execution order when multiple instances listen\n *   to the same event.\n *\n * Callbacks are run in reverse order, so newer callbacks happen first. If any\n * callback returns an explicit `false`, other callbacks are not run.\n */\nexport default function createBatchedListener(eventType, {batch = false} = {}) {\n\tconst callbacks = {};\n\n\tlet runCallbacks = (event) =>\n\t\tforEachRight(callbacks, (callback) => callback(event));\n\tif (batch) {\n\t\trunCallbacks = debounce(runCallbacks, 500);\n\t}\n\n\treturn {\n\t\tadd(id, callback) {\n\t\t\tconst needsToAttach = isEmpty(callbacks);\n\t\t\tcallbacks[id] = callback;\n\n\t\t\tif (needsToAttach) {\n\t\t\t\twindow.addEventListener(eventType, runCallbacks, true);\n\t\t\t}\n\t\t},\n\n\t\tremove(id) {\n\t\t\tdelete callbacks[id];\n\t\t\tconst canDetach = isEmpty(callbacks);\n\n\t\t\tif (canDetach) {\n\t\t\t\twindow.removeEventListener(eventType, runCallbacks, true);\n\t\t\t}\n\t\t},\n\t};\n}\n","/**\n * Sets up an Observer that calls the given callback\n */\nexport default function createObserver(Observer) {\n\tconst observed = new Map();\n\n\treturn {\n\t\tadd(id, target, callback, ...observerArgs) {\n\t\t\tconst observer = new Observer(callback, ...observerArgs);\n\t\t\tobserver.observe(target);\n\n\t\t\tconst observersArr = observed.get(id) || [];\n\t\t\tobserversArr.push({observer, target});\n\t\t\tobserved.set(id, observersArr);\n\t\t},\n\n\t\tremove(id) {\n\t\t\tconst value = observed.get(id);\n\t\t\tif (!value?.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvalue.forEach(({observer, target}) => {\n\t\t\t\tobserver.unobserve(target);\n\t\t\t});\n\n\t\t\tobserved.delete(id);\n\t\t},\n\t};\n}\n","import {findAncestors} from './dom';\n\n/**\n * Attaches scroll listeners to all ancestor elements of the given host element\n * that have shadow roots (because scroll events do not automatically bubble\n * through shadow boundaries), as well as the window. When any of the scroll\n * listeners are fired, trigger the callback function.\n * @param {HTMLElement} host\n * @param {string} componentId\n * @param {function} callback\n */\nexport default function createScrollListener() {\n\tconst attached = new Map();\n\n\treturn {\n\t\tasync add(id, host, container, callback) {\n\t\t\tconst ancestors = await findAncestors(id, host, container);\n\t\t\tconst targets = [];\n\t\t\tancestors.forEach((el) => el.shadowRoot && targets.push(el));\n\n\t\t\tconst listener = (e) => {\n\t\t\t\tconst [source] = e.composedPath();\n\t\t\t\tif (ancestors.has(source)) {\n\t\t\t\t\tcallback(e);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor (const target of targets) {\n\t\t\t\ttarget.shadowRoot.addEventListener('scroll', listener, true);\n\t\t\t}\n\n\t\t\twindow.addEventListener('scroll', listener, true);\n\t\t\tthis.remove(id);\n\t\t\tattached.set(id, {targets, listener});\n\t\t},\n\t\tremove(id) {\n\t\t\tconst value = attached.get(id);\n\t\t\tif (!value) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst {targets, listener} = value;\n\t\t\tfor (const target of targets) {\n\t\t\t\ttarget.shadowRoot.removeEventListener('scroll', listener, true);\n\t\t\t}\n\n\t\t\twindow.removeEventListener('scroll', listener, true);\n\n\t\t\tattached.delete(id);\n\t\t},\n\t};\n}\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport {\n\tlayerEvents,\n\tfit,\n\tfindTabbableNodes,\n\tgetAnimationTimingAndDuration,\n} from '@servicenow/library-enhanced-utils';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {createRef} from '@servicenow/ui-renderer-snabbdom';\nimport isEqual from 'lodash/isEqual';\nimport once from 'lodash/once';\nimport noop from 'lodash/noop';\nimport setTailPosition, {getTailPosition} from './utils/tail';\nimport {\n\tgetContent,\n\tgetFirstTrigger,\n\tisInPanel,\n\tfindTriggerFromEvent,\n\thoist,\n\tunhoist,\n\twaitForNextFrame,\n} from './utils/dom';\nimport createGlobalListener from './utils/global-event-listener';\nimport createObserver from './utils/observer';\nimport createScrollListener from './utils/scroll-listener';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport focusBehavior, {handleFocusTrap} from '@servicenow/behavior-focus';\nimport {configAriaLabelRoleSchema} from '@servicenow/library-schemas';\nimport reduceMotionBehavior from '@servicenow/behavior-reduce-motion';\n\nconst {\n\tCOMPONENT_CONNECTED,\n\tCOMPONENT_DISCONNECTED,\n\tCOMPONENT_PROPERTY_CHANGED,\n} = actionTypes;\n\nconst {resolveFitProperties, getBestFitInfo} = fit;\n\nconst onWindowResize = createGlobalListener('resize', {batch: true});\nconst clickListener = createGlobalListener('mousedown');\nconst keydownListener = createGlobalListener('keydown');\nconst scrollListener = createScrollListener();\nconst intersectionObserver = createObserver(IntersectionObserver);\nconst resizeObserver = createObserver(ResizeObserver);\n\n/**\n * Closes the popover. Removes any listeners that we've added and moves the\n * content back into the normal, non-hoisted location\n */\nfunction closePopover({id, panel, host, dispatch, updateState}) {\n\tlayerEvents.remove(id);\n\tclickListener.remove(id);\n\tkeydownListener.remove(id);\n\tonWindowResize.remove(id);\n\tscrollListener.remove(id);\n\tintersectionObserver.remove(id);\n\tresizeObserver.remove(id);\n\n\tconst content = getContent(host);\n\tunhoist(panel, content);\n\n\tupdateState({\n\t\toperation: 'set',\n\t\tpath: 'panel',\n\t\tvalue: null,\n\t});\n\n\tdispatch('NOW_POPOVER#CONTENT_HIDDEN', {});\n}\n\nconst getTransformOrigin = (element, fitProps, interactionType) => {\n\t// Creates a transform origin string based on the position of the\n\t// popover and the position of the target element.\n\tlet origin = 'center center';\n\tlet height = 0;\n\tif (!element) {\n\t\treturn origin;\n\t}\n\n\ttry {\n\t\tconst fitInfo = getBestFitInfo({...fitProps});\n\t\tconst {dimensions, targetPosition, contentPosition} = fitInfo;\n\t\tconst {offset, direction} = getTailPosition({\n\t\t\ttargetDimensions: dimensions.target,\n\t\t\tcontentDimensions: dimensions.content,\n\t\t\tcontentAreaDimensions: dimensions.contentArea,\n\t\t\ttargetPosition,\n\t\t\tcontentPosition,\n\t\t});\n\t\tconst directionMap = {down: 'bottom', up: 'top'};\n\t\tconst rightPos = getComputedStyle(element).right;\n\t\tconst leftPos = getComputedStyle(element).left;\n\t\tconst isRightPos = rightPos === '0px' && leftPos !== '0px';\n\t\theight = dimensions.content.height;\n\t\tif (direction === 'left' || direction === 'right') {\n\t\t\torigin = `${direction} center`;\n\t\t} else if (direction === 'up' || direction === 'down') {\n\t\t\tif (isRightPos) {\n\t\t\t\t// If the popover is right aligned in the fit area\n\t\t\t\t// we ignore the offset and transform from the corner\n\t\t\t\torigin = `right ${directionMap[direction]}`;\n\t\t\t} else {\n\t\t\t\torigin = `${offset ? `${offset}px` : 'center'} ${directionMap[direction]}`;\n\t\t\t}\n\t\t}\n\n\t\tif (interactionType === 'listbox') {\n\t\t\torigin = `center ${directionMap[direction]}`;\n\t\t}\n\t} catch (e) {\n\t\t// noop\n\t}\n\n\treturn {origin, height};\n};\n\nconst enterAnim = (state, panel, fitProps, content, dispatch) => {\n\tif (state.behaviors['reduce-motion']) {\n\t\t// tell the world that we're all good to go :+1:\n\t\tdispatch(() => ({\n\t\t\ttype: 'NOW_POPOVER#CONTENT_VISIBLE',\n\t\t\tpayload: {\n\t\t\t\tcontent,\n\t\t\t},\n\t\t}));\n\t\treturn;\n\t}\n\tconst {interactionType} = state.properties;\n\tconst wrapper = panel?.shadowRoot.querySelector('.fit-content-area');\n\tconst {duration: wrapperDuration, easing: wrapperEasing} =\n\t\tgetAnimationTimingAndDuration(wrapper);\n\tconst element = panel?.shadowRoot.querySelector('.fit-content');\n\tconst {duration: elementDuration, easing: elementEasing} =\n\t\tgetAnimationTimingAndDuration(element);\n\tconst {origin, height} = getTransformOrigin(\n\t\telement,\n\t\tfitProps,\n\t\tinteractionType,\n\t);\n\tconst startScale = interactionType !== 'listbox' ? 0.95 : 1;\n\tconst startHeight = interactionType !== 'listbox' ? height : height * 0.5;\n\tconst initialOverflow = element?.style.overflow;\n\tconst startOverflow =\n\t\tinteractionType !== 'listbox' ? initialOverflow : 'hidden';\n\tconst fadeAnim = wrapper?.animate([{opacity: 0}, {opacity: 1}], {\n\t\tduration: wrapperDuration,\n\t\teasing: wrapperEasing,\n\t\tfill: 'forwards',\n\t});\n\n\tconst transformStartState = {\n\t\toverflow: startOverflow,\n\t\ttransform: `scale(${startScale})`,\n\t\ttransformOrigin: origin,\n\t};\n\n\tconst transformEndState = {\n\t\toverflow: startOverflow,\n\t\ttransform: 'scale(1)',\n\t\ttransformOrigin: origin,\n\t};\n\n\tif (interactionType === 'listbox') {\n\t\ttransformStartState.height = `${startHeight}px`;\n\t\ttransformEndState.height = `${height}px`;\n\t}\n\n\tconst transformAnim = element?.animate(\n\t\t[transformStartState, transformEndState],\n\t\t{\n\t\t\tduration: elementDuration,\n\t\t\teasing: elementEasing,\n\t\t\tfill: 'forwards',\n\t\t},\n\t);\n\n\ttransformAnim.onfinish = () => {\n\t\t// Cancel the animation to reset the styles\n\t\t// after completion\n\t\ttransformAnim.cancel();\n\t\t// tell the world that we're all good to go :+1:\n\t\tdispatch(() => ({\n\t\t\ttype: 'NOW_POPOVER#CONTENT_VISIBLE',\n\t\t\tpayload: {\n\t\t\t\tcontent,\n\t\t\t},\n\t\t}));\n\t};\n\n\treturn {transformAnim, fadeAnim};\n};\n\n/**\n * Opens the popover. Hoists the content nodes to the proper location and then\n * calls fit.\n */\nasync function openPopover({\n\thost,\n\tcontainer,\n\tdisableScroll,\n\tbare,\n\tdispatch,\n\tupdateState,\n\tinteractionType,\n\tconfigAria,\n}) {\n\tconst content = getContent(host);\n\n\t// invalid markup. No content has been slotted\n\tif (content.length === 0) {\n\t\treturn;\n\t}\n\n\tconst panel = await hoist(host, container, content);\n\tpanel.disableScroll = disableScroll;\n\tpanel.bare = bare;\n\tpanel.configAria = configAria;\n\tpanel.interactionType = interactionType;\n\n\t// Wait for the next animation frame to ensure content is rendered before calculating position. This prevents the jarring effect of popover jumping from bottom to top when positioned near page bottom.\n\tawait waitForNextFrame();\n\n\tupdateState({\n\t\tshouldRender: false,\n\t\toperation: 'assign',\n\t\tvalue: {\n\t\t\tpanel,\n\t\t\tfinishedOpening: false,\n\t\t},\n\t});\n\n\tdispatch(() => ({type: 'PRIVATE#CHECK_FIT', payload: {}}));\n}\n\nfunction handleKeyDown(event, dispatch) {\n\t// escape closes the popover and refocuses the trigger\n\tif (event.key === 'Escape') {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\n\t\tdispatch(() => ({\n\t\t\ttype: 'NOW_POPOVER#OPENED_SET',\n\t\t\tpayload: {\n\t\t\t\tvalue: false,\n\t\t\t\tactionSource: 'escape-press',\n\t\t\t},\n\t\t}));\n\n\t\t// return false to ensure parent popovers don't also respond to Escape\n\t\treturn false;\n\t}\n}\n\nfunction handleClick(event, host, panel, dispatch, updateState) {\n\tconst path = event.composedPath();\n\n\t// DEF0088795: The click event originates from the hoisted element in the\n\t// DOM. But if that hoisted component defines a Seismic eventHandler,\n\t// Seismic will re-emit that event from the original (unhoisted) content\n\t// host.\n\t//\n\t// So even though it feels like a single click event, there are actually 2\n\t// events being propagated, each with a different path. We need to know if\n\t// both of these events originate from the panel in order to correctly\n\t// _not_ dispatch OPENED_SET.\n\t//\n\t// `path` will include `panel` on the first click event, since the panel is\n\t// dynamically created and holds the hoisted element.\n\t//\n\t// `path` will include `host` on the 2nd click event, since the host is a\n\t// parent of the original (unhoisted) content node.\n\t//\n\t// We also need to guard against events coming from a nested popover panel\n\t// (e.g.: when we have a <now-select> in the content of a bigger\n\t// <now-popover>). These panels are hoisted independently, so the outer\n\t// panel is not in the composedPath of the inner panel.\n\n\tconst hostInPath = isInPanel(path, panel);\n\n\tif (!hostInPath) {\n\t\tupdateState({\n\t\t\tshouldRender: false,\n\t\t\toperation: 'set',\n\t\t\tpath: 'restoreFocus',\n\t\t\tvalue: false,\n\t\t});\n\t\tdispatch(() => ({\n\t\t\ttype: 'NOW_POPOVER#OPENED_SET',\n\t\t\tpayload: {\n\t\t\t\tvalue: false,\n\t\t\t\tactionSource: 'outside-click',\n\t\t\t\tpath,\n\t\t\t},\n\t\t}));\n\t}\n}\n\n/**\n * Once the popover is opened and we've fit the panel, we want to set up a\n * bunch of listeners to track things like: outside clicks, tab navigation,\n * scrolling, and focus management.\n */\nfunction handlePopoverOpened({\n\tid,\n\thost,\n\tpanel,\n\tupdateFit,\n\ttarget,\n\tcontent,\n\ttrigger,\n\tcontainer,\n\tdispatch,\n\tupdateState,\n\tfitContent,\n\tfitContentArea,\n\tcontentPosition,\n\tinteractionType,\n\tfocusPanel,\n\tbare,\n\tstate,\n\tfitProps,\n}) {\n\t// refit any time the window is resized. This is not using `updateFit`\n\t// because we do want to allow the fit position to change (otherwise a resize\n\t// might make panel content inaccessible).\n\tlet isWindowResizing = false;\n\tonWindowResize.add(id, () => {\n\t\tisWindowResizing = true;\n\t\tdispatch(() => ({type: 'PRIVATE#CHECK_FIT'}));\n\t});\n\tclickListener.add(id, (event) => {\n\t\thandleClick(event, host, panel, dispatch, updateState);\n\t});\n\tkeydownListener.add(id, (event) =>\n\t\thandleTabPress({\n\t\t\tevent,\n\t\t\tpanel,\n\t\t\tdispatch,\n\t\t\ttrigger,\n\t\t\tinteractionType,\n\t\t\tfocusPanel,\n\t\t\tbare,\n\t\t\tupdateState,\n\t\t}),\n\t);\n\tlayerEvents.add({\n\t\tid,\n\t\tevents: ['keydown'],\n\t\tcallback: (event) => {\n\t\t\thandleKeyDown(event, dispatch);\n\t\t},\n\t});\n\n\t// for dialog type popovers: we want to move focus to the first item in the\n\t// panel once the panel has been opened. However, we need to delay this until\n\t// the IntersectionObserver has fired and sets the visibility of contentArea\n\t// to visible.\n\n\t// when focusPanel is set to true and popover is not bare and without\n\t// interactive content, focus is applied to popover panel\n\n\tconst findFocusableNodes =\n\t\t(focusPanel && !bare) || interactionType === 'dialog'\n\t\t\t? once(findTabbableNodes)\n\t\t\t: noop;\n\n\t// When the target element is scrolled out-of-view, we want to stop showing\n\t// the panel. Similarly, when the target is scrolled back into view, we want\n\t// to show the panel again.\n\t//\n\t// Unlike Chrome/Firefox, Safari may not immediately trigger the callback\n\t// when the IntersectionObserver is first connected, so we can't rely on that\n\t// callback to initialize `targetVisible` or the correct styles. Since we\n\t// just called fit, assume that we're all good to display this until we get\n\t// an IntersectionObserver event that says we can't.\n\tlet targetVisible = true;\n\tfitContentArea.style.display = 'block';\n\tfitContentArea.style.visibility = 'visible';\n\n\tintersectionObserver.add(id, target, (entries) => {\n\t\ttargetVisible = entries[0].intersectionRatio > 0;\n\t\tfitContentArea.style.display = targetVisible ? 'block' : 'none';\n\t\tfitContentArea.style.visibility = targetVisible ? 'visible' : 'hidden';\n\n\t\tif (targetVisible) {\n\t\t\tconst focusableNodes = findFocusableNodes(panel);\n\t\t\tconst nodesLength = focusableNodes?.length ?? 0;\n\t\t\tif (nodesLength === 0 && focusPanel && !bare) {\n\t\t\t\tfitContent.setAttribute('tabIndex', '-1');\n\t\t\t\tfitContent.focus();\n\t\t\t} else if (nodesLength > 0 && interactionType === 'dialog') {\n\t\t\t\tfocusableNodes[0].focus();\n\t\t\t}\n\t\t}\n\t});\n\n\t// refit when scrolling, but force the position to remain the same\n\tscrollListener.add(id, host, container, () => {\n\t\tif (targetVisible) {\n\t\t\tupdateFit();\n\t\t}\n\t});\n\n\tif (contentPosition.includes('center')) {\n\t\tresizeObserver.add(id, fitContent, () => {\n\t\t\t// Only call update fit if the resize is caused content not window resize\n\t\t\tif (isWindowResizing) {\n\t\t\t\tisWindowResizing = false;\n\t\t\t} else if (targetVisible) {\n\t\t\t\tupdateFit();\n\t\t\t}\n\t\t});\n\t}\n\n\tenterAnim(state, panel, fitProps, content, dispatch);\n}\n\nfunction trapFocus(event, panel, trigger) {\n\tif (event.target === trigger) {\n\t\treturn event.preventDefault();\n\t}\n\n\tconst didFocus = handleFocusTrap(event, panel);\n\tif (didFocus) event.preventDefault();\n}\n\n/**\n * Event handler for when the `Tab` key is pressed while the popover is opened.\n * Depending on the interactionType property we will focus different elements.\n */\nconst handleTabPress = ({\n\tevent,\n\ttrigger,\n\tpanel,\n\tdispatch,\n\tinteractionType,\n\tfocusPanel,\n\tbare,\n\tupdateState,\n}) => {\n\tif (event.key !== 'Tab') return;\n\n\tif (!bare && focusPanel && findTabbableNodes(panel)?.length === 0) {\n\t\tevent.preventDefault();\n\t\treturn;\n\t}\n\n\t// When content contains interactive content, but shouldn't be\n\t// focused when the panel is first opened. When focus lands in\n\t// the panel, treat it like a dialog.\n\tif (interactionType === 'combo') {\n\t\tconst isTabInPanel = event.composedPath().includes(panel);\n\t\tif (isTabInPanel) {\n\t\t\ttrapFocus(event, panel, trigger);\n\t\t} else {\n\t\t\tupdateState({\n\t\t\t\tshouldRender: false,\n\t\t\t\toperation: 'set',\n\t\t\t\tpath: 'restoreFocus',\n\t\t\t\tvalue: false,\n\t\t\t});\n\t\t}\n\t\treturn;\n\t}\n\n\t// when the popover does not contain interactive content, we can just let the\n\t// browser natively handle the Tab.\n\tif (interactionType === 'none') {\n\t\tupdateState({\n\t\t\tshouldRender: false,\n\t\t\toperation: 'set',\n\t\t\tpath: 'restoreFocus',\n\t\t\tvalue: false,\n\t\t});\n\t\tdispatch(() => ({\n\t\t\ttype: 'NOW_POPOVER#OPENED_SET',\n\t\t\tpayload: {\n\t\t\t\tvalue: false,\n\t\t\t\tactionSource: 'tab-press',\n\t\t\t},\n\t\t}));\n\t\treturn;\n\t}\n\n\t// listbox interactions do not have a focus trap. shift-tab returns focus\n\t// back to the trigger element. Regular tab moves focus to the item after the\n\t// trigger, which can be handled natively. Regardless, the popover is closed\n\tif (interactionType === 'listbox') {\n\t\tconst isTabInPanel = event.composedPath().includes(panel);\n\t\tif (event.shiftKey && trigger) {\n\t\t\tevent.preventDefault();\n\t\t} else if (isTabInPanel) {\n\t\t\tevent.preventDefault();\n\t\t\tupdateState({\n\t\t\t\tshouldRender: false,\n\t\t\t\toperation: 'set',\n\t\t\t\tpath: 'restoreFocus',\n\t\t\t\tvalue: true,\n\t\t\t});\n\t\t} else {\n\t\t\tupdateState({\n\t\t\t\tshouldRender: false,\n\t\t\t\toperation: 'set',\n\t\t\t\tpath: 'restoreFocus',\n\t\t\t\tvalue: false,\n\t\t\t});\n\t\t}\n\t\tdispatch('NOW_POPOVER#OPENED_SET', {\n\t\t\tvalue: false,\n\t\t\tactionSource: 'tab-press',\n\t\t});\n\t\treturn;\n\t}\n\n\t// dialog types trap focus within the content and keep the popover open\n\t//if the content is not interactive, close the popover and move on to the next element\n\tif (interactionType === 'dialog') {\n\t\tconst isTabInPanel = event.composedPath().includes(panel);\n\t\t// Needed for nested popovers, when the parent and child both popovers are open, and interactionType is dialog,\n\t\t// don't close the popover, trap the focus. If there is no interactive content inside the popover, go ahead with the regular flow.\n\t\t// findTabbableNodes(panel) = Check if there is any interactive content\n\t\t// event.composedPath().includes(document.activeElement) = Check if focus is inside the child popover\n\t\tconst isChildPopverContentFocusable =\n\t\t\tevent.composedPath().includes(document.activeElement) &&\n\t\t\tfindTabbableNodes(panel).length !== 0;\n\n\t\tif (isTabInPanel || isChildPopverContentFocusable) {\n\t\t\ttrapFocus(event, panel, trigger);\n\t\t} else {\n\t\t\tupdateState({\n\t\t\t\tshouldRender: false,\n\t\t\t\toperation: 'set',\n\t\t\t\tpath: 'restoreFocus',\n\t\t\t\tvalue: false,\n\t\t\t});\n\t\t\tdispatch('NOW_POPOVER#OPENED_SET', {\n\t\t\t\tvalue: false,\n\t\t\t\tactionSource: 'tab-press',\n\t\t\t});\n\t\t}\n\t}\n};\n\n/**\n * Callback when the something in the `trigger` slot has been clicked. Need to\n * keep track of which trigger was clicked (in case multiple triggers are slotted\n * in), and then toggle the open state of the panel.\n */\nconst handleSlotClick = ({event, dispatch, updateState, slot}) => {\n\tconst clickedTrigger = findTriggerFromEvent(event, slot);\n\n\t// this can happen if you click, drag, and release off one trigger and on to\n\t// another. In that case the composedPath no longer includes the original\n\t// trigger.\n\tif (!clickedTrigger) {\n\t\treturn;\n\t}\n\n\t// keep track of which trigger was clicked. This is needed to know where to\n\t// position the panel (when there is no explicit `position-target`) and to\n\t// track which element to restore focus to once the panel is closed.\n\tupdateState({\n\t\toperation: 'set',\n\t\tpath: 'clickedTrigger',\n\t\tvalue: clickedTrigger,\n\t\tshouldRender: false,\n\t});\n\n\tdispatch(({properties}) => {\n\t\treturn {\n\t\t\ttype: 'NOW_POPOVER#OPENED_SET',\n\t\t\tpayload: {\n\t\t\t\tvalue: !properties.opened,\n\t\t\t\t...(properties.opened && {actionSource: 'trigger-click'}),\n\t\t\t},\n\t\t};\n\t});\n};\n\nconst view = (state, {dispatch, updateState}) => {\n\tconst {opened} = state.properties;\n\n\tconst ref = createRef();\n\n\treturn (\n\t\t<slot\n\t\t\tname=\"trigger\"\n\t\t\tref={ref}\n\t\t\ton-slotchange={\n\t\t\t\topened ? () => dispatch(() => ({type: 'PRIVATE#CHECK_FIT'})) : undefined\n\t\t\t}\n\t\t\ton-click={(event) =>\n\t\t\t\thandleSlotClick({\n\t\t\t\t\tevent,\n\t\t\t\t\tdispatch,\n\t\t\t\t\tupdateState,\n\t\t\t\t\tslot: ref.current,\n\t\t\t\t})\n\t\t\t}\n\t\t/>\n\t);\n};\n\n/**\n * A popover lets you float temporary contextual content over other content,\n * relative to a triggering element.\n *\n * Popover content is placed in a panel element, which optionally provides\n * a visual tail that points the content back to its triggering element.\n * Both the content and triggering elements are customizable.\n *\n * In order to correctly position the content, the popover will hoist the\n * content out of the normal DOM flow and append it to the body. Therefore, the\n * content element that is used must be a Now® Experience UI Component in order\n * to correctly encapsulate styles and propagate actions.\n *\n * ```jsx\n * <now-popover>\n *\t <now-button slot=\"trigger\" label=\"Check out my popover\" />\n *\t <now-my-dialog slot=\"content\" />\n * </now-popover>\n * ```\n *\n * `now-popover` elements define a `refit()` method that can be used to force\n * the popover to recalculate the position of the panel. This is useful when\n * something changes the layout or causes elements to move when the popover is\n * already open.\n *\n * @seismicElement now-popover\n * @summary Temporary contextual content that displays over other content when a user selects the triggering element.\n * @uib.label Custom popover\n * @uib.icon custom-modal\n * @uib.description Temporary panel that floats over other content to provide contextual help and information when a user selects a triggering element\n * @uib.category popover\n * @uib.associatedTypes global.core\n * @uib.properties positioningToTrigger, hideTail, disableScroll, positions, configAria, focusPanel\n * @uib.actions NOW_POPOVER#CONTENT_HIDDEN, NOW_POPOVER#CONTENT_VISIBLE\n * @uib.slots content\n * @uib.layout.accessibility.children configAria\n * @uib.layout.accessibility.icon accessibility-outline\n */\ncreateEnhancedElement('now-popover', {\n\tproperties: {\n\t\t/**\n\t\t * Private property used by UIB to provide a more user-friendly control for positioning.\n\t\t * Maps values to the `positions` property using scripted policy.\n\t\t * @uib.label Positioning to trigger\n\t\t * @uib.description Sets the popover position relative to the triggering component.\n\t\t * Auto - default position\n\t\t * Top - aligns to top of the target.\n\t\t * Bottom - aligns to bottom of the target.\n\t\t * Start - aligns at the start of the target.\n\t\t * End- aligns at the end of the target.\n\t\t * @uib.defaultValue auto\n\t\t * @uib.typeMetadata.disabledConfigurationModes ['binding', 'script']\n\t\t * @uib.typeMetadata.choices [{\"label\": \"Auto\",\"value\": \"auto\"},{\"label\": \"Top\",\"value\": \"top\"},{\"label\": \"Bottom\",\"value\": \"bottom\"},{\"label\": \"Start\",\"value\": \"start\"},{\"label\": \"End\",\"value\": \"end\"}]\n\t\t * @private\n\t\t */\n\t\tpositioningToTrigger: {\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['auto', 'top', 'bottom', 'start', 'end'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Type of content displayed in the popover. These types are similar to\n\t\t * ARIA roles and control how the popover manages focus.\n\t\t *\n\t\t * Valid values are:\n\t\t * - \"dialog\": Content contains interactive content. Focus\n\t\t *   stays within the content while the popover is opened.\n\t\t *   An example of this is a calendar picker.\n\t\t * - \"listbox\": Content contains a list of items that a user\n\t\t *   can select from (typically using the arrow keys). Focus does not stay\n\t\t *   within the content when the popover is opened. An example of this is\n\t\t *   a dropdown.\n\t\t * - \"combo\": Content contains interactive content, but isn't\n\t\t *   focused when the panel is first opened. After an interaction\n\t\t *   (e.g., arrow key press) moves focus into the panel, the panel is then\n\t\t *   treated as if it were a dialog (with a focus trap). An example of this\n\t\t *   is now-date-time.\n\t\t * - \"none\": Content contains no interactive content.\n\t\t *   An example of this is a tooltip.\n\t\t *\n\t\t * @type {(\"dialog\"|\"none\"|\"listbox\"|\"combo\")}\n\t\t */\n\t\tinteractionType: {\n\t\t\tdefault: 'dialog',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['dialog', 'none', 'listbox', 'combo'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * If true, the popover panel receives focus.\n\t\t * @type {boolean}\n\t\t */\n\t\tfocusPanel: {default: false, schema: {type: 'boolean'}},\n\n\t\t/**\n\t\t * If true, the popover does not include a visual tail that points\n\t\t * the content back to the trigger. Setting this property to true\n\t\t * changes the default value of the `positions` property.\n\t\t *\n\t\t * See the `positions` property for more details.\n\t\t * @type {boolean}\n\t\t */\n\t\thideTail: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * The element that triggers the content. If not specified,\n\t\t * the trigger slot triggers the content.\n\t\t *\n\t\t * @type {HTMLElement}\n\t\t **/\n\t\tpositionTarget: {\n\t\t\tshouldRenderWhenSet: false,\n\t\t},\n\t\t/**\n\t\t * When true, the popover opens. The value of this property automatically updates\n\t\t * when the user opens or closes the popover unless the `manage-opened` property is set.\n\t\t * You can use the `manage-opened` property to override the default behavior and handle the\n\t\t * `NOW_POPOVER#OPENED_SET` action manually.\n\t\t *\n\t\t * Note: Popover content may not be\n\t\t * positioned and visible when `NOW_POPOVER#OPENED_SET`\n\t\t * dispatches. See `NOW_POPOVER#CONTENT_VISIBLE` for\n\t\t * an action that dispatches only when content is correctly\n\t\t * positioned.\n\t\t * @type {{value: boolean}}\n\t\t */\n\t\topened: {default: false, manageable: true, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * A list of possible positions to place the content relative to its\n\t\t * target, in order of preference. The content is placed in the\n\t\t * position that fits best.\n\t\t *\n\t\t * Each object in `positions` specifies which points on the target and\n\t\t * content elements align. The value of a point describes the\n\t\t * block then inline location on the edge of the element:\n\t\t *\n\t\t *  - top-start\n\t\t *  - top-center\n\t\t *  - top-end\n\t\t *  - center-end\n\t\t *  - bottom-end\n\t\t *  - bottom-center\n\t\t *  - bottom-start\n\t\t *  - center-start\n\t\t *\n\t\t * In a left-to-right language, `top-start` would be at the topmost and\n\t\t * leftmost point of the element, with each successive value moving\n\t\t * clockwise around the element.\n\t\t *\n\t\t * For example:\n\t\t *\n\t\t * The following aligns the bottom center of the content to the top center\n\t\t * of the target, which is commonly used for tooltip-like content:\n\t\t *\n\t\t *   { target: 'top-center', content: 'bottom-center' }\n\t\t *\n\t\t * To have the content positioned to the right of the target (in a\n\t\t * left-to-right language):\n\t\t *\n\t\t *   { target: 'center-end', content: 'center-start' }\n\t\t *\n\t\t * A common dropdown position, where content is aligned to the start of the\n\t\t * target and opens below the target:\n\t\t *\n\t\t *   { target: 'bottom-start', content: 'top-start' }\n\t\t *\n\t\t *\n\t\t * The default value depends on whether or not the popover includes a tail.\n\t\t * With a tail, the default positions center the content and the trigger:\n\t\t *\n\t\t *  [\n\t\t *    { target: 'top-center', content: 'bottom-center' },\n\t\t *    { target: 'bottom-center', content: 'top-center' },\n\t\t *    { target: 'center-end', content: 'center-start' },\n\t\t *    { target: 'center-start', content: 'center-end' }\n\t\t *  ]\n\t\t *\n\t\t * Without a tail, the default positions align the content and target\n\t\t * along an axis:\n\t\t *\n\t\t * \t[\n\t\t * \t\t{ target: 'bottom-start', content: 'top-start' },\n\t\t * \t\t{ target: 'bottom-end', content: 'top-end' },\n\t\t * \t\t{ target: 'top-start', content: 'bottom-start' },\n\t\t * \t\t{ target: 'top-end', content: 'bottom-end' },\n\t\t * \t\t{ target: 'top-end', content: 'top-start' },\n\t\t * \t\t{ target: 'bottom-end', content: 'bottom-start' },\n\t\t * \t\t{ target: 'top-start', content: 'top-end' },\n\t\t * \t\t{ target: 'bottom-start', content: 'bottom-end' }\n\t\t * \t];\n\t\t *\n\t\t * When overriding the default value, provide\n\t\t * multiple position objects to this property. This practice allows for\n\t\t * alternative placements in the case where the content does not\n\t\t * completely fit in the preferred position.\n\t\t *\n\t\t * @type {Array<{target: string, content: string}>}\n\t\t */\n\t\tpositions: {\n\t\t\tschema: {\n\t\t\t\ttype: 'array',\n\t\t\t\titems: {\n\t\t\t\t\toneOf: [\n\t\t\t\t\t\t{type: 'string'},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: 'object',\n\t\t\t\t\t\t\tproperties: {\n\t\t\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\t\t\t'top-start',\n\t\t\t\t\t\t\t\t\t\t'top-center',\n\t\t\t\t\t\t\t\t\t\t'top-end',\n\t\t\t\t\t\t\t\t\t\t'center-start',\n\t\t\t\t\t\t\t\t\t\t'center-end',\n\t\t\t\t\t\t\t\t\t\t'bottom-start',\n\t\t\t\t\t\t\t\t\t\t'bottom-center',\n\t\t\t\t\t\t\t\t\t\t'bottom-end',\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tcontent: {\n\t\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\t\tenum: [\n\t\t\t\t\t\t\t\t\t\t'top-start',\n\t\t\t\t\t\t\t\t\t\t'top-center',\n\t\t\t\t\t\t\t\t\t\t'top-end',\n\t\t\t\t\t\t\t\t\t\t'center-start',\n\t\t\t\t\t\t\t\t\t\t'center-end',\n\t\t\t\t\t\t\t\t\t\t'bottom-start',\n\t\t\t\t\t\t\t\t\t\t'bottom-center',\n\t\t\t\t\t\t\t\t\t\t'bottom-end',\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\trequired: ['target'],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t\tshouldRenderWhenSet: false,\n\t\t},\n\t\t/**\n\t\t * Optional sizing constraints to enforce on the popover content. Valid keys are:\n\t\t *\n\t\t *  - width\n\t\t *  - minWidth\n\t\t *  - maxWidth\n\t\t *  - height\n\t\t *  - minHeight\n\t\t *  - maxHeight\n\t\t *\n\t\t * The value for each key must be a positive integer representing a\n\t\t * pixel value to apply to the corresponding content style.\n\t\t * Alternatively, you can specify the string `\"target\"` to have the content\n\t\t * match the value of the target element.\n\t\t *\n\t\t * For example, to ensure the content is at least 400x200 pixels:\n\t\t *\n\t\t *  {\n\t\t *\t\t\"minWidth\": 400,\n\t\t *\t\t\"minHeight\": 200\n\t\t *  }\n\t\t *\n\t\t * To ensure that the content is always as wide as its target:\n\t\t *\n\t\t *\t{\n\t\t *\t\t\"width\": \"target\"\n\t\t *\t}\n\t\t *\n\t\t * @private\n\t\t * @type {PopoverConstrain}\n\t\t */\n\t\tconstrain: {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\twidth: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\t\t\t\tminWidth: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\t\t\t\tmaxWidth: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\t\t\t\theight: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\t\t\t\tminHeight: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\t\t\t\tmaxHeight: {oneOf: [{const: 'target'}, {type: 'number'}]},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * Number of pixels to shift the popover content away from the trigger.\n\t\t * @type {number}\n\t\t * @private\n\t\t */\n\t\toffset: {schema: {type: ['array', 'number']}},\n\t\t/**\n\t\t * Which element to hoist the popover panel to.\n\t\t * @type {HTMLElement}\n\t\t * @private\n\t\t */\n\t\tcontainer: {\n\t\t\tget default() {\n\t\t\t\treturn document.body;\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * If true, content in the popover panel will not overflow with a scrollbar.\n\t\t * Use this flag if your popover content already contains a custom\n\t\t * scroll container for handling overflowed content.\n\t\t * @type {boolean}\n\t\t */\n\t\tdisableScroll: {schema: {type: 'boolean'}},\n\t\t/**\n\t\t * If true, content in the popover panel appears with no border or tail.\n\t\t * @type {boolean}\n\t\t */\n\t\tbare: {default: false, schema: {type: 'boolean'}},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-popover. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'panel' key corresponds to the entire container in now-popover-panel.\n\t\t * See https://www.w3.org/TR/wai-aria-1.2/#dialog\n\t\t * for properties and accepted values.\n\t\t * @type {{ panel: { 'aria-*': string, role: string } }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tpanel: {...configAriaLabelRoleSchema, required: ['aria-label']},\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t},\n\tinitialState: {\n\t\t/**\n\t\t * Whether or not the popover should restore\n\t\t * focus to the trigger element when the popover\n\t\t * is closed\n\t\t */\n\t\trestoreFocus: true,\n\t\t/**\n\t\t * A reference to the `now-popover-panel` element that is dynamically\n\t\t * created when the popover is opened.\n\t\t */\n\t\tpanel: undefined,\n\t\t/**\n\t\t * Because Seismic dispatches and renders are asynchronous, the panel and\n\t\t * its contents are not rendered and hoisted immediately when the `opened`\n\t\t * prop is set. This state value tracks when we know that the DOM is in a\n\t\t * good spot and we can add event listeners and fire\n\t\t * `NOW_POPOVER#CONTENT_VISIBLE`\n\t\t */\n\t\tfinishedOpening: false,\n\t\t/**\n\t\t * When multiple triggers are slotted in, this value tracks which one of those\n\t\t * triggers is responsible for causing the popover to be opened.\n\t\t */\n\t\tclickedTrigger: undefined,\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_CONNECTED]: function handleConnected({\n\t\t\tupdateState,\n\t\t\tdispatch,\n\t\t\tproperties,\n\t\t\thost,\n\t\t\tupdateProperties,\n\t\t}) {\n\t\t\t// In standalone HTML apps, the Seismic default value for `container`\n\t\t\t// is evaluated before `document.body` exists\n\t\t\tif (!properties.container) {\n\t\t\t\tupdateProperties({container: document.body});\n\t\t\t}\n\n\t\t\t// Adds a public `refit()` method on the host of the popover, which will\n\t\t\t// force the popover to re-run fit. This works kind of like the focus\n\t\t\t// behavior, where we're adding public methods to give the consumer control\n\t\t\t// over when to do something that doesn't really fit in the props-down\n\t\t\t// actions-up model.\n\t\t\thost.refit = () => dispatch('PRIVATE#CHECK_FIT');\n\t\t\tconst {\n\t\t\t\tinteractionType,\n\t\t\t\tdisableScroll,\n\t\t\t\tconfigAria,\n\t\t\t\tcontainer,\n\t\t\t\topened,\n\t\t\t\tbare,\n\t\t\t} = properties;\n\n\t\t\tif (opened) {\n\t\t\t\topenPopover({\n\t\t\t\t\thost,\n\t\t\t\t\tcontainer,\n\t\t\t\t\tdisableScroll,\n\t\t\t\t\tbare,\n\t\t\t\t\tdispatch,\n\t\t\t\t\tupdateState,\n\t\t\t\t\tinteractionType,\n\t\t\t\t\tconfigAria,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_DISCONNECTED]: function handleDisconnected({\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tupdateState,\n\t\t\tstate,\n\t\t}) {\n\t\t\tclosePopover({\n\t\t\t\tpanel: state.panel,\n\t\t\t\tid: action.meta.id,\n\t\t\t\thost: action.payload.host,\n\t\t\t\tdispatch,\n\t\t\t\tupdateState,\n\t\t\t});\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]: function handlePropertyChanged({\n\t\t\taction,\n\t\t\tdispatch,\n\t\t\tproperties,\n\t\t\tstate,\n\t\t\tupdateState,\n\t\t}) {\n\t\t\tconst {host, name, value, previousValue} = action.payload;\n\n\t\t\t// If a property related to fit changes we need to re-run fit\n\t\t\tif (\n\t\t\t\tname === 'positions' ||\n\t\t\t\tname === 'offset' ||\n\t\t\t\tname === 'constrain' ||\n\t\t\t\t(name === 'positionTarget' && previousValue)\n\t\t\t) {\n\t\t\t\t// Deep equality check because non-scalar props (offset, position,\n\t\t\t\t// etc) might change all the time and this is cheaper than recalcing\n\t\t\t\t// all of fit.\n\t\t\t\tif (!isEqual(value, previousValue)) {\n\t\t\t\t\tdispatch(() => ({\n\t\t\t\t\t\ttype: 'PRIVATE#CHECK_FIT',\n\t\t\t\t\t\tpayload: {from: 'propertyChanged'},\n\t\t\t\t\t}));\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (name === 'opened') {\n\t\t\t\tconst {\n\t\t\t\t\tcontainer,\n\t\t\t\t\tdisableScroll,\n\t\t\t\t\tbare,\n\t\t\t\t\tinteractionType,\n\t\t\t\t\tconfigAria,\n\t\t\t\t\tpositionTarget,\n\t\t\t\t} = properties;\n\t\t\t\tconst {id} = action.meta;\n\t\t\t\tconst {restoreFocus} = state;\n\n\t\t\t\tif (value) {\n\t\t\t\t\topenPopover({\n\t\t\t\t\t\thost,\n\t\t\t\t\t\tcontainer,\n\t\t\t\t\t\tdisableScroll,\n\t\t\t\t\t\tbare,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tinteractionType,\n\t\t\t\t\t\tconfigAria,\n\t\t\t\t\t});\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tpath: 'restoreFocus',\n\t\t\t\t\t\tvalue: true,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconst isTop = layerEvents.isTopLayer(id);\n\t\t\t\t\tclosePopover({\n\t\t\t\t\t\tid,\n\t\t\t\t\t\thost,\n\t\t\t\t\t\tpanel: state.panel,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t});\n\t\t\t\t\tconst trigger =\n\t\t\t\t\t\tstate.clickedTrigger || getFirstTrigger(host) || positionTarget;\n\t\t\t\t\tif (restoreFocus && trigger && isTop) {\n\t\t\t\t\t\tif (interactionType === 'combo') {\n\t\t\t\t\t\t\ttrigger.focus({input: true});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttrigger.focus();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Checks to see if we have everything we need to run fit. If so,\n\t\t * do it and apply the styles to the panel.\n\t\t */\n\t\t'PRIVATE#CHECK_FIT': {\n\t\t\tstopPropagation: true,\n\t\t\teffect: ({host, state, action, dispatch, properties, updateState}) => {\n\t\t\t\tconst {panel, clickedTrigger} = state;\n\t\t\t\tconst {\n\t\t\t\t\tdir,\n\t\t\t\t\topened,\n\t\t\t\t\tcontainer,\n\t\t\t\t\tpositionTarget,\n\t\t\t\t\tinteractionType,\n\t\t\t\t\tfocusPanel,\n\t\t\t\t\tbare,\n\t\t\t\t} = properties;\n\t\t\t\tconst content = getContent(host);\n\t\t\t\tconst trigger = clickedTrigger || getFirstTrigger(host);\n\t\t\t\tconst target = positionTarget || trigger;\n\t\t\t\tconst fitContentArea =\n\t\t\t\t\tpanel && panel.shadowRoot.querySelector('.fit-content-area');\n\t\t\t\tconst fitContent =\n\t\t\t\t\tpanel && panel.shadowRoot.querySelector('.fit-content');\n\n\t\t\t\tif (!opened || !target || !content || !fitContentArea || !fitContent) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Switching from content center position to non center position while\n\t\t\t\t// open can cause incorrect calculations.\n\t\t\t\tfitContent.removeAttribute('style');\n\n\t\t\t\t// Sets up an IntersectionObserver to adjust the 'fitContent'\n\t\t\t\t// maxWidth based on visibility: if not fully visible,sets\n\t\t\t\t// maxWidth to 100% to enable horizontal scrolling.\n\t\t\t\tconst id = action.meta.id;\n\t\t\t\tintersectionObserver.add(\n\t\t\t\t\tid,\n\t\t\t\t\tfitContent,\n\t\t\t\t\t(entries) => {\n\t\t\t\t\t\tentries.forEach((entry) => {\n\t\t\t\t\t\t\tif (!entry.isIntersecting) {\n\t\t\t\t\t\t\t\tfitContent.style.maxWidth = '100%';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\troot: null,\n\t\t\t\t\t\tthreshold: 1.0,\n\t\t\t\t\t},\n\t\t\t\t);\n\n\t\t\t\t// Use 'constrain.width' value instead of 'target' if\n\t\t\t\t// 'target.offsetWidth.' is less than 'constrain.width'.\n\t\t\t\t// Defaults to browser width if 'maxWidth' is unspecified.\n\t\t\t\tconst constrain = properties.constrain ?? {};\n\t\t\t\tconstrain.maxWidth =\n\t\t\t\t\tconstrain?.maxWidth === 'target' && constrain?.width\n\t\t\t\t\t\t? target.offsetWidth > constrain.width\n\t\t\t\t\t\t\t? 'target'\n\t\t\t\t\t\t\t: constrain.width\n\t\t\t\t\t\t: (constrain.maxWidth ?? document.documentElement.clientWidth);\n\n\t\t\t\t// set up a smaller, more focused fit function that we can call on\n\t\t\t\t// scroll or content resize. We don't want to go through the entire\n\t\t\t\t// PRIVATE#CHECK_FIT action for a couple reasons:\n\t\t\t\t//\n\t\t\t\t// - dispatched actions are scheduled, causing a somewhat noticeable\n\t\t\t\t// delay between the target moving and the panel refitting to catch up.\n\t\t\t\t//\n\t\t\t\t// - when scrolling: we don't want to let the fit position of the panel\n\t\t\t\t// change, because it's a poor user experience when the panel moves\n\t\t\t\t// around a lot after opening.\n\t\t\t\tlet fitProps = {\n\t\t\t\t\t...resolveFitProperties({\n\t\t\t\t\t\tdir,\n\t\t\t\t\t\tpositions: properties.positions,\n\t\t\t\t\t\tconstrain: constrain,\n\t\t\t\t\t\thideTail: properties.hideTail || bare,\n\t\t\t\t\t\toffset: properties.offset,\n\t\t\t\t\t}),\n\t\t\t\t\ttarget,\n\t\t\t\t\tcontainer,\n\t\t\t\t\tcontent: fitContent,\n\t\t\t\t\tcontentArea: fitContentArea,\n\t\t\t\t};\n\n\t\t\t\tconst updateFit = () => {\n\t\t\t\t\t// run fit calc\n\t\t\t\t\tconst fitInfo = getBestFitInfo({...fitProps});\n\n\t\t\t\t\t// apply styles from fitInfo\n\t\t\t\t\tObject.assign(fitContentArea.style, fitInfo.style.contentArea);\n\t\t\t\t\tObject.assign(fitContent.style, fitInfo.style.content);\n\n\t\t\t\t\t// position tail\n\t\t\t\t\tif (!properties.hideTail) {\n\t\t\t\t\t\tconst {dimensions, targetPosition, contentPosition} = fitInfo;\n\t\t\t\t\t\tsetTailPosition({\n\t\t\t\t\t\t\tcontentArea: fitContentArea,\n\t\t\t\t\t\t\ttargetPosition,\n\t\t\t\t\t\t\tcontentPosition,\n\t\t\t\t\t\t\ttargetDimensions: dimensions.target,\n\t\t\t\t\t\t\tpanel: state.panel,\n\t\t\t\t\t\t\tcontentAreaDimensions: dimensions.contentArea,\n\t\t\t\t\t\t\tcontentDimensions: dimensions.content,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\treturn fitInfo;\n\t\t\t\t};\n\n\t\t\t\tconst fitInfo = updateFit();\n\n\t\t\t\t// Let the first call to fit calculate the position and size of the\n\t\t\t\t// content. When we call updateFit again on scroll, we want to force\n\t\t\t\t// the same position and minimum content size\n\t\t\t\tfitProps.positions = [\n\t\t\t\t\t[fitInfo.targetPosition, fitInfo.contentPosition],\n\t\t\t\t];\n\n\t\t\t\t// set up listeners and handle focus, but only when we first open.\n\t\t\t\t// don't want to redo this stuff if PRIVATE#CHECK_FIT is called again\n\t\t\t\t// while the panel is already open.\n\t\t\t\tif (!state.finishedOpening) {\n\t\t\t\t\thandlePopoverOpened({\n\t\t\t\t\t\tid: action.meta.id,\n\t\t\t\t\t\thost,\n\t\t\t\t\t\tpanel,\n\t\t\t\t\t\ttarget,\n\t\t\t\t\t\tupdateFit,\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\ttrigger,\n\t\t\t\t\t\tcontainer,\n\t\t\t\t\t\tdispatch,\n\t\t\t\t\t\tupdateState,\n\t\t\t\t\t\tfitContent,\n\t\t\t\t\t\tfitContentArea,\n\t\t\t\t\t\tcontentPosition: fitInfo.contentPosition,\n\t\t\t\t\t\tinteractionType,\n\t\t\t\t\t\tfocusPanel,\n\t\t\t\t\t\tbare,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tfitProps,\n\t\t\t\t\t});\n\n\t\t\t\t\tupdateState({\n\t\t\t\t\t\tshouldRender: false,\n\t\t\t\t\t\toperation: 'set',\n\t\t\t\t\t\tpath: 'finishedOpening',\n\t\t\t\t\t\tvalue: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t/*Re-registering the scrollListener to get the updated values. */\n\t\t\t\tif (action.payload?.from === 'propertyChanged') {\n\t\t\t\t\tscrollListener.remove(id);\n\t\t\t\t\tscrollListener.add(id, host, container, () => {\n\t\t\t\t\t\tupdateFit();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t},\n\n\tdispatches: {\n\t\t/**\n\t\t * Dispatched when a user opens or closes the popover. Payload contains a\n\t\t * `value` property, which is `true` when the popover opens and\n\t\t * `false` when the popover closes. Payload also contains a `actionSource` property\n\t\t * which is one of `outside-click`, `trigger-click`, `tab-press`, `escape-press` that\n\t\t * indicates by what action the popover was closed. `actionSource` property will\n\t\t * be present only when the popover is closed.\n\t\t *\n\t\t * Note: Because rendering is asynchronous, the popover content DOM may not be in\n\t\t * the correct state when this action is dispatched.\n\t\t *\n\t\t * Use `NOW_POPOVER#CONTENT_VISIBLE` and `NOW_POPOVER#CONTENT_HIDDEN` actions\n\t\t * to run additional logic once the popover content is rendered in or\n\t\t * removed from the DOM respectively. Set the `manage-opened` property to override the default\n\t\t * behavior and handle this action manually.\n\t\t * @type {{value: boolean}}\n\t\t */\n\t\t'NOW_POPOVER#OPENED_SET': {},\n\n\t\t/**\n\t\t * Dispatched when the popover opens and renders the content. Unlike\n\t\t * `NOW_POPOVER#OPENED_SET`, this action only fires after the popover\n\t\t * content is rendered in the DOM. The `content` property refers to\n\t\t * the current element in popover's `content` slot.\n\t\t * @uib.description Dispatched when the popover opens and renders the content\n\t\t * @type {{content: NodeList}}\n\t\t */\n\t\t'NOW_POPOVER#CONTENT_VISIBLE': {\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tcontent: {type: 'array'},\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\n\t\t/**\n\t\t * Dispatched when the popover content has been closed and removed. Unlike\n\t\t * `NOW_POPOVER#OPENED_SET`, this action only fires after the popover\n\t\t * content is fully removed from the DOM.\n\t\t * @uib.description Dispatched when the popover content has been closed and removed\n\t\t * @type {{}}\n\t\t */\n\t\t'NOW_POPOVER#CONTENT_HIDDEN': {schema: {type: 'object'}},\n\t},\n\tslots: {\n\t\t/**\n\t\t * The trigger element that the popover content is positioned in relation to.\n\t\t * If the `manage-opened` property is not set, then clicking on this slot will\n\t\t * toggle the opened state of the popover.\n\t\t */\n\t\ttrigger: {},\n\n\t\t/**\n\t\t * The popover content that is visible when the `opened` property\n\t\t * is true. This *must* be a component and cannot inherit\n\t\t * styles from a parent element. If the content is not interactive,\n\t\t * you should wrap it in an `aria-live` region so that a\n\t\t * screenreader announces it when the popover opens.\n\t\t */\n\t\tcontent: {},\n\t},\n\tbehaviors: [{behavior: focusBehavior}, {behavior: reduceMotionBehavior}],\n\tview,\n});\n","import {createEnhancedElement} from '@servicenow/library-enhanced-element';\nimport styles from './_now-popover-panel.scss';\nimport {actionTypes} from '@servicenow/ui-core';\nimport {filterAriaAttributes} from '@servicenow/library-enhanced-utils';\nimport {configAriaSchema} from '@servicenow/library-schemas';\n\nconst {COMPONENT_DOM_READY} = actionTypes;\n// DEF0415693: Applying the class for safari only to fix the rendering glitch\nconst isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\nconst view = (state) => {\n\tconst {tailDirection, disableScroll, bare, configAria, interactionType} =\n\t\tstate.properties;\n\treturn (\n\t\t<div\n\t\t\tclass={{\n\t\t\t\t'fit-content-area': true,\n\t\t\t\t'has-tail': tailDirection && !bare,\n\t\t\t\t[`-${tailDirection}`]: tailDirection && !bare,\n\t\t\t\t'disable-scroll': disableScroll,\n\t\t\t\t'is-bare': bare,\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'fit-content': true,\n\t\t\t\t\t'fit-content-transform': isSafari,\n\t\t\t\t}}\n\t\t\t\trole={interactionType === 'dialog' ? 'dialog' : undefined}\n\t\t\t\t{...filterAriaAttributes(configAria, 'panel')}\n\t\t\t\ton-blur={(e) => e.target.parentElement.classList.remove('has-focus')}\n\t\t\t\ton-focus={(e) => e.target.parentElement.classList.add('has-focus')}\n\t\t\t>\n\t\t\t\t<slot name=\"content\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\n/**\n * Panel element that holds markup and styles required to correctly position\n * popover content relative to its trigger element.\n *\n * This component should not be used outside of the now-popover implementation.\n *\n * ```jsx\n * <now-popover-panel tail-direction=\"up\">\n *   <now-my-dialog slot=\"content\" />\n * </now-popover>\n * ```\n *\n * @seismicElement now-popover-panel\n * @private\n * @summary A container for popover content.\n */\ncreateEnhancedElement('now-popover-panel', {\n\tproperties: {\n\t\t/**\n\t\t * Direction to display the tail.\n\t\t * @type {\"up\"|\"down\"|\"left\"|\"right\"}\n\t\t * @private\n\t\t */\n\t\ttailDirection: {},\n\t\t/**\n\t\t * Function to call once the panel has\n\t\t * been rendered\n\t\t * @type {(HTMLElement) => void}\n\t\t * @private\n\t\t */\n\t\tonReady: {},\n\t\t/**\n\t\t * If true, content in the popover panel will not overflow with a scrollbar.\n\t\t * Use this flag if your popover content already contains a custom\n\t\t * scroll container for handling overflowed content.\n\t\t * @type {boolean}\n\t\t * @private\n\t\t */\n\t\tdisableScroll: {},\n\t\t/**\n\t\t * If true, panel displays without border and tail.\n\t\t * @type {boolean}\n\t\t * @private\n\t\t */\n\t\tbare: {},\n\t\t/**\n\t\t * Type of content displayed in the popover. These types are similar to\n\t\t * ARIA roles and control how the popover manages focus.\n\t\t *\n\t\t * Valid values are:\n\t\t * - \"dialog\": Content contains interactive content. Focus\n\t\t *   stays within the content while the popover is opened.\n\t\t *   An example of this is a calendar picker.\n\t\t * - \"listbox\": Content contains a list of items that a user\n\t\t *   can select from (typically using the arrow keys). Focus does not stay\n\t\t *   within the content when the popover is opened. An example of this is\n\t\t *   a dropdown.\n\t\t * - \"combo\": Content contains interactive content, but isn't\n\t\t *   focused when the panel is first opened. After an interaction\n\t\t *   (e.g., arrow key press) moves focus into the panel, the panel is then\n\t\t *   treated as if it were a dialog (with a focus trap). An example of this\n\t\t *   is now-date-time.\n\t\t * - \"none\": Content contains no interactive content.\n\t\t *   An example of this is a tooltip.\n\t\t *\n\t\t * @type {(\"dialog\"|\"none\"|\"listbox\"|\"combo\")}\n\t\t * @private\n\t\t */\n\t\tinteractionType: {\n\t\t\tdefault: 'dialog',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: ['dialog', 'none', 'listbox', 'combo'],\n\t\t\t},\n\t\t},\n\t\t/**\n\t\t * An object whose keys reference a specific HTML element within the\n\t\t * now-popover-panel. The value of each key is an object that contains an ARIA\n\t\t * property (or properties) and corresponding value/s. These ARIA\n\t\t * properties are set on the specified element.\n\t\t * The 'panel' key corresponds to the entire container in now-popover-panel.\n\t\t * See https://www.w3.org/TR/wai-aria-1.2/#dialog\n\t\t * for properties and accepted values.\n\t\t * @type {{ panel: { 'aria-*': string, role: string } }}\n\t\t * @uib.label ARIA properties\n\t\t * @uib.description Configures ARIA properties\n\t\t * @uib.defaultValue {}\n\t\t */\n\t\tconfigAria: {\n\t\t\tdeepCompare: true,\n\t\t\tschema: {\n\t\t\t\ttype: 'object',\n\t\t\t\tproperties: {\n\t\t\t\t\tpanel: configAriaSchema,\n\t\t\t\t},\n\t\t\t\tadditionalProperties: false,\n\t\t\t},\n\t\t},\n\t},\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_READY]({host, properties}) {\n\t\t\tproperties.onReady(host);\n\t\t},\n\t},\n\tslots: {\n\t\t/**\n\t\t * Contains popover content to float above other content on the\n\t\t * page.\n\t\t */\n\t\tcontent: {},\n\t},\n\tstyles,\n\tview,\n});\n","import './now-popover';\nimport './now-popover-panel';\nimport * as info from '../package.json';\n\nconst {name, version} = info;\nconst registry = (window.___NOW_DESIGN_SYSTEM_PACKAGES___ =\n\twindow.___NOW_DESIGN_SYSTEM_PACKAGES___ || {});\nif (!registry[name]) {\n\tregistry[name] = version;\n}\n","import {actionTypes, createCustomElement} from '@servicenow/ui-core';\nimport {Fragment} from '@servicenow/ui-renderer-snabbdom';\nimport {t} from 'sn-translate';\n\nimport '@servicenow/now-button';\n\nimport {CLEAR_NOTIFICATIONS, DIALOG_OPENED} from '../constants';\nimport styles from './_sn-unread-preview.scss';\n\nconst {COMPONENT_PROPERTY_CHANGED, COMPONENT_DOM_TREE_READY, COMPONENT_TREE_RENDERED} = actionTypes;\n\nconst UNEXPANDED_MAX_HEIGHT_PERCENT = 30;\nconst EXPANDED_MAX_HEIGHT_PERCENT = 70;\n\nconst TOP_PADDING_PX = 16;\nconst DEFAULT_LINE_HEIGHT_PX = 18;\n\n// NOTE: This needs to be updated when `.sn-unread-preview` min-height is changed\nconst MIN_CONTENT_CONTAINER_HEIGHT_PX = TOP_PADDING_PX + DEFAULT_LINE_HEIGHT_PX;\n\nconst queueUpdateReadMoreButtonVisibility = (function () {\n\tlet timeoutId = null;\n\treturn function (...originalArgs) {\n\t\tif (timeoutId) {\n\t\t\tcancelAnimationFrame(timeoutId);\n\t\t}\n\n\t\t// wait for content to actually be rendered before calculating heights:\n\t\ttimeoutId = requestAnimationFrame(() => {\n\t\t\tupdateReadMoreButtonVisibility(...originalArgs);\n\t\t});\n\t};\n})();\nconst view = (state, {dispatch, updateState}) => {\n\tconst {isContentExpanded, bottomControlsHeight} = state;\n\n\tfunction openDialog(event) {\n\t\tif (isAnchorTagEvent(event)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn dispatch(DIALOG_OPENED);\n\t}\n\n\tconst keyHandler = (event) => {\n\t\tif (event.key === ' ' || event.key === 'Enter') {\n\t\t\topenDialog(event);\n\t\t}\n\t};\n\n\tlet readMoreButton = null;\n\tif (state.showReadMoreButton) {\n\t\treadMoreButton = (\n\t\t\t<div\n\t\t\t\tclassName=\"sn-unread-preview-read-more-button\"\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\tsize=\"sm\"\n\t\t\t\ttabIndex=\"0\"\n\t\t\t\taria-label={t(isContentExpanded ? 'See less' : 'See more')}\n\t\t\t\ton-click={() =>\n\t\t\t\t\tupdateViewWithSeeMoreOrLessButtonClick(isContentExpanded, updateState, state)\n\t\t\t\t}\n\t\t\t\ton-keydown={(event) =>\n\t\t\t\t\tupdateViewWithSeeMoreOrLessKeydown(event, isContentExpanded, updateState, state)\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t{t(isContentExpanded ? 'See less' : 'See more')}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet bottomContainer = null;\n\tconst supplementalControls = state.properties?.supplementalControls;\n\tif (supplementalControls?.controls?.length) {\n\t\tbottomContainer = (\n\t\t\t<div\n\t\t\t\tclassName=\"sn-unread-preview-bottom-controls\"\n\t\t\t\tref={(bottomControlsContainerRef) => updateState({bottomControlsContainerRef})}\n\t\t\t>\n\t\t\t\t<div className=\"container\">\n\t\t\t\t\t{!!supplementalControls.tagline && t(supplementalControls.tagline)}\n\t\t\t\t\t<ul className={'supplemental-controls'}>\n\t\t\t\t\t\t{supplementalControls.controls.map((control, index) => (\n\t\t\t\t\t\t\t<li>{renderSupplementalControl(control, index, dispatch)}</li>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst maxHeight = `calc(${\n\t\tisContentExpanded ? EXPANDED_MAX_HEIGHT_PERCENT : UNEXPANDED_MAX_HEIGHT_PERCENT\n\t}vh - ${bottomControlsHeight}px)`;\n\treturn (\n\t\t<Fragment>\n\t\t\t<div\n\t\t\t\tclass={{\n\t\t\t\t\t'sn-unread-preview': true,\n\t\t\t\t\t'is-content-expanded': isContentExpanded\n\t\t\t\t}}\n\t\t\t\trole=\"dialog\"\n\t\t\t\taria-label={t('Chat Recommendations')}\n\t\t\t\taria-describedby=\"preview-content\"\n\t\t\t\tref={(scrollContainerRef) => updateState({scrollContainerRef})}\n\t\t\t\tstyle={{maxHeight}}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"sn-unread-preview-content\"\n\t\t\t\t\tid=\"preview-content\"\n\t\t\t\t\ton-click={openDialog}\n\t\t\t\t\ton-keydown={keyHandler}\n\t\t\t\t>\n\t\t\t\t\t{state.properties.content}\n\t\t\t\t</div>\n\t\t\t\t<div className=\"popover-close-icon\">\n\t\t\t\t\t<now-button-iconic\n\t\t\t\t\t\tclassName=\"sn-unread-preview-button\"\n\t\t\t\t\t\ticon=\"close-fill\"\n\t\t\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t\t\tbare={true}\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\tconfig-aria={{button: {'aria-label': t('Close')}}}\n\t\t\t\t\t\ttooltip-content={t('Close')}\n\t\t\t\t\t\ton-click={() => dispatch(CLEAR_NOTIFICATIONS)}\n\t\t\t\t\t></now-button-iconic>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t{readMoreButton}\n\t\t\t{bottomContainer}\n\t\t</Fragment>\n\t);\n};\n\ncreateCustomElement('sn-unread-preview', {\n\tview,\n\tproperties: {\n\t\tcontent: {},\n\t\tsupplementalControls: {}\n\t},\n\tinitialState: {\n\t\tshowReadMoreButton: false,\n\t\tisContentExpanded: false,\n\n\t\tbottomControlsContainerRef: null,\n\t\tbottomControlsHeight: 0,\n\n\t\tscrollContainerRef: null\n\t},\n\tstyles,\n\tactionHandlers: {\n\t\t[COMPONENT_DOM_TREE_READY](...originalArgs) {\n\t\t\tqueueUpdateReadMoreButtonVisibility(...originalArgs);\n\t\t},\n\t\t[COMPONENT_PROPERTY_CHANGED]({action, state, updateState}) {\n\t\t\tconst propertyName = action?.payload?.name || '';\n\t\t\t// eslint-disable-next-line default-case\n\t\t\tswitch (propertyName) {\n\t\t\tcase 'content':\n\t\t\tcase 'supplementalControls':\n\t\t\t\tconst updatedState = {\n\t\t\t\t\tbottomControlsHeight: 0,\n\t\t\t\t\tisContentExpanded: false\n\t\t\t\t};\n\t\t\t\tupdateState(updatedState);\n\t\t\t\tqueueUpdateReadMoreButtonVisibility({\n\t\t\t\t\tstate: {\n\t\t\t\t\t\t...state,\n\t\t\t\t\t\tupdatedState\n\t\t\t\t\t},\n\t\t\t\t\tupdateState\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\t}\n\t\t},\n\t\t[COMPONENT_TREE_RENDERED]({state, updateState}) {\n\t\t\tconst {bottomControlsContainerRef, bottomControlsHeight} = state;\n\t\t\tif (!bottomControlsContainerRef?.offsetHeight) {\n\t\t\t\treturn {\n\t\t\t\t\tshouldRender: false\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst updatedHeight = bottomControlsContainerRef.offsetHeight || 0;\n\t\t\tif (updatedHeight === bottomControlsHeight) {\n\t\t\t\treturn {\n\t\t\t\t\tshouldRender: false\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst updatedState = {bottomControlsHeight: updatedHeight};\n\t\t\tupdateState(updatedState);\n\t\t\tqueueUpdateReadMoreButtonVisibility({\n\t\t\t\tstate: {\n\t\t\t\t\t...state,\n\t\t\t\t\t...updatedState\n\t\t\t\t},\n\t\t\t\tupdateState\n\t\t\t});\n\t\t}\n\t},\n\teventHandlers: [\n\t\t{\n\t\t\tevents: ['keyup'],\n\t\t\teffect({\n\t\t\t\taction: {\n\t\t\t\t\tpayload: {event}\n\t\t\t\t},\n\t\t\t\tdispatch\n\t\t\t}) {\n\t\t\t\t// eslint-disable-next-line default-case\n\t\t\t\tswitch (event.key) {\n\t\t\t\tcase 'Esc':\n\t\t\t\tcase 'Escape':\n\t\t\t\t\tdispatch(CLEAR_NOTIFICATIONS);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t]\n});\n\n/**\n * Calculates the height of an element based on its actual content height.\n *\n * @param element {DocumentFragment} Document fragment containing the element\n * @returns {number} Height of the element in pixels\n */\nfunction getElementHeight(element) {\n\tconst originalParent = element?.parentElement;\n\tif (!element || !originalParent) {\n\t\treturn 0;\n\t}\n\n\t// Temporarily moves the element to a hidden div container so that we can calculate its height\n\t// (if we tried to calculate its height in the original parent it would not be correct due to the overflow: hidden)\n\tconst hiddenDivContainer = document.createElement('div');\n\thiddenDivContainer.style.visibility = 'hidden';\n\thiddenDivContainer.style.width = `${originalParent.offsetWidth}px`;\n\thiddenDivContainer.appendChild(element);\n\n\tdocument.body.appendChild(hiddenDivContainer);\n\tconst height = hiddenDivContainer.offsetHeight;\n\tdocument.body.removeChild(hiddenDivContainer);\n\n\t// Move the element back to its original parent:\n\toriginalParent.appendChild(element);\n\treturn height;\n}\n\n/**\n * Updates the state to show/hide the read more button based on the content height.\n * @param state\n * @param updateState\n */\nfunction updateReadMoreButtonVisibility({state, updateState}) {\n\tif (!state.properties?.content?.elm) {\n\t\treturn;\n\t}\n\n\tconst windowHeight = window.innerHeight;\n\n\tconst maxHeightMinusBottomControlsHeight =\n\t\twindowHeight * (UNEXPANDED_MAX_HEIGHT_PERCENT / 100) - (state.bottomControlsHeight || 0);\n\tconst maxContentHeight = Math.max(\n\t\tmaxHeightMinusBottomControlsHeight,\n\t\tMIN_CONTENT_CONTAINER_HEIGHT_PX\n\t);\n\n\tconst contentHeight = getElementHeight(state.properties.content.elm);\n\n\tif (contentHeight >= maxContentHeight) {\n\t\tupdateState({showReadMoreButton: true});\n\t} else {\n\t\tupdateState({showReadMoreButton: false});\n\t}\n}\n\nfunction renderSupplementalControl({type, label, value}, index, dispatch) {\n\tswitch (type) {\n\tcase 'sys_cs_ptrigger_va_topic_action_control':\n\t\treturn (\n\t\t\t<now-button\n\t\t\t\tlabel={label}\n\t\t\t\ton-click={() => dispatch(DIALOG_OPENED, {actionSysId: value})}\n\t\t\t\tvariant=\"secondary\"\n\t\t\t></now-button>\n\t\t);\n\tdefault:\n\t\tthrow new Error(`Unknown control type: ${type}`);\n\t}\n}\n\n/**\n * Updates the state to show/hide description depending on the See More/See Less button based on the content height.\n * @param state\n * @param updateState\n * @param isContentExpanded\n */\nfunction updateViewWithSeeMoreOrLessButtonClick(\n\tisContentExpanded,\n\tupdateState,\n\t{scrollContainerRef}\n) {\n\tupdateState({isContentExpanded: !isContentExpanded});\n\tif (isContentExpanded) {\n\t\tscrollContainerRef?.scrollTo(0, 0);\n\t}\n}\n\nfunction updateViewWithSeeMoreOrLessKeydown(\n\tevent,\n\tisContentExpanded,\n\tupdateState,\n\tscrollContainerRef\n) {\n\tif (event.key === ' ' || event.key === 'Enter') {\n\t\tupdateViewWithSeeMoreOrLessButtonClick(isContentExpanded, updateState, scrollContainerRef);\n\t}\n}\n\n/**\n * Checks if the event is triggered by an anchor tag or if it's within an anchor tag.\n * @param event\n * @returns {boolean}\n */\nfunction isAnchorTagEvent(event) {\n\tconst composedPath = event?.composedPath() || [];\n\treturn composedPath.some((e) => e?.tagName === 'A');\n}\n","/* eslint-disable import/no-extraneous-dependencies */\nimport '@servicenow/now-badge';\nimport '@servicenow/now-button';\nimport '@servicenow/now-modeless-dialog';\nimport '@servicenow/now-popover';\nimport '@servicenow/now-icon';\nimport '@servicenow/now-tooltip';\nimport {t} from 'sn-translate';\n\nimport '../../../shared/chat-popover-shared/components/sn-unread-preview';\nimport {\n\tDIALOG_CLOSED,\n\tDIALOG_OPENED,\n\tPREVIEW,\n\tPROACTIVE\n} from '../../../shared/chat-popover-shared/constants';\nimport {\n\tMODELESS_DIALOG_WIDTH_FOR_NAVA,\n\tMODELESS_DIALOG_WIDTH,\n\tMODELESS_DIALOG_HEIGHT,\n\tPOPOVER_BUTTON_HEIGHT,\n\tLAUNCHER_BUTTON_MARGIN_TOP\n} from './constants';\nimport {buildParamString} from './utils';\n\nconst ChatCloseIcon = () => (\n\t<div>\n\t\t<svg attr-width=\"36\" attr-height=\"32\" attr-xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t<g attr-fill=\"none\" fill-rule=\"evenodd\">\n\t\t\t\t<path\n\t\t\t\t\tattr-d=\"M36 13.143c0 2.33-.804 4.483-2.41 6.459-1.608 1.975-3.79 3.535-6.55 4.68C24.281 25.427 21.268 26 18 26c-.938 0-1.908-.054-2.913-.16-2.652 2.343-5.732 3.964-9.241 4.86-.656.188-1.42.336-2.29.443a.788.788 0 0 1-.613-.18 1.01 1.01 0 0 1-.351-.584v-.02c-.04-.053-.044-.134-.01-.24.033-.108.046-.175.04-.202-.007-.026.023-.09.09-.19l.12-.181c.014-.02.06-.077.141-.171a71.441 71.441 0 0 1 .783-.874c.322-.355.553-.61.694-.763.14-.154.348-.419.623-.794.274-.375.492-.716.652-1.024.161-.308.342-.703.543-1.186.2-.482.375-.99.522-1.526-2.103-1.192-3.76-2.666-4.972-4.42C.606 17.033 0 15.152 0 13.143c0-1.741.475-3.405 1.426-4.992.951-1.587 2.23-2.957 3.837-4.109C6.871 2.891 8.786 1.977 11.01 1.3 13.232.624 15.562.286 18 .286c3.268 0 6.281.572 9.04 1.717 2.76 1.145 4.942 2.706 6.55 4.681C35.195 8.66 36 10.812 36 13.143z\"\n\t\t\t\t\tattr-fill=\"#FFF\"\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tattr-d=\"M21.875 7.25a.6.6 0 0 1 .45.18c.116.121.175.275.175.463v1.286a.635.635 0 0 1-.176.462.6.6 0 0 1-.449.18H8.125a.6.6 0 0 1-.45-.18.635.635 0 0 1-.175-.462V7.893c0-.188.059-.342.176-.462a.6.6 0 0 1 .449-.181h13.75zM21.875 17.75a.6.6 0 0 1 .45.18c.116.121.175.275.175.463v1.286a.635.635 0 0 1-.176.462.6.6 0 0 1-.449.18H8.125a.6.6 0 0 1-.45-.18.635.635 0 0 1-.175-.462v-1.286c0-.188.059-.342.176-.462a.6.6 0 0 1 .449-.181h13.75z\"\n\t\t\t\t\tattr-fill=\"#B1B1B1\"\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\tattr-d=\"M28.375 12.5a.6.6 0 0 1 .45.18c.116.121.175.275.175.463v1.286a.635.635 0 0 1-.176.462.6.6 0 0 1-.449.18h-13.75a.6.6 0 0 1-.45-.18.635.635 0 0 1-.175-.462v-1.286c0-.188.059-.342.176-.462a.6.6 0 0 1 .449-.181h13.75z\"\n\t\t\t\t\tattr-fill=\"#A4C7CF\"\n\t\t\t\t/>\n\t\t\t</g>\n\t\t</svg>\n\t</div>\n);\n\nconst ChatOpenIcon = () => (\n\t<svg\n\t\tattr-width=\"24\"\n\t\tattr-height=\"24\"\n\t\tattr-viewBox=\"0 0 24 24\"\n\t\tattr-xmlns=\"http://www.w3.org/2000/svg\"\n\t>\n\t\t<path\n\t\t\tattr-d=\"M18.293 4.293a1 1 0 1 1 1.414 1.414L13.414 12l6.293 6.293a1 1 0 0 1-1.414 1.414L12 13.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L10.586 12 4.293 5.707a1 1 0 0 1 1.414-1.414L12 10.586l6.293-6.293z\"\n\t\t\tattr-fill=\"currentColor\"\n\t\t/>\n\t</svg>\n);\n\nexport const view = (state, {updateState, dispatch}) => {\n\tconst {\n\t\tposition,\n\t\toffsetX,\n\t\toffsetY,\n\t\tclientContext,\n\t\tinstance,\n\t\tcustomOpenIcon,\n\t\tcustomCloseIcon,\n\t\tnavaEnabled\n\t} = state.properties;\n\n\t// Make the dialog responsive: shrink it to fit narrow viewports so it stays\n\t// docked above the launcher instead of switching to now-modeless-dialog's\n\t// fullscreen mode (which would cover the launcher and the chat send button).\n\t// Keeping the resizable minimums at or below the viewport prevents that\n\t// fullscreen switch, while leaving the original limits intact on desktop.\n\tconst desiredWidth = navaEnabled ? MODELESS_DIALOG_WIDTH_FOR_NAVA : MODELESS_DIALOG_WIDTH;\n\tconst viewportWidth = state.viewportWidth ?? window?.innerWidth ?? desiredWidth + offsetX * 2;\n\tconst viewportHeight = state.viewportHeight ?? window?.innerHeight ?? Infinity;\n\tconst availableWidth = viewportWidth - offsetX * 2;\n\tconst dialogWidth = Math.min(desiredWidth, availableWidth);\n\t// Size the dialog against the real visible viewport (window.innerHeight),\n\t// not 100vh: on mobile 100vh excludes the address bar, so a 100vh-based\n\t// height pushes the bottom-anchored stack up until its header (top) is\n\t// scrolled off the top of the screen. Reserve the launcher button, the gap\n\t// above it, and the top + bottom offsets so the header stays in view.\n\tconst reservedHeight = offsetY * 2 + POPOVER_BUTTON_HEIGHT + LAUNCHER_BUTTON_MARGIN_TOP;\n\tconst dialogHeight = Math.min(MODELESS_DIALOG_HEIGHT, viewportHeight - reservedHeight);\n\tconst resizableConfig = {\n\t\tresizableMinHeight: Math.min(300, viewportHeight),\n\t\tresizableMinWidth: Math.min(desiredWidth + 30, availableWidth)\n\t};\n\n\tconst handleLauncherClick = () => {\n\t\t// When dialog is closed – previous state is opened\n\t\tif (state.opened) {\n\t\t\tdispatch(DIALOG_CLOSED);\n\t\t} else {\n\t\t\tdispatch(DIALOG_OPENED);\n\t\t\tupdateState({\n\t\t\t\tlatestMessage: '',\n\t\t\t\tnotificationOpened: false\n\t\t\t});\n\t\t}\n\n\t\tupdateState({\n\t\t\topened: !state.opened,\n\t\t\tmessageCount: 0\n\t\t});\n\t};\n\tconst clientContextParams = buildParamString(clientContext);\n\tconst iFrameSrc = `${instance}/sn_va_web_client_app_embed.do?${clientContextParams}`;\n\tconst audioUrl = `${instance}/sn_va_web_client_alert.mp3`;\n\tupdateState({iFrameSrc, audioUrl});\n\n\tlet shouldShowNotification;\n\tif (state?.lastMessageType === PREVIEW) {\n\t\tshouldShowNotification = state.isMessagePreviewEnabled;\n\t} else {\n\t\tshouldShowNotification =\n\t\t\tstate?.lastMessageType === PROACTIVE ? state.isProactiveTriggersEnabled : false;\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tstyle={{\n\t\t\t\tmargin: `${offsetY}px ${offsetX}px`,\n\t\t\t\twidth: `${dialogWidth}px`\n\t\t\t}}\n\t\t\tclass={{\n\t\t\t\t'now-requestor-chat-popover-position': true,\n\t\t\t\t'nava-enabled': navaEnabled,\n\t\t\t\t[`${position}`]: position,\n\t\t\t\tclosed: !state.opened\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\tclassName=\"now-requestor-chat-popover-launcher\"\n\t\t\t\taria-label=\"Agent Chat Window\"\n\t\t\t\trole=\"region\"\n\t\t\t>\n\t\t\t\t<now-popover\n\t\t\t\t\topened={state.notificationOpened}\n\t\t\t\t\thideTail={true}\n\t\t\t\t\tmanageOpened=\"true\"\n\t\t\t\t\tinteractionType=\"combo\"\n\t\t\t\t\toffset={[\n\t\t\t\t\t\t8,\n\t\t\t\t\t\t8,\n\t\t\t\t\t\t8,\n\t\t\t\t\t\t8,\n\t\t\t\t\t\t8,\n\t\t\t\t\t\t8\n\t\t\t\t\t]} // top, right, bottom, left, top-start, top-end\n\t\t\t\t\tpositions={\n\t\t\t\t\t\tposition === 'left'\n\t\t\t\t\t\t\t? [{target: 'top-left', content: 'bottom-left'}]\n\t\t\t\t\t\t\t: [{target: 'top-right', content: 'bottom-right'}]\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclassName=\"now-requestor-chat-popover-button\"\n\t\t\t\t\t\ttabIndex=\"0\"\n\t\t\t\t\t\tslot=\"trigger\"\n\t\t\t\t\t\ton-click={handleLauncherClick}\n\t\t\t\t\t\taria-label={t('Open dialog')}\n\t\t\t\t\t\thook-insert={({elm}) => setTimeout(() => updateState({targetRef: elm}))}\n\t\t\t\t\t\thook-destroy={() => setTimeout(() => updateState({targetRef: null}))}\n\t\t\t\t\t\taria-disabled={false}\n\t\t\t\t\t\taria-describedby=\"chat-button-tooltip\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{state.opened ? (\n\t\t\t\t\t\t\tcustomOpenIcon ? (\n\t\t\t\t\t\t\t\t<img src={`${instance}/${customOpenIcon}`} />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ChatOpenIcon />\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t) : customCloseIcon ? (\n\t\t\t\t\t\t\t<img src={`${instance}/${customCloseIcon}`} />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<ChatCloseIcon />\n\t\t\t\t\t\t)}\n\t\t\t\t\t</button>\n\t\t\t\t\t{!state.opened && state.latestMessage && shouldShowNotification && (\n\t\t\t\t\t\t<sn-unread-preview\n\t\t\t\t\t\t\tslot=\"content\"\n\t\t\t\t\t\t\tcontent={state.latestMessage}\n\t\t\t\t\t\t\tsupplemental-controls={state.supplementalControls}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t</now-popover>\n\t\t\t\t<now-tooltip\n\t\t\t\t\tid=\"chat-button-tooltip\"\n\t\t\t\t\ttarget-ref={state.targetRef}\n\t\t\t\t\tcontent={\n\t\t\t\t\t\t!state.opened\n\t\t\t\t\t\t\t? `${t('Open Chat. {0} unread message(s)', [state.messageCount])}`\n\t\t\t\t\t\t\t: t('Close Chat.')\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t{!state.opened && state.messageCount > 0 ? (\n\t\t\t\t\t<now-badge\n\t\t\t\t\t\tclassName=\"now-requestor-chat-popover-notification\"\n\t\t\t\t\t\tvariant=\"primary\"\n\t\t\t\t\t\tsize=\"md\"\n\t\t\t\t\t\tstatus=\"critical\"\n\t\t\t\t\t\tvalue={state.messageCount}\n\t\t\t\t\t/>\n\t\t\t\t) : null}\n\t\t\t</div>\n\t\t\t<now-modeless-dialog\n\t\t\t\tclassName=\"now-requestor-chat-popover-dialog\"\n\t\t\t\tresizableConfig={resizableConfig}\n\t\t\t\tcan-drag\n\t\t\t\topened={state.opened}\n\t\t\t\twidth={dialogWidth}\n\t\t\t\theight={dialogHeight}\n\t\t\t>\n\t\t\t\t<div className=\"now-requestor-chat-popover-dialog-content\" slot=\"content\"></div>\n\t\t\t</now-modeless-dialog>\n\t\t</div>\n\t);\n};\n","/* eslint-disable camelcase */\n/* eslint-disable import/no-extraneous-dependencies */\nimport {buildUnreadQueryParams} from '@chat-components/common/src/unread-utils';\nimport themeBehavior from '@servicenow/behavior-theme';\nimport {createCustomElement} from '@servicenow/ui-core';\nimport snabbdom from '@servicenow/ui-renderer-snabbdom';\nimport {actionHandlerFactory} from '../../../shared/chat-popover-shared/actions';\nimport {CONSUMER_ACCOUNT_CONTEXT, PORTAL} from '../../../shared/chat-popover-shared/constants';\nimport styles from './_now-requestor-chat-popover.scss';\nimport {actionHandlers} from './actions';\nimport {eventHandlers} from './event-handlers';\nimport {view} from './view';\n\nconst unreadMessageURL = '/api/now/v1/cs/consumerAccount/unreadMessage';\nconst shouldFetchProactiveAndPreviewMsg = () => true;\n\nexport const getAdditionalUnreadQueryParams = (clientContext) => {\n\tconst portal = clientContext?.[PORTAL] || window?.NOW?.portal_url_suffix;\n\tconst consumerAccountContext = clientContext?.[CONSUMER_ACCOUNT_CONTEXT] ?? null;\n\treturn buildUnreadQueryParams(portal, consumerAccountContext);\n};\n\nconst commonActionHandlers = actionHandlerFactory(\n\tunreadMessageURL,\n\tshouldFetchProactiveAndPreviewMsg,\n\tgetAdditionalUnreadQueryParams\n);\n/**\n * A requestor chat popover to prompt users to open the VA web client from a page\n *\n * @seismicElement now-requestor-chat-popover\n * @summary A chat requestor to prompt a modeless dialog with web client.\n */\n\ncreateCustomElement('now-requestor-chat-popover', {\n\tproperties: {\n\t\t/**\n\t\t * Sets the base url, required if x-domain accesss\n\t\t * Users will also need to define sys_properties for com.glide.cs.csp_frame_ancestors\n\t\t *\n\t\t * This is only for 3rd party pages, UIB pages should never need this\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tinstance: {\n\t\t\tdefault: '',\n\t\t\tschema: {type: 'string'}\n\t\t},\n\t\t/**\n\t\t * Sets the component's position.\n\t\t * @type {('right'|'left')}\n\t\t * @uib.label Position\n\t\t */\n\t\tposition: {\n\t\t\tdefault: 'right',\n\t\t\tschema: {\n\t\t\t\ttype: 'string',\n\t\t\t\tenum: [\n\t\t\t\t\t'right',\n\t\t\t\t\t'left'\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Sets the component's horizontal offset.\n\t\t * @type {number}\n\t\t * @uib.label Horizontal Offset\n\t\t * @uib.defaultValue 25\n\t\t * @uib.fieldType number\n\t\t */\n\t\toffsetX: {\n\t\t\tdefault: 25,\n\t\t\tschema: {type: 'number', minimum: 0}\n\t\t},\n\t\t/**\n\t\t * Sets the component's vertical offset.\n\t\t * @type {number}\n\t\t * @uib.label Vertical Offset\n\t\t * @uib.defaultValue 25\n\t\t * @uib.fieldType number\n\t\t */\n\t\toffsetY: {\n\t\t\tdefault: 25,\n\t\t\tschema: {type: 'number', minimum: 0}\n\t\t},\n\t\t/**\n\t\t * Defines if popover component is rendered on internal portal.\n\t\t * @type {boolean}\n\t\t * @uib.label isInternalUrl State\n\t\t * @uib.defaultValue false\n\t\t * @uib.fieldType boolean\n\t\t */\n\t\tisInternalUrl: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: 'boolean',\n\t\t\t\tenum: [\n\t\t\t\t\ttrue,\n\t\t\t\t\tfalse\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Defines the custom icon to display when modal is closed\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tcustomOpenIcon: {\n\t\t\tdefault: null,\n\t\t\tschema: {\n\t\t\t\ttype: [\n\t\t\t\t\t'string',\n\t\t\t\t\t'null'\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Defines the custom icon to display when modal is open\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tcustomCloseIcon: {\n\t\t\tdefault: null,\n\t\t\tschema: {\n\t\t\t\ttype: [\n\t\t\t\t\t'string',\n\t\t\t\t\t'null'\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Defines the context variables to be passed into the web client component.\n\t\t * @type {object}\n\t\t * @uib.label Context Variables\n\t\t * @uib.fieldType json\n\t\t */\n\t\tclientContext: {\n\t\t\tdefault: {\n\t\t\t\tinterface_type: 'Unknown',\n\t\t\t\tinterface_name: 'Unknown'\n\t\t\t},\n\t\t\tschema: {\n\t\t\t\ttype: [\n\t\t\t\t\t'object',\n\t\t\t\t\t'string'\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Defines the initial state of the modeless dialog.\n\t\t * @type {boolean}\n\t\t * @uib.label Dialog State\n\t\t */\n\t\tdialogOpened: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: 'boolean',\n\t\t\t\tenum: [\n\t\t\t\t\ttrue,\n\t\t\t\t\tfalse\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\tshouldReloadItself: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: 'boolean',\n\t\t\t\tenum: [\n\t\t\t\t\ttrue,\n\t\t\t\t\tfalse\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\tnavaEnabled: {\n\t\t\tdefault: false,\n\t\t\tschema: {\n\t\t\t\ttype: 'boolean',\n\t\t\t\tenum: [\n\t\t\t\t\ttrue,\n\t\t\t\t\tfalse\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t},\n\n\tinitialState: {\n\t\tmessageCount: 0,\n\t\tlatestMessage: '',\n\t\topened: false,\n\t\tnotificationOpened: false,\n\t\tlastMessageId: '',\n\t\tisMessagePreviewEnabled: false,\n\t\tfetchUnreadInterval: 10000,\n\t\tiFrameHost: '',\n\t\tintervalID: null,\n\t\tiFrameSrc: '',\n\t\taudioUrl: '',\n\t\thasConversationStarted: false,\n\t\tisProactiveTriggersEnabled: false,\n\t\tisAMBEnabledInternal: false,\n\t\tisAMBEnabledExternal: false,\n\t\tisAMBEnabledOnClient: false,\n\t\tproactiveTriggersRequestId: '',\n\t\tproactiveTriggersChannelId: '',\n\t\tcontextURL: window?.location?.href,\n\t\tviewportWidth: window?.innerWidth,\n\t\tviewportHeight: window?.innerHeight,\n\t\tisLiveAgentOnly: false,\n\t\tactionSysId: '',\n\t\ttimeDelaysLength: 0,\n\t\tlastMessageType: '',\n\t\tbrandingKey: '',\n\t\tlanguage: '',\n\t\tsupplementalControls: null\n\t},\n\tactionHandlers: {\n\t\t...commonActionHandlers,\n\t\t...actionHandlers\n\t},\n\teventHandlers,\n\tbehaviors: [\n\t\t{\n\t\t\tbehavior: themeBehavior,\n\t\t\toptions: {\n\t\t\t\titems: ['color*']\n\t\t\t}\n\t\t}\n\t],\n\trenderer: {type: snabbdom},\n\tview,\n\tstyles\n});\n","/* eslint-disable import/no-extraneous-dependencies */\nimport 'now-requestor-chat-popover';\n\nconst ARIAL_LABEL = 'Open dialog';\nconst TOOLTIP_OPEN_LABEL = 'Open Chat. {0} unread message(s)';\nconst TOOLTIP_CLOSE_LABEL = 'Close Chat.';\n\nclass ServiceNowChat {\n\tconstructor({\n\t\tinstance,\n\t\tcontext = {},\n\t\tbranding = {},\n\t\toffsetX,\n\t\toffsetY,\n\t\tposition,\n\t\tshouldReloadItself,\n\t\ttranslations = {ARIAL_LABEL, TOOLTIP_OPEN_LABEL, TOOLTIP_CLOSE_LABEL},\n\t\tisInternalUrl = false,\n\t\tnavaEnabled = false,\n\t\tlayerOptions = {}\n\t} = {}) {\n\t\tconst multiplier = parseFloat(branding.sizeMultiplier || 1, 10);\n\n\t\tthis.style = document.createElement('style');\n\t\t// Makes it easier to find the style tag in the DOM for debugging purposes:\n\t\tthis.style.id = 'now-requestor-chat-popover-app-style';\n\t\t// apply theme overrides if needed\n\t\tthis.style.textContent = `\n\t\t\t:root {\n\t\t\t\t--now-rem-multiplier-from-root: ${multiplier};\n\t\t\t\t${\n\tbranding.primaryColor\n\t\t? `--now-button-circular--color: ${this._hexToRgb(branding.primaryColor)};`\n\t\t: ''\n}\n\t\t\t\t${\n\tbranding.bgColor\n\t\t? `--now-button-circular--background-color: ${this._hexToRgb(branding.bgColor)};`\n\t\t: ''\n}\n\t\t\t\t${branding.focusColor ? `--now-color_focus-ring: ${this._hexToRgb(branding.focusColor)};` : ''}\n\t\t\t\t${\n\tbranding.hoverColor\n\t\t? `--now-button-circular--background-color--hover: ${this._hexToRgb(\n\t\t\tbranding.hoverColor\n\t\t\t\t\t\t  )};`\n\t\t: ''\n}\n\t\t\t\t${\n\tbranding.activeColor\n\t\t? `--now-button-circular--background-color--active: ${this._hexToRgb(\n\t\t\tbranding.activeColor\n\t\t\t\t\t\t  )};`\n\t\t: ''\n}\n\t\t\t\t--now-popover--border-radius:4px;\n\t\t\t\t--now-indicator--border-radius:100%;\n\t\t\t}\n\t\t`;\n\t\tdocument.head.appendChild(this.style);\n\n\t\twindow.__TRANSLATIONS__ = {\n\t\t\t...translations,\n\t\t\t...(window.__TRANSLATIONS__ || {})\n\t\t};\n\n\t\t// create the now-requestor-chat-popover\n\t\tthis.el = document.createElement('div');\n\t\tthis.el.style.position = layerOptions.position || 'absolute';\n\t\tthis.el.style.zIndex = layerOptions.zIndex || '1000';\n\t\tdocument.body.appendChild(this.el);\n\t\tthis.el.innerHTML = `<now-requestor-chat-popover\n\t\t\t\t\t${instance ? `instance=\"${instance}\"` : ''}\n\t\t\t\t\t${context ? `client-context=\"${encodeURIComponent(JSON.stringify(context))}\"` : ''}\n\t\t\t\t\t${branding.openIcon ? `custom-open-icon=\"${branding.openIcon}\"` : ''}\n\t\t\t\t\t${branding.closeIcon ? `custom-close-icon=\"${branding.closeIcon}\"` : ''}\n\t\t\t\t\t${branding.icon ? `launcher-icon=\"${branding.icon}\"` : ''}\n\t\t\t\t\t${offsetX ? `offset-x=\"${offsetX}\"` : ''}\n\t\t\t\t\t${offsetY ? `offset-y=\"${offsetY}\"` : ''}\n\t\t\t\t\t${`is-internal-url=${isInternalUrl}`}\n\t\t\t\t\t${position ? `position=\"${position}\"` : ''}\n\t\t\t\t\t${shouldReloadItself ? `should-reload-itself=\"${shouldReloadItself}\"` : false}\n\t\t\t\t\t${navaEnabled ? `nava-enabled=\"${navaEnabled}\"` : ''}></now-requestor-chat-popover>`;\n\n\t\tthis.host = this.el.getElementsByTagName('now-requestor-chat-popover')[0] ?? null;\n\t}\n\n\t/** API for opening chat window */\n\topen() {\n\t\tconst event = new CustomEvent('x-now-chat-open', {detail: {}});\n\t\tthis.host?.dispatchEvent(event);\n\t}\n\n\t/** API fro closing chat window */\n\tclose() {\n\t\tconst event = new CustomEvent('x-now-chat-close', {detail: {}});\n\t\tthis.host?.dispatchEvent(event);\n\t}\n\tsetContext(context) {\n\t\tconst event = new CustomEvent('x-now-chat-set-context', {detail: {context}});\n\t\tthis.host?.dispatchEvent(event);\n\t}\n\n\t/** API for cleaning up widget */\n\tdestroy() {\n\t\tthis.el.remove();\n\t\tthis.style?.remove();\n\t\tdelete this.el;\n\t\tdelete this.style;\n\t}\n\n\t/**\n\t * converts hex values to RGB\n\t *\n\t * @param {string} value\n\t * @return {string}\n\t */\n\t_hexToRgb(value) {\n\t\tif (/^#(?:[0-9a-fA-F]{3}){1,2}$/.test(value)) {\n\t\t\treturn value\n\t\t\t\t.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, (_, r, g, b) => `#${r}${r}${g}${g}${b}${b}`)\n\t\t\t\t.substring(1)\n\t\t\t\t.match(/.{2}/g)\n\t\t\t\t.map((n) => parseInt(n, 16));\n\t\t}\n\n\t\treturn this._checkIfCssVar(value);\n\t}\n\t_checkIfCssVar(cssVar) {\n\t\tif (cssVar.startsWith('--')) {\n\t\t\treturn `var(${cssVar})`;\n\t\t}\n\t\treturn cssVar;\n\t}\n}\n\nwindow.ServiceNowChat = ServiceNowChat;\nexport default ServiceNowChat;\n"],"names":["random","len","crypto","getRandomValues","Uint8Array","IDX","HEX","toString","substring","to_hex","arr","i","output","length","traceparent","version","trace_id","parent_id","flags","child","sampled","this","undefined","padStart","make","id","trace_id_size","slice","INVALID_TRACE_ID","CONFIG_CHANGED","eventEmitter","_createClass","EventEmitter","_classCallCheck","listeners","key","value","event","fn","push","_len","arguments","args","Array","_key","eventListeners","forEach","config","debug","enableTrace","enableCounter","enableGauge","enableHistogram","enableInteractions","enableTrack","enableMousemoveInteractions","enableScrollInteractions","enableKeypressInteractions","enableClickInteractions","set","oldValue","emit","get","metaEl","from","document","getElementsByTagName","find","e","getAttribute","content","segs","split","parseInt","parse","defaultTraceParent","createTraceId","createTraceParentHeader","spanId","traceId","user","page","application","getItemMetadata","_extends","createTracker","exporter","name","options","getConfigValue","attributes","time","Date","now","type","timestamp","documentTraceParent","createMetric","cb","isEnabled","createMetrics","metricCallback","metric","applyAppUserAttributes","createCounter","createGauge","createHistogram","observedScrollElements","Set","add","window","globalKey","globalObj","globalThis","values","events","flushed","notifyTraceSubscriber","span","_span","parentSpanId","kind","startTime","endTime","duration","links","status","relativeStartTime","relativeEndTime","timeOrigin","observers","observer","err","console","error","hasBeenFlushed","queuedEvents","dir","isArray","every","handleTraceEvents","Context","constructor","Error","ContextManager","_context","_fn","_thisArg","_target","BaseContext","_Context","parentContext","_this","self","_callSuper","_currentContext","Map","getValue","setValue","context","deleteValue","delete","_inherits","ROOT_CONTEXT","SPAN_CONTEXT_KEY","Symbol","for","ROOT_LEVEL_EVENTS","StackContextManager","_ContextManager","_contextStack","_enabled","enable","target","manager","contextWrapper","with","apply","Object","defineProperty","enumerable","configurable","writable","active","_bindFunction","pop","activeContext","thisArg","enter","_len2","_key2","leave","NoopContextManager","_","call","handler","getInteractionHandler","BrowserPatcher","_originalAPIs","_patched","processedEvents","WeakSet","_manager","size","alwaysBind","api","_patchAPI","_patchPromise","_patchEventTarget","_patchDOMAPIs","_patchMessageChannel","original","isDescriptor","className","propName","prototype","includes","clear","_ref","patchType","has","_original","_class","bind","_assertThisInitialized","boundFn","originalThen","Promise","then","onFulfilled","onRejected","wrappedFulfilled","wrappedRejected","originalAddEventListener","EventTarget","addEventListener","listener","isCustomElement","tagName","_isContextWrapped","wrappedListener","_len3","_key3","CustomEvent","isTrusted","isCustomEvent","_isUserInteractionEvent","eventPhase","Event","CAPTURING_PHASE","_handleUserInteraction","originalRemoveEventListener","removeEventListener","_listeners","method","Element","_len4","_key4","MessagePort","originalDescriptor","getOwnPropertyDescriptor","isTracingEnabled","Boolean","DynamicContextManager","_patcher","_stackManager","_noopManager","setManager","onConfigUpdate","on","enabled","patchAll","unpatchAll","TraceApi","contextManager","getSpan","BatchSpanProcessor","_SpanProcessor","_exporter","_maxQueueSize","maxQueueSize","_scheduledDelayMillis","scheduledDelayMillis","_queue","_timer","_isShutdown","_flush","_scheduleFlush","async","clearTimeout","forceFlush","shutdown","setTimeout","spans","unshift","SpanProcessor","SPAN_KIND","UNSPECIFIED","INTERNAL","SERVER","CLIENT","PRODUCER","CONSUMER","NonRecordingSpan","_defineProperty","code","traceFlags","getElementLabel","element","_element$textContent","ariaLabel","trim","alt","textContent","placeholder","title","createEventTracer","tracer","handleUserEvent","_target$tagName","rootSpan","startSpan","toUpperCase","toLowerCase","nowId","localName","newRootContext","setStatus","message","end","_window$nowAnalytics","nowAnalytics","rootSpanTimeout","init","destroy","VALID_TRACE_ID_REGEX","isValidTraceId","test","isValidAttributeKey","isValidAttributeValue","val","isValidPrimitiveAttributeValue","performance","getCurrentTime","RecordingSpan","spanProcessor","root","parentSpan","traceApi","sanitizeAttributes","entries","warn","_spanProcessor","_ended","onStart","isRecording","onEnd","exception","addEvent","keys","processedValue","setAttribute","link","SamplingDecision","AlwaysOnSampler","_options","NoopTracer","_name","newContext","noopTracer","TracerImpl","sampler","instrumentationScope","_sampler","_instrumentationScope","shouldSample","activeSpan","contextWithCurrentSpan","setSpan","Tracer","_noOpTracer","_realTracer","_setCurrentTracer","currentImpl","_impl","startActiveSpan","withSpan","getActiveSpan","TracerProvider","trace","track","metrics","apiConfig","k","setConfigValue","location","href","replace","origin","setPage","lastResize","windowWidth","innerWidth","windowHeight","innerHeight","pageWidth","documentElement","scrollWidth","pageHeight","scrollHeight","createEvent","clientX","clientY","pageX","pageY","screenX","screenY","scrollTop","el","lastScroll","lastMovement","initInteractionsTracker","getTracer","createAnalyticsApi","compileSchema","require","resolve","Cache","SchemaObject","stableStringify","formats","rules","$dataMetaSchema","util","module","exports","Ajv","validate","schemaKeyRef","data","v","getSchema","schemaObj","_addSchema","_compile","valid","$async","errors","compile","schema","_meta","addSchema","_skipValidation","_getId","normalizeId","checkUnique","_schemas","addMetaSchema","skipValidation","validateSchema","throwOrLogError","$schema","_opts","defaultMeta","meta","META_SCHEMA_ID","logger","errorsText","keyRef","_getSchemaObj","ref","res","baseId","_fragments","fragment","_getSchemaFragment","removeSchema","RegExp","_removeAllSchemas","_refs","_cache","del","cacheKey","serialize","addFormat","format","_formats","separator","dataVar","text","dataPath","shouldAddSchema","cached","addUsedSchema","recursiveMeta","willValidate","localRefs","ids","put","compiling","callValidate","currentOpts","_metaOpts","refs","refVal","_validate","result","compileAsync","customKeyword","addKeyword","getKeyword","removeKeyword","remove","validateKeyword","errorClasses","ValidationError","Validation","MissingRefError","MissingRef","META_IGNORE_OPTIONS","META_SUPPORT_DATA","opts","copy","log","noop","setLogger","cache","_loadingSchemas","_compilations","RULES","schemaId","_get$IdOrId","_get$Id","chooseGetId","loopRequired","Infinity","errorDataPath","_errorDataPathProperty","metaOpts","getMetaSchemaOptions","addInitialFormats","keywords","keyword","addInitialKeywords","$dataSchema","$data","$id","metaSchema","addDefaultMetaSchema","nullable","optsSchemas","schemas","addInitialSchemas","regex","callback","loadSchema","p","loadMetaSchemaOf","_compileAsync","sch","$ref","missingSchema","added","missingRef","schemaPromise","removePromise","loadMissingSchema","url","fullPath","errorSubclass","Subclass","create","ajv","validation","DATE","DAYS","TIME","HOSTNAME","URI","URITEMPLATE","URL","UUID","JSON_POINTER","JSON_POINTER_URI_FRAGMENT","RELATIVE_JSON_POINTER","mode","date","str","matches","match","year","month","day","isLeapYear","full","hour","minute","second","timeZone","fast","uri","email","hostname","ipv4","ipv6","uuid","dateTime","DATE_TIME_SEPARATOR","NOT_URI_FRAGMENT","Z_ANCHOR","validateGenerator","ucs2length","equal","checkCompiling","index","compIndex","endCompiling","splice","c","patternCode","patterns","toQuotedString","defaultCode","refValCode","customRuleCode","vars","statement","patternsHash","defaults","defaultsHash","customRules","compilation","localCompile","cv","sourceCode","source","_schema","_root","isRoot","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","processCode","Function","makeValidate","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","refId","replaceLocalRef","removeLocalRef","inline","regexStr","valueStr","rule","parentSchema","it","deps","definition","dependencies","hasOwnProperty","join","macro","traverse","resolveSchema","refPath","_getFullPath","getFullPath","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","baseIds","fullPaths","allKeys","jsonPtr","rootSchema","parentJsonPtr","parentKeyword","keyIndex","escapeFragment","PREVENT_SCOPE_CHANGE","toHash","parts","part","unescapeFragment","SIMPLE_INLINED","limit","checkNoRef","countKeys","item","count","normalize","TRAILING_SLASH_HASH","ruleModules","ALL","all","types","group","map","implKeywords","implements","$comment","concat","custom","obj","pos","charCodeAt","checkDataType","dataType","strictNumbers","negate","EQUAL","AND","OK","NOT","o","to","checkDataTypes","dataTypes","t","array","object","null","number","integer","coerceToTypes","optionCoerceTypes","COERCE_TO_TYPES","getProperty","escapeQuotes","varOccurences","varReplace","expr","schemaHasRules","schemaHasRulesExcept","exceptKeyword","schemaUnknownRules","getPathExpr","currentPath","jsonPointers","isNumber","joinPaths","getPath","prop","path","escapeJsonPointer","getData","lvl","paths","up","jsonPointer","segments","segment","unescapeJsonPointer","decodeURIComponent","encodeURIComponent","hash","IDENTIFIER","SINGLE_QUOTE","a","b","KEYWORDS","keywordsJsonPointers","JSON","stringify","j","anyOf","definitions","simpleTypes","statements","not","required","properties","items","modifying","const","$keyword","$ruleType","$schemaValue","out","$lvl","level","$dataLvl","dataLevel","$schemaPath","$errSchemaPath","$breakOnError","allErrors","$isData","dataPathArr","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$notOp","$errorKeyword","$schemaValueExcl","$exclusive","$exclType","$exclIsNumber","$opStr","$opExpr","$$outStack","createErrors","messages","verbose","__err","compositeRule","Math","unicode","$it","$closingBraces","$nextValid","$currentBaseId","$allSchemasEmpty","arr1","$sch","$i","l1","strictKeywords","$valid","$errs","$noEmptySchema","$wasComposite","$idx","$dataNxt","$nextData","$nonEmptySchema","$passData","$code","$compile","$inline","$macro","$ruleValidate","$validateCode","$rule","$definition","$rDef","$validateSchema","$ruleErrs","$ruleErr","$asyncKeyword","passContext","$parentData","$parentDataProperty","def_callRuleValidate","def_customError","$schemaDeps","$propertyDeps","$ownProperties","ownProperties","$property","$deps","$currentErrorPath","$propertyKey","$useData","$prop","$propertyPath","$missingProperty","arr2","i2","l2","$vSchema","$unknownFormats","unknownFormats","$allowUnknown","$format","$isObject","$formatType","indexOf","$formatRef","$thenSch","$elseSch","$thenPresent","$elsePresent","$ifClause","allOf","contains","maximum","minimum","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","oneOf","pattern","propertyNames","uniqueItems","$additionalItems","additionalItems","$currErrSchemaPath","multipleOfPrecision","$allErrorsOption","$prevValid","$passingSchemas","$key","$dataProperties","$schemaKeys","filter","notProto","$pProperties","patternProperties","$pPropertyKeys","$aProperties","additionalProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","$requiredHash","i1","$pProperty","$additionalProperty","$useDefaults","useDefaults","arr3","i3","l3","$hasDefault","default","arr4","i4","l4","$invalidName","$refCode","$refVal","$message","missingRefs","__callValidate","$propertySch","$loopRequired","$itemType","$typeIsArray","$method","$refKeywords","$unknownKwd","$keywordsMsg","$top","rootId","strictDefaults","$defaultMsg","$closingBraces1","$closingBraces2","$typeSchema","extendRefs","coerceTypes","$coerceToTypes","$rulesGroup","$shouldUseGroup","$dataType","$coerced","$type","arr5","i5","l5","$shouldUseRule","impl","$ruleImplementsSomeKeyword","definitionSchema","_addRule","ruleGroup","rg","throwError","_validateKeyword","_amb","_interopRequireDefault","_amb2","_amb3","__esModule","_default","cometd","channelName","initialized","subscribeOptionsCallback","subscription","subscriptionCallbackResponse","listenerCallbackQueue","LOGGER","idCounter","_initialized","getSubscriptionCommandSender","getServerConnection","subscribe","getCallback","getID","listenerSubCallback","getSubscriptionCallback","subscribeToCometD","addErrorMessage","resubscribe","_handleResponse","unsubscribe","getStatus","unsubscribeFromCometD","publish","subscribeToChannel","_subscribeToCometD","subscriptionCallback","overLoadedSubscriptionCallBack","subscribeOptions","isNil","isEmptyObject","subscribeOptionsWrapper","response","unsubscribeToChannel","_unsubscribeFromCometD","resubscribeToCometD","getSubscribeOptionsCallback","getName","getChannelListeners","getListenerCallbackQueue","setSubscriptionCallbackResponse","channel","serverConnection","messageCallback","currentChannel","setNewChannel","_metaChannel","_cometd","_onAdvice","advice","clientId","fromChannel","getChannel","toChannel","_switchToChannel","initialize","onSubscriptionCompleted","getClientId","newMetaChannel","removeChannel","CrossClientChannel","instance","Constructor","TypeError","eventName","localStorage","setItem","removeItem","newValue","_subscriptions","_idCounter","subscriptions","_getSubscriptions","getEvents","queueSize","queueBuffer","max","floor","enqueue","getAvailableSpace","enqueueMultiple","dequeue","shift","dequeueMultiple","retbuf","getSize","getCapacity","getQueueBuffer","graphQLSubscriptions","isGraphQLChannel","startsWith","addGraphQLChannel","graphQLSubscription","removeGraphQLChannel","getGraphQLSubscriptions","outgoing","ext","serializedGraphQLSubscription","_typeof","iterator","isObject","isNull","isUndefined","x","callerType","print","logLevel","addInfoMessage","addWarnMessage","_amb4","_amb5","_amb6","_amb7","CometD","registerTransport","WEBSOCKET_TYPE_NAME","WebSocketTransport","LongPollingTransport","unregisterTransport","graphQLSubscriptionExtension","registerExtension","sessionExtension","tokenManagementExtension","TOKEN_MANAGEMENT_EXTENSION","connected","isLoggedIn","loginComplete","reestablishSession","connect","reload","abort","disconnect","isConnected","getConnectionEvents","subscribeToEvent","unsubscribeFromEvent","getConnectionState","subscriptionConfig","getChannels","extendSession","getTokenManagementExtension","extensionName","extension","unregisterExtension","batch","block","_encBase","_encUtf","isIE11","MSInputMethodContext","documentMode","wrapClient","client","clientWindow","getClientWindow","wrappedClient","dest","clone","overrideWindow","getRecordWatcherChannel","table","query","actionPrefix","parent","g_ambClient","getParentAmbClient","dontShowLogin","ambClient","clientSubscriptions","buildClientSubscriptions","setLoginWindowEnabled","getState","windowContext","originalSubscribe","originalUnsubscribe","getChannel0","base64EncodedQuery","contexts","addSubscription","removeSubscription","getContext","createContext","unloading","iM","onUnload","destroyContext","buildClient","frameElement","_window","documentReadyState","readyState","autoConnect","initiatedConnection","setClient","servletPath","loginWindow","wsConnectTimeout","overlayStyle","subscribeCommandsFlow","maxInflight","maxWait","retries","retryDelay","min","increaseFactor","_getRequireWildcardCache","newObj","hasPropertyDescriptor","desc","_interopRequireWildcard","_amb8","_amb9","WeakMap","crossClientChannel","disconnecting","eventManager","CONNECTION_INITIALIZED","CONNECTION_OPENED","CONNECTION_CLOSED","CONNECTION_BROKEN","SESSION_LOGGED_IN","SESSION_LOGGED_OUT","SESSION_INVALIDATED","SESSION_REESTABLISHED","sessionStates","state","channels","addListener","_metaHandshake","_metaConnect","applyAMBProperties","_initializeMetaChannelListeners","sessionStatus","loginWindowEnabled","lastError","errorMessages","loginWindowOverride","ambServerConnection","needToReestablishSession","channelRedirect","SESSION_LOGOUT_OVERLAY_STYLE","GLIDE_SESSION_STATUS","TOUCH_HTTP_SESSION","REESTABLISH_SESSION","getExtension","subscriptionCommandSender","logoutOverlayStyle","getExt","glideAMBSubscribeCommandsFlow","subCommandFlowDefault","defaultVal","propValue","_getBooleanMessageExtProperty","_getIntMessageExtProperty","glideAMBRetryDelay","retryDelayDefault","updateTokenCount","stop","applySubscriptionCommandFlowProperties","_connectionInitialized","_getChannel","subscriptionOptionsCallback","_removeChannel","setLogLevel","isNaN","_resubscribeAll","_unsubscribeAll","_publishEvent","shouldTouchHttpSession","getTransport","getType","_touchHttpSession","newSessionStatus","_processSessionStatus","_sessionStatus","wasConnected","_connectionOpened","getLastError","getErrorMessages","UNKNOWN_CLIENT","setLastError","_sendSessionSetupRequest","_onChannelRedirectSubscriptionComplete","_setupSession","isSessionInvalidated","isLoggedOut","isReestablished","loginHide","loginShow","configure","getURL","connectTimeout","handshake","_reestablishSession","ambServletPath","protocol","host","unsubscribeAll","resubscribeAll","isSessionActive","getChannelRedirect","getLoginWindowOverlayStyle","modalContent","modalTemplate","dialog","GlideModal","template","renderWithContent","setBody","render","isLoginWindowEnabled","enableLoginWindow","isLoginWindowOverride","xhr","request","XMLHttpRequest","open","setRequestHeader","g_ck","_buildSetUpSessionRequest","onload","send","_ref2","commandQueue","tokenManager","CommandModes","maxTimeInterval","addTokenAvailabilityListener","processQueue","stopping","timerObject","_clamp","minLimit","maxLimit","isBucketFull","getTokenCount","restartTimer","force","timeInterval","stopTimer","refillTokens","getRetryDelay","delay","scheduleRetry","triesLeft","retryMessage","newRetryDelay","getNewRetryDelay","enqueueSubscribe","enqueueUnsubscribe","onResponse","isRejected","statusCode","isRetriable","addItemToQueue","resp","numberToProcess","isStopping","getQueue","isBucketEmpty","getTimerObject","getTokenCountFromTokenManager","tokenCount","tokenEventListeners","isMetaSubUnsubChannel","notifyOnAvailabilityOfToken","isMetaHandshake","supportsSubscribeCommandFlow","incoming","receivedByGlide","isReceivedByGlideAndMetaSubUnsubChannel","tokenEventListener","removeTokenAvailabilityListener","removeIndex","findIndex","Logger","EventManager","ServerConnection","ChannelRedirect","ChannelListener","Channel","MessageClient","getClient","$apply","$call","$reflectApply","$TypeError","$actualApply","Reflect","GetIntrinsic","callBindBasic","$indexOf","allowMissing","intrinsic","Utils","isString","String","inArray","funktion","_debug","timeoutHandle","TransportRegistry","_types","_transports","getTransportTypes","findTransportTypes","crossDomain","accept","negotiateTransport","transport","existing","reset","Transport","_type","_url","registered","unregistered","_mixin","getConfiguration","getAdvice","handle","convertToMessages","setURL","envelope","metaConnect","derive","baseObject","F","RequestTransport","_super","_self","_requestIds","_metaConnectRequest","_requests","_envelopes","_coalesceEnvelopes","envelopeAndRequest","newEnvelope","newRequest","sync","_transportSend","transportSend","expired","maxDelay","maxNetworkDelay","timeout","errorMessage","failure","reason","httpCode","xhrStatus","abortXHR","complete","onFailure","_queueSend","requestId","maxConnections","_metaConnectComplete","_complete","success","nextEnvelope","nextRequest","autoBatch","_metaConnectSend","transportSuccess","responses","onSuccess","transportFailure","metaConnectRequest","UNSENT","_supportsCrossDomain","newXMLHttpRequest","xhrSend","packet","withCredentials","headers","headerName","responseText","onError","statusText","onerror","body","sameStack","requestHeaders","received","CallbackPollingTransport","jsonp","_failTransportFn","jsonpSend","head","script","createElement","callbackName","removeChild","src","appendChild","start","lengths","json","urlLength","encodeURI","maxURILength","envelopeToSend","begin","xx","_webSocketSupported","_webSocketConnected","_stickyReconnect","_connecting","_connected","_successCallback","_forceClose","webSocketClose","onClose","_sameContext","_storeEnvelope","messageIds","envelopes","_websocketConnect","webSocket","WebSocket","stickyReconnect","connectTimer","onopen","onOpen","_warn","onclose","onmessage","wsMessage","onMessage","_webSocketSend","timeouts","_send","_notifySuccess","_notifyFailure","close","removed","websocketCode","websocketEnabled","_transport","_handshakeProps","_handshakeCallback","_handleMessages","_handleFailure","_crossDomain","_status","_messageId","_clientId","_batch","_messageQueue","_internalBatch","_listenerId","_backoff","_scheduledSend","_extensions","_advice","_callbacks","_remoteCalls","_reestablish","_unconnectTime","_handshakeMessages","_config","backoffIncrement","maxBackoff","appendMessageTypeToURL","urls","interval","reconnect","maxInterval","_fieldValue","_isString","_isFunction","_zeroPad","pow","_log","getHours","getMinutes","getSeconds","getMilliseconds","_splitURL","exec","_configure","configuration","urlParts","hostAndPort","afterURI","_isCrossDomain","_info","uriSegments","lastSegmentIndex","_removeListener","_removeSubscription","_clearSubscriptions","_setStatus","newStatus","_isDisconnected","_nextMessageId","_applyExtension","scope","onExtensionException","_applyIncomingExtensions","_applyOutgoingExtensions","_notify","onListenerException","_notifyListeners","channelParts","last","channelPart","_cancelDelayedSend","_delayedSend","operation","extraPath","messageId","rcvdMessages","conduit","connectionType","_resetBackoff","_increaseBackoff","_startBatch","_flushBatch","_endBatch","_connect","bayeuxMessage","_delayedConnect","_updateAdvice","newAdvice","_disconnect","_notifyTransportException","oldTransport","newTransport","onTransportException","_handshake","handshakeProps","handshakeCallback","transportTypes","minimumVersion","supportedConnectionTypes","_putCallback","_delayedHandshake","_notifyCallback","onCallbackException","_handleCallback","_getCallback","_handleRemoteCall","_handleTransportFailure","failureInfo","action","_failHandshake","onTransportFailure","_handshakeResponse","successful","cause","reestablish","_handshakeFailure","_failConnect","_connectResponse","_connectFailure","_failDisconnect","_disconnectResponse","_disconnectFailure","_failSubscribe","_subscribeResponse","_subscribeFailure","_failUnsubscribe","_unsubscribeResponse","_unsubscribeFailure","_failMessage","_messageResponse","_messageFailure","_receive","_hasSubscriptions","_resolveScopedCallback","delegate","_addListener","isListener","deep","objects","targ","failureHandler","transports","getTransportRegistry","getBackoffPeriod","increaseBackoffPeriod","getTime","expiration","resetBackoffPeriod","receive","failureMessage","unregisterTransports","findTransport","disconnectProps","disconnectCallback","startBatch","endBatch","removeListener","clearListeners","subscribeProps","subscribeCallback","unsubscribeProps","unsubscribeCallback","clearSubscriptions","publishProps","publishCallback","publishBinary","ArrayBuffer","binary","remoteCall","callProps","remoteCallBinary","isDisconnected","setBackoffIncrement","period","getBackoffIncrement","_z85EncodeTable","_z85DecodeTable","Z85","encode","bytes","buffer","byteLength","remainder","padding","view","DataView","isPadding","getUint8","divisor","decode","string","charIdx","byteIdx","setUint8","factory","CryptoJS","subtype","C","C_lib","lib","Base","extend","overrides","mixIn","$super","propertyName","WordArray","words","sigBytes","encoder","Hex","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","clamp","thatByte","ceil","nBytes","rcache","r","m_w","m_z","mask","_r","C_enc","enc","hexChars","bite","hexStr","hexStrLength","substr","Latin1","latin1Chars","fromCharCode","latin1Str","latin1StrLength","Utf8","escape","utf8Str","unescape","BufferedBlockAlgorithm","_data","_nDataBytes","_append","_process","doFlush","dataWords","dataSigBytes","blockSize","nBlocksReady","nWordsReady","_minBufferSize","nBytesReady","offset","_doProcessBlock","processedWords","C_algo","Hasher","cfg","_doReset","update","messageUpdate","finalize","_doFinalize","_createHelper","hasher","_createHmacHelper","HMAC","algo","parseLoop","base64Str","base64StrLength","reverseMap","bits1","bits2","Base64","_map","base64Chars","triplet","charAt","paddingChar","_reverseMap","paddingIndex","cssWithMappingToString","list","needLayer","modules","media","dedupe","supports","layer","alreadyImportedModules","_k","hasProtoAccessor","callBind","gOPD","__proto__","$Object","$getPrototypeOf","getPrototypeOf","$defineProperty","EvalError","RangeError","ReferenceError","SyntaxError","URIError","valueOf","cmp","f","cycles","node","aobj","bobj","seen","toJSON","isFinite","seenIndex","sort","toStr","concatty","that","bound","arrLike","slicy","boundLength","boundArgs","joiner","joiny","Empty","implementation","$Error","$EvalError","$RangeError","$ReferenceError","$SyntaxError","$URIError","abs","round","sign","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","getProto","$ObjectGPO","$ReflectGPO","needsEval","TypedArray","INTRINSICS","AggregateError","Atomics","BigInt","BigInt64Array","BigUint64Array","decodeURI","eval","Float16Array","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","Number","parseFloat","Proxy","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","WeakRef","errorProto","doEval","gen","LEGACY_ALIASES","hasOwn","$concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","getBaseIntrinsic","alias","intrinsicName","first","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","reflectGetProto","originalGetProto","getDunderProto","O","origSymbol","hasSymbolSham","getOwnPropertySymbols","sym","symObj","getOwnPropertyNames","syms","propertyIsEnumerable","descriptor","$hasOwn","condition","d","argIndex","framesToPop","_traverse","pre","post","arrayKeywords","propsKeywords","skipKeywords","enum","exclusiveMaximum","exclusiveMinimum","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","INFINITY","MAX_SAFE_INTEGER","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsZWJ","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","global","freeSelf","freeExports","nodeType","freeModule","moduleExports","freeProcess","process","nodeUtil","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","isDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","func","arrayAggregator","setter","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","current","baseTimes","n","baseTrim","trimmedEndIndex","baseUnary","baseValues","props","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","overArg","transform","arg","replaceHolders","setToArray","setToPairs","stringSize","lastIndex","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","uid","pick","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","allocUnsafe","getPrototype","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","toStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","reverse","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","entry","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","eq","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","skip","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","input","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","Ctor","cloneArrayBuffer","dataView","byteOffset","cloneDataView","cloneTypedArray","regexp","cloneRegExp","symbol","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","wait","baseDifference","isCommon","valuesLength","outer","computed","valuesIndex","templateSettings","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","isFunction","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","othProps","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","property","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","isArrayLikeObject","isPlainObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","criteria","comparer","baseSortBy","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","indexes","previous","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","constant","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","methodName","trailing","createCompounder","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","thru","wrapper","getFuncName","funcName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","step","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","toInteger","pair","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","flatten","otherFunc","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","remaining","rand","memoize","memoizeCapped","difference","differenceBy","differenceWith","findLastIndex","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","unzipWith","without","xor","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","findLast","forEachRight","groupBy","invokeMap","keyBy","partition","sortBy","before","bindKey","WRAP_BIND_FLAG","debounce","lastArgs","lastThis","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","flush","defer","resolver","memoized","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","lt","lte","toArray","next","done","iteratorToArray","toLength","isBinary","assign","assignIn","assignInWith","assignWith","at","propsIndex","propsLength","defaultsDeep","mergeWith","invert","invertBy","invoke","merge","omit","CLONE_DEEP_FLAG","basePick","pickBy","toPairs","toPairsIn","camelCase","word","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","mixin","over","overEvery","overSome","basePropertyDeep","range","rangeRight","augend","addend","divide","dividend","multiply","multiplier","multiplicand","subtract","minuend","subtrahend","after","castArray","chunk","compact","cond","conforms","baseConforms","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","fill","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","flip","fromPairs","functions","functionsIn","initial","mapKeys","mapValues","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","reject","rest","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","wrap","zipObject","zipObjectDeep","entriesIn","extendWith","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","endsWith","position","escapeRegExp","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","inRange","baseInRange","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isMatch","isMatchWith","isNative","isSafeInteger","isWeakMap","isWeakSet","lastIndexOf","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","nth","noConflict","pad","strLength","padEnd","radix","floating","temp","reduce","reduceRight","repeat","sample","some","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sum","sumBy","settings","isEscaping","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","variable","times","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","search","newEnd","uniqueId","prefix","each","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","getView","iterLength","takeCount","iterIndex","commit","wrapped","define","navigator","svgNS","locationHref","_useWebWorker","initialDefaultFrame","setWebWorker","flag","getWebWorker","setLocationHref","getLocationHref","createTag","extendPrototype","destination","sourcePrototype","attr","getDescriptor","createProxyFunction","ProxyFunction","audioControllerFactory","AudioController","audioFactory","audios","_volume","_isMuted","addAudio","audio","pause","resume","setRate","rateValue","createAudio","assetPath","Howl","isPlaying","play","seek","playing","rate","setVolume","setAudioFactory","_updateVolume","mute","unmute","getVolume","volume","createTypedArray","createRegularArray","createSizedArray","_typeof$6","subframeEnabled","expressionsPlugin","expressionsInterfaces","idPrefix$1","isSafari","userAgent","_shouldRoundValues","bmPow","bmSqrt","sqrt","bmFloor","bmMax","bmMin","BMMath","ProjectInterface$1","absArr","defaultCurveSegments","degToRads","PI","roundCorner","roundValues","bmRnd","styleDiv","style","top","left","display","transformOrigin","webkitTransformOrigin","backfaceVisibility","webkitBackfaceVisibility","transformStyle","webkitTransformStyle","mozTransformStyle","BMEnterFrameEvent","currentTime","totalTime","frameMultiplier","direction","BMCompleteEvent","BMCompleteLoopEvent","totalLoops","currentLoop","BMSegmentStartEvent","firstFrame","totalFrames","BMDestroyEvent","BMRenderFrameErrorEvent","nativeError","BMConfigErrorEvent","BMAnimationConfigErrorEvent","createElementID","_count","HSVtoRGB","h","s","g","q","RGBtoHSV","addSaturationToRGB","color","hsv","addBrightnessToRGB","addHueToRGB","rgbToHex","hex","colorMap","setSubframeEnabled","getSubframeEnabled","setExpressionsPlugin","getExpressionsPlugin","setExpressionInterfaces","getExpressionInterfaces","setDefaultCurveSegments","getDefaultCurveSegments","setIdPrefix","getIdPrefix","createNS","createElementNS","_typeof$5","dataManager","workerFn","workerInstance","_counterId","processes","workerProxy","postMessage","_workerSelf","setupWorker","Worker","Blob","blob","createObjectURL","createWorker","completeLayers","layers","comps","layerData","jLen","kLen","completed","hasMask","maskProps","masksProperties","pt","convertPathsToAbsoluteValues","ty","findCompLayers","completeShapes","shapes","completeText","comp","findComp","__used","ks","checkVersion","animVersionString","animVersion","checkText","iterateLayers","textLayer","documentData","animationData","assets","checkChars","charData","ip","op","st","sr","sk","sa","checkPathProperties","pathData","checkColors","iterateShapes","checkShapes","completeClosingShapes","closed","cl","moduleOb","__complete","completeChars","dataFunctionManager","assetLoader","formatResponse","contentTypeHeader","getResponseHeader","responseType","load","errorCallback","onreadystatechange","completeData","payload","animation","onComplete","createProcess","loadAnimation","processId","pathname","loadData","completeAnimation","anim","ImagePreloader","proxyImage","canvas","width","height","ctx","fillStyle","fillRect","imageLoaded","loadedAssets","totalImages","loadedFootagesCount","totalFootages","imagesLoadedCb","footageLoaded","getAssetsPath","assetData","assetsPath","originalPath","imagePath","u","testImageLoaded","img","intervalId","setInterval","getBBox","_imageLoaded","clearInterval","createFootageData","ob","footageData","_footageLoaded","ImagePreloaderFactory","images","loadAssets","_createImageData","setAssetsPath","setPath","loadedImages","loadedFootages","getAsset","createImgData","crossOrigin","createImageData","setAttributeNS","_elementHelper","append","setCacheType","elementHelper","BaseEvent","triggerEvent","_cbs","callbacks","markerParser","parsePayloadLines","line","lines","keysCount","_markers","markers","_marker","markerData","tm","dr","cm","__","ProjectInterface","registerComposition","compositions","_thisProjectFunction","nm","prepareFrame","xt","currentFrame","compInterface","renderers","registerRenderer","getRenderer","getRegisteredRenderer","_typeof$4","AnimationItem","isLoaded","currentRawFrame","frameRate","frameMult","playSpeed","playDirection","playCount","isPaused","autoplay","loop","renderer","animationID","timeCompleted","segmentPos","isSubframeEnabled","_idle","_completedLoop","projectInterface","imagePreloader","audioController","configAnimation","onSetupError","onSegmentComplete","drawnFrameEvent","setParams","params","container","animType","RendererClass","rendererSettings","globalData","defs","setProjectInterface","autoloadSegments","initialSegment","setupAnimation","fileName","trigger","wrapperAttributes","getNamedItem","prerender","includeLayers","newLayers","fonts","fontManager","addChars","addFonts","initExpressions","loadNextSegment","segmentPath","loadSegments","imagesLoaded","checkLoaded","preloadImages","animData","fr","searchExtraCompositions","updaFrameModifier","waitForFontsLoaded","triggerConfigError","rendererType","initItems","gotoFrame","resize","_width","_height","updateContainerSize","setSubframe","renderFrame","resetFrame","triggerRenderFrameError","togglePause","setCurrentRawFrameValue","getMarkerData","markerName","marker","goToAndStop","isFrame","numValue","frameModifier","goToAndPlay","playSegments","advanceTime","nextValue","_isComplete","checkSegments","adjustSegment","setSpeed","setDirection","setSegment","pendingFrame","forceFlag","resetSegments","onEnterFrame","onLoopComplete","onSegmentStart","onDestroy","setLoop","isLooping","getAssetData","hide","show","getDuration","updateDocumentData","getElementByPath","animationManager","registeredAnimations","initTime","playingAnimationsNum","_stopped","_isFrozen","removeElement","ev","animItem","subtractPlayingCount","registerAnimation","elem","addPlayingCount","activate","nowTime","elapsedTime","requestAnimationFrame","searchAnimations","standalone","animElements","getElementsByClassName","lenAnims","innerText","div","freeze","unfreeze","getRegisteredAnimations","animations","BezierFactory","beziers","bezEasing","BezierEasing","kSplineTableSize","kSampleStepSize","float32ArraySupported","A","aA1","aA2","B","calcBezier","aT","getSlope","points","_p","_mSampleValues","_precomputed","mX1","mY1","mX2","mY2","_precompute","_getTForX","_calcSampleValues","aX","mSampleValues","intervalStart","currentSample","lastSample","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","pooling","poolFactory","initialLength","_create","_release","_length","_maxLength","pool","newElement","release","bezierLengthPool","addedLength","percents","segmentsLengthPool","totalLength","bezFunction","math","pointOnLine2D","x1","y1","x2","y2","x3","y3","det1","getBezierLength","pt1","pt2","pt3","pt4","ptCoord","perc","ptDistance","curveSegments","point","lastPoint","lengthData","BezierData","segmentLength","PointData","partialLength","storedData","buildBezierData","bezierName","bezierData","getDistancePerc","initPos","lengthPos","lPerc","bezierSegmentPoints","getSegmentsLength","shapeData","segmentsLength","pathV","pathO","pathI","getNewSegment","startPerc","endPerc","t0","t1","u0","u1","u0u0u0","t0u0u0_3","t0t0u0_3","t0t0t0","u0u0u1","t0u0u1_3","t0t0u1_3","t0t0t1","u0u1u1","t0u1u1_3","t0t1u1_3","t0t1t1","u1u1u1","t1u1u1_3","t1t1u1_3","t1t1t1","getPointInSegment","percent","pointOnLine3D","z1","z2","z3","diffDist","dist1","dist2","dist3","bez","initFrame","mathAbs","frameNum","caching","offsetTime","propType","pv","keyData","nextKeyData","keyframeMetadata","fnc","iterationIndex","keyframes","keyframesMetadata","endValue","nextKeyTime","keyTime","ti","ind","__fnct","getBezierEasing","y","segmentPerc","distanceInLine","lastFrame","_lastKeyframeIndex","_lastAddedLength","_lastPoint","outX","outY","inX","inY","keyValue","sh","quaternionToEuler","slerp","createQuaternion","omega","cosom","sinom","scale0","scale1","ax","ay","az","aw","bx","by","bz","bw","acos","sin","quat","qx","qy","qz","qw","heading","atan2","attitude","asin","bank","c1","cos","c2","c3","s1","s2","s3","getValueAtCurrentTime","renderedFrame","_caching","renderResult","setVValue","multipliedValue","mult","_mdf","processEffectsSequence","frameId","effectsSequence","lock","_isFirstFrame","finalValue","kf","addEffect","effectFunction","addDynamicProperty","ValueProperty","vel","MultiDimensionalProperty","KeyframedValueProperty","KeyframedMultidimensionalProperty","arrLen","PropertyFactory","getProp","sid","slotManager","DynamicPropertyContainer","dynamicProperties","_isAnimated","iterateDynamicProperties","initDynamicPropertyContainer","pointPool","ShapePath","setPathData","setLength","doubleArrayLength","setXYAt","setTripleAt","vX","vY","oX","oY","iX","iY","newPath","vertices","outPoints","inPoints","cnt","shapePool","shapePath","shape","cloned","ShapeCollection","addShape","releaseShapes","shapeCollectionPool","newShapeCollection","shapeCollection","ShapePropertyFactory","interpolateShape","previousValue","keyPropS","keyPropE","isHold","vertexValue","interpolateShapeCurrentTime","resetShape","localShapeCollection","shape1","shape2","shapesEqual","ShapeProperty","KeyframedShapeProperty","EllShapeProperty","cPoint","EllShapePropertyFactory","convertEllToPath","p0","p1","s0","_cw","_v","StarShapeProperty","StarShapePropertyFactory","sy","ir","is","convertToPath","convertStarToPath","convertPolygonToPath","or","os","rad","roundness","perimSegment","numPts","angle","longFlag","longRad","shortRad","longRound","shortRound","longPerimSegment","shortPerimSegment","currentAng","ox","oy","RectShapeProperty","RectShapePropertyFactory","convertRectToPath","v0","v1","Matrix","_cos","_sin","_tan","tan","_rnd","rotate","mCos","mSin","_t","rotateX","rotateY","rotateZ","shear","sx","skew","skewFromAxis","scale","sz","setTransform","l","m","translate","tx","tz","a2","b2","d2","e2","f2","g2","h2","j2","k2","m2","n2","o2","p2","_identityCalculated","a1","b1","d1","e1","f1","g1","h1","j1","k1","m1","n1","o1","matrix","matrixProps","isIdentity","_identity","equals","matr","cloneFromProps","applyToPoint","z","applyToX","applyToY","applyToZ","getInverseMatrix","determinant","inverseMatrix","inversePoint","applyToPointArray","inversePoints","pts","retPts","applyToTriplePoints","p4","p5","p12","p13","applyToPointStringified","toCSS","cssValue","roundMatrixProperty","to2dCSS","_typeof$3","lottie","setLocation","setSubframeRendering","setPrefix","setQuality","inBrowser","installPlugin","plugin","getFactory","checkReady","readyStateCheckInterval","getQueryVariable","queryString","useWebWorker","setIDPrefix","__getFactory","scripts","myScript","ShapeModifiers","modifiers","registerModifier","getModifier","ShapeModifier","TrimModifier","PuckerAndBloatModifier","initModifierProperties","addShapeToModifier","setAsAnimated","processKeys","sValue","eValue","pathsData","calculateShapeEdges","shapeLength","totalModifierLength","segmentOb","shapeSegments","shapeS","shapeE","releasePathsData","processShapes","shapePaths","_s","totalShapeLength","edges","newShapesData","addShapes","lastShape","addPaths","newPaths","addSegment","newShape","addSegmentFromArray","shapeSegment","currentLengthData","segmentCount","amount","processPath","centerPoint","pathLength","clonedPath","TransformPropertyFactory","defaultVector","TransformProperty","appliedTransformations","px","py","pz","rx","ry","rz","_isDirty","applyToMatrix","mat","forceRender","precalculateMatrix","autoOriented","v2","getValueAtTime","autoOrient","_addDynamicProperty","getTransformProperty","RepeaterModifier","RoundCornersModifier","floatEqual","floatZero","lerp","lerpPoint","quadRoots","singleRoot","delta","polynomialCoefficients","p3","singlePoint","PolynomialBezier","linearize","pointEqual","coeffx","coeffy","extrema","intersectData","t2","box","boundingBox","cx","cy","splitData","boxIntersect","intersectsImpl","tolerance","intersections","maxRecursion","d1s","d2s","crossProduct","lineIntersection","start1","end1","start2","end2","v3","v4","polarOffset","pointDistance","hypot","ZigZagModifier","setPoint","outputBezier","amplitude","outAmplitude","inAmplitude","angO","angI","getPerpendicularVector","vector","rot","getProjectingAngle","cur","prevIndex","nextIndex","pVector","zigZagCorner","frequency","pointType","prevPoint","nextPoint","prevDist","nextDist","zigZagSegment","dist","normalAngle","linearOffset","offsetSegment","p1a","p1b","p2b","p2a","joinLines","seg1","seg2","lineJoin","miterLimit","angleOut","tangentAngle","angleIn","center","radius","getIntersection","intersect","pruneSegmentIntersection","outa","outb","pruneIntersections","offsetSegmentSplit","right","flex","inflectionPoints","OffsetPathModifier","getFontProperties","fontData","styles","fStyle","fWeight","weight","tr","so","eo","pMatrix","rMatrix","sMatrix","tMatrix","applyTransforms","inv","scaleX","scaleY","elemsData","_currentCopies","_elements","_groups","resetElements","elements","_processed","cloneElements","newElements","changeGroupRender","renderFlag","_render","itemsTransform","cont","hasReloaded","copies","ix","reloadShapes","elems","transformData","offsetModulo","roundOffset","pProps","rProps","sProps","iteration","mProps","rd","currentV","currentI","currentO","closerV","distance","newPosPerc","derivative","denom","tcusp","square","p10","p11","p20","p21","bounds","bottom","shapeSegmentInverted","pointsType","ml","lj","inputBezier","multiSegments","lastSeg","multiSegment","FontManager","emptyChar","w","combinedCharacters","BLACK_FLAG_CODE_POINT","surrogateModifiers","setUpNode","font","family","parentNode","fontFamily","fontSize","fontVariant","fontStyle","fontWeight","letterSpacing","offsetWidth","familyArray","enabledFamilies","trimFontOptions","createHelper","def","helper","engine","fontProps","tHelper","fFamily","fClass","tCanvasHelper","OffscreenCanvas","measureText","getComputedTextLength","getCodePoint","codePoint","isRegionalCode","Font","typekitLoaded","_warned","setIsLoadedBinded","setIsLoaded","checkLoadedFontsBinded","checkLoadedFonts","isModifier","firstCharCode","secondCharCode","isZeroWidthJoiner","charCode","isFlagEmoji","isCombinedCharacter","_char3","isRegionalFlag","isVariationSelector","fontPrototype","found","ch","fontArr","_pendingFonts","loadedSelector","shouldLoadFont","loaded","monoCase","sansCase","fPath","fOrigin","querySelectorAll","rel","sc","getCharData","_char","getFontByName","fName","_char2","fontName","doubleSize","singleSize","loadedCount","SlotManager","slotFactory","RenderableElement","slots","initRenderable","isInRange","hidden","isTransparent","renderableComponents","addRenderableComponent","component","removeRenderableComponent","prepareRenderableFrame","num","checkLayerLimits","checkTransparency","finalTransform","mProp","renderConfig","hideOnTransparent","renderRenderable","sourceRectAtTime","getLayerSize","textData","getBlendMode","blendModeEnums","SliderEffect","AngleEffect","ColorEffect","PointEffect","LayerIndexEffect","MaskIndexEffect","CheckboxEffect","NoValueEffect","EffectsManager","effects","ef","effectElements","effectItem","GroupEffect","BaseElement","FrameElement","FootageElement","imageLoader","initBaseData","AudioElement","_isPlaying","_canPlay","_currentTime","_volumeMultiplier","_previousVolume","_placeholder","lv","au","BaseRenderer","eff","checkMasks","LayerExpressionInterface","EffectsExpressionInterface","ShapeExpressionInterface","TextExpressionInterface","CompExpressionInterface","layerInterface","maskManager","registerMaskInterface","effectsInterface","createEffectsInterface","registerEffectsInterface","shapeInterface","shapesData","itemsData","textInterface","setBlendMode","blendModeValue","bm","baseElement","layerElement","layerId","effectsManager","prepareProperties","isVisible","_isParent","getBaseElement","FootageInterface","getFootageData","timeRemapped","totalVolume","volumeValue","checkLayers","buildItem","checkPendingElements","createItem","createImage","createComp","createSolid","createNull","createShape","createText","createCamera","createFootage","buildAllItems","pInterface","progressiveLoad","buildElementParenting","parentName","hierarchy","setAsParent","setHierarchy","addPendingElement","pendingElements","getElementById","pathValue","setupGlobalData","fontsContainer","animationItem","compSize","effectTypes","TRANSFORM_EFFECT","TransformElement","MaskElement","maskElement","viewData","solidPath","rect","expansor","feMorph","currentMasks","maskType","maskRef","getShapeProp","lastPath","filterID","expan","lastOperator","filterId","lastRadius","createLayerSolidPath","invRect","drawPath","maskedElement","initTransform","_matMdf","_localMatMdf","_opMdf","localMat","localOpacity","ao","renderTransform","finalMat","localTransforms","renderLocalTransform","lmat","localOp","opacity","searchEffectTransforms","renderableEffectsManager","transformEffects","getEffects","globalToLocal","ptNew","mHelper","getMaskProperty","isFirstFrame","getMaskelement","pathNodes","pathString","pathShapeValue","filtersFactory","filId","skipCoordinates","fil","feColorMatrix","featureSupport","svgLumaHidden","offscreenCanvas","registeredEffects$1","idPrefix","SVGEffects","filterManager","createFilter","filters","Effect","effect","countsAsEffect","registerEffect$1","SVGBaseElement","HierarchyElement","RenderableDOMElement","IImageElement","initElement","sourceRect","ProcessedElement","IShapeElement","initRendererElement","createContainerElements","matteElement","transformedElement","_sizeChanged","layerElementParent","td","matteMasks","gg","tt","ln","hd","cp","clipId","cpGroup","renderElement","destroyBaseElement","createRenderableComponents","getMatte","matteType","useElement","masker","createAlphaToLuminanceFilter","maskGroup","maskGrouper","feCTr","feFunc","alphaRect","setMatte","initHierarchy","checkParenting","createContent","renderInnerContent","innerElem","pr","imagePreserveAspectRatio","addShapeToModifiers","shapeModifiers","isShapeInAnimatedModifiers","isAnimatedWithShape","renderModifiers","searchProcessedElement","processedElements","addProcessedElement","lineCapEnum","lineJoinEnum","SVGShapeData","transformers","lStr","SVGStyleData","pElem","msElem","DashProperty","dataProps","dashStr","dashArray","dashoffset","SVGStrokeStyleData","styleOb","SVGFillStyleData","SVGNoStyleData","GradientProperty","cLength","_cmdf","_omdf","_collapsable","checkCollapsable","_hasOpacity","SVGGradientFillStyleData","initGradientData","SVGGradientStrokeStyleData","ShapeGroupData","prevViewData","gr","SVGTransformData","comparePoints","stops","setGradientData","setGradientOpacity","pathElement","gradientId","gfill","gf","cst","opacityId","maskId","opFill","lc","of","ms","ost","buildShapeString","_o","_i","shapeString","SVGElementsRenderer","_identityMatrix","_matrixHelper","renderContentTransform","styleData","itemData","renderNoop","renderPath","pathStringTransformed","redraw","iterations","lLen","renderFill","styleElem","renderGradientStroke","renderGradient","renderStroke","hasOpacity","attr1","attr2","cValues","oValues","ang","createRenderFunction","SVGShapeElement","stylesList","animatedContents","LetterProps","sw","fc","TextProperty","_frameId","keysIndex","canResize","minimumFontSize","currentData","ascent","boxWidth","defaultBoxWidth","justifyOffset","lh","lineWidths","ls","ps","fillColorAnim","strokeColorAnim","strokeWidthAnim","yOffset","finalSize","finalText","finalLineHeight","copyData","searchProperty","completeTextData","initSecondaryElement","identityMatrix","buildExpressionInterface","searchShapes","filterUniqueShapes","tempShapes","areAnimated","setShapesAsAnimated","createStyleElement","elementData","addToAnimatedContents","createGroupElement","createTransformElement","transformProperty","createShapeElement","ownTransformers","setElementStyles","currentTransform","modifier","processedPos","ownStyles","ownModifiers","renderShape","animatedContent","updated","setCurrentData","searchKeyframes","getKeyframeValue","_finalValue","currentValue","currentIndex","textKeys","buildFinalText","charactersArray","shouldCombine","shouldCombineNext","currentChars","newLineFlag","letters","anchorGrouping","currentSize","currentPos","currentLine","lineWidth","maxLineWidth","trackingOffset","currentHeight","boxHeight","lastSpaceIndex","currentChar","uncollapsedSpaces","an","anIndexes","animatorJustifyOffset","extra","animatorData","letterData","based","animators","fh","fs","fb","rn","totalChars","newInd","currentInd","dData","recalculate","canResizeFont","_canResize","setMinimumFontSize","_fontValue","TextSelectorProp","TextSelectorPropFactory","_currentTextLength","finalS","finalE","xe","ne","sm","getMult","textProperty","easer","tot","smoothness","threshold","newCharsFlag","getTextSelectorProp","TextAnimatorDataProperty","animatorProps","defaultData","textAnimatorAnimatables","TextAnimatorProperty","renderType","_hasMaskedPath","_textData","_renderType","_elem","_animatorsData","_pathData","_moreOptions","alignment","renderedLetters","lettersChangedFlag","ITextElement","searchProperties","getMeasures","xPos","yPos","pathInfo","currentLength","currentPoint","pointInd","segmentInd","tanAngle","matrixHelper","renderedLettersCount","tLength","pi","letterValue","yOff","firstLine","offf","xPathPos","yPathPos","elemOpacity","letterSw","letterSc","letterFc","letterO","initPathPos","initSegmentInd","initPointInd","letterM","letterP","defaultPropsArray","animatorFirstCharOffset","justifyOffsetMult","isNewLine","animatorOffset","atan","textAnimator","createPathShape","shapeStr","_fontSize","applyTextPropertiesToMatrix","lineNumber","buildColor","colorData","emptyProp","validateText","buildNewText","emptyShapeData","SVGTextLottieElement","textSpans","ISolidElement","NullElement","SVGRendererBase","ICompElement","SVGCompElement","supports3d","SVGRenderer","svgElement","titleElement","titleId","description","descElement","descId","preserveAspectRatio","contentVisibility","viewBoxOnly","viewBoxSize","focusable","filterSize","runExpressions","destroyed","ShapeTransformManager","sequences","sequenceList","transform_key_count","singleShape","textContainer","buildTextContents","textArray","textContents","currentTextContent","buildShapeData","shapeItem","tSpan","usesGlyphs","cachedSpansLength","childSpan","glyph","glyphElement","tElement","justify","textBox","bbox","renderedLetter","textSpan","findIndexByInd","appendElementInPos","elementIndex","tp","matteMask","nextElement","insertBefore","setElements","getElements","destroyElements","addTransformSequence","sequence","processSequence","processSequences","getNewKey","lumaLoader","lumaBuffer","lumaBufferCtx","svg","loadLuma","_svg","createCanvas","loadLumaCanvas","getLumaCanvas","registeredEffects","CVEffects","registerEffect","CVMaskElement","hasMasks","CVBaseElement","canvasContext","beginPath","moveTo","lineTo","bezierCurveTo","save","clip","operationsMap","CVShapeData","transformsManager","styledShapes","styledShape","trNodes","CVShapeElement","CVTextElement","stroke","currentRender","sWidth","fValue","CVImageElement","CVSolidElement","CanvasRendererBase","CanvasContext","strokeStyle","lineCap","CVContextData","cArrPos","cTr","nativeContext","transformMat","currentOpacity","currentFillStyle","appliedFillStyle","currentStrokeStyle","appliedStrokeStyle","currentLineWidth","appliedLineWidth","currentLineCap","appliedLineCap","currentLineJoin","appliedLineJoin","appliedMiterLimit","currentMiterLimit","CVCompElement","CanvasRenderer","clearCanvas","dpr","devicePixelRatio","currentGlobalAlpha","contextData","ctxTransform","ctxOpacity","ctxFillStyle","ctxStrokeStyle","ctxLineWidth","ctxLineCap","ctxLineJoin","ctxMiterLimit","ctxFill","ctxFillRect","ctxStroke","HBaseElement","HSolidElement","HShapeElement","shapesContainer","currentBBox","HTextElement","textPaths","isMasked","HCameraElement","pe","_prevMat","HImageElement","HybridRendererBase","threeDElements","camera","HCompElement","HybridRenderer","createElements","buffers","bufferCanvas","bufferCanvas2","_isProxy","transformCanvas","blendMode","globalCompositeOperation","hideElement","showElement","clearRect","prepareLayer","bufferCtx","drawImage","getTransform","exitLayer","forceRealStack","restore","transformHelper","dashResetter","preTransforms","co","wi","da","addTransformToStyleList","removeTransformFromStyleList","closeStyles","shouldRender","ownTransforms","_shouldRender","renderShapeTransform","parentTransform","groupTransform","drawLayer","nodes","currentStyle","coOp","grd","setLineDash","lineDashOffset","closePath","isMain","renderGradientFill","renderStyledShape","shapeNodes","groupTransformMat","createLinearGradient","createRadialGradient","addColorStop","hasFill","hasStroke","commands","pathArr","commandsCounter","lastFill","lastStroke","lastStrokeW","widthCrop","heightCrop","imgW","imgH","imgRel","canvasRel","par","globalAlpha","actionFlag","containerStyle","mozTransformOrigin","setContext","isDashed","elementWidth","elementHeight","elementRel","animationRel","offsetHeight","fillType","duplicate","newLength","forceRestore","currentContext","prevStack","saveOnNativeFlag","currentStack","newStack","setOpacity","trProps","checkBlendMode","tg","transformedElementStyle","matrixValue","webkitTransform","addEffects","backgroundColor","_renderShapeFrame","shapeCont","getTransformedPoint","calculateShapeBoundingBox","vPoint","oPoint","nextIPoint","nextVPoint","checkBounds","getBoundsOfCurve","shapeBoundingBox","xMax","yMax","tempBoundingBox","b2ac","calculateF","calculateBoundingBox","expandStrokeBoundingBox","widthProperty","kfw","currentBoxContains","changed","shapeStyle","shapeTransform","compW","compH","innerElemStyle","textColor","strokeWidth","lineHeight","tParent","tCont","children","tContStyle","tContTranslation","tStyle","tSpanTranslation","svgStyle","translation","textPath","margin","svgTransform","setup","perspectiveStyle","perspectiveElem","perspective","webkitPerspective","mTransf","diffVector","mag","lookDir","lookLengthOnXZ","mRotationX","mRotationY","hasMatrixChanged","matValue","Image","imageElem","newDOMElement","ddd","addTo3dContainer","nextDOMElement","nextLayer","getThreeDContainerByPos","startPos","endPos","createThreeDContainer","threeDContainerData","build3dContainers","lastThreeDContainerData","currentContainer","resizerElem","overflow","cWidth","cHeight","floatingContainer","_createBaseContainerElements","_thisLayerFunction","pixelAspect","frameDuration","displayStartTime","numLayers","_typeof$2","seedRandom","rngname","startdenom","significance","ARC4","keylen","me","S","typ","mixkey","seed","smear","stringseed","tostring","shortseed","entropy","msCrypto","browser","plugins","screen","autoseed","arc4","prng","int32","quick","pass","is_math_call","initialize$2","propTypes","SHAPE","_typeof$1","ExpressionManager","fetch","frames","_lottieGlobal","$bm_isInstanceOfArray","isNumerable","tOfV","$bm_neg","tOfA","lenA","retArr","easeInBez","easeOutBez","easeInOutBez","tOfB","lenB","sub","mul","mod","$bm_sum","$bm_sub","$bm_mul","$bm_div","$bm_mod","mm","radiansToDegrees","radians_to_degrees","degreesToRadians","degrees_to_radians","helperLengthArray","vec","rgbToHsl","hue2rgb","hslToRgb","linear","tMin","tMax","value1","value2","_tMin","rnd","createPath","inTangents","outTangents","inVertexPoint","outVertexPoint","arrPlaceholder","initiateExpression","noOp","_value","needsVelocity","_needsRandom","elemType","$bm_transform","thisProperty","valueAtTime","inPoint","outPoint","loopIn","loop_in","loopOut","loop_out","smooth","toWorld","fromWorld","fromComp","toComp","fromCompToSurface","rotation","anchorPoint","thisLayer","thisComp","velocityAtTime","scoped_bm_rt","expression_function","numKeys","wiggle","freq","amp","iWiggle","lenWiggle","addedAmps","periods","loopInDuration","loopOutDuration","getVelocityAtTime","velocity","textIndex","textTotal","selectorValue","lookAt","elem1","elem2","fVec","pitch","easeOut","val1","val2","applyEase","easeIn","ease","iKey","lenKey","nearestKey","obKey","framesToTime","fps","timeToFrames","seedrandom","randSeed","posterizeTime","framesPerSecond","hasParent","executeExpression","frameExpressionId","__preventDeadCodeRemoval","Expressions","stackCount","registers","pushExpression","popExpression","releaseInstances","registerExpressionProperty","expression","MaskManagerInterface","MaskInterface","_mask","_masksInterfaces","ExpressionPropertyInterface","defaultUnidimensionalValue","defaultMultidimensionalValue","completeProperty","expressionValue","valueProp","speedAtTime","getSpeedAtTime","propertyGroup","defaultGetter","UnidimensionalPropertyInterface","MultidimensionalPropertyInterface","TransformExpressionInterface","_thisFunction","xRotation","yRotation","xPosition","yPosition","zPosition","_px","_py","_pz","_transformFactory","getMatrix","toWorldMat","toWorldVec","applyPoint","fromWorldVec","invertPoint","sampleImage","transformInterface","anchorPointDescriptor","defineProperties","anchor_point","propertyGroupFactory","interfaceFunction","parentPropertyGroup","PropertyInterface","createGroupInterface","groupInterface","mn","_propertyGroup","createValueInterface","numProperties","np","en","expressionProperty","setGroupProperty","effectsData","ShapePathInterface","propertyIndex","iterateElements","groupInterfaceFactory","fillInterfaceFactory","strokeInterfaceFactory","trimInterfaceFactory","ellipseInterfaceFactory","starInterfaceFactory","rectInterfaceFactory","roundedInterfaceFactory","repeaterInterfaceFactory","gradientFillInterfaceFactory","interfaces","transformInterfaceFactory","cix","contentsInterfaceFactory","startPoint","endPoint","_dashPropertyGroup","dashOb","addPropertyToDashOb","dash","skewAxis","outerRadius","outerRoundness","innerRoundness","innerRadius","_interfaceFunction","_sourceText","sourceText","stringValue","fillColor","dataInterfaceFactory","outlineInterface","currentPropertyName","currentProperty","propertyNameIndex","outlineInterfaceFactory","dataInterface","footage","getInterface","expressionHelpers","searchExpressions","speed","_cachingAtTime","getStaticValueAtTime","addPropertyDecorator","durationFlag","cycleDuration","firstKeyFrame","ret","lastKeyFrame","initV","endV","repeats","lastValue","nextLastValue","firstValue","nextFirstValue","samples","sampleValue","sampleFrequency","getTransformValueAtTime","_transformCachingAtTime","anchor","rotationZ","rotationY","rotationX","orientation","positionX","positionY","positionZ","getTransformStaticValueAtTime","propertyGetProp","ShapePropertyConstructorFunction","getConstructorFunction","KeyframedShapePropertyConstructorFunction","getKeyframedConstructorFunction","ShapeExpressions","isClosed","pointOnPath","_segmentsLength","accumulatedLength","initIndex","endIndex","vectorOnPath","vectorType","xLength","yLength","magnitude","tangentOnPath","normalOnPath","shapeValue","lastTime","propertyGetShapeProp","trims","initialize$1","addDecorator","getExpressionValue","calculateExpression","isKeyframed","hasExpressions","SVGComposableEffect","createMergeNode","resultId","ins","feMergeNode","feMerge","linearFilterValue","SVGTintFilter","linearFilter","matrixFilter","SVGFillFilter","SVGStrokeEffect","SVGTritoneFilter","feComponentTransfer","feFuncR","feFuncG","feFuncB","SVGProLevelsFilter","createFeFunc","feFuncA","feFuncRComposed","feFuncGComposed","feFuncBComposed","SVGDropShadowEffect","globalFilterSize","feGaussianBlur","feOffset","feFlood","feComposite","colorBlack","colorWhite","groupPath","elemChildren","childNodes","removeAttribute","pathMasker","dasharrayValue","getTotalLength","lineLength","units","color1","color2","color3","tableR","tableG","tableB","getTableValue","inputBlack","inputWhite","gamma","outputBlack","outputWhite","colorValue","outputDelta","inputDelta","col","_svgMatteSymbols","SVGMatte3Effect","filterElem","SVGGaussianBlurEffect","TransformEffect","SVGTransformEffect","CVTransformEffect","findSymbol","replaceInParent","symbolId","nextChild","useElem","setElementAsMask","sigma","dimensions","sigmaX","sigmaY","edgeMode","forceFrame","isUniformScale","scaleHeight","scaleWidth","$isNaN","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","isEnumerable","gPO","addNumericSeparator","sepRegex","int","intStr","dec","utilInspect","inspectCustom","inspectSymbol","quotes","single","quoteREs","wrapQuotes","defaultStyle","quoteStyle","quoteChar","canTrustToString","inspect_","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","base","prev","getIndent","inspect","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","attrs","xs","singleLineValues","indentedJoin","mapParts","collectionOf","setParts","weakCollectionOf","isWeakRef","isBigInt","ys","protoTag","trailer","quoteRE","lowbyte","lineJoiner","symMap","pathToRegexp","re","regexpToFunction","tokensToFunction","tokensToRegExp","DEFAULT_DELIMITER","PATH_REGEXP","tokens","defaultDelimiter","delimiter","whitelist","pathEscaped","escaped","capture","optional","prevText","escapeGroup","restrictBacktrack","charGroup","escapeString","token","sensitive","strict","route","endToken","isEndDelimited","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","percentTwenties","Format","formatters","RFC1738","RFC3986","utils","allowDots","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decoder","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictNullHandling","$0","numberStr","parseArrayValue","parseKeys","givenKey","valuesParsed","leaf","cleanRoot","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","maybeMap","encodedVal","combine","parseValues","getSideChannel","arrayPrefixGenerators","brackets","indices","pushToArray","valueOrArray","toISO","toISOString","defaultFormat","addQueryPrefix","encodeValuesOnly","formatter","serializeDate","skipNulls","sentinel","generateArrayPrefix","commaRoundTrip","sideChannel","tmpSc","findFlag","valuesArray","valuesJoined","objKeys","adjustedPrefix","keyPrefix","valueSideChannel","normalizeStringifyOptions","arrayFormat","joined","hexTable","arrayToObject","acc","queue","compacted","compactQueue","strWithoutPlus","defaultEncoder","mergeTarget","targetItem","listGetNode","isDelete","curr","$o","assert","deletedNode","listDelete","listGet","listHas","listSet","callBound","$Map","$mapGet","$mapSet","$mapHas","$mapDelete","$mapSize","$m","getSideChannelMap","$WeakMap","$weakMapGet","$weakMapSet","$weakMapHas","$weakMapDelete","$wm","getSideChannelList","makeChannel","$channelData","DEFAULT_BATCH_URL","DEFAULT_BATCH_METHOD","DEFAULT_BATCH_MAX","DEFAULT_BATCH_INTERVAL","DEFAULT_BATCH_ENCODE_REQUEST_BODIES","DEFAULT_BATCH_ENCODE_RESPONSE_BODIES","DEFAULT_BATCH_USE_STREAMING","DEFAULT_BATCH_USE_DATA_BROKER_SINGLE_REQUEST_STRATEGY","DEFAULT_BATCH_HTTP_REQUEST_DATA_BROKER_URLS","DEFAULT_BATCH_SINGLE_REQUEST","randomUUID","rnds8","rng","byteToHex","unsafeStringify","buf","native","rnds","createBatchId","uuidv4","BatchResponseBodyEncoding","BatchRestRequestOptions","BatchRestRequestOptionIsEncoded","BatchRestRequestOptionShouldEncodeResponse","BatchRestRequestClientOptions","BatchRestRequestClientOptionEncodeRequestBodies","BatchRestRequestClientOptionEncodeResponseBodies","BatchRestRequestRequestOptions","BATCH_RESPONSE_START_HEADER_NAME","BATCH_ITEM_RESPONSE_START_HEADER_NAME","BATCH_ITEM_RESPONSE_END_HEADER_NAME","NOW_UX_INTERACTION_ID_NAME","toGlideBatchingOptionsWithDefaults","batchingOptions","shouldEncodeRequestOrDefault","shouldEncodeResponseOrDefault","shouldEncodeRequest","shouldEncodeResponse","isFormData","FormData","isArrayBufferView","isView","isFile","isBlob","isStream","pipe","isURLSearchParams","URLSearchParams","isWebWorker","WorkerGlobalScope","shouldBatch","batching","multipartConfig","shouldDoBatch","isBatchable","isBatchConfig","appendParams","serializedParams","cleanedUrl","fragmentIndex","removeFragmentIdentifier","parseValue","createEncodedPair","serializeValue","buildUrl","paramsSerializer","getEmbeddableBaseUrl","_window$getEmbeddable","nowUiFramework","ABSOLUTE_URL_PATTERN","baseUrl","isAbsoluteUrl","headersToJson","isHeaders","jsonHeaders","getHeader","lowerCaseKey","currKey","containsHeader","xhrHeadersToHeaders","xhrHeadersStr","Headers","ECONNABORTED","ETIMEDOUT","ERR_BAD_RESPONSE","SnHttpError","_Error","columnNumber","_wrapNativeSuper","instantiateBadRequestError","createXhrRequestFailedError","createMultipartError","createStreamingBatchError","CONTENT_ENCODING","CONTENT_TYPE","HTTP_HEADERS","MULTIPART_MIXED_CONTENT_TYPE","MULTIPART_PAYLOAD_NOT_COMPLETE_ERROR","BOUNDARY_PATTERN","CRLF","SEPARATOR","DECODER","TextDecoder","parseHeaders","rawHeaders","rawHeader","headerParts","isCloseDelimiter","contents","isComplete","boundary","responseHeaders","isPreamble","idxBoundary","idxHeaders","createPartStream","reader","getReader","createParseState","read","nextState","multipartParser","parseBoundary","contentType","boundaryMatch","boundaryToken","multipartToJSON","reduceStream","parseBody","resolvedResponseType","isBlobContentType","getResponseType","handleMultipartResponse","formData","multipartConsumer","parsePartsAsJson","emitCompletedResponse","responseForEmitting","currPart","u8","u16","u32","fleb","fdeb","clim","freb","eb","_a","fl","revfl","_b","revfd","rev","hMap","cd","mb","le","rvb","sv","r_1","flt","fdt","flm","fdm","shft","slc","subarray","wbits","wbits16","hTree","et","i0","maxSym","mbt","dt","lft","i2_1","i2_2","i2_3","cli","cln","cls","clen","cf","wfblk","dat","wblk","final","lf","df","li","bs","bl","dlt","mlb","ddt","mdb","_c","lclt","nlc","_d","lcdt","ndc","lcfreq","_e","lct","mlcb","nlcc","lm","ll","dm","dl","flen","ftlen","dtlen","llm","lcts","clct","dst","deo","dflt","plvl","lst","opt","msk_1","bs1_1","bs2_1","hsh","lc_1","hv","imod","pimod","rem","ch_1","dif","maxn","maxd","nl","mmd","md","lin","din","crct","crc","cr","dopt","mem","wbytes","gzh","filename","mtime","gzhl","gzipSync","stream","queueMicrotask","TextEncoder","compressDataIfNeeded","compressionThreshold","httpRequestCompressionExcludeUrls","requestUrl","isDoNotCompressRequest","gzipOptions","compressionLevel","compressionMemoryLevel","ok","shouldUseXhr","onUploadProgress","onDownloadProgress","enforceJson","enforceJsonNotEmpty","jsonData","shouldStringifyRequestBody","transformServicedRequest","servicedRequest","transformBody","fromEntries","status_code","status_text","error_message","bodyEncoding","atob","mergeHeadersToServicedRequest","globalHeaders","isDataBrokerRequest","httpRequestDataBrokerUrls","httpRequestDataBrokerUrlsLowerCased","priority","invariant","idx","batch_request_id","batchServicedRequestHandler","batchUnservicedRequestsHandler","batchRequestId","currServicedRequest","unserviced_requests","streamingBatchHandler","multipartReceived","idFromHeader","invalidResponseRecvd","verifyBatchRequestOpen","batchItemRequestId","processBatchItemStart","servicedRequestJsonAttrs","processBatchItemEnd","unservicedRequests","processBatchEnd","HEADER_SPAN_TRACE_PARENT","HEADER_SPAN_DOCUMENT_TRACE_PARENT","SPAN_ATTR_SHR_BATCHED","SEISMIC_LEVEL","ERR_E_SIGNATURE_REQUIRED","uiAnalyticsConsumer","batchUrl","batchMethod","batchMax","batchInterval","useStreaming","useDataBrokerSingleRequestStrategy","batchSingleRequest","encodeRequestBodies","encodeResponsesBodies","sendRequest","batchingQueue","batchItemConfigMap","batchItem","enqueueItem","batchSuccessHandler","isMultipartMixedResponse","serviced_requests","handleBatchItem","handleUnservicedRequests","batchItemResponse","_objectWithoutPropertiesLoose","_excluded","deferredResolve","deferredReject","_batchSpan","_batchSpan2","batchId","rest_requests","lastPriority","candidateUxrInteractionId","_item$span","_batchItemToRawReques","_excluded3","batchItemToRawRequest","_excluded2","catch","batchSpan","componentId","requests","batchLink","batchSpanRequests","_item$span2","addLink","uxrInteractionId","batchRequest","enforce_order","batchStreamingResponseHandler","getBatchStreamingResponseHandler","isStreaming","batchHeaders","_batchSpan3","recordException","req","batchErrorHandler","finally","_batchSpan4","endSpan","dataBrokerRequestCnt","shouldStreamBatch","createBatchStreamingResponseHandler","createHeaders","currentQueueSize","enqueueRequest","_headers$NOW_UX_INTER","promise","encodeRequestBody","encodeResponseBody","REQUEST_HEADER_NAME","UNKNOWN_VALUE","urlMatch","canHandle","generateId","_d$type","_d$definitionSysId","definitionSysId","handlers","dbHandler","_d$operationName","operationName","defaultHandler","userToken","transformRequest","restRequests","batchingOptionsClient","updatedRestRequests","batchingOptionsRequest","_toPropertyKey","batchingOptionsToUse","updatedUrl","updatedBody","btoa","idHeader","getTransactionProcessorIdHeader","updatedHeaders","batchTPHName","batchTPHValue","getBatchTransactionProcessorIdHeader","batchIdHeader","batchResponseFailureHandler","batchResponseSuccessHandler","mergedGlobalHeadersResponse","servicedRequests","mergeGlobalHeadersToServicedRequests","successHandler","httpClientOptions","defaultHeaders","pkg","resolvedConfig","onRequest","xhrRequest","buildFullPath","baseURL","embeddableBaseUrl","createRequestXhr","cancelListener","isTimeout","signal","onCanceled","aborted","timer","createResponse","_request","getAllResponseHeaders","arraybuffer","dispose","upload","timeoutErrorMessage","xhrWithCancelTimeout","integrity","redirect","referrer","credentials","Request","createRequest","abortController","AbortController","signaledRequest","isAbortError","snHttpError","fetchWithCancelTimeout","eSignatureResult","_response$headers","_response$headers$get","transactionId","validationError","checkESignatureRequired","createExternalResponse","onResponseError","currentUserToken","resolveUserToken","transactionSource","mergeRequestHeaders","auth","username","password","updateAcceptHeaderForMultipart","_config$multipartConf","acceptHeaderValue","createBatchRequestInterceptor","retryRequestWithTokenResponse","newToken","newConfig","shouldRetryUnauthorizedRequest","createRequestFailedError","setXsrfToken","setTransactionSource","setDefaultHeaders","setHttpRequestCompressionThreshold","getHttpRequestCompressionThreshold","setHttpRequestCompressionLevel","getHttpRequestCompressionLevel","setHttpRequestCompressionMemoryLevel","getHttpRequestCompressionMemoryLevel","setHttpRequestCompressionExcludeUrls","defaultEnqueueRequestPrioritizer","requestIdleCallbackPollyfill","didTimeout","timeRemaining","requestIdleCallback","userAgentData","brands","brand","DEFAULT_METHODS","snHttpFactory","httpClient","snHttpClient","resolvedClient","SUPPORTED_METHODS","methods","MAX_IN_FLIGHT","maxConcurrent","enqueueRequestPrioritizer","xsrfToken","xTransactionSource","httpRequestCompressionThreshold","httpRequestCompressionLevel","httpRequestCompressionMemoryLevel","requestBatcher","createHttpRequestBatcher","inFlightRequests","numAvailableSlots","advance","_config$span","_config$span2","dispatchEvent","detail","dispatchESignatureEvent","incrementInFlightRequests","cancelInFlightRequests","abortCtrl","enqueueAndStart","_options$span","requestDescriptor","_options$span2","urlOrConfig","resolvedMethod","resolvedOptions","configMethod","configUrl","enqueueBatchRequest","helperMethods","interceptors","cancelRequests","DEFAULT_HTTP_REQUEST_COMPRESSION_EXCLUDE_URLS","getUxfSysProp","getGlobalObject","highPriorityPathNames","snHttp","transaction_source","disableRestBatching","isBatchingEnabled","isNonUxAppConfigAdminPanel","batchGQLEffectRequests","addSnHttpToWindow","signatureKey","signature","signedData","signData","isSigned","vnode","isPlainTextNode","defaultH","sel","denyUnlessSignedHook","oldVnode","denyUnlessSigned","processDataRecursively","checkIfValidVnode","dataProcessFn","tree","removeSignature","nargs","sets","xl","subexp","typeOf","buildExps","isIRI","ALPHA$$","DIGIT$$","HEXDIG$$","PCT_ENCODED$","SUB_DELIMS$$","RESERVED$$","SCHEME$","USERINFO$","UNRESERVED$$","DEC_OCTET_RELAXED$","H16$","LS32$","IPV4ADDRESS$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","ZONEID$","IPV6ADDRESS$","IP_LITERAL$","IPV6ADDRZ_RELAXED$","IPVFUTURE$","HOST$","REG_NAME$","PORT$","AUTHORITY$","PCHAR$","SEGMENT$","SEGMENT_NZ$","SEGMENT_NZ_NC$","PATH_ABEMPTY$","PATH_ABSOLUTE$","QUERY$","PATH_NOSCHEME$","PATH_ROOTLESS$","PATH_EMPTY$","IPRIVATE$$","FRAGMENT$","HIER_PART$","URI$","RELATIVE_PART$","RELATIVE$","URI_PROTOCOL","IRI_PROTOCOL","maxInt","damp","initialBias","initialN","regexPunycode","regexNonASCII","regexSeparators","baseMinusTMin","stringFromCharCode","error$1","mapDomain","ucs2decode","counter","ucs2encode","fromCodePoint","toConsumableArray","basicToDigit","digitToBasic","digit","adapt","numPoints","firstTime","inputLength","bias","basic","oldi","baseMinusT","_step","_iteratorNormalCompletion","_iterator","_currentValue2","basicLength","handledCPCount","_step2","_iteratorNormalCompletion2","_iterator2","handledCPCountPlusOne","_step3","_iteratorNormalCompletion3","_iterator3","_currentValue","qMinusT","toUnicode","toASCII","punycode","SCHEMES","pctEncChar","pctDecChars","newStr","il","_normalizeComponentEncoding","components","decodeUnreserved","decStr","UNRESERVED","scheme","PCT_ENCODED","NOT_SCHEME","userinfo","NOT_USERINFO","NOT_HOST","NOT_PATH","NOT_PATH_NOSCHEME","NOT_QUERY","NOT_FRAGMENT","_stripLeadingZeros","_normalizeIPv4","IPV4ADDRESS","address","_normalizeIPv6","IPV6ADDRESS","_matches2","zone","_address$toLowerCase$2","firstFields","lastFields","isLastFieldIPv4Address","fieldCount","lastFieldsStart","fields","allZeroFields","field","lastLongest","longestZeroFields","newHost","newFirst","newLast","URI_PARSE","NO_MATCH_IS_UNDEFINED","uriString","iri","port","schemeHandler","unicodeSupport","domainHost","_recomposeAuthority","uriTokens","$1","$2","RDS1","RDS2","RDS3","RDS5","removeDotSegments","im","authority","absolutePath","resolveComponents","relative","tolerant","baseURI","relativeURI","schemelessOptions","uriA","uriB","escapeComponent","ESCAPE","unescapeComponent","secure","handler$1","isSecure","wsComponents","handler$2","resourceName","_wsComponents$resourc2","handler$3","ATEXT$$","VCHAR$$","SOME_DELIMS$$","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","handler$4","mailtoComponents","unknownHeaders","hfields","hfield","toAddrs","_x","_xl","subject","_x2","_xl2","addr","toAddr","atIdx","localPart","domain","URN_PARSE","handler$5","urnComponents","nid","nss","urnScheme","uriComponents","handler$6","uuidComponents","___CSS_LOADER_EXPORT___","isNativeReflectConstruct","setPrototypeOf","construct","toPropertyKey","_defineProperties","superPropBase","_get","_getPrototypeOf","_isNativeReflectConstruct","assertThisInitialized","_setPrototypeOf","toPrimitive","isNativeFunction","Wrapper","__webpack_module_cache__","leafPrototypes","inProgress","dataWebpackPrefix","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdO","getter","ns","chunkId","promises","needAttach","nc","onScriptComplete","doneFns","nmd","scriptUrl","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","buildUnreadQueryParams","portal","consumerAccountContext","consumer_account_context","pickPreviewMessage","unreadMessages","normalizeFeatureStatus","_result$fetchUnreadIn","_result$isMessagePrev","_result$isProactiveTr","fetchUnreadInterval","isMessagePreviewEnabled","isProactiveTriggersEnabled","callAsync","VARIABLES","INTERNAL_HOST_DISPATCH","EXISTING_SHADOW_ROOT_ON_CREATE","errorTypes","COMPONENT_ERROR_THROWN","actionTypes","COMPONENT_CONNECTED","COMPONENT_DISCONNECTED","COMPONENT_BOOTSTRAPPED","COMPONENT_PROPERTY_CHANGED","COMPONENT_RENDERED","COMPONENT_DOM_READY","COMPONENT_PROPERTY_UPDATE_REQUESTED","COMPONENT_RENDER_REQUESTED","COMPONENT_DOM_TREE_READY","COMPONENT_TREE_RENDERED","COMPONENT_ACTION_DISPATCHED","COMPONENT_INTERACTIVE","locations","EFFECT","EVENT","INITIAL_STATE","INTERCEPTOR","LIFECYCLE","PROPERTY","RENDERER","TRANSFORM_STATE","VIEW","COMPONENT_ID_ATTRIBUTE","NOW_ID_ATTRIBUTE","NOW_ID_PROP","DISCONNECTED_TIME","domainSeparationProperties","NOW_DS_RECORD_TABLE","NOW_DS_RECORD_ID","NOW_DS_DOMAIN_ID","NOW_DS_DOMAIN_SCOPE","CREATE_REF_SYMBOL","CREATE_REF_SUBSCRIBE_SYMBOL","CREATE_REF_COMP_PROPS_SUBSCRIPTIONS_SYMBOL","ACTIVE_SPAN","SPAN_KIND_CLIENT","SPAN_FOR_DISPATCH","SPAN_ATTR_DISPATCH_ACTION_TYPE","SPAN_LEVEL_FINE","NOW_SKIP_RENDER_UNTIL_PRESENT_ATTR","NOW_SKIP_RENDER_UNTIL_PRESENT","NOW_DEFER_HYDRATION_ATTR","NOW_DEFER_HYDRATION","NOW_EXCLUDED_FROM_HYDRATION_ATTR","RESOLVED_PROPS_ATTRIBUTE","ERROR","WARN","INFO","DEBUG","TRACE","EMIT","logTypes","allLogTypes","createLogContext","componentName","docs","postfix","tempHost","__DO_NOT_USE_OR_YOU_WILL_BE_FIRED_BY_YOUR_PARENT__","nowLoggingLevels","logContext","parentComponentId","logMessage","getLogMessage","componentMsg","startMessage","trackStats","stats","recordStat","profileName","hit","stat","calls","hits","createCacheKey","cck","snabbdom","cloneVnode","cacheValue","elm","collectStats","clearStats","getStats","usage","toFixed","splitPathMemoized","partLength","char","indexStartPosition","indexEndPosition","arrayPart","indexLength","splitPath","here","partsCount","shouldSet","nextNext","shouldOmit","isArrayEqual","sourceLength","targetLength","isObjectEqual","sourceKeys","targetKeys","sourceKeyLength","targetKeyLength","isObjectTagEqual","classes","sourceTag","isObjectMatches","isSelectiveEqual","isArrayMatches","isObjectTagMatches","globalValueToBoolean","_window$ux_globals","_window$ux_globals$sy","_window2","_window2$ux_globals","_window2$ux_globals$n","_window2$ux_globals$n2","ux_globals","sysprops","nxui","nextTick","MessageChannel","port1","port2","deferMetrics","UNKNOWN_COMPONENT_NAME","clearDeferMetrics","logDuration","incomingComponentName","getDeferMetrics","logDeferTiming","isThrottled","isChromium","_window$navigator","_window$navigator$use","_window$navigator$use2","isIframe","_window3","_window3$parent","rIC","whenIdle","raf","createSnHttp","snHttpFactoryConfig","snHttpRequest","DEFAULT","TEST","DEV","PROD","NOW_UI_FRAMEWORK","NOW_UI_CONFIG","NOW_UI_EVENT","AMB_GC","GQL_CACHE_CAPACITY","GQL_CACHING_ENABLED","GQL_CACHING_REFRESH_DELAY","GQL_CACHE_MAX_PERSIST","HTTP_CACHE_CAPACITY","HTTP_CACHING_ENABLED","HTTP_CACHING_REFRESH_DELAY","HTTP_CACHE_MAX_PERSIST","TELEMETRY_MARKING_ENABLED","CHECK_FOR_POSSIBLE_PRESENTATIONAL_COMPONENTS","DISABLE_GQL_BATCHING","DISABLE_REST_BATCHING","ENABLE_ACTION_DISPATCHED_HANDLING","GARBAGE_COLLECTOR_INTERVAL","INTERSECT_ROOT_MARGIN","LOGGING_ENABLED","LOGGING_LEVELS","LOGS_OBSERVER_INTERVAL","LOGS_CLEANUP_INTERVAL","MEMOIZE","METRICS_LEVEL","METRICS_OBSERVER_INTERVAL","METRICS_TYPES","POSSIBLE_PRESENTATIONAL_COMPONENTS","QUEUE_FLUSH_ENABLED","TIME_TO_WAIT_AFTER_DISCONNECT","VALIDATE_SCHEMAS","ENABLE_SCHEDULER_STATS","METRICS_USE_WINDOW_PERFORMANCE","ENABLE_PROPERTY_DEEP_COMPARE","ENABLE_DECLARATIVE_STATE_UPDATE_DEEP_COMPARE","PAGE_OPT_OUT_PROPERTY_DEEP_COMPARE","PAGE_OPT_OUT_STATE_DEEP_COMPARE","MEMOIZE_SNABBDOM_PROP_PARTS","ENABLE_SCHEDULER_QUEUE_COUNTS","METRICS_ELEMENT_CONFIG_ENABLED","METRICS_COMPONENT_INTERACTIVE_ENABLED","ARIA_LIVE_ASSERTIVE_TIMEOUT","ARIA_LIVE_POLITE_TIMEOUT","WHEN_COMPONENT_IS_IDLE_TIMEOUT","WHEN_COMPONENT_IS_IDLE_THROTTLE","WHEN_COMPONENT_IS_IDLE_MIN_INTERVAL","SCHEDULER_RAF_TIMEOUT","METRICS_MARK_PRUNING_INTERVAL","METRICS_MARK_EXPIRATION","METRICS_PRUNE_MARKS","EMBEDDABLE_BASE_URL","NOW_UI_FRAMEWORK_CONFIG_KEYS","NXUI_SYS_PROPS","emitNowUiEvent","__ENABLE_NOW_UI_EVENT__","composed","bubbles","devConfig","prodConfig","testConfig","getConfigForEnv","configEnv","configInstance","getConfigFromGlobal","globalConfig","getConfigFromSysProps","_globalThis$ux_global","_globalThis$ux_global2","nxuiConfig","sysPropKeys","sysProp","configKey","sysPropValue","observeredProperties","getConfig","sysPropConfig","envConfig","observeConfigItem","getConfigItem","overridden","globalVar","sysPropVar","setConfigItem","retVal","setEmbeddableBaseUrl","configConstants","globalLoggingEnabled","globalLoggingLevels","shouldLog","always","logType","observe","observerObj","logsToSend","logObservers","timeoutId","logsObserverInterval","addLog","notifyLogObserver","notifyLogObservers","timeExpired","deadLine","nowUiFrameworkLogs","tagNameCache","support","logOptionDefaults","createLogger","loggerOptions","logOptions","resolvedLogContext","getHostInfo","memoizeProfiler","arg1","METRIC_DISPATCH","METRIC_ERROR","METRIC_GQL","METRIC_HTTP","METRIC_CONNECTION","METRIC_UPDATE_PROPERTIES","METRIC_UPDATE_STATE","METRIC_RENDER_START","METRIC_RENDER_END","METRIC_RENDER_TREE","METRIC_INTERSECTION","METRIC_SCHEDULE","METRIC_EXECUTE","METRIC_DEFER","METRIC_PROPERTY_REFLECTION","METRIC_EFFECT_START","METRIC_EFFECT_END","METRIC_PATCH_START","METRIC_PATCH_END","METRIC_HOOK_START","METRIC_HOOK_END","METRIC_INTERACTIVE","METRIC_HERO_INTERACTIVE","METRIC_UPDATE_CONTEXT","LIB_NAME","DISPATCH","GQL","HTTP","CONNECTION","UPDATE_PROPERTIES","UPDATE_STATE","RENDER_START","RENDER_END","RENDER_TREE","INTERSECTION","SCHEDULE","EXECUTE","DEFER","PROPERTY_REFLECTION","EFFECT_START","EFFECT_END","PATCH_START","PATCH_END","HOOK_START","HOOK_END","INTERACTIVE","HERO_INTERACTIVE","UPDATE_CONTEXT","levels","SEISMIC_HOIST_TAG_NAME","timings","LOWER_BOUNDARY","MIDDLE","UPPER_BOUNDARY","timingMetricTypes","DEBOUNCE","INTERACTION_ID","getBaseId","_globalThis$nowUiFram","_globalThis$nowUiFram2","uxfInteractionIdBase","createTransactionId","applyInteractionId","createInteractionId","validateMeta","callerName","getInteractionId","validateSetInteractionIdArguments","fnName","setInteractionId","histogram","defineMetric","resolveContext","resolvedHost","sourceElement","metricTypes","metricsLevel","ready","__DO_NOT_USE_BOOTSTRAPPED__","augment","augmenters","totalGQL","totalHTTP","totalRenders","totalPropChange","totalDispatch","totalStateUpdates","getCounters","clearCounters","increment","globalMetricsLevel","globalMetricsLevelIsInteger","globalMetricTypes","globalIsTelemetryEnabled","globalElementMetricsConfigEnabled","resolvedLevels","isMetricTypeValid","isValid","shouldMark","metricType","nowMetricTypes","nowMetricsLevel","validateMarkArguments","interactionId","latest","MARK_PRUNING_INTERVAL","MARK_EXPIRATION","PRUNE_MARKS","callObservers","latestSlice","unresolvedResourceMarks","mark","resource","_mark$options","isMarkBatchedRequest","isResourceBatchApi","_mark$options2","PerformanceObserver","resources","getEntries","markTime","entryTypes","_augmentedMark$option","_augmentedMark$option2","resolvedContext","incrementCount","augmentedMark","unresolved","marks","getMarks","clearMarks","getMetricTypes","addMarkAugmenter","augmenter","debounceMetrics","clearTimingMetrics","logTimingMetrics","isPerfMetricsEnabled","getCountersHistogram","getHistogram","delayTime","perfMetricsEnabled","collectMetrics","shouldClear","shouldDisable","counters","clearPerfMetrics","nowUiFrameworkMetrics","getPerformanceCounters","clearPerfomanceCounters","enableMetrics","notifiedHosts","sandbox","notify","dispatch","metadata","errorActionType","isRecursive","hostIdentifier","flat","internal","actionType","guid","createAriaRef","subscriptionMap","childAriaRefToPath","__current","__parent","isAriaRef","setCurrent","attributeToCallback","attribute","setParentAriaRef","parentAriaRef","getParentAriaRef","setId","getRootNode","cloneNode","setChildQuerySelector","childAriaRef","getChildQuerySelector","oldCb","seal","isRef","createRef","propList","compSubscriptions","subscribeToRef","registry","networkActionsEmptyForElCallbacks","globalCount","getPendingNetworkActionCount","pendingNetworkActionCountForHost","addPendingNetworkActionForHost","pendingNetworkAction","removePendingNetworkActionForHost","clearPendingNetworkActionsForHost","networkActions","addPendingNetworkActionForHostCb","getHostPendingNetworkActionCount","getSpanOptions","_host$tagName","DISPATCH_EVENT","ATTRIBUTE_SET","STORE_UPDATED","HANDLE_ACTIONS","PROPERTIES_SET","SHOULD_NOT_PROPAGATE","PARSE_PROP_CONF_KEY","SET_INITIAL_STATE","COMPONENT_NAME_ATTR","COMPONENT_NAME_PROP","HOIST_APPEND_TO_PROP","HOIST_APPEND_TO_ATTR","HOIST_ATTR","HOIST_FIRST_SCROLL_PARENT","DEFER_ATTRIBUTE","APPEND_TO_PAYLOAD_PROP_NAME","APPEND_TO_META_PROP_NAME","PROPERTY_SELECTOR_SIGIL","PROPERTIES_SET_LIFECYCLE","ON_CONNECT_LIFECYCLE","ON_DISCONNECT_LIFECYCLE","ON_BOOTSTRAP_LIFECYCLE","NOW_HOIST_ATTR","NOW_HOIST_PROP","NOW_HOIST_APPEND_TO_ATTR","NOW_HOIST_PREPEND_TO_ATTR","NOW_HOIST_APPEND_TO_PROP","NOW_HOIST_PREPEND_TO_PROP","NOW_ID_ATTR","NOW_COMPONENT_NAME_ATTR","NOW_COMPONENT_NAME_PROP","NOW_ENABLE_PROPERTY_SETTING_PREVENTION_ATTR","NOW_ENABLE_PROPERTY_SETTING_PREVENTION_PROP","NOW_LOGGING_LEVELS_PROP","NOW_PLACEHOLDER_HEIGHT_PROP","NOW_PLACEHOLDER_WIDTH_PROP","NOW_NESTED_SELECTABLE_PROPS","NOW_PRIORITY_ATTR","NOW_PRIORITY_PROP","PRIORITY_LEVEL_LOW","PRIORITY_LEVEL_MEDIUM","NOW_MODE_ATTR","NOW_MODE_PROP","COMPONENT_MODE_ACTIVE","COMPONENT_MODE_SUSPEND","COMPONENT_MODE_DETACH","NOW_METRIC_TYPES_PROP","NOW_METRICS_LEVEL_PROP","STATE_UPDATED","ACTION_DISPATCHED","ACTION_HANDLED","PROPAGATION_STOPPED","DEFAULT_PREVENTED","SCHEDULE_IMMEDIATELY_DO_NOT_USE_OR_YOU_WILL_BE_IMMEDIATELY_FIRED","COMPONENT_INTERNAL_ACTION","HELPERS_IMMEDIATE","HELPERS_DEFER","HELPERS_SCHEDULED","PACKAGE_NAME","SHADOW_ROOT_MODE_CLOSED","SHADOW_ROOT_MODE_OPEN","COMPONENT_STATE_UPDATED","NOW_AVOID_RENDER_PROP","ARIA_LIVE_REGION_UPDATE_REQUESTED","ARIA_LIVE_POLITE","ARIA_LIVE_ASSERTIVE","ARIA_LIVE_RELEVANT","ARIA_LIVE_TRIGGER_ADDITIONS","ARIA_LIVE_TRIGGER_REMOVALS","ARIA_LIVE_TRIGGER_TEXT","ARIA_LIVE_TRIGGER_ALL","SPAN_FOR_RENDER","SPAN_FOR_ACTION_HANDLED","SPAN_FOR_UPDATE_PROPERTIES","SPAN_FOR_SET_PROPERTY","SPAN_FOR_NOW_RESOLVE_PROPS_SET","SPAN_FOR_UPDATE_STATE","SPAN_FOR_UPDATE_CONTEXT","SPAN_FOR_COMPONENT_CONNECTED","SPAN_FOR_COMPONENT_DISCONNECTED","SPAN_FOR_COMPONENT_BOOTSTRAPPED","SPAN_FOR_COMPONENT_RENDERED","SPAN_FOR_COMPONENT_DOM_READY","SPAN_FOR_COMPONENT_PROPERTY_CHANGED","SPAN_FOR_COMPONENT_RENDER_REQUESTED","SPAN_FOR_COMPONENT_DOM_TREE_READY","SPAN_FOR_COMPONENT_TREE_RENDERED","SPAN_FOR_COMPONENT_ERROR_THROWN","SPAN_LIFECYCLE_EVENTS","SPAN_ATTR_COMPONENT_CONNECTED","SPAN_ATTR_COMPONENT_SUSPENDED","SPAN_ATTR_COMPONENT_DETACHED","SPAN_ATTR_COMPONENT_QUICK_EQUAL","SPAN_ATTR_COMPONENT_EQUAL","SPAN_ATTR_COMPONENT_READONLY_COMPUTED","SPAN_ATTR_COMPONENT_INTERSECTED","SPAN_ATTR_COMPONENT_RENDER_SKIPPED","SPAN_ATTR_COMPONENT_EVENT_DEFAULT_PREVENTED","SPAN_ATTR_COMPONENT_EVENT_PROPAGATION_STOPPED","SPAN_ATTR_DISPATCH_ACTION_INTERNAL_TYPE","SPAN_ATTR_DISPATCH_PAYLOAD","SPAN_ATTR_DISPATCH_SHOULD_DISPATCH","SPAN_ATTR_DISPATCH_UNDEFINED","SPAN_ATTR_DISPATCH_FLAG_HOST_DISPATCH","SPAN_ATTR_UPDATE_PROPERTIES_SHOULD_UPDATE","SPAN_ATTR_UPDATE_PROPERTIES_PROPNAME","SPAN_ATTR_UPDATE_PROPERTIES_PROPVALUE","SPAN_ATTR_UPDATE_PROPERTIES_PROP","SPAN_ATTR_SET_PROPERTY_SKIPED","SPAN_ATTR_UPDATE_CONTEXT_SHOULD_BATCH","SPAN_ATTR_RENDER_CAUSE","SPAN_ATTR_UPDATE_PAYLOAD","SPAN_ATTR_DID_UPDATE","SPAN_ATTR_SHOULD_RENDER","SPAN_ATTR_TASK_SCHEDULED","SPAN_ATTR_TASK_STARTED","SPAN_ATTR_TASK_DEDUPED","SPAN_ATTR_TASK_COMPLETED","SPAN_ATTR_CONDITIONAL","SPAN_ATTR_SKIP_FOR_DETACHED_COMPONENT","SPAN_ATTR_STORE_UPDATE","SPAN_ATTR_KIND","SPAN_ATTR_LEVEL","SPAN_LEVEL_FINER","SPAN_LEVEL_FINEST","PACKAGE_JSON_VERSION","pkgJsonContent","componentRegistry","constructedByTagName","definedTagNames","deferredByTagName","defineRegistry","countByTagName","totalConstructed","unusedTagNames","total","tagNames","constructed","statName","Queue","doNotDedup","whenQueueIsEmptyForElementCb","_els","_tasks","_dedupe","_doNotDedup","_whenQueueIsEmptyForElementCb","task","sizeForElement","existingCount","_task$meta","taskType","queueLength","enableSchedulerStats","COMPONENT_RENDER","STATE_SET","ACTION_HANDLER","LEGACY_LIFECYCLE_FN","IMMEDIATE","DEFER_IDLE","REFLECT_PROPERTIES","CLEANUP","PROPERTY_SET","DEFER_HELPER_EXECUTION","WHEN_COMPONENT_IS_IDLE","WHEN_ALL_COMPONENTS_IDLE","constants","P0","P0_5","P1","P2","P3","p0_5Queue","p1Queue","whenQueueIsEmptyForElement","p2Queue","p3Queue","queueEmptyForElCallbacks","idleTimeout","highPriorityPending","mediumPriorityPending","lowPriorityPending","getSchedulerStats","priority1","priority2","localeCompare","_ref3","maxQueueDepth","totalQueued","totalQueueTime","maxQueueTime","totalExecutions","totalExecutionTime","maxExecutionTime","inQueue","averageQueueTime","averageExecutionTime","resetSchedulerStats","__getSchedulerStats","__resetSchedulerStats","getDefaultStats","trackTaskScheduled","scheduled","trackTaskStart","started","queueTime","trackTaskCompleted","executionTime","schedule","schedulerTypes","runDeferredTask","runHighPriorityTasks","runMediumPriorityTasks","runLowPriorityTasks","isRendering","requestAnimationFrameTimeout","requestAnimationFrameTimeoutId","flushIdleQueues","deadline","isQueueFlushEnabled","queueFlushEnabled","flushing","flushQueues","countHighPriorityTasks","countAllHighPriorityTasks","countAllMediumPriorityTasks","countMediumPriorityTasks","addQueueEmptyForElCb","check","checkAll","whenAllComponentsIdle","busy","didPause","withTimeOutInfo","timedOut","whenComponentIsIdle","validateSchemas","validateFn","validateDeprecation","getComponentName","pathPrefix","validator","errorPrefix","buildActionPayloadValidator","payloadSchema","buildPropertiesValidator","propertyDefinitions","PRESENTATIONAL","COMPONENT_ID","CONNECTED","PROPERTY_DEFS","STATE","PROPS","ACTIONS","ACTION_HANDLERS","CONDITIONAL_DISPATCH","ROOT_NODE","ATTACHED_ROOT_NODE","UNHOIST","DEFERRED","RENDER","LAST_HANDLE_STATE_CHANGE","RENDER_SCHEDULED","LAST_STATE_RENDERED","LAST_STATE_CHANGE","EVENT_HANDLERS","LIFE_CYCLE_COEFFECTS","BOOTSTRAP_LIFECYCLE_RAN","CONFIG","REMOVE_ACTION_HANDLERS","RENDERED_ONCE","TREE_RENDERED_ONCE","RETARGETED_ACTION_TYPES","TARGETED_ACTION_TYPES","STYLE_PROXY","GET_RESOLVED_PROPERTY","HOIST_CHANGED","HOIST_PARENT_CHANGED","SET_PROPERTY","HOIST_COMPOSED_PATH","BOOTSTRAPPED_HANDLED","CONNECTED_HANDLED","PREVIOUS_RENDER_STATE","PREVIOUS_RENDER_PROPERTIES","PREVIOUS_TREE_RENDER_STATE","PREVIOUS_TREE_RENDER_PROPERTIES","CHILDREN_TO_BE_RENDERED","CHECK_IF_TREE_RENDERED","CHILD_IS_RENDERING","CHILD_HAS_RENDERED","NOTIFY_PARENT_THAT_CHILD_IS_RENDERING","NOTIFY_PARENT_THAT_CHILD_TREE_HAS_RENDERED","NEEDS_TO_KNOW_ABOUT_TREE_RENDERS","ANCESTOR_ROOT_NODE","ANCESTOR_PATH","UPDATE_AFFECTED_COMPONENTS","RUNTIME_ACTION_HANDLERS","USING_INTERSECTION_OBSERVER","INTERSECTED","INTERSECTION_TRIGGERED","REMOVE_INTERSECTED_STYLES","DETACHED_SHADOW_ROOT_CHILDREN_FRAGMENT","DETACHED_COMPONENT_PROPERTY_MAP","LOW_PRIORITY_PENDING","INTERACTIVE_TIMESTAMP","CONNECTED_TIMESTAMP","CHILDREN_TO_BE_INTERACTIVE","SELECTABLE_PROPERTIES","PROPERTIES_WITH_SELECTOR","PROPERTIES_WITH_NESTED_SELECTOR","TREE_RENDERED_ONCE_TIMESTAMP","RENDERED_ONCE_TIMESTAMP","CONNECTED_DEFERRED_TIMESTAMP","CONTEXT","CONTEXT_VIEW_KEY","CONTEXT_RESOLVED_VALUE","REMOVE_UPDATE_CUSTOM_ELEMENT_OBSERVER","PREVIOUS_INTERACTION_ID","PREVIOUS_TRACE_ID","HAS_NOW_RESOLVED_PROPS","getHostVariables","sandboxInterceptor","effectInterceptor","coeffects","hostVariables","forEachInterceptor","createInterceptors","actionHandlers","actionHandlerInterceptors","handlerCount","behaviorOptions","eventHandler","descendantOnly","combinedInterceptors","handlerInterceptors","TAKE_LATEST","normalizeModifiers","typeInterceptor","mapInterceptors","interceptorCount","normalizeHandlers","normalizeActionHandler","actionHandler","stopPropagation","private","isPrivate","appendToPayload","isAlphaNumeric","assertValidPropertyNames","shouldReturnEmptyString","fetchSafeStringValue","resolveValue","propertyDefinition","valueCount","hasSchema","readOnly","resolveProperties","instanceProperties","resolvedProperties","ARIA_PREFIX","ATTR_PREFIX","DATA_PREFIX","HOOK_PREFIX","EVENT_PREFIX","MODULES","ACRONYM_PROPS","DEPRECATED_HTML_ACRONYM_PROPS","DEPRECATED_HTML_ACRONYM_PROPS_MAP","innerHTML","outerHTML","DANGEROUS_HTML_ACRONYM_PROPS_MAP","dangerouslySetInnerHTML","dangerouslySetOuterHTML","APPEND_TO_PAYLOAD","APPEND_TO_META","BASE_ATTRIBUTES","CUSTOM_ELEMENT_ATTRIBUTES","NON_CUSTOM_ELEMENT_ATTRIBUTES","VNODE","shouldMemoizePropParts","memoizedCamelCase","memoizedIsCustomElement","convertToLoadedEvent","getPropKeyParts","memoizedGetPropKeyParts","formatProps","hook","class","isCustomTag","keyName","dataset","helpers","__html","recurse","formatChildren","reducer","primitive","namespaceURI","qualifiedName","createTextNode","createComment","newNode","referenceNode","nextSibling","setTextContent","getTextContent","isText","isComment","htmlDomApi","isUndef","isDef","emptyNode","sameVnode","vnode1","vnode2","isVnode","createKeyToOldIdx","beginIdx","endIdx","hooks","domApi","cbs","emptyNodeAt","createRmCb","childElm","createElm","insertedVnodeQueue","hashIdx","dotIdx","dot","insert","addVnodes","parentElm","vnodes","startIdx","invokeDestroyHook","removeVnodes","rm","removeHook","patchVnode","prepatch","oldCh","newCh","oldKeyToIdx","idxInOld","elmToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","updateChildren","postpatch","updateClass","oldClass","klass","classList","classModule","nextFrame","reflowForced","setNextFrame","updateStyle","oldStyle","oldHasDel","removeProperty","delayed","name2","setProperty","applyDestroyStyle","applyRemoveStyle","offsetLeft","applied","getComputedStyle","forceReflow","styleModule","invokeHandler","handleEvent","createListener","updateEventListeners","oldOn","oldListener","oldElm","eventListenersModule","CAPS_REGEX","updateDataset","oldDataset","datasetModule","getRef","updateProps","oldProps","xlinkNS","xmlNS","colonChar","xChar","ATTRIBUTES_TO_PERSIST","updateAttrs","oldAttrs","patch","validateProps","nonAppendProps","TAG_PLACEHOLDER","hydrate","_vnode$data","_vnode$data$hook","_vnode$data2","_vnode$data2$hook","_vnode$data3","_vnode$data3$hook","server","toVNode","cn","elmAttrs","elmChildren","nodeValue","toVNodeFromServerSideRenderedNode","childVNode","createElementFromNode","fixNamespace","createElementFromServerSideRenderedNode","DocumentFragment","childrenCount","signedVnode","xmlns","helperNoop","updateState","updateProperties","onStateChange","isShadowRoot","ShadowRoot","_getHostVariables","serverSideRendered","_element$host","resultVnode","boundaryError","onDisconnect","nextEl","addNS","childData","signedH","signingH","unsignedH","insertChildern","slotted","slot","createSlot","createElementFromString","html","firstChild","dangerouslyCreateElementFromString","Fragment","DEFAULT_RENDERER","transformState","resolveRenderer","transformProps","createAddMapping","mappings","providerDetail","consumerDetail","providerId","providerPropName","providerPropPath","consumerId","consumerPropName","providerKey","consumerKey","elementId","selectorKey","subKey","isSelectableProperty","propertyDefs","selectable","sourceAffected","componentsAffected","getAffectedSelectorChain","componentMap","selectorMap","createAddResolvedPropertyMapping","resolvedMappings","resolvedValue","createAddSelectablePropertyMapping","componentPropName","selectedMappings","existingResolvedProviderMapping","deleteImpactedMapping","impactedMappings","impactedMappingKey","existingResolvedEntry","createAddResolvedPropertyMappingWithKey","resolveSelectorChain","propertyResolver","getSelectorParts","resolveSelectedProperty","propertyDef","isSelector","resolveProviderSelectedProperty","propertyValue","selectablePropertyResolver","getResolvedValue","shouldAddToResolvedPropertyMapping","isComputedProperty","resolveSelectedProperties","propertiesDef","propWithSelector","resolved","resolveMappingHasKey","getResolvedProperty","propDef","addResolvedPropertyMappingWithKey","getParts","slashIndex","delimeter","pathSplitIndex","getDelimeterDetail","selector","selectorLength","hasSeperator","updatePropertiesWithSelector","selectedProperties","dotIndex","applyUpdatesForSelectableProps","propertiesWithSelector","propertyDetails","normalizedConfigForProp","updateSelectedPropertyMappings","updateResolvedSelectedPropertyMappings","createUnstableResolvePropertySelectorValue","propertySelector","unstableAddRenderOnPropertySelectorValueChange","unstableRemoveRenderOnPropertySelectorValueChange","removeMappings","resolvedPropertyMappings","addMapping","createRemoveMappings","getAffected","createGetAffected","getComponentAffected","createGetComponentAffected","addResolvedPropertyMapping","removeResolvedMapping","createRemoveResolvedPropertyMapping","addSelectableResolvedPropertyMapping","resolvedMappingHasKey","getResolvedPropertyValue","getInitialPropertyValue","toAttributeName","unstablePreserveEmptyStr","hasAttribute","attrToInitPropTransformer","attributeValue","preserve","filterPropertyDefinitions","filteredPropertyDefs","doc","styleFragments","removeStyleFragmentFromCache","createStyleFragment","stylesheetsContent","cachedStyleFragment","styleFragment","externalStylesFragment","querySelector","mergeStylesheets","externalStylesEl","mergedStyleFragment","isReflecting","reflectCount","reflectQueue","clearReflection","attrName","isReadOnlyProperty","shouldSetMemoized","toPropertyName","computedProperty","shouldSetAttribute","setReadOnly","beforeNextTick","performanceApiExists","measure","uiPerfEnabled","__ENABLE_NOW_UI_PERFORMANCE__","startMarker","triggerPropertyChangeAction","propertyDetail","affectedPropDetail","skipRenderPropsList","isPropToSkipRender","_tagName","shouldRenderWhenSet","triggerComponentUpdates","affected","label","renderList","_el$VARIABLES","_el$VARIABLES$PROPERT","shouldRemove","quickEquals","isPrimitiveOrNull","supportedType","quickEqualsType","quickEqualsEmptyValue","newValueLength","oldValueLength","newKeyLength","oldKeyLength","isPrimitive","isUndefinedOrNull","currentKeys","current1","current2","old1","old2","DOMRect","updateResolvedValue","alreadyResolvedValue","updatedValue","previousProviderId","previousProviderPropName","previousProviderPath","_consumerPropDef$cons","consumerComponent","defaultLifecycleFn","defaultAsyncLifecycleFn","createLifecycleFunctions","rendererOnConnect","rendererOnDisconnect","shouldRunAsync","onConnect","camelCaseProperties","newKey","unescapeReservedCharacters","isHoisted","getHoistTarget","rootNode","assignedSlot","parentVariables","normalizeActionMeta","normalizedMeta","deferHelperExecution","executionTiming","ConsoleLogExporter","_log$context","_log$context2","logs","extractInfo","fastDeepCopy","LogQueue","cleanUpTimeInterval","collectTimeInterval","_logLevel","_cleanUpTimeInterval","_collectTimeInterval","startLogInterval","startCleanupInterval","_collectIntervalId","export","notifySubscribers","_cleanupIntervalId","_queueLocked","_backedLogs","info","subscribers","logsToEmit","unlock","loggerProvider","_emit","loggerName","LoggerProvider","_logQueue","_isLoggingEnabled","loggers","stopLogInterval","stopCleanupInterval","NoOpLoggerProvider","LoggerSubscriber","globalLoggerProvider","getLoggerProvider","disableLogging","loggerFunctions","enableLogging","snUiLoggerProvider","LOG_EXPORTER","cleanupTimeInterval","getComponentLogger","getLogger","setLogContext","createComponentLogger","loggerFn","loggerClass","applyMetricsToDispatch","applyMetricsToLogger","applyMetrics","withMetrics","updateContext","filterComputedProperties","computeProperty","compute","resolveComputedProperties","includeSource","computeProperties","isIntersecting","unobserve","VIEWPORT_INTERSECTION_MARGIN","rootMargin","IntersectionObserver","applyIntersectStyles","applyWithTag","styleElement","operateAtPath","operationFn","_set","_assign","_merge","_ref4","_ref5","_ref6","_ref7","_ref8","_start","deleteCount","_deleteCount","addItems","_addItems","_ref9","declarativeOperations","SET","ASSIGN","MERGE","POP","PUSH","SHIFT","UNSHIFT","SPLICE","CONCAT","propertyOptOutPages","stateOptOutPages","shouldOptOutOfDeepCompareForPage","styleSheetsContent","PREFIX","errorText","getItem","styleSheetsRequestCache","resolveStylesheetsContent","stylesheets","stylesheet","isProvider","variables","areProvidersInteractive","providerEl","providerVariables","selectabledProperties","selectabledPropertiesLength","affectedComponents","subscriberEl","markComponentInteractive","childrenToBeInteractive","interactiveTimestamp","parentEl","createOnStateChangeArgs","useCoeffectsLikeObjectInView","stateSansProperties","contextKey","getAncestorNode","updateCustomElementResolvers","updateCustomElementObservers","HMR_ENABLED","addUpdateCustomElementObserver","setUpdateConfigResolver","unstableUpdateCustomElement","unstableRemoveUpdateForTag","resolveParentTraceId","createMetaData","actionMeta","appendToMeta","retargeted","appended","hoistHost","actionId","isPropertyUpdate","validateActionPayload","supportedConfigKeys","modifiedConfig","modifiedConfigKeys","unsupportedConfigKeys","internalActionTypes","isInternalActionType","getInternalActionName","createEventActionDetails","effectType","composedPath","attachTraceContext","wrapDispatch","actionSpan","originalUpdateState","originalUpdateProperties","originalUpdateContext","originalDispatch","parentActionId","isStoreUpdate","hasActionHandlerForType","wasActionDispatchedByDescendant","allowedPropertyUpdates","getComposedPath","hoistComposedPath","addActionHandler","targetEl","targetSelector","emitPropagationStopped","defaultPrevented","preventDefault","shouldStopPropagation","consumerCache","addConsumer","removeConsumer","ownKeys","getConsumers","removeConsumersForContextKey","removeAllConsumers","buildContextValidator","shouldNotResolveContext","createContextProxy","getResolvedProperties","getProperties","createDebounce","runEffectFn","collate","debounceVariables","getDebounceVariables","validMaxWait","shouldCollate","tDelay","tMaxWait","finishDebounce","invokeFn","delayId","saveEventProps","collated","collateData","maxWaitId","accumulate","retrieveEventProps","clearTimers","eventPath","currentTarget","_coeffects$action","_coeffects$action2","effectFn","hostMap","effectMap","actionMappings","createCancelable","takeLatest","cancelled","createThrottle","free","getTargetElement","THROTTLE","runEffect","generator","runner","verb","return","onResolved","effectRunner","targetElement","modifierTypes","sandboxEffect","transactionCtx","dispatchError","onActionHoisted","runEffects","isOrigin","onAction","isImmediate","hoistElm","hoistElmVariables","onActionSpan","propagationStopped","effectCount","normalizedEffect","shouldApplyActionHandler","createActionHandler","removeActionHandler","applyRuntimeActionHandlers","skipForDetachedComponent","lifeCycleFnsToHandlerMap","lifecycle","createOnPropertyChangeHandler","onPropertiesSet","fns","onChange","lifeCycleFnsToHandlers","configs","configsCount","onPropertyChangeEffect","wrappedDispatch","mergeBehaviorActionHandlers","behaviors","mergedActionHandlers","behaviorsCount","behavior","behaviorActionHandlers","behaviorActionHandler","mergeBehaviorInitialState","componentInitialState","componentSetInitialState","behaviorState","initialState","behaviorInitialState","setInitialState","behaviorStateDynamic","behaviorSetInitialState","mergeBehaviorProperties","mergeBehaviorPropertiesInner","mergedProperties","behaviorNames","behaviorProperties","reflect","mergeLifeCycleActionHandlers","lifecycleActionHandlers","componentActionHandlers","normalizeActionHandlers","normalizedActionHandlers","normalizeBehaviors","normalizeBehaviorsInner","normalizedBehaviors","resolvedBehavior","eventHandlers","getStopPropagation","mergeActions","actionEffect","actionArgs","actionInterceptors","handlersCount","mergeEventActionHandlers","eventHandlerCount","eventsCount","normalizedActionHandler","applyPayloadValidators","mergeBehaviorActions","mergedActions","behaviorActions","getActionsToDispatch","shouldDispatch","intercpetorsByType","normalizeBehaviorEventHandlers","normalizedBehaviorEventHandlers","numberOfBehaviors","numberOfEvents","politeId","assertiveId","validateTriggerTypes","triggers","validTriggers","triggerTypes","validTriggerTypes","hasInvalidTrigger","applyAriaLiveRegionAttributes","live","applyStyles","border","whiteSpace","clipPath","politeTimeout","assertiveTimeout","createAriaLiveRegionEl","getAriaLiveRegionEl","upsertComponentLiveContentNode","ariaLiveRegionEl","textNode","replaceContent","_replaceContent","curNode","ariaLiveRegionCompNode","normalizeConfig","componentEventHandlers","shadowRootOptions","shadowRootMode","ariaLiveRegionActionHandler","mergedInitialStates","validateContext","contextKeys","isValuePropertySelector","refUnsubs","parseRefProperty","_unsubs","_unsubs$get","isReference","unsubs","_unsubs$get2","getUnsubscribe","_refUnsubs$get","getHostUnsubs","schemaType","parseProperty","unstableParse","isValidParseType","validParseTypes","shouldUnstableParse","parseProperties","parsedProperties","shouldApplyRuntimeActionHandlers","addEventGetters","dispatchLegacyEvent","customEventDispatcher","presentational","shouldBubble","cancelable","addActionHandlerForUnknownType","createDispatcher","dispatcher","_hostVariables$ANCEST","isExternalHostDispatch","ancestorPath","ancestorElement","createConditionalDispatch","dispatchWithLifecycleSpan","spanOptions","lifecycleSpan","traceName","createLifecycleSpan","resolveCaptureHandlerMetaData","addActionHandlers","hoisted","resolvedTarget","hoistElem","hoistElemVariables","removeActionHandlers","actionsHandlersCount","NOTHING","DRAFTABLE","DRAFT_STATE","isDraft","isDraftable","shallowCopy","invokeGetters","thing","ImmerScope","drafts","canAutoFreeze","patches","revoke","draft","usePatches","patchListener","inversePatches","descriptors","willFinalize","isReplaced","finalizing","markChangesSweep","markChangesRecursively","createProxy","clonePotentialDraft","proxyProperty","createHiddenProperty","modified","finalized","assigned","revoke$1","revoked","peek","assertUnrevoked","prepareCopy","markChanged","hasArrayChanges","hasObjectChanges","i$1","i$2","baseValue","state$1","willFinalize$1","createProxy$1","revocable","arrayTraps","objectTraps","proxy","get$1","source$1","set$1","peek$1","markChanged$1","deleteProperty","owner","generatePatches","basePath","generateArrayPatches","generateObjectPatches","assign$1","useRemove","replaceCount","path$1","assignedValue","origValue","applyPatches","verifyMinified","configDefaults","useProxies","autoFreeze","onAssign","onDelete","onCopy","Immer","setUseProxies","produce","recipe","defaultBase","this$1","hasError","processResult","createDraft","isManual","finishDraft","setAutoFreeze","modernProxy","legacyProxy","baseDraft","isFrozen","finalizeTree","rootPath","needPatches","finalizeProperty","isDraftProp","immer","applyPatches$1","getStatePropsContext","operations","isEmptyStateUpdate","isDeclarativeUpdate","isValidOperation","isBatch","isUpdater","resolveUpdate","statePropsContext","isValidOptimisationOperation","shouldUpdateState","currentState","declarativeUpdate","updateKeys","nextValueKeys","currentValueKeys","currentValue1","currentValue2","nextValue1","nextValue2","optOutDeepCompare","shouldDeepCompareValues","handleStateUpdate","resolvedUpdate","shouldUpdate","didUpdate","previousState","draftState","handleStateUpdateBatch","resolveUpdateForMark","transformUpdateForMark","createUpdateState","deferred","optionallyImmediate","updateStateSpan","updateHandler","renderContextConsumers","ctxKey","consumers","consumer","handleContextUpdate","previousContext","nextContext","handleContextUpdateBatch","createUpdateContext","updateContextSpan","transformedUpdate","setProperties","old","createUpdateProperties","updatePropSpan","stateProps","propertyPath","propertyLen","pvRef","hostRef","HELPERS_SCHEDULED_CONST","shouldWrap","createDispatch","typeOrFn","dispatchSpan","createHelpers","SeismicHoistElement","_CustomElement2","_CustomElement","hoistTagName","customElements","cast","sourceEl","createTargetAttr","createTarget","sourceVariables","targetVariables","attachShadow","attributeCount","omitAttrs","getParent","overflowRegex","getFirstScrollParent","excludeStaticParent","overflowY","overflowX","shouldPrepend","shouldAppend","getAppendToEl","hoistAppendToSelector","hoistPrependToSelector","selectorOrNode","shouldHoistAttribute","hoistAttribute","unhoistAttribute","moveStyles","deprioritizeStyles","adoptedStyleSheets","sourceElRootNode","sourceElRootNodeChildCount","moveChildren","createDocumentFragment","connectTarget","hoistAppendToEl","prepend","disconnectTarget","hoist","stylesMap","Document","applyWithAdoptedStylesSheets","externalStyles","styleEl","styleSheetsContentCache","previousDisplaValue","sheet","CSSStyleSheet","removeStyles","nodeCount","isAria","shouldRemoveAttribute","getAttributeValue","filterRelectedProperties","filterUnstableParseProperties","computedValue","stateValue","reflectProperty","usingUnstableParse","attributeName","reflectProperties","reflected","shapeRenderData","transformedState","addResolvedSelectedPropertyMappingWithResolvedValue","nowResolvedPropsHandler","processNowResolvedProps","rawResolvedProps","propertyKeys","disconnectNowResolvedPropsCallbacks","connectNowResolvedPropsCallbacks","changeCallback","clearNowResolvedPropsHandler","registerNowResolvedPropsHandler","enableSchedulerQueueCounts","enableDeepPropertyCompare","shouldMarkInteractive","idleCallback","componentRegistryForInteractive","clearRootNode","getResolvedState","createElementClass","normalizedConfig","combinedPropertyDefs","validateProperties","rendererView","lifecycleFns","propertyKeysCount","accessors","SeismicElement","updateMeta","comparison","shadowRoot","upgradeProperties","_superPropGet","setStat","shouldProcess","processedResolvedProps","_variables$PROPERTIES2","setPropSpan","valueOrDefault","deepCompare","shouldSetProperty","internalPropertyUpdateRequested","removeIntersectedStyles","nestedSelectablePropName","_variables$PROPERTIES","getPartsForNestedSelectableProps","allAffectedComponents","resolvedState","connectedCallback","shouldLegacyDefer","generateDeferGetterAndSetter","priorityLevel","setComponentId","HELPERS_IMMEDIATE_CONST","HELPERS_DEFER_CONST","_variables$ANCESTOR_R","_variables$ANCESTOR_R2","getComponentId","propertyUpdates","setInitialProperties","intersectionObserver","removeContextConsumer","renderSpan","highPriorityTaskCount","mediumPriorityTaskCount","pendingNetworkActionCount","shouldSkipRenderDueToEmptyProps","shouldSkipRenderDueToDeferHydration","updatedState","previousRenderState","previousRenderProperties","firstRenderOnConnect","renderCause","shouldSkipRender","COMPONENT_RENDERED_ACTION_TYPE","childVariables","parentHost","nowElementConfig","nowRootNode","buildConfigValidator","TYPE_ARRAY","TYPE_BOOLEAN","TYPE_FN","TYPE_NUMBER","TYPE_OBJECT","TYPE_STRING","deprecated","onBootstrap","dispatches","presentationalBehavior","actionTypesToProps","presentationalValidator","validatePresentationalConfig","validateConfig","checkForPossiblePresentationalComponents","possiblePresentationalComponents","createCustomElementFactory","componentModes","SUSPEND","ACTIVE","DETACH","shadowRootModes","OPEN","CLOSED","nowPriorityLevels","LOW","MEDIUM","unstableResolvePropertySelectorValue","createCustomElement","createPresentationalCustomElement","componentActionTypes","ariaLiveRegionIds","polite","assertive","contextViewKey","getComponentById","getComponentInstances","ariaLiveRegionTriggers","core","UXF_VIEWPORT_RENDER","UXF_VIEWPORT_RENDER_BY_ID","UXF_VIEWPORT_DISMISS","UXF_VIEWPORT_SCRIPTED_CONDITIONS_EVALUATION_REQUESTED","UXF_VIEWPORT_SCRIPTED_CONDITIONS_EVALUATION_COMPLETED","UXF_VIEWPORT_CALCULATE_ROUTES","UXF_VIEWPORT_ROUTE_INITIALIZATION_COMPLETED","UXF_VIEWPORT_ROUTE_SCRIPTED_CONDITIONS_EVALUATION_COMPLETED","UXF_VIEWPORT_ROUTE_SCRIPTED_CONDITIONS_EVALUATION_REQUESTED","VIEWPORT_ROUTE_REQUESTED","SCREEN_INTERACTION_ID_UPDATE_REQUESTED","NOW_UX_INTERACTION","PAGE_LEVEL_SHORTCUT_EVENT_NAME_PREFIX","MACROPONENT_CATEGORY","MODELESS_DIALOG","COMPONENT","MODAL","UI_CONTROLLER","MODELESS_DIALOG_BUNDLE","PAGE","POPOVER","PRIMITIVE","DATA_BROKER_PROXY","VIEWPORT","SUB_PAGE","APP_SHELL_UI","CONTROLLER","BUNDLE","SCRIPT_EXEC_REQUESTED","MACROPONENT_STATE_UPDATED","WRAPPED_EVENT_REDISPATCH","UPDATE_CONTEXT_REQUESTED_BY_CONTROLLER_PROP_RESOLVED","UPDATE_CONTEXT_REQUESTED_BY_CONTROLLER_PROP_CHANGE","SAVE_CONTROLLER_NODE_TO_TRANSLATOR","UXF_INTERNAL_SCREEN_MACROPONENT_IDLE","UXF_INTERNAL_DEPENDENCY_OP_REQUESTED","UXF_INTERNAL_DEPENDENCY_OP_REQUEST_RELAYED","DEPENDENCY_RELAY_EVENTS_ALLOWED_FROM_SCRIPT","MACROPONENT_READY","MACROPONENT_PROPERTY_CHANGED","MACROPONENT_VIEWPORT_LOAD_REQUESTED","MACROPONENT_VIEWPORT_LOAD_COMPLETED","MACROPONENT_STATE_UPDATE_REQUESTED","MACROPONENT_VIEWPORT_ROUTE_INITIALIZATION_COMPLETED","HTTP_ERROR_OCCURRED","MACROPONENT_PAGE_ERROR_OCCURRED","TRACK_USAGE_REQUESTED","MACROPONENT_POPOVER_OPEN_REQUESTED","MACROPONENT_POPOVER_ERROR_OCCURRED","MACROPONENT_POPOVER_ERROR_OCCURRED_DEPRECATED","OPEN_MODELESS_DIALOG","CLOSE_MODELESS_DIALOG","MACROPONENT_FOCUSED","MACROPONENT_FOCUS_ELEMENT_REQUESTED","MACROPONENT_FOCUS_PARENT_REQUESTED","UXF_TABSET_NON_VIEWPORT_CONTAINER_RENDER_REQUESTED","UXF_MACROPONENT_OUTPUT_PROPERTY_UPDATED","MACROPONENT_DOMAIN_UPDATE_REQUESTED","SEISMIC_ARIA_LIVE_REGION_UPDATE_REQUESTED","publicSeismicActions","viewportActions","HEADLESS_VIEWPORT_COMPONENT_TAG","HEADLESS_VIEWPORT_COMPONENT_PROP_VALUES","headless","internalActions","componentViewportInternalActions","MACROPONENT_FEATURES","DATA_BROKERS","VIEWPORTS","EVENT_MAPPING","EXT_CONTROLLER_DEPENDENCY_PROPS","TABS_TYPE","TEMPLATE","SLOT_TYPES","TABS","NAV_ITEM_SELECTED","MODAL_SELECTED","MODAL_SELECTED_RELAY","DA_WRAPPED_CLICKED","MACROPONENT_PERSISTED_STATE_ON_EXTERNAL_CHANGE","publicDispatchedActionNames","publicActionHandlerNames","IS_INTERNAL_ACTION","IS_MACROPONENT_READY","IS_SOURCED_FROM_SET_STATE","IS_SOURCED_FROM_PERSISTED_STATE_CHANGE","CONTAINING_MACROPONENT_SYS_ID","COMPOSITION_ELEMENT_ID","REPEATER_ITEM","SIGNAL_VIEWPORT_LOAD_COMPLETION","SIGNAL_VIEWPORT_ROUTE_INITIALIZATION_COMPLETION","SIGNAL_MACROPONENT_READY_STATE_UPDATED","SIGNAL_MACROPONENT_READY_DISPATCHED","SYMBOL_EVENT_MAPPING_SOURCE_IS_SCREEN_ACTION_TRANSFORMER","SYMBOL_EVENT_MAPPING_SOURCE_IS_FROM_SUB_PAGE","SYMBOL_ORIGINATING_ELEMENT_ID_FOR_CONTROLLER_OP","UXF_VIEWPORT_SCREEN_TAG","UXF_INTERNAL_EVENT_META","UXF_DIRTY_STATE_MANAGEMENT_SOURCE_ACTION_PATH","UXF_DIRTY_STATE_MANAGEMENT_EXPERIENCE_DATA","UXF_DIRTY_STATE_MANAGEMENT_DISPATCHED_ACTION_TRAILS","UXF_DIRTY_STATE_MANAGER_LAST_CLIENT_SCRIPT_SOURCE_COMPONENT_ID","FORM_CONTROLLER_MCP_SYS_ID","LIST_CONTROLLER_MCP_SYS_ID","UXF_THEME_UPDATED","LAYOUT_VERSION_3_0_0","LAYOUT_VERSION_3_1_0","NOW_UXF_MODAL_VIEWPORT","NOW_UXF_TABSET","NOW_CONTEXTUAL_SIDEBAR","NOW_UXF_VIEWPORT_BLACKLIST","PRESET","HANDLING_SCOPE","UXF_INTERNAL_HANDLING_SCOPE_SAFETY","UXF_INTERNAL_RELAY_BY_SCREEN_ACTION_TRANSFORMER","UXF_INTERNAL_ACTION_ORIGINATE","GLIDE_FORM_DATABROKER","UXF_EXTENSION_POINT_SINGLE_CONTROLLER_DEPENDENCY_KEY","MACROPONENT_VALUE_UPDATED","DEFAULT_LANG_CODE","USER_PREF_LANG_HEADER","MACROPONENT_TIME_TO_IDLE_MEASUREMENT_REQUESTED","PERSIST_STATE_CONSTANTS","ACTION_PERSIST_STATE","SINK_URL","PERSIST_STATE_KEY","ATTR_PARENT_TAG","ATTR_LAYOUT_TAG","NOW_UXF_PAGE","SCREEN_ACTION_TRANSFORMER","elementTypes","REPEATER","CONDITIONAL","CONTAINER_ELEMENT","CHILD_ELEMENT","PRIORITY","LAZY","renderStrategy","INJECTION_POINT_TARGET","INJECTION_POINT_SOURCE","UTILITY_PANEL","HOISTED_CONTENT_SOURCE_RENDERED","IS_PAGE_LEVEL_SHORTCUT_ACTION","SET_EMBEDDABLE_INSTANCE_PROPS","CAN_EXTEND_PAGE_COLLECTION","LIST_CONTROLLER_DA_WRAPPED_CLICKED","WHITE_LISTED_EMIT_ACTIONS","NOW_MODE","nowModes","deviceTypes","MOBILE","DESKTOP","TABLET","DB_ENGINE_EXEC_REST_URL","globals","systemColors","datavisColors","categories","INFO_DENSITY","KEY","COMPACT","PROP","stashedProcessedValues","themeData","cachedValues","DEFAULT_THEMES","CORAL","POLARIS","ALLOWED_THEMES","getCSSVariableNamesFromBase","extractKeys","keySet","setGlobalThemeData","theme","allThemeData","tokensToRemove","systemTokens","parsedFromStyleSheets","varNames","getCSSVariablesFromStyleSheet","_overrides$name","getPropertyValue","checkNextPath","hookName","nextPath","hasBeenResolved","isValidPixelString","isValidPercentString","logFailure","resolveDerivedHooks","derivedPath","setVariable","fbValue","resolveRemainingHooks","createRemSizeObj","createPxSizeObj","rootFontSize","isValidRemString","isPxSize","isRemSize","processValue","isValidRgbString","createColorObj","resolveCSSVariable","isCSSVariable","processItems","getValues","safeJsonParse","jsonString","fallback","parsedValue","headacheVals","troublesomeDefs","styleSheets","cssRules","selectorText","__donotuse_temporary_isInUIBStage","uniqueEventName","isUIBStage","evt","rs","gs","hsl","hslValues","rgb","rgbValues","_window$ux_globals$th","_themeOptions$themeId","_themeOptions$userPre","themeOptions","themeId","variantId","userPreferenceVariant","themeKey","memoryCached","localCached","parsed","requestedItems","baseHooks","resolvedHooks","resolveHooks","cacheObject","_hooks$item","_window4","__donotuse_temporary_uib_stage_theme","cssVariableName","circular","listen","BEHAVIOR_NAME","clientUrl","getAMBClient","amb","createSubscriptionId","createRegistryId","containerId","subscriptionId","replaceChannelParameters","channelId","channelParams","encodeURIComponentForChannelId","garbageCollectors","createGarbageCollectorMap","cleanup","garbageCollectorMap","mapValue","__map","garbageCollector","ambChannelRegistry","registryId","channelListener","createSubscriptionCallback","successActionType","actionMetaData","createSubscriptionOptionsCallback","AMB_CHANNEL_SUBSCRIBE_STARTED","AMB_CHANNEL_SUBSCRIBE_SUCCEEDED","AMB_CHANNEL_SUBSCRIBE_FAILED","AMB_CHANNEL_UNSUBSCRIBE_SUCCEEDED","AMB_MESSAGE_RECEIVED","ambSubscriptionEffect","subscribeStartedActionType","subscribeSucceededActionType","subscribeFailedActionType","unsubscribeSucceededActionType","messageReceivedActionType","subscriptionOptions","resolvedChannel","metaData","shouldSubscribe","isSubscribed","listenerFn","createAmbSubscriptionEffect","AMB_MESSAGE_PUBLISHED","ambPublishEffect","messagePublishedActionType","createAmbPublishEffect","eventSubscriptionRegistry","eventIds","ambEventEffect","eventMap","createAmbEventEffect","popoverSelfServicePrefix","UNREAD_FETCH_REQUESTED","UNREAD_FETCH_SUCCEEDED","DIALOG_OPENED","DIALOG_CLOSED","CLEAR_NOTIFICATIONS","FETCH_FEATURE_STATUS","FETCH_FEATURE_STATUS_SUCCEEDED","UNREAD_FETCH_FAILED","FETCH_FEATURE_STATUS_FAILED","NEW_MESSAGE_RECEIVED","UPDATE_LAST_MESSAGE","FETCH_CONTEXT_REQUESTED","FETCH_CONTEXT_SUCCEEDED","FETCH_CONTEXT_FAILED","GET_ACTION_REQUESTED","GET_ACTION_SUCCEEDED","GET_ACTION_FAILED","PROACTIVE_TRIGGER_CHANGED","PROACTIVE_TRIGGER_NEW_MESSAGE","PROACTIVE_TRIGGER_SUBSCRIBE_START","PROACTIVE_TRIGGER_SUBSCRIBE_SUCCESS","PROACTIVE_TRIGGER_SUBSCRIBE_FAILED","FADEOUT_TIME","LIVE_AGENT_ONLY","ACTIVE_CONVERSATION_STATUS_CODE","TRIGGER_GET_ACTION_DEBOUNCED","START_UNREAD_MESSAGE_LOOP","RESTART_UNREAD_MESSAGE_LOOP","AGENT_CHAT","VIRTUAL_AGENT","PROACTIVE","PREVIEW","PROACTIVE_FADEOUT_TIME","SUCCESSFUL_ACTION_STATUS_CODE","NO_CONTENT_STATUS_CODE","MESSAGE_TYPE_HTML","BRANDING_KEY","DEFAULT_BRANDING","AMB_EVENTS","AMB_EVENT_SUBSCRIPTION_CHANGED","AMB_EVENT_SESSION_LOGGED_OUT","AMB_EVENT_SESSION_INVALIDATED","AMB_EVENT_CONNECTION_INITIALIZED","CONSUMER_ACCOUNT_CONTEXT","PORTAL","actionHandlerFactory","unreadMessageURL","shouldFetchProactiveAndPreviewMsgOnCurrentPage","getAdditionalUnreadQueryParams","httpEffect","createHttpEffect","getClientContext","clientContext","fetchUnreadMessages","fetchFeatureStatus","fetchContextRequested","dataParam","getActionRequested","msgFadeOutTimeArr","timeOutArr","currentMessageIndex","_state$properties","_clientContext$LIVE_A","_clientContext","_clientContext$BRANDI","_clientContext2","_clientContext$langua","_clientContext3","_clientContext4","dialogOpened","opened","isLiveAgentOnly","brandingKey","language","isAMBEnabledOnClient","isInternalUrl","requester_session_language","updateUrlAndState","newURL","contextURL","usage_type","branding_key","is_internal_url","client_context","lastMessageType","MutationObserver","subtree","childList","unreadQueryParams","sysparm_limit","sysparm_return_only","__dispatch","__updateState","_action$payload$unrea","_pickPreviewMessage$o","_pickPreviewMessage","_action$payload7","intervalID","messageCount","totalUnreadMessageCount","lastMessageId","firstUnreadMessage","originalMessage","Audio","audioUrl","lastConversationId","conversationId","latestMessage","notificationOpened","actionSysId","supplementalControls","_action$payload8","_result$isAMBEnabledI","_result$isAMBEnabledE","shouldFetchMsg","_state$brandingKey","isAMBEnabledInternal","isAMBEnabledExternal","_ref10","messagePreviewEnabled","proactiveChatEnabled","_ref11","_action$payload9","_ref12","_action$payload10","_action$payload11","_timerDelays","_action$payload12","_timerDelays3","timerDelays","time_delays","request_id","currentChannelId","_action$payload","channel_id","_action$payload2","splitId","getProactiveChannelId","shouldSubscribeToAmb","proactiveTriggersChannelId","proactiveTriggersRequestId","function","currentTimeDelaysLength","messageAction","_timerDelays2","timeDelaysLength","dispatchNewMessage","_ref13","_ref14","_action$payload13","time_delay","_ref15","_action$payload14","resetProactiveTriggersState","hasConversationStarted","_ref16","_ref17","unreadFetchParams","_ref18","_ref19","_ref20","fadeoutTime","_ref21","_action$payload$data","_action$payload15","ambEffect","_orginalArgs$","orginalArgs","_ref22","_ref23","proactiveTriggerSubscriptionHandler","_orginalArgs$2","_action$payload3","_action$payload4","_action$payload6","_action$payload5","dispatchAmbProactiveTrigger","_ref24","_action$payload16","_messageAction$topics","messageType","controls","tagline","topics","sortedTimerDelays","_ref25","_clientContext$langua2","alreadyPresentTimers","newTimer","newOffsetValue","_action$payload17","popoverPrefix","FORCE_SN_CHAT_VISIBLE","FORCE_SN_CHAT_INVISIBLE","POPOVER_CONTENT_VISIBLE","POST_MESSAGE","REFRESH_BROWSER","MODELESS_DIALOG_WIDTH_FOR_NAVA","MODELESS_DIALOG_WIDTH","MODELESS_DIALOG_HEIGHT","POPOVER_BUTTON_HEIGHT","LAUNCHER_BUTTON_MARGIN_TOP","buildParamString","kvp","overrideNDSComponentMaxHeight","_host$shadowRoot","nowModelessDialogContainer","maxHeight","iFrameHost","iFrameSrc","contentWindow","frame","newFrameSrc","frameBorder","cssText","viewportWidth","viewportHeight","_action$payload$event","_eventAction$type","currentMessageCount","eventAction","shouldReloadItself","_eventAction$payload","castJSON","castJSONorString","castNumber","castFunctions","objectOrString","extendWithCast","baseConfig","baseTransformProps","updateStateEffect","reducerFn","createUpdateStateEffect","localsSetEffectHandler","locals","extendWithLocals","localsConfig","LOCALS_SET","extendWithDefaultBehaviors","rtlBehavior","makeScopedActionName","actionName","casedValue","toManagedPropName","omitManagedKey","getComponentProperties","extendWithManageableProperties","propNamesToManage","manageable","managedActions","constantCase","managedPropName","isPropertySelector","isManaged","isActionForCurrentHost","managedProperties","getOnRenderFns","onRender","extendWithOnRender","createEnhancedElement","mergedConfig","packageInfo","___NOW_DESIGN_SYSTEM_PACKAGES___","_round","suffixNumber","variant","character","statusOrColor","displayValue","extensionSplit","filterAriaAttributes","filterAriaAttributesOld","maybeArray","isFocusable","Node","ELEMENT_NODE","hasInertAncestor","checked","allEnabledRadiosInSet","isFirstInSet","noneChecked","radio","getNormalizedChildren","assignedNodes","normalizedTabIndex","tabIndex","visibility","sortByTabIndex","tabbables","pivot","mergeSortByTabIndex","hasLowerTabOrder","ati","bti","findTabbableNodes","tabbableNodes","needsSort","parentElement","getActiveElement","activeElement","contentDocument","getShadowRootHost","makeRedispatchEffect","newActionType","fontToMeasureFn","createMeasureFn","measureTextFactory","measureFn","textTransform","UPPERCASE","LOWERCASE","CAPITALIZE","txtTransform","wordSpacing","matchSearchTerm","searchTerm","caseSensitive","Tag","searchWithCase","stringWithCase","highlightLength","highlight","___NDS_LAYER_EVENTS___","propertyConfig","LSValue","getStack","isTopLayer","_stack","layerExists","topLayer","isValidLayer","registryReducer","eventType","domPurifyConfig","FORCE_BODY","CUSTOM_ELEMENT_HANDLING","tagNameCheck","attributeNameCheck","ADD_ATTR","FORBID_ATTR","canScroll","cacheDimensions","dim","getDimensions","clientWidth","clientHeight","scroll","scrollY","scrollX","getBoundingClientRect","scrollLeft","getAxisInfo","axis","topOrLeft","bottomOrRight","widthOrHeight","calculateContentAreaLength","targetDimensions","contentDimensions","containerDimensions","targetPosition","contentPosition","calculateContentAreaOffset","contentAreaDimensions","calcOffset","calculateContentAreaDimensions","targetPositionBlock","targetPositionInline","contentPositionBlock","contentPositionInline","nextContentAreaDimensions","calculateContentAreaStyles","pointerEvents","calculateContentOffset","calculateContentDimensions","nextContentDimensions","getConstrainStyles","constrain","addCSSProperties","contentStyles","isBottomAligned","isEndAligned","calculateContentStyles","restrictToBoundingBox","boundingDimensions","ratio","visibleDimensions","calculateOverlap","viewportDimensions","contentInContainer","contentInViewport","overlapRatios","viewport","visibleContentDimensions","toSizeValue","contentValue","targetValue","constrainValue","getDimensionForConstrainKey","normalizeConstrain","constraint","applyConstrain","normalizedConstrain","newDimensions","makeOffsetBackwardsCompatible","normalizeOffset","backwardCompatibleOffset","addOffsetPaddingToDimensions","normOffset","calculateFit","normConstrain","constrainedContentDimensions","contentArea","sortCandidates","viewportOverlapDifference","getFitInfo","getBestFitInfo","positions","candidates","normalizeOrigin","isStart","toMatchingOrigin","vertical","horizontal","RE_POSITION_LONG","RE_POSITION_SHORT","normalizePosition","targetOrigin","contentOrigin","positionToFitShorthand","resolvePosition","hideTail","resolveOffset","resolveConstrain","resolveFitProperties","ariaLivePoliteness","POLITE","ASSERTIVE","toEmbeddableUrl","isBrowser","getCaretCoordinates","prevCaretPos","isInput","wordWrap","boxSizing","outerHeight","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","targetHeight","coordinates","offsetTop","mouseX","updatedCoords","inlineDiff","updateDiff","caretEl","offsetParent","SN_TRANSLATE","TRANSLATIONS","TRANSLATIONS_PREFIX","TRANSLATIONS_STORE","STATIC_TRANSLATIONS","DEFAULT_TRANSLATIONS","attachToWindow","appendTranslations","getPrefix","__TRANSLATIONS_PREFIX_ENABLED__","prefixName","__TRANSLATIONS_PREFIX__","translations","codeKey","hasTranslation","getFieldType","getMessage","fieldType","icon","comment","removeMessages","_messages","addMessage","_messages2","_messages3","handleErrorMessages","validity","additionalValidation","isValueMissing","manageInvalid","valueMissing","updatedMessages","getTransitionDurationAsNumber","getAnimationTimingAndDuration","durationName","easingName","easing","computedStyle","fit","importIconSet","fun","thisValue","Func","arrayForEach","unapply","arrayLastIndexOf","arrayPop","arraySplice","stringToLowerCase","stringToString","stringMatch","stringReplace","stringIndexOf","stringTrim","objectHasOwnProperty","regExpTest","typeErrorCreate","unconstruct","addToSet","transformCaseFunc","lcElement","cleanArray","newObject","lookupGetter","html$1","svg$1","svgFilters","svgDisallowed","mathMl$1","mathMlDisallowed","mathMl","xml","MUSTACHE_EXPR","ERB_EXPR","TMPLIT_EXPR","DATA_ATTR","ARIA_ATTR","IS_ALLOWED_URI","IS_SCRIPT_OR_DATA","ATTR_WHITESPACE","DOCTYPE_NAME","CUSTOM_ELEMENT","NODE_TYPE","cdataSection","entityReference","entityNode","progressingInstruction","documentType","documentFragment","notation","getGlobal","_createTrustedTypesPolicy","trustedTypes","purifyHostElement","createPolicy","suffix","ATTR_NAME","policyName","createHTML","createScriptURL","_createHooksMap","afterSanitizeAttributes","afterSanitizeElements","afterSanitizeShadowDOM","beforeSanitizeAttributes","beforeSanitizeElements","beforeSanitizeShadowDOM","uponSanitizeAttribute","uponSanitizeElement","uponSanitizeShadowNode","createDOMPurify","DOMPurify","isSupported","originalDocument","currentScript","HTMLTemplateElement","NodeFilter","NamedNodeMap","MozNamedAttrMap","HTMLFormElement","DOMParser","ElementPrototype","getNextSibling","getChildNodes","getParentNode","ownerDocument","trustedTypesPolicy","emptyHTML","createNodeIterator","importNode","createHTMLDocument","EXPRESSIONS","IS_ALLOWED_URI$1","ALLOWED_TAGS","DEFAULT_ALLOWED_TAGS","ALLOWED_ATTR","DEFAULT_ALLOWED_ATTR","allowCustomizedBuiltInElements","FORBID_TAGS","ALLOW_ARIA_ATTR","ALLOW_DATA_ATTR","ALLOW_UNKNOWN_PROTOCOLS","ALLOW_SELF_CLOSE_IN_ATTR","SAFE_FOR_TEMPLATES","SAFE_FOR_XML","WHOLE_DOCUMENT","SET_CONFIG","RETURN_DOM","RETURN_DOM_FRAGMENT","RETURN_TRUSTED_TYPE","SANITIZE_DOM","SANITIZE_NAMED_PROPS","KEEP_CONTENT","IN_PLACE","USE_PROFILES","FORBID_CONTENTS","DEFAULT_FORBID_CONTENTS","DATA_URI_TAGS","DEFAULT_DATA_URI_TAGS","URI_SAFE_ATTRIBUTES","DEFAULT_URI_SAFE_ATTRIBUTES","MATHML_NAMESPACE","SVG_NAMESPACE","HTML_NAMESPACE","NAMESPACE","IS_EMPTY_INPUT","ALLOWED_NAMESPACES","DEFAULT_ALLOWED_NAMESPACES","MATHML_TEXT_INTEGRATION_POINTS","HTML_INTEGRATION_POINTS","COMMON_SVG_AND_HTML_ELEMENTS","PARSER_MEDIA_TYPE","SUPPORTED_PARSER_MEDIA_TYPES","formElement","isRegexOrFunction","testValue","_parseConfig","ADD_URI_SAFE_ATTR","ADD_DATA_URI_TAGS","ALLOWED_URI_REGEXP","ADD_TAGS","tbody","TRUSTED_TYPES_POLICY","ALL_SVG_TAGS","ALL_MATHML_TAGS","_forceRemove","_removeAttribute","getAttributeNode","_initDocument","dirty","leadingWhitespace","dirtyPayload","parseFromString","createDocument","_createNodeIterator","SHOW_ELEMENT","SHOW_COMMENT","SHOW_TEXT","SHOW_PROCESSING_INSTRUCTION","SHOW_CDATA_SECTION","_isClobbered","hasChildNodes","_isNode","_executeHooks","currentNode","_sanitizeElements","allowedTags","firstElementChild","_isBasicCustomElement","childClone","__removalCount","parentTagName","_checkValidNamespace","_isValidAttribute","lcTag","lcName","_sanitizeAttributes","hookEvent","attrValue","keepAttr","allowedAttributes","forceKeepAttr","initValue","getAttributeType","_sanitizeShadowDOM","shadowNode","shadowIterator","nextNode","sanitize","importedNode","returnNode","nodeIterator","shadowroot","shadowrootmode","serializedHTML","doctype","setConfig","clearConfig","isValidAttribute","addHook","entryPoint","hookFunction","removeHooks","removeAllHooks","purify","NOW_ICON_CACHE_NAME","initCache","cacheString","localStorageCache","iconResult","isPathFragment","pixelSize","isLoading","assetLoadQueue","queueAssetLoad","emptyAssetLoadQueue","_assetLoadQueue$key","importIconSetAsESM","VARIANTS","Fill","Outline","ICON_SIZES","indexInSet","lg","convertLogicalDir","isRTL","getIconSet","iconSet","getIconDataFromCamel","baseName","realName","aliases","icons","variantIndex","getIconStringFromCamel","nameVariantSize","nameAndVariant","pixelSizeStr","getIconNode","ariaTranslatableProps","translatable","configAriaSchema","role","ariaTemplate","configAriaLabelSchema","configAriaLabelRoleSchema","configAriaLabelRoleHasPopUpSchema","SUPPORT_RTL_MAP","LOGICAL_NAME_MAP","getIconName","supportRtl","spin","configAria","hasLabel","localizePresence","presence","away","available","offline","backgroundPaths","BASE_FONT_SIZE","windowsHighContrast","matchMedia","iconRems","inlineSize","accessibilityMode","showPattern","iconName","createHttpErrorAction","isValidRecordArgument","getDomainProp","createDomainContextProperty","sysId","domainContext","hasDomainProps","getSeismicHoistTargetFor","seismicHoistElement","isSeismicHoistElement","resolveDomainContext","getUserSysId","windowObj","userSysId","tempUserSysId","NOW","userID","setUserSysId","makeLRUCachePolicy","capacity","lruArray","evict","updateLRU","keysToDelete","lastAccessed","onInit","dateA","cachePolicyState","onHit","onSet","onClear","clearLRU","cacheCapacity","openStore","dbName","storeName","schemaVersion","db","cachePolicy","getStore","transaction","objectStore","store","getRequest","errorCode","onsuccess","getAll","includeMetaData","getAllKeysRequest","numRemaining","putRequest","setMultiple","numRequestsMade","numRequestsComplete","countRequest","clearRequest","deleteRequest","indexedDB","dbRequest","allEntries","onupgradeneeded","createObjectStore","autoIncrement","dropDatabaseImpl","deleteDatabase","onblocked","dropDatabase","cachePromises","makePersistentCache","dbKey","creationPromise","inMemoryCacheHits","persistentCacheHits","includeMetadata","persist","inMemorySize","persistedSize","createSnHttpForRest","containsNonAsciiChars","memoizedContainsNonAsciiChars","filterHeaders","nonAsciiHeader","IGNORED_HEADERS","isCacheEnabled","cacheMaxPersist","persistantCache","getCache","getCacheKey","_window$nowUiFramewor","_window$NOW","_window$NOW$user","cacheable","cancelPromiseSymbol","httpSpan","cacheRequested","shouldCache","isImpersonating","_dataToCache$headers","dataToCache","results","isCached","cachedResult","cachedDate","isCachedResult","refetchPromise","requestPromise","replacePathParameters","pathParams","SPAN_FOR_HTTP","SPAN_ATTR_HTTP_URL","SPAN_ATTR_HTTP_METHOD","SPAN_ATTR_HTTP_HEADERS","SPAN_ATTR_HTTP_PARAMS","SPAN_ATTR_HTTP_DATA","SPAN_ATTR_HTTP_BATCH","SPAN_ATTR_HTTP_CACHEABLE","SPAN_ATTR_HTTP_STATUS","SPAN_ATTR_INTERACTION_ID","SPAN_ATTR_HTTP_ERR","SPAN_TRACE_PARENT","SPAN_DOCUMENT_TRACE_PARENT","HTTP_REQUEST_STARTED","HTTP_REQUEST_PROGRESS_UPDATED","HTTP_REQUEST_SUCCEEDED","HTTP_REQUEST_FAILED","HTTP_CACHE_UPDATED","HTTP_EFFECT_SESSION_NOTIFICATIONS_RECEIVED","HEADER_X_WANT_AUTH_SESSION_NOTIFICATION_MESSAGES","cacheDelay","createMultipartConfig","partReceivedActionType","partRecvd","headerList","queryParams","startActionType","progressActionType","cacheUpdateActionType","streaming","_window$nowUiFramewor2","getUxrInteractionIdByHost","progressEvent","successData","refetchResult","session","httpError","REDUCE_MOTION_KEY","REDUCE_MOTION_MATCH_MEDIA","USER_PREFS","USER_PREF_CONTEXTS_MAP","setUserPrefs","userPrefs","updatedContextObj","updateUserPref","updatedUserPref","getUserPrefContext","userPrefName","SYS_PROPS","SYS_PROPS_CONTEXTS_MAP","setSysProps","sysProps","updatedContextObject","getSysPropContext","sysPropsName","sysPropsContext","a11yPreferences","GLIDE_POLARIS_ACCESSIBILITY_PRESENCE_ICON","GLIDE_POLARIS_ACCESSIBILITY_TRUNCATION_TAB_STOP","GLIDE_UI_ACCESSIBILITY","GLIDE_UI_REPORT_ACCESSIBILITY_SCREEN_READER_TABLE","GLIDE_POLARIS_ANIMATION_DISABLED","GLIDE_UI_KEYBOARD_SHORTCUTS_ENABLED","GLIDE_UI_ACCESSIBILITY_ACCESSIBLE_DATEFORMAT","GLIDE_UI_REPORT_ACCESSIBILITY_PATTERSN","GLIDE_UI_ACCESSIBILITY_SHOW_TRUNCATED_TEXT","GLIDE_UI_ACCESSIBILITY_SHOW_HIDDEN_CONTROLS","GLIDE_UI_ACCESSIBILITY_ACCESSIBLE_TOOLTIPS","GLIDE_UI_ACCESSIBILITY_FOCUS_FIRST_FIELD","GLIDE_UI_ACCESSIBILITY_SLUSHBUCKET_RECORD_PREVIEW_TOOLTIPS","renderSkipBehavior","createBlob","BASE_CHARS","BLOB_TYPE_PREFIX","BLOB_TYPE_PREFIX_REGEX","SERIALIZED_MARKER","SERIALIZED_MARKER_LENGTH","TYPE_ARRAYBUFFER","TYPE_BLOB","TYPE_INT8ARRAY","TYPE_UINT8ARRAY","TYPE_UINT8CLAMPEDARRAY","TYPE_INT16ARRAY","TYPE_INT32ARRAY","TYPE_UINT16ARRAY","TYPE_UINT32ARRAY","TYPE_FLOAT32ARRAY","TYPE_FLOAT64ARRAY","TYPE_SERIALIZED_MARKER_LENGTH","stringToBuffer","serializedString","bufferLength","encoded1","encoded2","encoded3","encoded4","bufferToString","base64String","valueType","fileReader","FileReader","readAsArrayBuffer","deserialize","blobType","matcher","serializer","normalizeKey","isWebStorageValid","storage","runCallback","STORAGE","LOCALSTORAGE","SESSIONSTORAGE","sessionStorage","CACHE_API","INDEXEDDB","DEFAULT_TTL","ttl","KEY_DELIMITER","NXUI_UNIFIED_CACHE","CACHE_VERSION","STORAGE_KEYPREFIX","VERSION_KEY","getTTL","setTTL","TTL_EXPIRED_ITEM_KEYWORD","isLRUItem","removeItemsByInstance","adapter","instancePrefix","itemKey","createInstanceAccessMap","instanceAccessMap","lastUsedTime","instanceAccessArray","sorted","originalResult","expiry","getKeysWithTTL","evictionPolicy","lru","evictionPolicies","getKeyPrefix","defaultConfig","checkIfWebStorageThrows","localStorageTestKey","_isLocalStorageUsable","_initStorage","dbInfo","_defaultConfig","_dbInfo","_clear","originalValue","iterate","keyPrefixLength","iterationNumber","dropInstance","currentConfig","_clearAllInstances","getCacheVersion","setCacheVersion","_adapter","_support","READ_ONLY","READ_WRITE","initStorage","_connectToDB","database","openRequest","indexedDBError","getObjectStore","indexedDBCache","processError","indexedDBRequestError","retryable","indexedDBErrorName","indexedDBErrorMessage","makeRequest","indexedDBRequest","iteratorCallback","cursorRequest","openCursor","cursor","continue","_clearDB","databases","clearPromises","IndexedDBCache","jest","testing","makeDBCall","unifiedCache","callFunction","sessionStorageTestKey","_isSessionStorageUsable","_cacheStorage","_runOnReady","isDeleted","cacheStorage","_isCacheAPISupported","cacheAPI","inMemoryCache","InMemoryCache","makeInMemoryCall","inMemory","cacheStatsProxyHandler","cacheInstance","originalMethod","targetMethod","cacheInstanceProxy","_stats","stale","miss","buildTime","sameValue","searchElement","runTwoCallbacks","getServerCacheVersion","unifiedCacheVersion","isCacheVersionOld","cacheVersion","serverCacheVersion","buildGlobalCacheStats","getAggregateCacheStats","getAllCacheStats","checkIfUxGlobalsExists","setGlobalCacheStats","cacheStats","__uc__cacheStats","sumObjectsByKey","obj1","obj2","DefinedAdapters","AdapterSupport","DefaultAdapters","localStorageAdapter","sessionStorageAdapter","indexedDBAdapter","cacheAPIAdapter","IN_MEMORY","inMemoryAdapter","dropAllInstancesPromises","clearStorageInstances","cacheVersionCheck","LocalStorage","SessionStorage","DefaultAdapterOrder","DefaultConfig","DefaultStats","EvictionPolicies","OptionalAdapterMethods","LibraryMethods","callWhenReady","unifiedCacheInstance","libraryMethod","_args","validateEvictionPolicy","UnifiedCache","adapterTypeKey","adapterName","defineAdapter","_adapterSet","_initAdapter","_ready","_wrapLibraryMethodsWithReady","setAdapter","unifiedCacheProxy","cacheInstances","adapters","supportedAdapters","_getSupportedAdapters","setAdapterToConfig","extendSelfWithAdapter","_extend","oldAdapterSetDone","getAdapter","currentAdapterIndex","adapterPromiseLoop","initAdapter","getAdapterPromise","serializerPromise","adapterObject","complianceError","adapterMethods","adapterMethodName","configureMissingMethods","methodNotImplementedFactory","optionalAdapterMethod","setAdapterSupport","libraryMethodsAndProperties","aggregateStats","hitRate","allCacheStats","ucInstances","getUnifiedCacheInstance","storageAdapter","createInstance","resetUcInstances","ACTION_PERSIST_STATE_INTERNAL","ACTION_PERSIST_STATE_INIT_INTERNAL","ACTION_PERSIST_STATE_URL_CHANGED_INTERNAL","UX_GLOBAL_CLIENT_CACHE_BUSTER","uxGlobalsClientCacheBuster","getClientCacheableUxGlobalExperienceRequestUrl","fetchExperienceForUxGlobals","experienceContent","experienceConfigs","isCompleteExperienceConfigs","requestedExpKey","uxGlobalExperienceConfigs","appRouteConfiguration","isSupportedExperience","fetchRequestedExperienceConfig","uxglobalsExperienceConfigs","prevRouterConfig","experienceId","experienceRouteConfigs","getRequestedExperienceConfig","activeRouterConfig","setActiveRouterConfig","getActiveRouterConfig","queryParamsEnabled","constructRouterConfig","routeConfig","appRouteConfig","routeTypeFieldGroupsMap","getTypeFieldGroupsMap","appShellId","experienceName","vendorSitePrefix","urlPath","expPath","experienceRouteConfig","_routeTypeFieldGroupsMap","keysToParams","getLocation","getParamsInCamelCase","paramsInKababCase","paramsInCamelCase","getParametersFromPath","queryIdx","qs","_routerConfig","routes","routeObj","deepRouteCopy","klona","optionalParameters","getParamsFromUri","paramFound","paramName","SUB_URL","QUERY_PARAMS_DIVIDER","PARAMS_DIVIDER","decodeURL","getFilteredParams","configuredParams","filteredParams","param","getRoute","fieldsLength","routerConfig","decodedParam","encodeURL","getContent","multiInstFieldIndex","typeFieldGroupsMap","urlFields","UNDEFINED_FIELD_VALUE","multiInstField","getSubPortion","subUrlIdx","getEncodedPersistedStateFromUrl","persistedStateIdx","PERSISTED_STATE_PARAM","getSelectedContentFromUrl","newRouterConfig","contextPath","subContent","encodedPersistedState","convertUrlToPayload","processPathName","experiencePath","experienceConfig","temp_anchor","detectHeadlessBrowser","headlessBrowser","__playwright__binding__","__pwInitScripts","webdriver","getReduceMotionValue","reduceMotionValue","reduceMotionKey","_context$reduceMotion","vertRun","NOW_ICON_ANIMATED_CACHE_NAME","NOW_ICON_ANIMATED_ASSETS_PATH","fetchFromCache","fetchIconAnimation","injectAria","configAriaToUse","reduceMotionBehavior","getCanvas","handleAnimationLoad","reducedMotion","getIcon","nameAndSize","TOOLTIP_DELAY","TimeoutStore","newTimeout","unschedule","createTooltipActionHandler","hideTooltipCB","TOOLTIP_ID","TOOLTIP_ADD_TARGET","TOOLTIP_REMOVE_TARGET","TOOLTIP_SHOW","TOOLTIP_HIDE","handleMouseEnter","handleMouseLeave","hideTooltip","getExistingTooltip","getTooltip","tooltip","getTooltipOffset","tooltipoffset","offsetValue","shouldHideTooltip","targetRef","showTooltip","tooltipposition","scheduleTooltipOpen","ariadescribedby","tooltipEvent","scheduleTooltipClose","hoistedTooltip","tooltipSpan","EventTargetMap","targetRegistered","unregisterTarget","updateTooltipOnTargetAttributeChange","records","record","registerTarget","attributeFilter","TOOLTIP_TAG","findAncestors","findListener","ancestors","nowPopover","ancestor","createScrollListener","attached","targets","listenerMap","hoistMap","FIT_CONSTRAIN","minHeight","maxWidth","SEISMIC_HOIST_TAG","debounceDispatch","enterAnim","getAnimations","slideAmount","startCoords","animate","scrollListener","fitTooltip","fromMutation","fitContentArea","fitContent","slottedElements","haveTooltipContent","fitProps","fitStyle","refitOnSlotChange","_target$parentNode","maybeHoistHost","closest","targetObserver","handleKeydown","addTargetListeners","isTooltipVisible","removeTargetListeners","ariaHidden","_targetObserver","layerEvents","tooltipHost","nowHoist","characterData","boundHandler","defaultSlot","getFocusableNodes","firstFocusableElement","lastFocusableElement","handleFocusFirstNode","focusableNodes","focus","handleFocusTrap","shiftKey","HTMLInputElement","select","handleTabKeydown","trap","handleOpened","handleClosed","triggerEl","focusOptions","animatedIconHoverBehavior","iconAnimations","animatedIcon","animatedIconStart","animatedIconEnd","disabled","isLeaveEvent","shouldAnimate","animatedIconHover","RIPPLE_PADDING","DEFAULT_RIPPLE_POSITION","MAX_RIPPLES","eventCoordinates","rippleScale","maxDim","minDim","isWide","hypotenuse","half","activeRippleTimeStamps","introDuration","introEase","outroDuration","isMouseDown","introDurationToken","introEaseToken","outroDurationToken","outroEaseToken","outroEase","introDurationCSS","outroDurationCSS","nowHoistAppendTo","triggerElms","triggerElm","mouseleaveHandler","clickHandler","useCenter","button","ripple","autoEnd","rippleElm","timeStamp","maxScale","forceColor","rippleAnim","onfinish","mouseUpTime","endScale","currentRipples","rippleId","newRippleTimeStamps","currentRippleId","scaleOut","outroAnim","cssProperties","syntax","inherits","initialValue","CSS","registerProperty","DOMException","handleTooltipShow","handleTooltipHide","_renderIcon","_renderAnimatedIcon","_filterAriaAttributes","bare","tooltipContent","dataAriaDescribedBy","on-click","landmark","focusBehavior","tooltipBehavior","rippleBehavior","cssPropertyRegistration","buttonEl","logicalProperty","labelSpan","_filterAriaAttributes2","highContrast","iconStart","iconNameStart","iconEnd","iconNameEnd","hidePadding","hideBlockPadding","showInlinePadding","selected","iconFilledOrOutline","roleBasedSelection","tab","_configAria","_configAria2","configRole","highlighted","selectedState","manageSelected","SCALE_SHRINK","SCALE_GROW","handleClick","handleScaleAnimation","handleMouseDown","iconEl","shrinkAnimation","growAnimation","handleAnimationStart","handleAnimationEnd","handleKeyDown","hasShadow","cssPropertyRegistrationBehavior","_context$action","AncestorMap","ActionTypes","SHOW","HIDE","BODY_TAG","ARIA_HIDDEN_ATTR","HIDDEN_ATTR","INVISIBLE_TAGNAMES","LANDMARK_TAGNAMES","LANDMARK_ROLES","isInvisibleNode","isLandmark","isAriaLiveRegion","behaviorModalIgnore","isValidSibling","siblingNode","getElementSiblings","prevNode","updateShadowRootElements","slottedNodes","updateElements","unsetAncestorLandmark","currentRole","behaviorModalAncestorRole","restoreAncestorLandmark","isDomLimit","domLimit","isTreeOrigin","limitReached","elementSiblings","scid","addTreeOriginNode","hostEl","treeOriginRef","removeTreeOriginNode","removeArtifacts","WATCH_PROPERTY_NAME_DEFAULT","getNearestConnectedAncestor","originalBodyOverflow","activeModalCount","updateBodyOverflow","isHidden","setSlotId","compId","setNodes","initSlots","cid","hidePageContent","watchPropertyName","nearestConnectedAncestor","MapShim","getIndex","class_1","__entries__","global$1","requestAnimationFrame$1","trailingTimeout","leadingCall","trailingCall","resolvePending","timeoutCallback","REFRESH_DELAY","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","addObserver","connect_","removeObserver","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","isReflowProperty","getInstance","instance_","defineConfigurable","getWindowOf","defaultView","emptyRect","createRectInit","toFloat","getBordersSize","getPaddings","paddings","positions_1","getSVGContentRect","getHTMLElementContentRect","horizPad","vertPad","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getContentRect","createReadOnlyRect","Constr","DOMRectReadOnly","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","isActive","broadcastRect","ResizeObserverEntry","rectInit","contentRect","ResizeObserverSPI","controller","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","clearActive","observation","ResizeObserver","globalResizeBehaviorTimer","nds","resize_timer","getTimerSysProps","CALLBACK","TARGET","getTimerFn","resizeTarget","_options$timer","componentTimerSysProp","waitOption","resizeBehaviorTimer","timerFn","dispatchSize","leadTrailOptions","preventRenderUntilSizeAvailable","isRenderAllowed","oldWidth","oldHeight","prevent","preventRender","currentWidth","componentManaged","FLOW_NORMAL_EDGES","FLOW_NORMAL_EDGES_RTL","_resizeTarget$style","_resizeTarget$style2","_resizeTarget$style3","_resizeTarget$style4","sourceWidth","sourceHeight","sourceTop","sourceLeft","resizableMaxWidth","resizableMinWidth","resizableMaxHeight","resizableMinHeight","deltaX","deltaY","currentLeft","currentTop","emitEnd","_resizeTarget$getBoun","mouseResize","startX","startY","handleMouseMove","cancelAnimationFrame","unregisterMouseMove","startResize","_resizeTarget$getBoun2","_e$composedPath$find","_args$resizeTarget$da","_args$resizeTarget","_e$classList","startResizeOperation","_resizeTarget$getBoun3","resizeHandle","edge","edgeElement","initialMouseX","initialMouseY","finalizeResize","TOOLTIP","ACTIVE_TOOLTIP","_resizeHandle$classLi","DEFAULT_ENBALED","DEFAULT_MIN_WIDTH","DEFAULT_MAX_WIDTH","DEFAULT_MIN_HEIGHT","DEFAULT_MAX_HEIGHT","DEFAULT_CONTEXT","RESIZABLE_TARGET_NODES","_host$shadowRoot$quer","getResizableConfig","enableResizable","latestTargetNode","_host$shadowRoot$quer2","_host$shadowRoot2","_resizeTarget$classLi","_properties$resizable","_properties$resizable2","isFullscreen","resizeTargetNode","shouldResize","resizableConfig","lastChild","DRAG_BUTTON_DEFAULT_TOOLTIP_MSG","DRAG_ENABLED_ANNOUNCEMENT_MSG","DRAG_PLACEMENT_MSG","DRAG_ENABLED_TOOLTIP_MSG","ORIGINAL_POSITION_MSG","DEFAULT_DIALOG_TITLE","VALID_DRAG_DIRECTIONS","VERTICAL_MOVEMENT_KEYS","LOCALIZED_DIRECTIONS","down","DEFAULT_HEIGHT","DEFAULT_WIDTH","MIN_HEIGHT","MIN_WIDTH","getKeyToDirection","getPanelCurrentPosition","panel","elementRect","getDistanceAndDirectionMessage","distanceInPixels","getViewportEdgeMessage","viewportEdge","handleFocus","checkDialogBoundary","panelRef","scrollbarWidth","leftOffset","topOffset","bottomOffset","moveLeft","moveTop","moveBottom","DRAG_POSITION_ANNOUNCEMENT_DELAY","announceDragFocus","announceDragEnabled","announceOriginalPosition","announceDirectionalDrag","pixels","directionalBoundary","viewportEdgeMessage","announceDragEnd","announcePosition","dialogPositionMessage","finalMessage","dragMovementTooltip","xOffset","leftOrRight","upOrDown","leftOrRightOffsetMessage","upOrDownOffsetMessage","messageSeperator","DEFAULT_MOVE_STEP","SHIFT_MOVE_STEP","VIEWPORT_WIDTH","VIEWPORT_HEIGHT","COMPONENT_RESIZED","getMoveDistance","isShiftKeyPressed","isSizeSet","movePanel","moveDistance","panelPositionAtDragStart","newTop","newLeft","newBottom","dragMovementMessage","dragButtonTooltipMessage","inset","zIndex","getComputedDimension","getMaximizedButtonConfigAria","fullscreen","getPanelPayload","_event$clientX","_event$clientY","mouse","X","Y","setHeaderSlotsState","hasHeaderSlots","generatePayload","panelPayload","addDialogToStack","_panel","getPositionOffsetStyles","_offset","_offset2","_offset3","_offset4","insetInlineStart","insetBlockStart","insetInlineEnd","insetBlockEnd","getSizeStyles","autoResizableConfig","enableAutoResizableHeight","autoResizableMinHeight","autoResizableMaxHeight","sizeStyles","accessibleDrag","changePanelPosition","finalizeDrag","updatedPayload","canEnableDrag","header","footer","calculateDragPayload","pageXOffset","pageYOffset","mouseDrag","enableDrag","offsetX","offsetY","renderHeading","headingLabel","headingIcon","iconSize","canDrag","canMaximize","canMinimize","canClose","startKeyboardDrag","inResponsive","hasConfiguredContent","shouldApplyFitContent","inFullscreen","buttonSize","tabindex","minimize","maximize","drag","on-focus","on-blur","smallModalOpened","isSmallModal","enableFocus","savedResizableConfig","isManuallyResized","keepInViewport","modalBehavior","resizeBehavior","resizableBehavior","minWidth","dragButtonElement","dragButtonExistsInEvent","_state$panel","calculatedWidth","calculatedHeight","_state$panel2","_host$shadowRoot3","panelPosition","_host$shadowRoot4","_panelRef$current","isAtTopEdge","isAtBottomEdge","_state$panel3","_host$shadowRoot5","TAIL_LENGTH","OFFSET","MIN_SIZE","setTailPosition","getTailPosition","tailDirection","getMinOffset","minYOffset","middleOfTarget","minXOffset","HOIST_TAG","POPOVER_PANEL_TAG","getFirstTrigger","getNextPanel","directParent","isInPanel","nextPanel","findTriggerFromEvent","onReady","unhoist","waitForNextFrame","createBatchedListener","runCallbacks","needsToAttach","createObserver","Observer","observed","observerArgs","observersArr","onWindowResize","createGlobalListener","clickListener","keydownListener","resizeObserver","closePopover","getTransformOrigin","interactionType","fitInfo","directionMap","rightPos","leftPos","isRightPos","wrapperDuration","wrapperEasing","elementDuration","elementEasing","startScale","startHeight","initialOverflow","startOverflow","fadeAnim","transformStartState","transformEndState","transformAnim","openPopover","disableScroll","finishedOpening","actionSource","handlePopoverOpened","updateFit","focusPanel","isWindowResizing","handleTabPress","findFocusableNodes","targetVisible","intersectionRatio","_focusableNodes$lengt","nodesLength","trapFocus","_findTabbableNodes","isTabInPanel","isChildPopverContentFocusable","handleSlotClick","clickedTrigger","positioningToTrigger","positionTarget","restoreFocus","refit","_properties$constrain","_constrain$maxWidth","UNEXPANDED_MAX_HEIGHT_PERCENT","EXPANDED_MAX_HEIGHT_PERCENT","TOP_PADDING_PX","DEFAULT_LINE_HEIGHT_PX","MIN_CONTENT_CONTAINER_HEIGHT_PX","queueUpdateReadMoreButtonVisibility","originalArgs","updateReadMoreButtonVisibility","_supplementalControls","isContentExpanded","bottomControlsHeight","openDialog","isAnchorTagEvent","readMoreButton","showReadMoreButton","updateViewWithSeeMoreOrLessButtonClick","updateViewWithSeeMoreOrLessKeydown","bottomContainer","bottomControlsContainerRef","control","renderSupplementalControl","scrollContainerRef","getElementHeight","originalParent","hiddenDivContainer","_state$properties2","maxHeightMinusBottomControlsHeight","maxContentHeight","scrollTo","updatedHeight","ChatCloseIcon","ChatOpenIcon","_state$viewportWidth","_state$viewportHeight","customOpenIcon","customCloseIcon","navaEnabled","desiredWidth","availableWidth","dialogWidth","reservedHeight","dialogHeight","clientContextParams","shouldShowNotification","manageOpened","handleLauncherClick","hook-destroy","shouldFetchProactiveAndPreviewMsg","_clientContext$CONSUM","portal_url_suffix","commonActionHandlers","interface_type","interface_name","themeBehavior","ARIAL_LABEL","TOOLTIP_OPEN_LABEL","TOOLTIP_CLOSE_LABEL","ServiceNowChat","_this$el$getElementsB","branding","layerOptions","sizeMultiplier","primaryColor","_hexToRgb","bgColor","focusColor","hoverColor","activeColor","__TRANSLATIONS__","openIcon","closeIcon","_this$host","_this$host2","_this$host3","_this$style","_checkIfCssVar","cssVar"]}