{"version":3,"sources":["../../../src/common/constants.ts","../node_modules/react/index.js","../../../src/AbortError.ts","../../../src/delay.ts","../../../src/createAbortablePromise.ts","../../../src/random.ts","../../../src/object.ts","../../../src/error.ts","../../../src/bytesEncoding.common.ts","../../../src/typeGuards.ts","../../../src/uuidUtils.common.ts","../../../src/uuidUtils-browser.mts","../../../src/checkEnvironment.ts","../../tsc-out/jsbi.mjs","../../../src/utils/hashing/encoding/prefix.ts","../../../src/index.ts","../../../src/pipeline.ts","../../../src/log.ts","../../../src/util/sanitizer.ts","../../../src/policies/redirectPolicy.ts","../../../src/util/userAgent.ts","../../../src/constants.ts","../../../src/util/userAgentPlatform-browser.mts","../../../src/util/typeGuards.ts","../../../src/util/file.ts","../../../src/util/concat.common.ts","../../../src/policies/multipartPolicy.ts","../../../src/util/helpers.ts","../../../src/retryStrategies/throttlingRetryStrategy.ts","../../../src/retryStrategies/exponentialRetryStrategy.ts","../../../src/policies/retryPolicy.ts","../../../src/httpHeaders.ts","../../../src/policies/formDataPolicy.ts","../../../src/policies/proxyPolicy.common.ts","../../../src/tracingContext.ts","../../../src/state-browser.mts","../../../src/instrumenter.ts","../../../src/util/inspect.common.ts","../../../src/restError.ts","../../../src/policies/tracingPolicy.ts","../../../src/tracingClient.ts","../../../src/createPipelineFromOptions.ts","../../../src/policies/tlsPolicy.ts","../../../src/policies/agentPolicy.ts","../../../src/policies/decompressResponsePolicy-browser.mts","../../../src/policies/userAgentPolicy.ts","../../../src/policies/setClientRequestIdPolicy.ts","../../../src/policies/defaultRetryPolicy.ts","../../../src/policies/logPolicy.ts","../../../src/fetchHttpClient.ts","../../../src/defaultHttpClient-browser.mts","../../../src/pipelineRequest.ts","../../../src/util/tokenCycler.ts","../../../src/policies/bearerTokenAuthenticationPolicy.ts","../node_modules/process/browser.js","../node_modules/node-libs-browser/node_modules/buffer/index.js","../../../src/utils/encode.ts","../node_modules/es-errors/type.js","../../../src/utils/hashing/encoding/number.ts","../../../src/debug.ts","../node_modules/react-scripts/node_modules/webpack/buildin/global.js","../../../src/utils/globalCrypto.ts","../node_modules/object-inspect/index.js","../node_modules/function-bind/index.js","../../../src/utils/hmac.browser.ts","../../../src/utils/atob.browser.ts","../node_modules/priorityqueuejs/index.js","../../../src/utils/hashing/v2.ts","../../../src/utils/hashing/murmurHash.ts","../node_modules/get-intrinsic/index.js","../node_modules/call-bind-apply-helpers/functionCall.js","../node_modules/qs/lib/formats.js","../node_modules/semaphore/lib/semaphore.js","../../../src/utils/SasToken.ts","../node_modules/side-channel-map/index.js","../node_modules/es-object-atoms/index.js","../node_modules/gopd/index.js","../node_modules/get-proto/Reflect.getPrototypeOf.js","../node_modules/get-proto/Object.getPrototypeOf.js","../node_modules/call-bind-apply-helpers/index.js","../node_modules/call-bind-apply-helpers/functionApply.js","../node_modules/call-bound/index.js","../node_modules/qs/lib/utils.js","../../../src/common/partitionKeys.ts","../../../src/common/statusCodes.ts","../../../src/utils/headers.ts","../../../src/common/helper.ts","../../../src/auth.ts","../../../src/documents/PartitionKeyInternal.ts","../../../src/client/ClientUtils.ts","../../../src/extractPartitionKey.ts","../../../src/utils/typeChecks.ts","../../../src/common/logger.ts","../../../src/client/ChangeFeed/ChangeFeedMode.ts","../../../src/request/request.ts","../../../src/utils/batch.ts","../../../src/utils/patch.ts","../../../src/documents/ConnectionMode.ts","../../../src/documents/ConsistencyLevel.ts","../../../src/documents/DataType.ts","../../../src/documents/IndexingMode.ts","../../../src/documents/IndexingPolicy.ts","../../../src/documents/GeospatialType.ts","../../../src/documents/IndexKind.ts","../../../src/documents/PartitionKeyKind.ts","../../../src/documents/PartitionKeyDefinitionVersion.ts","../../../src/documents/PermissionMode.ts","../../../src/documents/PriorityLevel.ts","../../../src/documents/TriggerOperation.ts","../../../src/documents/TriggerType.ts","../../../src/documents/UserDefinedFunctionType.ts","../../../src/documents/VectorEmbeddingPolicy.ts","../../../src/documents/DatabaseAccount.ts","../../../src/documents/PartitionKey.ts","../../../src/request/ErrorResponse.ts","../../../src/request/ResourceResponse.ts","../../../src/queryMetrics/clientSideMetrics.ts","../../../src/queryMetrics/queryMetricsConstants.ts","../../../src/queryMetrics/timeSpan.ts","../../../src/queryMetrics/queryMetricsUtils.ts","../../../src/queryMetrics/queryPreparationTime.ts","../../../src/queryMetrics/runtimeExecutionTimes.ts","../../../src/queryMetrics/queryMetrics.ts","../../../src/queryExecutionContext/headerUtils.ts","../../../src/indexMetrics/Constants.ts","../../../src/indexMetrics/IndexMetricWriter.ts","../../../src/request/FeedResponse.ts","../../../src/request/TimeoutError.ts","../../../src/utils/time.ts","../../../src/diagnostics/CosmosDiagnosticsContext.ts","../../../src/CosmosDiagnostics.ts","../../../src/diagnostics/CosmosDbDiagnosticLevel.ts","../../../src/diagnostics/diagnosticLevelComparator.ts","../../../src/diagnostics/DiagnosticNodeInternal.ts","../node_modules/@azure/cosmos/node_modules/tslib/tslib.es6.js","../../../src/utils/diagnostics.ts","../../../src/queryExecutionContext/defaultQueryExecutionContext.ts","../../../src/queryExecutionContext/EndpointComponent/OffsetLimitEndpointComponent.ts","../../../src/queryExecutionContext/EndpointComponent/OrderByEndpointComponent.ts","../../../src/utils/digest.browser.ts","../../../src/utils/hashObject.ts","../../../src/queryExecutionContext/EndpointComponent/OrderedDistinctEndpointComponent.ts","../../../src/queryExecutionContext/EndpointComponent/UnorderedDistinctEndpointComponent.ts","../../../src/queryExecutionContext/Aggregators/AverageAggregator.ts","../../../src/queryExecutionContext/Aggregators/CountAggregator.ts","../../../src/queryExecutionContext/orderByDocumentProducerComparator.ts","../../../src/queryExecutionContext/Aggregators/MaxAggregator.ts","../../../src/queryExecutionContext/Aggregators/MinAggregator.ts","../../../src/queryExecutionContext/Aggregators/SumAggregator.ts","../../../src/queryExecutionContext/Aggregators/StaticValueAggregator.ts","../../../src/queryExecutionContext/Aggregators/MakeListAggregator.ts","../../../src/queryExecutionContext/Aggregators/MakeSetAggregator.ts","../../../src/queryExecutionContext/Aggregators/index.ts","../../../src/queryExecutionContext/EndpointComponent/emptyGroup.ts","../../../src/queryExecutionContext/EndpointComponent/GroupByEndpointComponent.ts","../../../src/routing/QueryRange.ts","../../../src/routing/inMemoryCollectionRoutingMap.ts","../../../src/routing/CollectionRoutingMapFactory.ts","../../../src/routing/partitionKeyRangeCache.ts","../../../src/routing/smartRoutingMapProvider.ts","../../../src/queryExecutionContext/FetchResult.ts","../../../src/queryExecutionContext/documentProducer.ts","../../../src/queryExecutionContext/parallelQueryExecutionContextBase.ts","../../../src/queryExecutionContext/orderByQueryExecutionContext.ts","../../../src/queryExecutionContext/parallelQueryExecutionContext.ts","../../../src/queryExecutionContext/EndpointComponent/GroupByValueEndpointComponent.ts","../../../src/utils/fixedSizePriorityQueue.ts","../../../src/utils/nonStreamingOrderByMap.ts","../../../src/queryExecutionContext/orderByComparator.ts","../../../src/queryExecutionContext/EndpointComponent/NonStreamingOrderByDistinctEndpointComponent.ts","../../../src/queryExecutionContext/EndpointComponent/NonStreamingOrderByEndpointComponent.ts","../../../src/queryExecutionContext/pipelinedQueryExecutionContext.ts","../../../src/request/hybridSearchQueryResult.ts","../../../src/queryExecutionContext/Aggregators/GlobalStatisticsAggregator.ts","../../../src/queryExecutionContext/hybridQueryExecutionContext.ts","../../../src/queryIterator.ts","../../../src/common/uriFactory.ts","../../../src/client/Conflict/Conflicts.ts","../../../src/client/Conflict/ConflictResponse.ts","../../../src/client/Conflict/Conflict.ts","../../../src/ChangeFeedResponse.ts","../../../src/ChangeFeedIterator.ts","../../../src/client/Item/ItemResponse.ts","../../../src/client/Item/Item.ts","../../../src/client/ChangeFeed/ChangeFeedEnums.ts","../../../src/utils/hashing/hash.ts","../../../src/utils/hashing/multiHash.ts","../../../src/client/ChangeFeed/ChangeFeedStartFromNow.ts","../../../src/client/ChangeFeed/ChangeFeedStartFromBeginning.ts","../../../src/client/ChangeFeed/ChangeFeedStartFromTime.ts","../../../src/client/ChangeFeed/ChangeFeedStartFromContinuation.ts","../../../src/client/ChangeFeed/FeedRange.ts","../../../src/client/ChangeFeed/changeFeedUtils.ts","../../../src/client/ChangeFeed/ChangeFeedStartFrom.ts","../../../src/client/ChangeFeed/ChangeFeedIteratorResponse.ts","../../../src/client/ChangeFeed/ContinuationTokenForPartitionKey.ts","../../../src/client/ChangeFeed/ChangeFeedForPartitionKey.ts","../../../src/client/ChangeFeed/ChangeFeedRange.ts","../../../src/client/ChangeFeed/FeedRangeQueue.ts","../../../src/client/ChangeFeed/CompositeContinuationToken.ts","../../../src/client/ChangeFeed/ChangeFeedForEpkRange.ts","../../../src/client/ChangeFeed/changeFeedIteratorBuilder.ts","../../../src/client/Item/Items.ts","../../../src/client/StoredProcedure/StoredProcedureResponse.ts","../../../src/client/StoredProcedure/StoredProcedure.ts","../../../src/client/StoredProcedure/StoredProcedures.ts","../../../src/client/Trigger/TriggerResponse.ts","../../../src/client/Trigger/Trigger.ts","../../../src/client/Trigger/Triggers.ts","../../../src/client/UserDefinedFunction/UserDefinedFunctionResponse.ts","../../../src/client/UserDefinedFunction/UserDefinedFunction.ts","../../../src/client/UserDefinedFunction/UserDefinedFunctions.ts","../../../src/client/Script/Scripts.ts","../../../src/client/Container/ContainerResponse.ts","../../../src/client/Offer/OfferResponse.ts","../../../src/client/Offer/Offer.ts","../../../src/client/Container/Container.ts","../../../src/utils/offers.ts","../../../src/client/Container/Containers.ts","../../../src/client/Permission/PermissionResponse.ts","../../../src/client/Permission/Permission.ts","../../../src/client/Permission/Permissions.ts","../../../src/client/User/UserResponse.ts","../../../src/client/User/User.ts","../../../src/client/User/Users.ts","../../../src/client/Database/DatabaseResponse.ts","../../../src/client/Database/Database.ts","../../../src/client/Database/Databases.ts","../../../src/client/Offer/Offers.ts","../../../src/plugins/Plugin.ts","../../../src/retry/defaultRetryPolicy.ts","../../../src/retry/endpointDiscoveryRetryPolicy.ts","../../../src/retry/resourceThrottleRetryPolicy.ts","../../../src/retry/sessionRetryPolicy.ts","../../../src/retry/timeoutFailoverRetryPolicy.ts","../../../src/retry/retryUtility.ts","../../../src/request/defaultAgent.browser.ts","../../../src/utils/cachedClient.ts","../../../src/request/RequestHandler.ts","../../../src/session/VectorSessionToken.ts","../../../src/session/sessionContainer.ts","../../../src/diagnostics/DiagnosticWriter.ts","../../../src/diagnostics/DiagnosticFormatter.ts","../../../src/ClientContext.ts","../../../src/utils/checkURL.ts","../../../src/utils/supportedQueryFeaturesBuilder.ts","../../../src/utils/envUtils.browser.ts","../../../src/diagnostics/index.ts","../../../src/utils/strings.ts","../../../src/documents/ConnectionPolicy.ts","../../../src/globalEndpointManager.ts","../../../src/CosmosClient.ts","../../../src/client/Conflict/ConflictResolutionMode.ts","../../../src/client/SasToken/SasTokenProperties.ts","../../../src/client/ChangeFeed/ChangeFeedPolicy.ts","../../../src/client/ChangeFeed/ChangeFeedRetentionTimeSpan.ts","../node_modules/react-dom/client.js","../node_modules/fast-json-stable-stringify/index.js","../../../src/common/platform.ts","../../../src/utils/hashing/v1.ts","../../../src/utils/hashing/encoding/string.ts","../../../src/log.common.ts","../node_modules/react/cjs/react.production.js","../node_modules/react-dom/cjs/react-dom-client.production.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.js","../node_modules/timers-browserify/main.js","../node_modules/setimmediate/setImmediate.js","../node_modules/react-dom/index.js","../node_modules/react-dom/cjs/react-dom.production.js","../node_modules/base64-js/index.js","../node_modules/ieee754/index.js","../node_modules/isarray/index.js","../node_modules/url/url.js","../node_modules/node-libs-browser/node_modules/punycode/punycode.js","../node_modules/react-scripts/node_modules/webpack/buildin/module.js","../node_modules/qs/lib/index.js","../node_modules/qs/lib/stringify.js","../node_modules/side-channel/index.js","../node_modules/side-channel-list/index.js","../node_modules/es-errors/index.js","../node_modules/es-errors/eval.js","../node_modules/es-errors/range.js","../node_modules/es-errors/ref.js","../node_modules/es-errors/syntax.js","../node_modules/es-errors/uri.js","../node_modules/math-intrinsics/abs.js","../node_modules/math-intrinsics/floor.js","../node_modules/math-intrinsics/max.js","../node_modules/math-intrinsics/min.js","../node_modules/math-intrinsics/pow.js","../node_modules/math-intrinsics/round.js","../node_modules/math-intrinsics/sign.js","../node_modules/math-intrinsics/isNaN.js","../node_modules/gopd/gOPD.js","../node_modules/es-define-property/index.js","../node_modules/has-symbols/index.js","../node_modules/has-symbols/shams.js","../node_modules/get-proto/index.js","../node_modules/dunder-proto/get.js","../node_modules/function-bind/implementation.js","../node_modules/call-bind-apply-helpers/actualApply.js","../node_modules/call-bind-apply-helpers/reflectApply.js","../node_modules/hasown/index.js","../node_modules/side-channel-weakmap/index.js","../node_modules/qs/lib/parse.js","../../../src/azureKeyCredential.ts","../../../src/tokenCredential.ts","../../../src/credential/connectionString.ts","../../../src/credential/clientArguments.ts","../../../src/credential/encodeUtils.browser.ts","../../../src/credential/cryptoUtils.browser.ts","../../../src/credential/communicationAccessKeyCredentialPolicy.ts","../../../src/base64-browser.mts","../../../src/interfaces.ts","../../../src/utils.ts","../../../src/serializer.ts","../../../src/operationHelpers.ts","../../../src/deserializationPolicy.ts","../../../src/interfaceHelpers.ts","../../../src/serializationPolicy.ts","../../../src/httpClientCache.ts","../../../src/urlHelpers.ts","../../../src/generated/src/models/mappers.ts","../../../src/generated/src/models/parameters.ts","../../../src/logger.ts","../../../src/poller/constants.ts","../../../src/poller/operation.ts","../../../src/http/operation.ts","../../../src/legacy/lroEngine/operation.ts","../../../src/legacy/poller.ts","../../../src/legacy/lroEngine/lroEngine.ts","../../../src/generated/src/lroImpl.ts","../node_modules/tslib/tslib.es6.js","../../../src/generated/src/operations/email.ts","../../../src/generated/src/emailRestApiClient.ts","../../../src/serviceClient.ts","../../../src/emailClient.ts","../../../src/credential/communicationAuthPolicy.ts","../../../src/indexMetrics/IndexUtilizationInfo.ts"],"names":["Constants","HttpHeaders","Authorization","ETag","MethodOverride","Slug","ContentType","LastModified","ContentEncoding","CharacterSet","UserAgent","IfModifiedSince","IfMatch","IfNoneMatch","ContentLength","AcceptEncoding","KeepAlive","CacheControl","TransferEncoding","ContentLanguage","ContentLocation","ContentMd5","ContentRange","Accept","AcceptCharset","AcceptLanguage","IfRange","IfUnmodifiedSince","MaxForwards","ProxyAuthorization","AcceptRanges","ProxyAuthenticate","RetryAfter","SetCookie","WwwAuthenticate","Origin","Host","AccessControlAllowOrigin","AccessControlAllowHeaders","KeyValueEncodingFormat","WrapAssertionFormat","WrapAssertion","WrapScope","SimpleToken","HttpDate","Prefer","Location","Referer","A_IM","Query","IsQuery","IsQueryPlan","SupportedQueryFeatures","QueryVersion","Continuation","ContinuationToken","PageSize","ItemCount","ChangeFeedWireFormatVersion","ActivityId","CorrelatedActivityId","PreTriggerInclude","PreTriggerExclude","PostTriggerInclude","PostTriggerExclude","IndexingDirective","SessionToken","ConsistencyLevel","XDate","CollectionPartitionInfo","CollectionServiceInfo","RetryAfterInMilliseconds","RetryAfterInMs","IsFeedUnfiltered","ResourceTokenExpiry","EnableScanInQuery","EmitVerboseTracesInQuery","EnableCrossPartitionQuery","ParallelizeCrossPartitionQuery","ResponseContinuationTokenLimitInKB","PopulateQueryMetrics","QueryMetrics","PopulateIndexMetrics","IndexUtilization","Version","OwnerFullName","OwnerId","PartitionKey","PartitionKeyRangeID","StartEpk","EndEpk","ReadFeedKeyType","MaxEntityCount","CurrentEntityCount","CollectionQuotaInMb","CollectionCurrentUsageInMb","MaxMediaStorageUsageInMB","CurrentMediaStorageUsageInMB","RequestCharge","PopulateQuotaInfo","MaxResourceQuota","OfferType","OfferThroughput","AutoscaleSettings","DisableRUPerMinuteUsage","IsRUPerMinuteUsed","OfferIsRUPerMinuteThroughputEnabled","IndexTransformationProgress","LazyIndexingProgress","IsUpsert","SubStatus","EnableScriptLogging","ScriptLogResults","ALLOW_MULTIPLE_WRITES","IsBatchRequest","IsBatchAtomic","BatchContinueOnError","DedicatedGatewayPerRequestCacheStaleness","DedicatedGatewayPerRequestBypassCache","ForceRefresh","PriorityLevel","WritableLocations","ReadableLocations","LocationUnavailableExpirationTimeInMs","ENABLE_MULTIPLE_WRITABLE_LOCATIONS","DefaultUnavailableLocationExpirationTimeMS","ThrottleRetryCount","ThrottleRetryWaitTimeInMs","CurrentVersion","AzureNamespace","AzurePackageName","SDKName","SDKVersion","CosmosDbDiagnosticLevelEnvVarName","DefaultMaxBulkRequestBodySizeInBytes","Quota","CollectionSize","Path","Root","DatabasesPathSegment","CollectionsPathSegment","UsersPathSegment","DocumentsPathSegment","PermissionsPathSegment","StoredProceduresPathSegment","TriggersPathSegment","UserDefinedFunctionsPathSegment","ConflictsPathSegment","AttachmentsPathSegment","PartitionKeyRangesPathSegment","SchemasPathSegment","OffersPathSegment","TopologyPathSegment","DatabaseAccountPathSegment","PartitionKeyRange","MinInclusive","MaxExclusive","Id","QueryRangeConstants","min","EffectiveParitionKeyConstants","MinimumInclusiveEffectivePartitionKey","MaximumExclusiveEffectivePartitionKey","EffectivePartitionKeyConstants","AllVersionsAndDeletesChangeFeedWireFormatVersion","ChangeFeedIfNoneMatchStartFromNowHeader","ResourceType","HTTPMethod","OperationType","CosmosKeyType","CosmosContainerChildResourceKind","PermissionScopeValues","SasTokenPermissionKind","QueryFeature","module","exports","require","AbortError","Error","message","super","this","name","delay","timeInMs","options","token","abortSignal","abortErrorMsg","buildPromise","cleanupBeforeAbort","Promise","resolve","reject","rejectOnAbort","removeListeners","removeEventListener","onAbort","aborted","x","err","addEventListener","createAbortablePromise","setTimeout","clearTimeout","calculateRetryDelay","retryAttempt","config","exponentialDelay","retryDelayInMs","Math","pow","clampedDelay","maxRetryDelayInMs","max","retryAfterInMs","ceil","floor","random","isObject","input","Array","isArray","RegExp","Date","isError","e","hasName","hasMessage","getErrorMessage","stringified","JSON","stringify","String","stringToUint8Array","value","format","TextEncoder","encode","utf8StringToUint8Array","base64ToUint8Array","replace","base64UrlToUint8Array","bytes","Uint8Array","length","i","highNibble","lowNibble","hexDigits","has","slice","parseInt","hexStringToUint8Array","atob","map","charCodeAt","Set","isDefined","thing","isObjectWithProperties","properties","property","objectHasProperty","generateUUID","uuid","randomNumber","toString","uuidFunction","globalThis","crypto","randomUUID","bind","window","document","self","importScripts","constructor","Deno","version","deno","Bun","isNodeLike","process","Boolean","versions","node","isNode","navigator","product","imul","clz32","JSBI","abs","sign","setPrototypeOf","prototype","__kMaxLength","RangeError","result","digit","push","join","radix","__toStringBasePowerOfTwo","__toStringGeneric","newLength","last","pop","__clz30","__digit","multiplier","summand","mLow","mHigh","carry","high","d","dLow","dHigh","pLow","__imul","pMid1","pMid2","__setDigit","startIndex","halfDigits","sum","__halfDigit","__setHalfDigit","subtrahend","borrow","current","r0","sub","r15","shift","len","__unsignedDigit","digitIndex","previous","updated","arg","Number","isFinite","__zero","__isOneDigitInt","__oneDigit","__fromDouble","__fromString","SyntaxError","primitive","__toPrimitive","BigInt","TypeError","xLength","xMsd","msdLeadingZeros","xBitLength","exponent","currentDigit","mantissaHigh","mantissaHighBitsUnset","mantissaLow","mantissaLowBitsUnset","rounding","__decideRounding","signBit","__kBitConversionInts","__kBitConversionDouble","__copy","__absoluteSubOne","__trim","__absoluteAddOne","y","unaryMinus","expValue","__kMaxLengthBits","neededDigits","__initializeDigits","msd","runningSquare","multiply","resultLength","__clzmsd","__multiplyAccumulate","__absoluteCompare","quotient","resultSign","divisor","__absoluteDivSmall","__absoluteDivLarge","remainderDigit","__absoluteModSmall","remainder","__absoluteAdd","__absoluteSub","__rightShiftByAbsolute","__leftShiftByAbsolute","__compareToBigInt","equal","__absoluteAnd","y1","__absoluteOr","__absoluteAndNot","__absoluteXor","n","neededLength","topDigit","compareDigit","__truncateToNBits","__truncateAndSubFromPowerOfTwo","bitsInTopDigit","__toNumeric","__isBigInt","add","__compare","EQ","__equalToNumber","dataview","byteOffset","littleEndian","asIntN","DataViewGetBigUint64","h","l","getUint32","low","DataViewSetBigUint64","asUintN","d1","setUint32","mantissaBitsUnset","topUnconsumedBit","mask","digits","msdTopBit","remainingMantissaBits","kMantissaHighTopBit","c","string","cursor","__isWhitespace","chars","bitsPerChar","__kMaxBitsPerChar","roundup","__kBitsPerCharTableMultiplier","bitsMin","__kBitsPerCharTableShift","limDigit","limAlpha","parts","partsBits","done","part","bits","__fillFromParts","charsSoFar","m","digitsSoFar","__inplaceMultiplyAdd","bitsInDigit","partBits","charMask","charsRequired","pos","availableBits","newDigit","__kConversionChars","consumedBits","isRecursiveCall","secondHalf","bitLength","minBitsPerChar","secondHalfChars","conqueror","exponentiate","divisionResult","firstHalf","leftNegative","bothNegative","xSign","__unequalSign","__absoluteGreater","__absoluteLess","ySign","yAbs","xDigit","__compareToDouble","rawExponent","yBitLength","compareMantissa","op","__comparisonResultToBool","__compareToNumber","r","inputLength","__setDigitGrow","yLength","numPairs","tmp","tmpLength","g","diff","multiplicand","accumulator","accumulatorIndex","m2Low","m2High","acc","m1","m1Low","m1High","rLow","rMid1","rMid2","source","factor","rx","ry","upperHalf","lowerHalf","dividend","wantQuotient","wantRemainder","__halfDigitLength","n2","q","qhatv","__clz15","__specialLeftShift","u","vn1","halfDigitBuffer","j","qhat","ujn","rhat","vn2","ujn2","__internalMultiplyAdd","__inplaceSub","__inplaceAdd","__inplaceRightShift","addDigit","__toShiftAmount","digitShift","bitsShift","grow","__rightShiftByMaximum","mustRoundDown","obj","hint","Symbol","toPrimitive","exoticToPrim","valueOf","call","drop","limit","resultMsd","msdBitsConsumed","minuendMsd","base","ArrayBuffer","Float64Array","__kBitConversionBuffer","Int32Array","LN2","log","a","b","BytePrefix","Undefined","Null","False","True","MinNumber","MaxNumber","MinString","MaxString","Int64","Int32","Int16","Int8","Uint64","Uint32","Uint16","Uint8","Binary","Guid","Float","Infinity","defaultAllowedHeaderNames","defaultAllowedQueryParameters","additionalAllowedHeaderNames","allowedHeaderNames","additionalAllowedQueryParameters","allowedQueryParameters","concat","toLowerCase","p","seen","key","sanitizeHeaders","sanitizeUrl","sanitizeQuery","url","URL","search","searchParams","set","sanitized","Object","keys","k","allowedRedirect","async","handleRedirect","next","response","maxRetries","currentRetries","request","status","headers","locationHeader","get","includes","method","delete","body","res","getUserAgentValue","prefix","runtimeInfo","Map","localNavigator","osPlatform","userAgentData","entropyValues","getHighEntropyValues","architecture","platform","platformVersion","brand","brands","brandOrder","foundBrand","find","getBrandVersionString","userAgent","browserRegexes","regex","browser","match","getBrowserInfo","EdgeRuntime","setPlatformSpecificData","defaultAgent","telemetryInfo","getUserAgentString","isNodeReadableStream","isWebReadableStream","getReader","tee","getRawContent","blob","stream","toBlobPart","Blob","Response","rawContent","encodeHeaders","getLength","byteLength","size","undefined","buildRequestBody","boundary","sources","flatMap","contentLength","total","partLength","getTotalLength","validBoundaryCharacters","multipartPolicy","multipartBody","contentTypeHeader","parsedHeader","contentType","parsedBoundary","from","some","assertValidBoundary","delayInMs","timer","onAborted","parseHeaderValueAsNumber","headerName","valueAsNum","isNaN","AllRetryAfterHeaders","getRetryAfterInMs","header","retryAfterValue","retryAfterHeader","parse","now","isThrottlingRetryResponse","throttlingRetryStrategy","skipStrategy","exponentialRetryStrategy","retryInterval","maxRetryInterval","retryCount","responseError","matchedSystemError","isSystemError","ignoreSystemErrors","isExponential","isExponentialRetryResponse","ignoreExponentialResponse","ignoreHttpStatusCodes","errorToThrow","code","retryPolicyLogger","retryPolicy","strategies","logger","retryRequest","info","requestId","error","strategiesLoop","strategy","strategyLogger","modifiers","retry","redirectTo","normalizeName","HttpHeadersImpl","rawHeaders","_headersMap","trim","preserveCase","entry","values","normalizedName","toJSON","iterator","headerIterator","createHttpHeaders","formDataPolicy","FormData","formData","formDataMap","entries","formDataToFormDataMap","indexOf","urlSearchParams","URLSearchParams","subValue","append","wwwFormUrlEncode","startsWith","fieldName","fileName","type","prepareFormData","errorMessage","knownContextKeys","span","for","namespace","createTracingContext","context","TracingContextImpl","parentContext","setValue","initialContext","_contextMap","newContext","state","getInstrumenter","instrumenterImplementation","createRequestHeaders","parseTraceparentHeader","startSpan","_name","spanOptions","end","isRecording","recordException","setAttribute","setStatus","addEvent","tracingContext","_context","callback","callbackArgs","custom","errorSanitizer","statusCode","defineProperty","enumerable","sanitize","isRestError","REQUEST_SEND_ERROR","PARSE_ERROR","tryCreateTracingClient","packageName","packageVersion","operationOptions","startSpanResult","tracingOptions","getValue","updatedOptions","assign","withContext","withSpan","traceparentHeader","createTracingClient","warning","tryCreateSpan","tracingClient","spanAttributes","spanKind","tryProcessError","tryProcessResponse","serviceRequestId","createPipelineFromOptions","pipeline","createEmptyPipeline","tlsSettings","agent","addPolicy","sendRequest","req","tlsOptions","proxyPolicy","proxyOptions","decompressResponsePolicy","beforePolicies","userAgentValue","userAgentPrefix","userAgentPolicy","userAgentOptions","requestIdHeaderName","setClientRequestIdPolicy","telemetryOptions","clientRequestIdHeaderName","afterPhase","defaultRetryPolicy","retryOptions","phase","userAgentPromise","sanitizer","tracingPolicy","loggingOptions","redirectPolicy","redirectOptions","enabled","logPolicy","FetchHttpClient","protocol","allowInsecureConnection","proxySettings","abortController","abortControllerCleanup","AbortController","abortListener","event","abort","timeout","setupAbortSignal","pipelineHeaders","Headers","buildFetchHeaders","streaming","requestBody","buildBodyStream","onProgress","onUploadProgress","requestInit","signal","Request","credentials","withCredentials","cache","duplex","fetch","loadedBytes","httpResponse","responseHeaders","buildPipelineHeaders","bodyStream","onDownloadProgress","onEnd","streamResponseStatusCodes","POSITIVE_INFINITY","enableBrowserStreams","browserStreamBody","responseStream","blobBody","bodyAsText","text","buildPipelineResponse","makeRequest","getError","readableStream","isTransformStreamSupported","pipeThrough","TransformStream","chunk","controller","enqueue","terminate","reader","ReadableStream","read","close","releaseLock","cancel","reason","createDefaultHttpClient","disableKeepAlive","createPipelineRequest","DEFAULT_CYCLER_OPTIONS","forcedRefreshWindowInMs","retryIntervalInMs","refreshWindowInMs","createTokenCycler","credential","tokenCyclerOptions","tenantId","refreshWorker","cycler","isRefreshing","refreshAfterTimestamp","expiresOnTimestamp","refresh","scopes","getTokenOptions","getAccessToken","refreshTimeout","tryGetAccessToken","finalToken","beginRefresh","getToken","then","_token","catch","tokenOptions","hasClaimChallenge","claims","tenantIdChanged","mustRefresh","shouldRefresh","trySendRequest","defaultAuthorizeRequest","enableCae","accessToken","isChallengeResponse","authorizeRequestOnCaeChallenge","onChallengeOptions","caeClaims","tokenType","bearerTokenAuthenticationPolicy","challengeCallbacks","callbacks","authorizeRequest","authorizeRequestOnChallenge","shouldSendRequest","getCaeChallengeClaims","parsedClaim","challenges","challengeRegex","paramRegex","parsedChallenges","exec","scheme","paramsString","params","paramMatch","parseChallenges","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","array","noop","nextTick","args","arguments","apply","title","env","argv","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","base64","ieee754","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","__proto__","encodingOrOffset","allocUnsafe","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","write","fromString","isBuffer","checked","copy","buffer","val","data","fromObject","assertSize","isView","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","arr","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","found","hexWrite","offset","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","fromCharCode","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","global","foo","subarray","typedArraySupport","poolSize","_augment","species","configurable","fill","allocUnsafeSlow","_isBuffer","compare","list","swap16","swap32","swap64","equals","inspect","target","thisStart","thisEnd","thisCopy","targetCopy","_arr","ret","out","toHex","checkOffset","ext","checkInt","objectWriteUInt16","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","toByteArray","stringtrim","base64clean","src","dst","encodeUTF8","encodeBase64","btoa","binary","writeNumberForBinaryEncodingJSBI","hash","payload","rawValueBits","getRawBitsJSBI","greaterThan","bitwiseXor","bitwiseNot","encodeNumberAsUInt64JSBI","outputStream","firstChunk","signedRightShift","leftShift","shifted","padded","byteToWrite","firstIteration","padStart","bitwiseOr","notEqual","bitwiseAnd","doubleToByteArrayJSBI","double","output","lng","toNumber","view","DataView","setFloat64","debugEnvVariable","DEBUG","enabledString","enabledNamespaces","skippedNamespaces","debuggers","enable","debugObj","createDebugger","disable","namespaces","wildcard","namespaceList","split","ns","instance","endsWith","skipped","test","enabledNamespace","newDebugger","destroy","extend","index","splice","Function","globalRef","globalCrypto","msCrypto","subtle","hasMap","mapSizeDescriptor","getOwnPropertyDescriptor","mapSize","mapForEach","forEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","WeakMap","weakSetHas","WeakSet","weakRefDeref","WeakRef","deref","booleanValueOf","objectToString","functionToString","$match","$slice","$replace","$toUpperCase","toUpperCase","$toLowerCase","$test","$concat","$join","$arrSlice","$floor","bigIntValueOf","gOPS","getOwnPropertySymbols","symToString","hasShammedSymbols","toStringTag","isEnumerable","propertyIsEnumerable","gPO","Reflect","getPrototypeOf","O","addNumericSeparator","num","sepRegex","int","intStr","dec","utilInspect","inspectCustom","inspectSymbol","isSymbol","quotes","single","quoteREs","wrapQuotes","s","defaultStyle","opts","style","quoteStyle","quoteChar","quote","canTrustToString","toStr","isRegExp","inspect_","depth","maxStringLength","customInspect","indent","numericSeparator","inspectString","trailer","quoteRE","lastIndex","lowbyte","bigIntStr","maxDepth","baseIndent","prev","getIndent","noIndent","newOpts","f","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","getAttribute","isElement","attrs","attributes","childNodes","xs","singleLineValues","indentedJoin","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","isDate","ys","isPlainObject","protoTag","stringTag","tag","hasOwn","hasOwnProperty","8","9","10","12","13","lineJoiner","isArr","symMap","syms","implementation","hmac","importParams","encodedMessage","unescape","encodeURIComponent","encodedKey","cryptoKey","importKey","signature","safeatob","b64","b64re","bitmap","r1","r2","charAt","PriorityQueue","comparator","_comparator","DEFAULT_COMPARATOR","_elements","isEmpty","peek","deq","first","largest","left","right","_compare","_swap","enq","element","parent","fn","aux","hashV2PartitionKey","partitionKey","toHash","prefixKeyByType","x64","hash128","reverseBuff","buff","reverse","numberBytes","_x86Multiply","_x86Rotl","_x86Fmix","_x64Add","o","_x64Multiply","_x64Rotl","_x64LeftShift","_x64Xor","_x64Fmix","x86","hash32","seed","blocks","h1","k1","c1","c2","h2","h3","h4","k2","k3","k4","c3","c4","inputValidation","$Object","$Error","$EvalError","$RangeError","$ReferenceError","$SyntaxError","$TypeError","$URIError","round","$Function","getEvalledConstructor","expressionSyntax","$gOPD","$defineProperty","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","getProto","$ObjectGPO","$ReflectGPO","$apply","$call","needsEval","TypedArray","INTRINSICS","AggregateError","Atomics","BigInt64Array","BigUint64Array","decodeURI","decodeURIComponent","encodeURI","eval","Float16Array","Float32Array","FinalizationRegistry","Int8Array","Int16Array","parseFloat","Proxy","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","errorProto","LEGACY_ALIASES","$spliceApply","$strSlice","$exec","rePropName","reEscapeChar","stringToPath","number","subString","getBaseIntrinsic","allowMissing","alias","intrinsicName","doEval","gen","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","desc","percentTwenties","Format","formatters","RFC1738","RFC3986","capacity","semaphore","firstHere","take","isFirst","item","task","leave","available","createAuthorizationSasToken","masterKey","sasTokenProperties","resourcePrefixPath","databaseName","containerName","resourceName","resourceKind","resourcePath","partitionRanges","partitionKeyValueRanges","range","controlPlaneReaderScope","ContainerReadAny","controlPlaneWriterScope","dataPlaneReaderScope","dataPlaneWriterScope","ContainerFullAccess","keyType","PrimaryMaster","SecondaryMaster","PrimaryReadOnly","SecondaryReadOnly","user","userTag","utcsecondsSinceEpoch","startTime","expiryTime","date","getTime","GetIntrinsic","callBound","$Map","$mapGet","$mapSet","$mapHas","$mapDelete","$mapSize","$m","channel","assert","$actualApply","callBindBasic","$indexOf","formats","hexTable","arrayToObject","plainObjects","reduce","combine","compact","prop","refs","compacted","compactQueue","decode","defaultDecoder","charset","strWithoutPlus","defaultEncoder","kind","escape","$0","segment","maybeMap","mapped","merge","allowPrototypes","mergeTarget","targetItem","DEFAULT_PARTITION_KEY_PATH","StatusCodes","Ok","Created","Accepted","NoContent","NotModified","BadRequest","Unauthorized","Forbidden","NotFound","MethodNotAllowed","RequestTimeout","Conflict","Gone","PreconditionFailed","RequestEntityTooLarge","TooManyRequests","RetryWith","InternalServerError","ServiceUnavailable","ENOTFOUND","OperationPaused","OperationCancelled","SubStatusCodes","resourceType","resourceId","toUTCString","signed","trimLeftSlashes","trimRightSlashes","illegalResourceIdCharacters","illegalItemResourceIdCharacters","parseLink","objectBody","pathParts","id","isReadRequest","operationType","Read","getContainerLink","link","prepareURL","endpoint","path","trimSlashes","isResourceValid","resource","isItemResourceValid","getIdFromLink","resourceLink","getPathFromLink","isStringNullOrEmpty","inputString","trimSlashFromLeftAndRight","validateResourceId","getResourceIdFromPath","pathSegments","setAuthorizationHeader","clientOptions","verb","permissionFeed","resourceTokens","permission","setAuthorizationTokenHeaderUsingMasterKey","containerPath","getAuthorizationTokenUsingResourceTokens","tokenProvider","offer","none","sig","generateHeaders","NonePartitionKeyLiteral","convertToInternalPartitionKey","readPartitionKeyDefinition","diagnosticNode","container","extractPartitionKeys","partitionKeyDefinition","paths","systemKey","extractPartitionKey","partitionKeys","currentIndex","throwError","getEscapedToken","newIndex","parsePath","undefinedPartitionKey","setPartitionKeyIfUndefined","assertNotUndefined","msg","isPrimitivePartitionKeyValue","isWellDefinedPartitionKeyValue","isNonePartitionKeyValue","isNullPartitionKeyValue","isPartitionKey","defaultLogger","ChangeFeedMode","bodyFromData","getHeaders","defaultHeaders","partitionKeyRangeId","useMultipleWriteLocations","continuationTokenLimitInKB","continuationToken","continuation","preTriggerInclude","postTriggerInclude","offerType","offerThroughput","maxItemCount","accessCondition","condition","useAllVersionsAndDeletesFeed","AllVersionsAndDeletes","useIncrementalFeed","useLatestVersionFeed","LatestVersion","indexingDirective","consistencyLevel","priorityLevel","maxIntegratedCacheStalenessInMs","bypassIntegratedCache","resourceTokenExpirySeconds","sessionToken","enableScanInQuery","populateQuotaInfo","populateQueryMetrics","maxDegreeOfParallelism","post","put","enableScriptLogging","disableRUPerMinuteUsage","populateIndexMetrics","isKeyInRange","isAfterMinInclusive","localeCompare","isBeforeMax","BulkOperationType","Create","Upsert","Delete","Replace","Patch","populateIdsIfNeeded","operationInput","resourceBody","disableAutomaticIdGeneration","calculateObjectSizeInBytes","PatchOperationType","remove","incr","ConnectionMode","DataType","IndexingMode","SpatialType","VectorIndexType","GeospatialType","IndexKind","PartitionKeyKind","PartitionKeyDefinitionVersion","PermissionMode","TriggerOperation","TriggerType","UserDefinedFunctionType","VectorEmbeddingDataType","VectorEmbeddingDistanceFunction","databasesLink","mediaLink","maxMediaStorageUsageInMB","currentMediaStorageUsageInMB","consistencyPolicy","writableLocations","readableLocations","userConsistencyPolicy","defaultConsistencyLevel","Session","enableMultipleWritableLocations","ErrorResponse","diagnostics","substatus","ClientSideMetrics","requestCharge","clientSideMetricsArray","clientSideMetrics","zero","RetrievedDocumentCount","RetrievedDocumentSize","OutputDocumentCount","OutputDocumentSize","IndexHitRatio","IndexHitDocumentCount","TotalQueryExecutionTimeInMs","QueryCompileTimeInMs","LogicalPlanBuildTimeInMs","PhysicalPlanBuildTimeInMs","QueryOptimizationTimeInMs","IndexLookupTimeInMs","DocumentLoadTimeInMs","VMExecutionTimeInMs","DocumentWriteTimeInMs","QueryEngineTimes","SystemFunctionExecuteTimeInMs","UserDefinedFunctionExecutionTimeInMs","RetrievedDocumentCountText","RetrievedDocumentSizeText","OutputDocumentCountText","OutputDocumentSizeText","IndexUtilizationText","TotalQueryExecutionTimeText","QueryPreparationTimesText","QueryCompileTimeText","LogicalPlanBuildTimeText","PhysicalPlanBuildTimeText","QueryOptimizationTimeText","QueryEngineTimesText","IndexLookupTimeText","DocumentLoadTimeText","WriteOutputTimeText","RuntimeExecutionTimesText","TotalExecutionTimeText","SystemFunctionExecuteTimeText","UserDefinedFunctionExecutionTimeText","ClientSideQueryMetricsText","RetriesText","RequestChargeText","FetchExecutionRangesText","SchedulingMetricsText","maxMilliSeconds","MAX_SAFE_INTEGER","minMilliSeconds","MIN_SAFE_INTEGER","TimeSpan","days","hours","minutes","seconds","milliseconds","isInteger","totalMilliSeconds","_ticks","ts","additionDoesOverflow","results","fromTicks","subtractionDoesUnderflow","isTimeSpan","ticksPerHour","ticksPerMinute","ticksPerMillisecond","ticksPerSecond","timeSpan","timespan","t1","t2","scale","interval","millisPerSecond","millisPerMinute","millisPerHour","parseDelimitedString","delimitedString","metrics","headerAttributes","attribute","attributeKeyValue","attributeKey","attributeValue","timeSpanFromMetrics","fromMilliseconds","maxValue","minValue","queryCompilationTime","logicalPlanBuildTime","physicalPlanBuildTime","queryOptimizationTime","queryPreparationTimesArray","queryPreparationTimes","totalMilliseconds","queryEngineExecutionTime","systemFunctionExecutionTime","userDefinedFunctionExecutionTime","runtimeExecutionTimesArray","runtimeExecutionTimes","vmExecutionTime","indexLookupTime","documentLoadTime","documentWriteTime","subtract","retrievedDocumentCount","retrievedDocumentSize","outputDocumentCount","outputDocumentSize","indexHitDocumentCount","totalQueryExecutionTime","queryMetricsArray","clientSideQueryMetricsArray","queryMetrics","createFromArray","indexHitRatio","toDelimitedString","indexHitCount","createFromDelimitedString","getRequestChargeIfAny","rc","getInitialHeader","mergeHeaders","toBeMergedHeaders","headerQueryMetrics","toBeMergedHeaderQueryMetrics","partitionId","combinedQueryMetrics","indexUtilizationInfo","writeBeforeIndexUtilizationInfo","writeIndexUtilizationInfo","writeAfterIndexUtilizationInfo","appendNewlineToResult","appendHeaderToResult","indexUtilizationEntity","UtilizedSingleIndexes","writeSingleIndexUtilizationEntity","PotentialSingleIndexes","UtilizedCompositeIndexes","writeCompositeIndexUtilizationEntity","PotentialCompositeIndexes","IndexSpec","IndexImpactScore","IndexSpecs","headerTitle","indentLevel","repeat","resources","hasMoreResults","writer","IndexUtilizationInfo","createFromString","writeIndexMetrics","TimeoutError","getCurrentTimestampInMs","failedAttempts","metadataLookups","gaterwayStatistics","locationEndpointsContacted","requestStartTimeUTCinMs","retryAttemptNumber","attempt","attemptNumber","startTimeUTCInMs","durationInMs","substatusCode","subStatusCode","requestPayloadLengthInBytes","responsePayloadLengthInBytes","activityId","childDiagnostics","metadataType","gateway","metaDataType","lookup","endTimeUTCInMs","requestStartTimeUTCInMs","requestDurationInMs","totalRequestPayloadLengthInBytes","getTotalRequestPayloadLength","totalResponsePayloadLengthInBytes","getTotalResponsePayloadLength","metadataDiagnostics","retryDiagnostics","gatewayStatistics","totalRequestPayloadLength","totalResponsePayloadLength","location","CosmosDiagnostics","clientSideRequestStatistics","clientConfig","MetadataLookUpType","CosmosDbDiagnosticLevel","CosmosDbDiagnosticLevelOrder","debug","debugUnsafe","allowTracing","levelToCheck","clientDiagnosticLevel","indexOfDiagnosticLevelToCheck","indexOfClientDiagnosticLevel","diagnosticLevel","ctx","nodeType","children","diagnosticCtx","requestContext","pipelineResponse","gatewayRequest","correlateActivityId","calculateRequestPayloadLength","calculateResponsePayloadLength","requestData","responseBody","addData","recordNetworkCall","failedAttempty","recordFailedAttempt","correlatedActivityId","selectedLocation","recordEndpointResolution","addLog","child","level","mergeDiagnostics","previousCount","queryRecordsRead","toDiagnosticNode","clientConfigDiagnostic","rootNode","getRootNode","diagnostiNode","getClientSideStats","DiagnosticNodeType","create","__await","v","__asyncGenerator","thisArg","_arguments","generator","asyncIterator","AsyncIterator","resume","fulfill","settle","SuppressedError","getEmptyCosmosDiagnostics","CLIENT_REQUEST_NODE","addDignosticChild","childNode","initializeChildNode","updateTimestamp","failure","withMetadataDiagnostics","diagnosticNodeForMetadataCall","METADATA_REQUEST_NODE","addChildNode","withDiagnostics","clientContext","toDiagnostic","getClientConfig","recordDiagnostics","STATES","fetchFunctions","currentPartitionIndex","_canFetchMore","fetchMore","ended","originalContinuation","nextFetchFunction","verbose","childDiagnosticNode","recordQueryResult","bufferItems","fetchFunction","inProgress","DEFAULT_QUERY_NODE","queryMethodIdentifier","executionContext","aggregateHeaders","nextItem","OrderByEndpointComponent","emitRawOrderByPayload","digest","hashObject","object","hashedResult","hashedLastResult","hashedResults","AverageAggregator","other","count","CountAggregator","TYPEORDCOMPARATOR","freeze","NoValue","ord","boolean","compFunc","OrderByDocumentProducerComparator","sortOrder","docProd1","docProd2","getTargetParitionKeyRange","gotSplit","orderByItemsRes1","getOrderByItems","peekBufferedItems","orderByItemsRes2","validateOrderByItems","compRes","compareOrderByItem","targetPartitionKeyRangeDocProdComparator","item1","type1","item2","type2","type1Ord","typeCmp","orderByItem1","orderByItem2","getType","compareValue","res1","res2","orderByItem","comparer","otherType","thisType","SumAggregator","StaticValueAggregator","MakeListAggregator","MakeSetAggregator","createAggregator","aggregateType","extractAggregateResult","queryInfo","groupings","aggregateResultArray","completed","group","groupByItems","aggregators","effectiveGroupByValue","aggregateResult","aggregate","grouping","groupByAliasToAggregateType","aggregator","groupResult","aggregateKey","getResult","rangeMin","rangeMax","isMinInclusive","isMaxInclusive","range1","range2","partitionKeyRange","queryRangeDict","orderedPartitionKeyRanges","orderedPartitionInfo","orderedRanges","pkr","providedQueryRanges","pqr","minToPartitionRange","queryRange","isFullRange","minIndex","findIndex","maxIndex","overlaps","sort","compareRanges","aVal","bVal","createCompleteRoutingMap","partitionKeyRangeInfoTuppleList","rangeById","rangeByInfo","sortedRanges","partitionKeyOrderedRange","isComplete","firstRange","lastRange","previousRange","currentRange","isCompleteSetOfRange","collectionRoutingMapByCollectionId","collectionLink","forceRefresh","collectionId","requestCollectionRoutingMap","onCollectionRoutingMap","getOverlappingRanges","queryPartitionKeyRanges","fetchAllInternal","PartitionKeyRangeLookUp","PARITIONKEYRANGE","partitionKeyRangeCache","ranges","idx","previousR","_secondRangeIsAfterFirstRange","_stringMax","leftInclusive","_stringCompare","_isSortedAndNonOverlapping","partitionKeyRanges","collectionRoutingMap","currentProvidedRange","_subtractRange","overlappingRanges","lastKnownTargetRange","parsePartitionKeyRange","FetchResultType","FetchResult","feedResponse","fetchResultType","Result","Exception","query","targetPartitionKeyRange","generation","queryFeed","resultFn","Documents","fetchResults","allFetched","previousContinuationToken","respHeaders","internalExecutionContext","bufferedResults","fetchResult","Done","_needPartitionKeyRangeCacheRefresh","headerResponse","_updateStates","bufferedError","_getAndResetActiveResponseHeaders","bufferMore","ParallelQueryExecutionContextBaseStates","partitionedQueryExecutionInfo","diagnosticNodeWrapper","consumed","PARALLEL_QUERY_NODE","stateful","started","routingProvider","sortOrders","orderBy","requestContinuation","orderByPQ","documentProducerComparator","sem","targetPartitionRanges","_onTargetPartitionRanges","waitingForInternalExecutionContexts","parallelismSem","filteredPartitionKeyRanges","targetPartitionQueryExecutionContextList","partitionTargetRange","_createTargetPartitionQueryExecutionContext","documentProducer","getDiagnosticNode","_mergeWithActiveResponseHeaders","_decrementInitiationLock","queryRanges","parseFromDict","originFunction","parentDocumentProducer","replacementPartitionKeyRanges","_getReplacementPartitionKeyRanges","replacementDocumentProducers","replacementDocumentProducer","checkAndEnqueueDocumentProducer","documentProducerToCheck","checkNextDocumentProducerCallback","afterItem","checkAndEnqueueDocumentProducers","rdp","ifCallback","elseCallback","_repairExecutionContext","QUERY_REPAIR_NODE","QueryPlanLookUp","_repairExecutionContextIfNeeded","otherHeaders","partitionKeyTargetRange","sqlQuerySpec","rewrittenQuery","orderByComparator","aggregates","compareFn","pqMaxSize","pq","topItem","elements","unshift","reversePQ","NonStreamingOrderByMap","oldValue","replaceResults","OrderByComparator","priorityQueueBufferSize","isCompleted","aggregateMap","compareItems","nonStreamingOrderByPQ","resHeaders","buildFinalResultArray","finalResultArray","allValues","getAllValuesAndReset","offSet","finalArraySize","dequeue","vectorSearchBufferSize","nonStreamingOrderBy","pageSize","DEFAULT_PAGE_SIZE","hasNonStreamingOrderBy","allowUnboundedNonStreamingQueries","checkQueryConstraints","calculateVectorSearchBufferSize","maxBufferSize","DEFAULT_MAX_VECTOR_SEARCH_BUFFER_SIZE","distinctType","groupByExpressions","hasSelectValue","top","fetchBuffer","fetchMoreRespHeaders","_nonStreamingFetchMoreImplementation","_fetchMoreImplementation","temp","hasTop","hasLimit","FieldNames","HybridSearchQueryResult","rid","componentScores","outerPayload","innerPayload","GlobalStatisticsAggregator","globalStatistics","documentCount","fullTextStatistics","stat","totalWordCount","hitCounts","otherStat","HybridQueryExecutionContextBaseStates","allPartitionsRanges","componentsExecutionContext","TOTAL_WORD_COUNT_PLACEHOLDER","HIT_COUNTS_ARRAY_PLACEHOLDER","TOTAL_DOCUMENT_COUNT_PLACEHOLDER","RRF_CONSTANT","uninitialized","hybridSearchQueryInfo","requiresGlobalStatistics","globalStaticsQueryOptions","globalStatisticsAggregator","globalStatisticsQuery","globalStatisticsQueryExecutionInfo","partitionedQueryExecutionInfoVersion","globalStatisticsExecutionContext","createComponentExecutionContexts","initialized","nextItemRespHeaders","fetchMoreInternal","drainOne","initialize","executeComponentQueries","drain","hybridSearchResult","uniqueItems","componentExecutionContext","hybridItem","sortHybridSearchResultByRRFScore","applySkipAndTakeToBuffer","drainSingleComponent","skip","ranksArray","ranks","rank","rankIndex","rankItem","rrfScores","rrfScore","scoreItem","diagNode","queryInfos","componentQueryInfos","processComponentQueries","componentQueryInfo","componentPartitionExecutionInfo","globalStats","replacePlaceholdersWorkaroud","orderByExpressions","expr","componentCount","statisticsIndex","wordCountPlaceholder","hitCountPlaceholder","stats","fetchAllLastResHeaders","reset","isInitialized","queryPlanPromise","fetchQueryPlan","queryExecutionContext","needsQueryPlan","createExecutionContext","queryError","handleSplitError","toArrayImplementation","metadataNode","init","fetchAllTempResources","queryPlanResponse","queryPlan","createHybridQueryExecutionContext","createPipelinedExecutionContext","getOrderedParitionKeyRanges","minInclusive","maxExclusive","getQueryPlan","additionalErrorInfo","initPromise","_init","forceQueryPlan","originalError","createDatabaseUri","databaseId","createDocumentCollectionUri","createUserUri","userId","createDocumentUri","documentId","validateItemResourceId","conflicts","innerOptions","Conflicts","conflict","rus","etag","changeFeedOptions","partitionKeyValid","isPartitionSpecified","canUseStartFromBeginning","nextIfNoneMatch","ifModifiedSince","startFromBeginning","IfNoneMatchAllHeaderValue","lastStatusCode","fetchNext","getFeedResponse","feedOptions","initialHeaders","subsstatusCode","database","patch","ChangeFeedResourceType","hashPartitionKey","partitionDefinition","Hash","isV2","V2","MultiHash","hashMultiHashPartitionKey","ChangeFeedStartFromNow","cfResource","ChangeFeedStartFromBeginning","ChangeFeedStartFromTime","cToken","getCfResourceJson","FeedRange","FeedRangeInternal","validateChangeFeedIteratorOptions","isChangeFeedIteratorOptions","extractOverlappingRanges","epkRange","overLappingRange","buildInternalChangeFeedOptions","startFromNow","internalCfOptions","changeFeedMode","ContinuationTokenForPartitionKey","isInstantiated","setIteratorRid","continuationTokenRidMatchContainerRid","rId","readInternal","_rid","readNext","instantiateIterator","errorResponse","ChangeFeedRange","epkMinHeader","epkMaxHeader","newItem","allFeedRanges","feedRangeElement","CompositeContinuationToken","generateContinuationToken","returnSnapshot","fetchContinuationTokenFeedRanges","fetchOverLappingFeedRanges","overLappingRanges","feedRange","contToken","fillChangeFeedQueue","firstNotModifiedFeedRange","processedFeedRange","moveFirstElementToTheEnd","checkedAllFeedRanges","shouldRetryOnFailure","continuationValueForFeedRange","newFeedRange","feedRangeQueueFirstElement","resolvedRanges","handleSplit","shiftLeft","oldFeedRange","flag","modifyFirstElement","firstResolvedRange","rangeId","getPartitionRangeId","startEpk","endEpk","changeFeedIteratorBuilder","cfOptions","changeFeedStartFrom","Now","getResourceType","getCfResource","getStartTime","fetchStartTime","internalCfResource","isChangeFeedOptions","partitionKeyOrChangeFeedOptions","changeFeed","changeFeedIteratorOptions","ref","upsert","operations","bulkOptions","batches","keyRange","indexes","groupOperationsBasedOnPartitionKey","orderedResponses","batchMap","filter","batch","originalBatch","currentBatchSize","currentBatch","processedBatches","operation","currentOpSize","splitBatchBasedOnBodySize","all","executeBatchOperations","bulk","BATCH_REQUEST","operationResponse","newBatches","createNewBatches","indexValue","hashed","batchForKey","newBatch","definition","prepareOperations","decorateBatchOperation","storedProcedure","storedProcedureId","sproc","partitionKeyResponse","execute","sprocLink","StoredProcedures","trigger","triggerId","Triggers","udf","userDefinedFunction","udfId","UserDefinedFunctions","$sprocs","$triggers","$udfs","client","$items","$scripts","$conflicts","partitionKeyValue","partitionKeyDefinitionCache","readFromCache","ContainerLookUp","_self","Offers","readPartitionKeyRanges","feedRanges","validateOffer","throughput","maxThroughput","console","autoUpgradePolicy","DocumentCollections","createInternal","autoscaleParams","autoscaleHeader","createResponse","permissionId","Permissions","permissions","Users","containers","users","record","DatabaseLookUp","Databases","autoscaleHeaders","PluginOn","executePlugins","plugins","_","inner","plugin","CONNECTION_ERROR_CODES","DefaultRetryPolicy","maxTries","currentRetryAttemptCount","successfulRetryPolicy","globalEndpointManager","retryContext","locationEndpoint","enableEndpointDiscovery","markCurrentLocationUnavailableForRead","markCurrentLocationUnavailableForWrite","clearSessionTokenNotAvailable","retryRequestOnPreferredLocations","ResourceThrottleRetryPolicy","fixedRetryIntervalInMs","timeoutInSeconds","cummulativeWaitTimeinMs","timeoutInMs","connectionPolicy","canUseMultipleWriteLocations","endpoints","getReadEndpoints","getWriteEndpoints","methodType","enableEndPointDiscovery","maxRetryAttemptCount","maxServiceUnavailableRetryCount","failoverRetryCount","isQuery","isQueryPlan","isValidRequestForTimeoutError","readRequest","retryLocationServerIndex","findEndpointIndex","preferredLocationsCount","endpointIndex","retryPolicies","executeRequest","localDiagnosticNode","requestAttempNumber","endpointDiscoveryRetryPolicy","resourceThrottleRetryPolicy","fixedRetryIntervalInMilliseconds","maxWaitTimeInSeconds","sessionReadRetryPolicy","timeoutFailoverRetryPolicy","clearSessionToken","resolveServiceEndpoint","shouldRetry","newUrl","recordFailedNetworkCall","time","HTTP_REQUEST","cachedHttpClient","httpRequest","userSignal","requestTimeout","httpsClient","httpClient","reqHeaders","pipelineRequest","requestAgent","parsedUrl","recordSuccessfulNetworkCall","RequestHandler","REQUEST_ATTEMPTS","VectorSessionToken","globalLsn","localLsnByregion","regionAndLocalLsn","REGION_PROGRESS_SEPARATOR","regionProgress","SEGMENT_SEPARATOR","versionStr","globalLsnStr","regionSegments","lsnByRegion","regionSegment","regionIdStr","localLsnStr","regionId","localLsn","areRegionProgressEqual","higherVersionSessionToken","lowerVersionSessionToken","highestLocalLsnByRegion","highLocalLsn","lowLocalLsn","int1","int2","collectionNameToCollectionResourceId","collectionResourceIdToSessionTokens","collectionName","resourceAddress","rangeIdToTokenMap","getPartitionKeyRangeIdToTokenMap","getCombinedSessionTokenString","collectionResourceId","isReadingFromMaster","sessionTokenString","getContainerName","ownerId","isNameBased","validateOwnerID","containerSessionContainer","compareAndSetToken","tokens","EMPTY_SESSION_TOKEN","SESSION_TOKEN_PARTITION_SPLITTER","SESSION_TOKEN_SEPARATOR","newTokenString","containerSessionTokens","partitionsParts","partitionPart","newTokenParts","newToken","tokenForRange","ownerFullName","diagnosticsData","NoOpDiagnosticWriter","_diagnosticsData","DefaultDiagnosticFormatter","cosmosDiagnostic","cosmosClientOptions","sessionContainer","aadCredentials","scope","href","authorizationToken","initializeDiagnosticSettings","getContextDerivedPropsForRequestCreation","buildHeaders","applySessionToken","captureSessionToken","processQueryFeedResponse","disableNonStreamingOrderByQuery","NonStreamingOrderBy","pkranges","PartitionKeyRanges","getSessionParams","sessionConsistency","Execute","urlConnection","getWriteEndpoint","getReadEndpoint","Batch","continueOnError","isMasterResource","diagnostic","formatted","diagnosticFormatter","diagnosticWriter","parserOutput","DefaultDiagnosticLevelValue","acceptableDiagnosticLevelValues","cosmosDiagnosticLevel","variable","isCosmosDiagnosticLevel","setDiagnosticLevel","defaultConnectionPolicy","connectionMode","Gateway","preferredLocations","endpointRefreshRateInMs","enableBackgroundEndpointRefreshing","readDatabaseAccount","writeableLocations","unavailableReadableLocations","unavailableWriteableLocations","defaultEndpoint","loc","databaseAccountEndpoint","refreshEndpointList","unavailable","lastUnavailabilityTimestampInMs","canUse","startServiceEndpointIndex","resourceResponse","DatabaseAccountLookUp","locations","preferredLocation","normalizeEndpoint","databaseAccount","getDatabaseAccountFromAnyEndpoint","refreshStaleUnavailableLocations","refreshEndpoints","updateLocation","cleanUnavailableLocationList","unavailableLocations","allLocations","unavaialableLocation","getLocationalEndpoint","locationName","endpointUrl","hostname","hostnameParts","globalDatabaseAccountName","locationalDatabaseAccountName","optionsOrConnectionString","connectionString","keyValueStrings","AccountEndpoint","AccountKey","connectionObject","keyValueString","parseConnectionString","testString","initializeClientConfigDiagnostic","userAgentSuffix","getDatabaseAccountInternal","diagnosticLevelFromClientConfig","diagnosticLevelFromEnvironment","diagnosticLevelFromEnvOrClient","determineDiagnosticLevel","backgroundRefreshEndpointList","databases","offers","resourceTokensConfigured","tokenProviderConfigured","aadCredentialsConfigured","connectionPolicyConfigured","agentConfigured","pluginsConfigured","sDKVersion","getDatabaseAccount","endpointRefresher","refreshRate","setInterval","BACKGROUND_REFRESH_THREAD","warn","unref","ConflictResolutionMode","SasTokenProperties","ChangeFeedPolicy","retentionDuration","getRetentionInMinutes","retentionInMinutes","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","cmp","cycles","aobj","bobj","seenIndex","getUserAgent","suffix","ua","arch","userAgentDetails","hashV1PartitionKey","truncated","encodedJSBI","encodedValue","encodeByType","writeStringForBinaryEncoding","isShortString","MAX_STRING_BYTES_TO_APPEND","charByte","firstArg","REACT_ELEMENT_TYPE","REACT_PORTAL_TYPE","REACT_FRAGMENT_TYPE","REACT_STRICT_MODE_TYPE","REACT_PROFILER_TYPE","REACT_CONSUMER_TYPE","REACT_CONTEXT_TYPE","REACT_FORWARD_REF_TYPE","REACT_SUSPENSE_TYPE","REACT_MEMO_TYPE","REACT_LAZY_TYPE","MAYBE_ITERATOR_SYMBOL","ReactNoopUpdateQueue","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","emptyObject","Component","props","updater","ComponentDummy","PureComponent","isReactComponent","setState","partialState","forceUpdate","pureComponentPrototype","isPureReactComponent","isArrayImpl","ReactSharedInternals","H","A","T","S","ReactElement","owner","$$typeof","isValidElement","userProvidedKeyEscapeRegex","getElementKey","escaperLookup","noop$1","mapIntoArray","escapedPrefix","nameSoFar","oldElement","newKey","invokeCallback","_payload","maybeIterable","nextNamePrefix","thenable","fulfilledValue","resolveThenable","mapChildren","func","lazyInitializer","_status","ctor","_result","moduleObject","default","reportGlobalError","reportError","ErrorEvent","bubbles","cancelable","dispatchEvent","Children","forEachFunc","forEachContext","toArray","only","Fragment","Profiler","StrictMode","Suspense","__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","act","cloneElement","propName","childArray","createContext","defaultValue","_currentValue","_currentValue2","_threadCount","Provider","Consumer","createElement","childrenLength","defaultProps","createRef","forwardRef","render","lazy","memo","startTransition","prevTransition","currentTransition","returnValue","onStartTransitionFinish","unstable_useCacheRefresh","useCacheRefresh","use","usable","useActionState","action","initialState","permalink","useCallback","deps","useContext","Context","useDebugValue","useDeferredValue","initialValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useOptimistic","passthrough","reducer","useReducer","initialArg","useRef","useState","useSyncExternalStore","subscribe","getSnapshot","getServerSnapshot","useTransition","Scheduler","React","ReactDOM","formatProdErrorMessage","isValidContainer","REACT_LEGACY_ELEMENT_TYPE","REACT_PROVIDER_TYPE","REACT_SUSPENSE_LIST_TYPE","REACT_OFFSCREEN_TYPE","REACT_MEMO_CACHE_SENTINEL","getIteratorFn","REACT_CLIENT_REFERENCE","describeBuiltInComponentFrame","stack","reentry","describeNativeComponentFrame","construct","previousPrepareStackTrace","prepareStackTrace","RunInRootFrame","DetermineComponentFrameRoot","Fake","control","x$0","x$1","sample","displayName","namePropDescriptor","_RunInRootFrame$Deter","sampleStack","controlStack","sampleLines","controlLines","frame","describeFiber","fiber","getStackByFiberInDevAndProd","workInProgress","return","getNearestMountedFiber","nearestMounted","alternate","flags","getSuspenseInstanceFromFiber","suspenseState","memoizedState","dehydrated","assertIsMounted","ReactDOMSharedInternals","__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE","sharedNotPendingObject","pending","valueStack","createCursor","contextStackCursor","contextFiberStackCursor","rootInstanceStackCursor","hostTransitionProviderCursor","pushHostContainer","nextRootInstance","documentElement","namespaceURI","getOwnHostContext","parentNode","tagName","getChildHostContextProd","popHostContainer","pushHostContext","JSCompiler_inline_result","popHostContext","HostTransitionContext","scheduleCallback$3","unstable_scheduleCallback","cancelCallback$1","unstable_cancelCallback","shouldYield","unstable_shouldYield","requestPaint","unstable_requestPaint","unstable_now","getCurrentPriorityLevel","unstable_getCurrentPriorityLevel","ImmediatePriority","unstable_ImmediatePriority","UserBlockingPriority","unstable_UserBlockingPriority","NormalPriority$1","unstable_NormalPriority","LowPriority","unstable_LowPriority","IdlePriority","unstable_IdlePriority","log$1","unstable_setDisableYieldValue","rendererID","injectedHook","setIsStrictModeForDevtools","newIsStrictMode","setStrictMode","nextTransitionLane","nextRetryLane","getHighestPriorityLanes","lanes","pendingSyncLanes","getNextLanes","root","wipLanes","pendingLanes","nextLanes","suspendedLanes","pingedLanes","warmLanes","finishedLanes","nonIdlePendingLanes","checkIfRootIsPrerendering","renderLanes","computeExpirationTime","lane","currentTime","claimNextTransitionLane","claimNextRetryLane","createLaneMap","initial","laneMap","markRootUpdated$1","updateLane","markSpawnedDeferredLane","spawnedLane","entangledLanes","spawnedLaneIndex","entanglements","markRootEntangled","rootEntangledLanes","index$8","lanesToEventPriority","resolveUpdatePriority","updatePriority","getEventPriority","randomKey","internalInstanceKey","internalPropsKey","internalContainerInstanceKey","internalEventHandlersKey","internalEventHandlerListenersKey","internalEventHandlesSetKey","internalRootNodeResourcesKey","internalHoistableMarker","detachDeletedInstance","getClosestInstanceFromNode","targetNode","targetInst","getParentSuspenseInstance","getInstanceFromNode","getNodeFromInstance","inst","stateNode","getResourcesFromRoot","hoistableStyles","hoistableScripts","markNodeAsHoistable","allNativeEvents","registrationNameDependencies","registerTwoPhaseEvent","registrationName","dependencies","registerDirectEvent","canUseDOM","VALID_ATTRIBUTE_NAME_REGEX","illegalAttributeNameCache","validatedAttributeNameCache","setValueForAttribute","attributeName","removeAttribute","prefix$10","setValueForKnownAttribute","setValueForNamespacedAttribute","setAttributeNS","getToStringValue","isCheckable","elem","track","_valueTracker","valueField","descriptor","currentValue","stopTracking","trackValueOnNode","updateValueIfChanged","tracker","lastValue","getActiveElement","doc","activeElement","escapeSelectorAttributeValueInsideDoubleQuotesRegex","escapeSelectorAttributeValueInsideDoubleQuotes","ch","updateInput","lastDefaultValue","defaultChecked","setDefaultValue","initInput","isHydrating","ownerDocument","updateOptions","multiple","propValue","setDefaultSelected","selected","defaultSelected","disabled","updateTextarea","initTextarea","textContent","setTextContent","firstChild","lastChild","nodeValue","unitlessNumbers","setValueForStyle","styleName","isCustomProperty","setProperty","cssFloat","setValueForStyles","styles","prevStyles","styleName$16","styleName$17","isCustomElement","aliases","isJavaScriptProtocol","sanitizeURL","currentReplayingEvent","getEventTarget","nativeEvent","srcElement","correspondingUseElement","restoreTarget","restoreQueue","restoreStateOfTarget","internalInstance","querySelectorAll","otherNode","form","otherProps","isInsideEventHandler","batchedUpdates$1","flushSyncWork$1","getListener","passiveBrowserEventsSupported","startText","fallbackText","getData","startValue","startLength","endValue","endLength","minEnd","getEventCharCode","keyCode","charCode","functionThatReturnsTrue","functionThatReturnsFalse","createSyntheticEvent","Interface","SyntheticBaseEvent","reactName","reactEventType","nativeEventTarget","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","isPropagationStopped","preventDefault","stopPropagation","cancelBubble","persist","isPersistent","lastMovementX","lastMovementY","lastMouseEvent","EventInterface","eventPhase","timeStamp","isTrusted","SyntheticEvent","UIEventInterface","detail","SyntheticUIEvent","MouseEventInterface","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","getEventModifierState","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","SyntheticMouseEvent","SyntheticDragEvent","dataTransfer","SyntheticFocusEvent","SyntheticAnimationEvent","animationName","elapsedTime","pseudoElement","SyntheticClipboardEvent","clipboardData","SyntheticCompositionEvent","normalizeKey","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","translateToKey","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","modifierKeyToProp","Alt","Control","Meta","Shift","modifierStateGetter","keyArg","SyntheticKeyboardEvent","locale","which","SyntheticPointerEvent","pointerId","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","SyntheticTouchEvent","touches","targetTouches","changedTouches","SyntheticTransitionEvent","propertyName","SyntheticWheelEvent","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","SyntheticToggleEvent","newState","oldState","END_KEYCODES","canUseCompositionEvent","documentMode","canUseTextInputEvent","useFallbackCompositionData","SPACEBAR_CHAR","hasSpaceKeypress","isFallbackCompositionEnd","domEventName","getDataFromCustomEvent","isComposing","supportedInputTypes","color","datetime","email","month","password","tel","week","isTextInputElement","createAndAccumulateChangeEvent","dispatchQueue","accumulateTwoPhaseListeners","activeElement$1","activeElementInst$1","runEventInBatch","processDispatchQueue","getInstIfValueChanged","getTargetInstForChangeEvent","isInputEventSupported","JSCompiler_inline_result$jscomp$283","isSupported$jscomp$inline_418","element$jscomp$inline_419","oninput","stopWatchingForValueChange","detachEvent","handlePropertyChange","handleEventsForInputEventPolyfill","attachEvent","getTargetInstForInputEventPolyfill","getTargetInstForClickEvent","getTargetInstForInputOrChangeEvent","objectIs","is","shallowEqual","objA","objB","keysA","keysB","currentKey","getLeafNode","getNodeForCharacterOffset","nodeEnd","nextSibling","getActiveElementDeep","containerInfo","defaultView","HTMLIFrameElement","contentWindow","hasSelectionCapabilities","contentEditable","restoreSelection","priorSelectionInformation","curFocusedElem","focusedElem","priorSelectionRange","selectionRange","containsNode","outerNode","innerNode","contains","compareDocumentPosition","selectionStart","selectionEnd","getSelection","endMarker","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","focus","skipSelectionChangeEvent","activeElementInst","lastSelection","mouseDown","constructSelectEvent","makePrefixMap","styleProp","eventName","prefixes","vendorPrefixes","animationend","animationiteration","animationstart","transitionrun","transitionstart","transitioncancel","transitionend","prefixedEventNames","getVendorPrefixedEventName","prefixMap","animation","transition","ANIMATION_END","ANIMATION_ITERATION","ANIMATION_START","TRANSITION_RUN","TRANSITION_START","TRANSITION_CANCEL","TRANSITION_END","topLevelEventsToReactNames","simpleEventPluginEvents","registerSimpleEvent","concurrentQueues","concurrentQueuesIndex","concurrentlyUpdatedLanes","finishQueueingConcurrentUpdates","endIndex","update","markUpdateLaneFromFiberToRoot","enqueueUpdate$1","enqueueConcurrentHookUpdate","getRootForUpdatedFiber","enqueueConcurrentRenderForLane","sourceFiber","isHidden","childLanes","_visibility","hiddenUpdates","nestedUpdateCount","rootWithNestedUpdates","emptyContextObject","CapturedStacks","createCapturedValueAtFiber","existing","forkStack","forkStackIndex","treeForkProvider","treeForkCount","idStack","idStackIndex","treeContextProvider","treeContextId","treeContextOverflow","pushTreeFork","totalChildren","pushTreeId","baseIdWithLeadingBit","baseLength","numberOfOverflowBits","pushMaterializedTreeId","popTreeContext","hydrationParentFiber","nextHydratableInstance","hydrationErrors","rootOrSingletonContext","HydrationMismatchException","throwOnHydrationMismatch","queueHydrationError","prepareToHydrateHostInstance","memoizedProps","listenToNonDelegatedEvent","mediaEventTypes","suppressHydrationWarning","checkForUnmatchedText","popover","onScroll","onScrollEnd","onClick","onclick","popToNextHostParent","popHydrationState","JSCompiler_temp","shouldClear","shouldSetTextContent","getNextHydratable","resetHydrationState","SuspenseException","SuspenseyCommitException","noopSuspenseyCommitThenable","isThenableResolved","noop$3","trackUsedThenable","thenableState","workInProgressRoot","shellSuspendCounter","fulfilledThenable","rejectedThenable","suspendedThenable","getSuspendedThenable","thenableState$1","thenableIndexCounter$1","unwrapThenable","coerceRef","throwOnInvalidObjectType","returnFiber","newChild","resolveLazy","lazyType","createChildReconciler","shouldTrackSideEffects","deleteChild","childToDelete","deletions","deleteRemainingChildren","currentFirstChild","sibling","mapRemainingChildren","existingChildren","useFiber","pendingProps","createWorkInProgress","placeChild","newFiber","lastPlacedIndex","placeSingleChild","updateTextNode","createFiberFromText","mode","updateElement","elementType","updateFragment","createFiberFromTypeAndProps","updatePortal","portal","createFiberFromPortal","fragment","createFiberFromFragment","createChild","readContextDuringReconciliation","updateSlot","oldFiber","updateFromMap","newIdx","reconcileChildFibersImpl","newChildren","resultingFirstChild","previousNewFiber","nextOldFiber","reconcileChildrenArray","step","reconcileChildrenIterator","firstChildFiber","createFiberImplClass","reconcileChildFibers","mountChildFibers","currentTreeHiddenStackCursor","prevEntangledRenderLanesCursor","pushHiddenContext","entangledRenderLanes","baseLanes","reuseHiddenContextOnStack","popHiddenContext","suspenseHandlerStackCursor","shellBoundary","pushPrimaryTreeSuspenseHandler","handler","suspenseStackCursor","pushOffscreenSuspenseHandler","reuseSuspenseHandlerOnStack","popSuspenseHandler","findFirstSuspended","row","revealOrder","AbortControllerLocal","listener","scheduleCallback$2","NormalPriority","CacheContext","createCache","refCount","releaseCache","currentEntangledListeners","currentEntangledPendingCount","currentEntangledLane","currentEntangledActionThenable","pingEngtangledActionScope","prevOnStartTransitionFinish","entangledListeners","requestTransitionLane","entangleAsyncAction","resumedCache","peekCacheFromPool","cacheResumedFromPreviousRender","pooledCache","pushTransition","offscreenWorkInProgress","prevCachePool","pool","getSuspendedCache","cacheFromPool","currentlyRenderingFiber$1","currentHook","workInProgressHook","didScheduleRenderPhaseUpdate","didScheduleRenderPhaseUpdateDuringThisPass","shouldDoubleInvokeUserFnsInHooksDEV","localIdCounter","thenableIndexCounter","globalClientIdCounter","throwInvalidHookError","areHookInputsEqual","nextDeps","prevDeps","renderWithHooks","secondArg","nextRenderLanes","updateQueue","HooksDispatcherOnMount","HooksDispatcherOnUpdate","renderWithHooksAgain","finishRenderingHooks","ContextOnlyDispatcher","didRenderTooFewHooks","didReceiveUpdate","checkIfContextChanged","numberOfReRenders","lastEffect","events","stores","memoCache","HooksDispatcherOnRerender","TransitionAwareHostComponent","dispatcher","maybeThenable","useThenable","checkDidRenderIdHook","didRenderIdHook","bailoutHooks","resetHooksOnUnwind","mountWorkInProgressHook","hook","baseState","baseQueue","updateWorkInProgressHook","nextCurrentHook","nextWorkInProgressHook","readContext","useMemoCache","basicStateReducer","updateReducer","updateReducerImpl","lastRenderedReducer","pendingQueue","baseFirst","newBaseQueueFirst","newBaseQueueLast","didReadFromEntangledAsyncAction$54","workInProgressRootRenderLanes","revertLane","hasEagerState","eagerState","workInProgressRootSkippedLanes","lastRenderedState","dispatch","rerenderReducer","lastRenderPhaseUpdate","updateSyncExternalStore","isHydrating$jscomp$0","snapshotChanged","updateEffect","subscribeToStore","pushEffect","updateStoreInstance","pushStoreConsistencyCheck","renderedSnapshot","nextSnapshot","checkIfSnapshotChanged","forceStoreRerender","latestGetSnapshot","nextValue","scheduleUpdateOnFiber","mountStateImpl","initialStateInitializer","updateOptimisticImpl","dispatchActionState","actionQueue","setPendingState","isRenderPhaseUpdate","actionNode","isTransition","runActionStateAction","prevState","handleActionReturnValue","onActionError","error$60","nextState","onActionSuccess","notifyActionListeners","actionStateReducer","mountActionState","initialStateProp","ssrFormState","formState","JSCompiler_inline_result$jscomp$0","inRootOrSingleton","dispatchSetState","dispatchOptimisticSetState","updateActionState","updateActionStateImpl","stateHook","currentStateHook","actionQueueHook","actionStateActionEffect","rerenderActionState","updateRef","mountEffectImpl","fiberFlags","hookFlags","updateEffectImpl","mountEffect","updateInsertionEffect","updateLayoutEffect","imperativeHandleEffect","refCleanup","updateImperativeHandle","mountDebugValue","updateCallback","updateMemo","nextCreate","mountDeferredValueImpl","requestDeferredLane","updateDeferredValueImpl","prevValue","pendingState","finishedState","previousPriority","dispatchSetStateInternal","thenableWithOverride","chainThenableValue","requestUpdateLane","noop$2","startHostTransition","formFiber","ensureFormComponentIsStateful","requestFormReset$1","existingStateHook","initialResetState","useHostTransitionStatus","updateId","updateRefresh","refreshCache","provider","root$63","enqueueUpdate","createUpdate","entangleTransitions","dispatchReducerAction","enqueueRenderPhaseUpdate","entangleTransitionUpdate","currentState","throwIfDuringRender","queueLanes","useFormState","identifierPrefix","booleanOrThenable","applyDerivedStateFromProps","getDerivedStateFromProps","nextProps","classComponentUpdater","component","_reactInternals","checkShouldComponentUpdate","oldProps","newProps","nextContext","shouldComponentUpdate","callComponentWillReceiveProps","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","resolveClassComponentProps","baseProps","propName$67","defaultOnUncaughtError","defaultOnCaughtError","defaultOnRecoverableError","logUncaughtError","errorInfo","onUncaughtError","componentStack","e$68","logCaughtError","onCaughtError","errorBoundary","e$69","createRootErrorUpdate","createClassErrorUpdate","initializeClassErrorUpdate","getDerivedStateFromError","componentDidCatch","legacyErrorBoundariesThatAlreadyFailed","SelectiveHydrationException","reconcileChildren","nextChildren","updateForwardRef","propsWithoutRef","prepareToReadContext","bailoutOnAlreadyFinishedWork","updateMemoComponent","shouldConstruct","updateSimpleMemoComponent","checkScheduledUpdateOrContext","prevProps","updateFunctionComponent","updateOffscreenComponent","nextIsDetached","_pendingVisibility","markRef","deferHiddenOffscreenComponent","cachePool","nextBaseLanes","propagateParentContextChanges","replayFunctionComponent","updateClassComponent","contextType","initializeUpdateQueue","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","processUpdateQueue","suspendIfUpdateReadFromEntangledAsyncAction","componentDidMount","unresolvedOldProps","oldContext","contextType$jscomp$0","hasForceUpdate","cloneUpdateQueue","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","mountHostRootWithoutHydrating","SUSPENDED_MARKER","treeContext","retryLane","mountSuspenseOffscreenState","getRemainingWorkInPrimaryTree","primaryTreeDidDefer","workInProgressDeferredLane","updateSuspenseComponent","showFallback","didSuspend","JSCompiler_temp$jscomp$0","nextInstance","overflow","fallback","mountWorkInProgressOffscreenFiber","mountSuspensePrimaryChildren","retrySuspenseComponentWithoutHydrating","dataset","dgst","renderDidSuspendDelayIfPossible","retryDehydratedSuspenseBoundary","_reactRetry","subtreeFlags","primaryChildren","offscreenProps","createFiberFromOffscreen","scheduleSuspenseWorkOnFiber","propagationRoot","scheduleContextWorkOnParentPath","initSuspenseListRenderState","isBackwards","tail","lastContentRow","tailMode","renderState","rendering","renderingStartTime","updateSuspenseListComponent","beginWork","pushProvider","didSuspendBefore","attemptEarlyBailoutIfNoScheduledUpdate","lazyComponent","getComponentNameFromType","innerType","propagateContextChanges","isDehydrated","getResource","getOwnerDocumentFromRootContainer","setInitialProperties","resolveSingletonInstance","anyProps","hasAttribute","rel","crossOrigin","canHydrateInstance","canHydrateTextInstance","pooledCacheLanes","valueCursor","currentlyRenderingFiber","lastContextDependency","providerFiber","popProvider","contexts","forcePropagateEntireTree","nextFiber","firstContext","dependency","isInsidePropagationBailout","currentParent","currentDependencies","memoizedValue","readContextForConsumer","consumer","firstBaseUpdate","lastBaseUpdate","shared","hiddenCallbacks","enqueueCapturedUpdate","capturedUpdate","newFirst","newLast","clone","didReadFromEntangledAsyncAction","workInProgress$jscomp$0","instance$jscomp$0","lastPendingUpdate","firstPendingUpdate","isHiddenUpdate","callCallback","commitCallbacks","commitHookEffectListMount","finishedWork","firstEffect","captureCommitPhaseError","commitHookEffectListUnmount","nearestMountedAncestor$jscomp$0","nearestMountedAncestor","commitClassCallbacks","safelyCallComponentWillUnmount","componentWillUnmount","safelyAttachRef","instanceToUse","safelyDetachRef","error$112","commitHostMount","autoFocus","srcSet","srcset","commitHostUpdate","domElement","lastProps","propKey","lastProp","setProp","propKey$203","propKey$219","propKey$224","propKey$229","setPropOnCustomElement","propKey$234","updateProperties","isHostParent","getHostSibling","insertOrAppendPlacementNode","before","insertBefore","appendChild","offscreenSubtreeIsHidden","offscreenSubtreeWasHidden","needsFormReset","PossiblyWeakSet","nextEffect","shouldFireAfterActiveInstanceBlur","commitLayoutEffectOnFiber","finishedRoot","recursivelyTraverseLayoutEffects","__reactInternalSnapshotBeforeUpdate","error$111","commitSuspenseHydrationCallbacks","prevOffscreenSubtreeIsHidden","prevOffscreenSubtreeWasHidden","recursivelyTraverseReappearLayoutEffects","finishedRoot$jscomp$0","parentFiber","includeWorkInProgressEffects","detachFiberAfterEffects","hostParent","hostParentIsContainer","recursivelyTraverseDeletionEffects","commitDeletionEffectsOnFiber","deletedFiber","onCommitFiberUnmount","removeChild","prevHostParent","prevHostParentIsContainer","removeAttributeNode","prevHostParentIsContainer$119","clearSuspenseBoundary","retryIfBlockedOn","attachSuspenseRetryListeners","wakeables","retryCache","_retryCache","getRetryCache","wakeable","resolveRetryWakeable","recursivelyTraverseMutationEffects","root$jscomp$0","commitMutationEffectsOnFiber","currentHoistableRoot","commitReconciliationEffects","hoistableRoot","currentResource","getElementsByTagName","head","querySelector","maybeNodes","getHydratableHoistableCache","content","httpEquiv","charSet","mountHoistable","acquireResource","nextNode","tagCaches","getHoistableRoot","recursivelyResetForms","globalMostRecentFallbackTime","_current","recursivelyTraverseDisappearLayoutEffects","display","retryQueue","parent$jscomp$0","parent$113","parent$115","insertOrAppendPlacementNodeIntoContainer","_reactRootContainer","commitOffscreenPassiveMountEffects","previousCache","commitCachePassiveMountEffect","recursivelyTraversePassiveMountEffects","committedLanes","committedTransitions","commitPassiveMountOnFiber","_finishedWork$memoize2","onPostCommit","passiveEffectDuration","recursivelyTraverseAtomicPassiveEffects","recursivelyTraverseReconnectPassiveEffects","committedLanes$jscomp$0","committedTransitions$jscomp$0","suspenseyCommitFlag","recursivelyAccumulateSuspenseyCommit","accumulateSuspenseyCommitOnFiber","suspendedState","media","matchMedia","matches","loading","getStyleKey","getStylesheetSelectorFromKey","_p","onUnsuspend","stylesheetPropsFromRawProps","preloadPropsMap","adoptPreloadPropsForStylesheet","linkInstance","onload","onerror","stylesheets","preload","suspendResource","previousHoistableRoot","detachAlternateSiblings","previousFiber","recursivelyTraversePassiveUnmountEffects","commitPassiveUnmountEffectsInsideOfDeletedTree_begin","commitPassiveUnmountOnFiber","recursivelyTraverseDisconnectPassiveEffects","deletedSubtreeRoot","FiberNode","resetWorkInProgress","fiberTag","hostContext","itemProp","precedence","onLoad","onError","isHostHoistableType","primaryChildInstance","_pendingMarkers","_transitions","detach","attach","pendingChildren","markUpdate","preloadResourceAndSuspendIfNeeded","preloadResource","scheduleRetryEffect","workInProgressSuspendedRetryLanes","cutOffTailIfNeeded","hasRenderedATailFallback","lastTailNode","lastTailNode$131","bubbleProperties","completedWork","didBailout","newChildLanes","child$132","completeWork","pendingContext","queueRecoverableErrors","createElementNS","innerHTML","createTextNode","cache$144","listenToAllSupportedEvents","workInProgressRootExitStatus","workInProgressRootRenderTargetTime","unwindWork","unwindInterruptedWork","interruptedWork","DefaultAsyncDispatcher","getCacheForType","cacheForType","PossiblyWeakMap","workInProgressSuspendedReason","workInProgressThrownValue","workInProgressRootDidSkipSuspendedSiblings","workInProgressRootIsPrerendering","workInProgressRootDidAttachPingListener","workInProgressRootInterleavedUpdatedLanes","workInProgressRootPingedLanes","workInProgressRootConcurrentErrors","workInProgressRootRecoverableErrors","workInProgressRootDidIncludeRecursiveRenderUpdate","workInProgressTransitions","rootDoesHavePassiveEffects","rootWithPendingPassiveEffects","pendingPassiveEffectsLanes","pendingPassiveEffectsRemainingLanes","pendingPassiveTransitions","suspenseHandler","cancelPendingCommit","prepareFreshStack","markRootSuspended","ensureRootIsScheduled","performWorkOnRoot","forceSync","shouldTimeSlice","expiredLanes","exitStatus","prevExecutionContext","prevDispatcher","pushDispatcher","prevAsyncDispatcher","pushAsyncDispatcher","thrownValue","throwAndUnwindWorkLoop","replaySuspendedUnitOfWork","hostFiber","completeUnitOfWork","resetWorkInProgressStack","workLoopConcurrent","thrownValue$166","handleThrow","renderRootConcurrent","renderRootSync","renderWasConcurrent","isRenderConsistentWithExternalStores","errorRecoveryDisabledLanes","wasRootDehydrated","timeoutHandle","scheduleTimeout","commitRootWhenReady","errors","recoverableErrors","transitions","didIncludeRenderPhaseUpdate","updatedLanes","suspendedRetryLanes","didSkipSuspendedSiblings","suspendedCommitReason","completedRenderStartTime","completedRenderEndTime","unsuspend","insertSuspendedStylesheets","commit","stylesheetTimer","waitForCommitToBeReady","commitRoot","check","didAttemptEntireTree","expirationTimes","index$6","flushSyncWorkAcrossRoots_impl","cancelTimeout","allEntangledLanes","index$4","shouldYieldForPrerendering","unitOfWork","workLoopSync","thrownValue$164","performUnitOfWork","suspendedReason","rootRenderLanes","attachPingListener","markerInstances","wrapperError","throwException","unwindUnitOfWork","skipSiblings","previousUpdateLanePriority","renderPriorityLevel","flushPassiveEffects","callbackNode","callbackPriority","remainingLanes","previouslyPendingLanes","index$7","hiddenUpdatesForLane","markRootFinished","scheduleCallback$1","eventsEnabled","_enabled","selection","e$20","indexWithinAnchor","indexWithinFocus","selectionInformation","resolvedPrevProps","clearContainerSparingly","commitBeforeMutationEffects","releaseRootPooledCache","onCommitFiberRoot","onCommitRoot","onRecoverableError","commitRootImpl","root$170","renderPriority","onPostCommitFiberRoot","captureCommitPhaseErrorOnRoot","rootFiber","pingCache","threadIDs","pingSuspendedRoot","retryTimedOutBoundary","boundaryFiber","firstScheduledRoot","lastScheduledRoot","didScheduleMicrotask","mightHavePendingSyncWork","isFlushingWork","currentEventTransitionLane","cb","processRootScheduleInMicrotask","scheduleMicrotask","syncTransitionLanes","onlyLegacy","didPerformSomeWork","root$172","performSyncWorkOnRoot","currentPopstateTransitionEvent","shouldAttemptEagerTransition","scheduleTaskForRootDuringMicrotask","index$5","expirationTime","performWorkOnRootViaSchedulerTask","didTimeout","originalCallbackNode","workInProgressRootRenderLanes$jscomp$0","coerceFormActionProp","actionProp","createFormDataWithSubmitter","submitter","i$jscomp$inline_1439","eventName$jscomp$inline_1440","nonDelegatedEvents","eventSystemFlags","_dispatchQueue$i","previousInstance","i$jscomp$0","_dispatchListeners$i","targetElement","listenerSetKey","addTrappedEventListener","listenToNativeEvent","isCapturePhaseListener","listeningMarker","rootContainerElement","targetContainer","listenerWrapper","dispatchDiscreteEvent","dispatchContinuousEvent","capture","passive","dispatchEventForPluginEventSystem","targetInst$jscomp$0","ancestorInst","nodeTag","grandTag","SyntheticEventCtor","inCapturePhase","accumulateTargetOnly","reactEventName","lastHostComponent","_instance","createDispatchListener","parentWindow","getParent","accumulateEnterLeaveListenersForEvent","getTargetInstFunc","handleEventFunc","fallbackData","eventType","getNativeBeforeInputChars","char","getFallbackBeforeInputChars","maybeTargetInst","formAction","extractEvents$1","targetFiber","captureName","_instance2","common","_instance3","NORMALIZE_NEWLINES_REGEX","NORMALIZE_NULL_AND_REPLACEMENT_REGEX","normalizeMarkupForTextOrAttribute","markup","serverText","clientText","formEncType","formMethod","formTarget","encType","__html","muted","hasSrc","hasSrcSet","propValue$186","parentNamespace","dangerouslySetInnerHTML","localPromise","queueMicrotask","handleErrorInNextTick","parentInstance","suspenseInstance","targetInstance","previousSibling","rootContainerInstance","preconnectsSet","previousDispatcher","previousWasRendering","wasRendering","formInst","D","preconnectAs","C","L","as","globalDocument","preloadSelector","imageSrcSet","imageSizes","getScriptKey","getScriptSelectorFromKey","X","scripts","adoptPreloadPropsForScript","insertStylesheet","M","limitedEscapedHref","currentProps","preloadProps","styles$242","resource$243","integrity","hrefLang","referrerPolicy","rawProps","styleProps","instance$248","nodes","prior","stylesheetProps","scriptProps","keyAttribute","caches","nodeKey","precedencesByRoot","insertStylesheetIntoRoot","precedences","FiberRootNode","hydrate","incompleteTransitions","createFiberRoot","initialChildren","hydrationCallbacks","isStrictMode","transitionCallbacks","getContextForSubtree","parentComponent","updateContainerImpl","markRetryLaneImpl","markRetryLaneIfNotHydrated","attemptContinuousHydration","blockedOn","findInstanceBlockingEvent","return_targetInst","clearIfContinuousEvent","queuedFocus","accumulateOrCreateContinuousQueuedReplayableEvent","queuedDrag","queuedMouse","queuedPointers","queuedPointerCaptures","queueIfContinuousEvent","discreteReplayableEvents","findInstanceBlockingTarget","hasScheduledReplayAttempt","queuedExplicitHydrationTargets","existingQueuedEvent","targetContainers","attemptExplicitHydrationTarget","queuedTarget","priority","runWithPriority","attemptReplayContinuousQueuedEvent","queuedEvent","nextBlockedOn","nativeEventClone","attemptReplayContinuousQueuedEventInMap","replayUnblockedEvents","scheduleCallbackIfUnblocked","unblocked","lastScheduledReplayQueue","scheduleReplayQueueIfNeeded","formReplayingQueue","submitterOrAction","unblock","$$reactFormReplay","formProps","ReactDOMRoot","internalRoot","_internalRoot","ReactDOMHydrationRoot","unmount","unstable_scheduleHydration","isomorphicReactPackageVersion$jscomp$inline_1686","findDOMNode","componentOrElement","parentA","parentB","didFindChild","child$2","findCurrentFiberUsingSlowPath","findCurrentHostFiberImpl","internals$jscomp$inline_2165","bundleType","rendererPackageName","currentDispatcherRef","findFiberByHostInstance","reconcilerVersion","hook$jscomp$inline_2166","isDisabled","supportsFiber","inject","createRoot","unstable_strictMode","unstable_transitionCallbacks","hydrateRoot","heap","parentIndex","halfLength","leftIndex","rightIndex","sortIndex","performance","localPerformance","localDate","initialTime","taskQueue","timerQueue","taskIdCounter","currentTask","currentPriorityLevel","isPerformingWork","isHostCallbackScheduled","isHostTimeoutScheduled","localSetTimeout","localClearTimeout","localSetImmediate","setImmediate","advanceTimers","handleTimeout","requestHostCallback","firstTimer","requestHostTimeout","schedulePerformWorkUntilDeadline","isMessageLoopRunning","taskTimeoutID","frameInterval","shouldYieldToHost","performWorkUntilDeadline","hasMoreWork","previousPriorityLevel","continuationCallback","MessageChannel","port","port2","port1","onmessage","postMessage","ms","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","fps","unstable_getFirstCallbackNode","unstable_next","eventHandler","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","parentPriorityLevel","Timeout","clearFn","_id","_clearFn","clearInterval","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","clearImmediate","registerImmediate","nextHandle","tasksByHandle","currentlyRunningATask","attachTo","handle","runIfPresent","postMessageIsAsynchronous","oldOnMessage","canUsePostMessage","messagePrefix","onGlobalMessage","installPostMessageImplementation","installMessageChannelImplementation","html","script","onreadystatechange","installReadyStateChangeImplementation","Internals","createPortal$1","getCrossOriginStringAs","createPortal","flushSync","previousTransition","previousUpdatePriority","preconnect","prefetchDNS","preinit","fetchPriority","nonce","preinitModule","preloadModule","requestFormReset","unstable_batchedUpdates","useFormStatus","lens","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","punycode","Url","slashes","auth","host","pathname","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","querystring","urlParse","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","rest","simplePath","proto","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","ae","esc","qm","arrayFormat","addQueryPrefix","relative","resolveObject","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","up","isAbsolute","freeGlobal","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","mapDomain","ucs2decode","extra","counter","ucs2encode","digitToBasic","adapt","delta","numPoints","firstTime","baseMinusTMin","basic","oldi","w","t","baseMinusT","bias","handledCPCount","basicLength","handledCPCountPlusOne","qMinusT","define","webpackPolyfill","deprecate","getSideChannel","utils","arrayPrefixGenerators","brackets","comma","indices","pushToArray","valueOrArray","toISO","toISOString","defaultFormat","defaults","allowDots","allowEmptyArrays","charsetSentinel","commaRoundTrip","delimiter","encodeDotInKeys","encoder","encodeValuesOnly","formatter","serializeDate","skipNulls","strictNullHandling","sentinel","generateArrayPrefix","sideChannel","tmpSc","findFlag","objKeys","encodedPrefix","adjustedPrefix","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","getSideChannelList","getSideChannelMap","makeChannel","$channelData","listGetNode","isDelete","curr","$o","deletedNode","objects","listDelete","listGet","listHas","listSet","EvalError","ReferenceError","URIError","$isNaN","origSymbol","hasSymbolSham","sym","symObj","getOwnPropertyNames","reflectGetProto","originalGetProto","getDunderProto","hasProtoAccessor","callBind","gOPD","$getPrototypeOf","ERROR_MESSAGE","concatty","slicy","arrLike","joiny","joiner","bound","binder","boundLength","boundArgs","Empty","$reflectApply","$hasOwn","$WeakMap","$weakMapGet","$weakMapSet","$weakMapHas","$weakMapDelete","$wm","allowSparse","arrayLimit","decodeDotInKeys","decoder","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","strictDepth","throwOnLimitExceeded","numberStr","parseArrayValue","currentArrayLength","parseKeys","givenKey","valuesParsed","chain","parentKey","leaf","cleanRoot","decodedRoot","0","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","encodedVal","parseValues","newObj","AzureKeyCredential","_key","isTokenCredential","castCredential","signRequest","CONNECTION_STRING_REGEX","parsedConnectionString","tryParseConnectionString","assertValidEndpoint","isValidEndpoint","byte","shaHMAC","secret","encodeUTF8fromBase64","createCommunicationAccessKeyCredentialPolicy","utcNow","contentHash","shaHash","urlPathAndQuery","hostAndPort","stringToSign","encodeByteArray","decodeString","byteString","XML_ATTRKEY","validateISODuration","validUuidRegex","flattenResponse","fullResponse","responseSpec","parsedHeaders","parsedBody","bodyMapper","isNullable","nullable","expectedBodyTypeName","readableStreamBody","modelProperties","isPageableResponse","serializedName","arrayResponse","responseObject","combinedHeadersAndBody","hasNullableType","shouldWrapBody","handleNullableResponseAndWrappableBody","mapperTypeName","modelMappers","isXML","mapper","objectName","failValidation","constraintName","constraintValue","constraints","ExclusiveMaximum","ExclusiveMinimum","InclusiveMaximum","InclusiveMinimum","MaxItems","MaxLength","MinItems","MinLength","MultipleOf","Pattern","UniqueItems","pattern","ar","xml","rootName","includeRoot","xmlCharKey","mapperType","isConstant","required","typeName","objectType","pipe","serializeBasicTypes","allowedValues","serializeEnumType","substring","dateToUnixTime","isDuration","serializeDateTypes","serializeByteArrayType","trimEnd","bufferToBase64Url","serializeBase64UrlType","serializer","isXml","className","tempArray","serializedValue","serialize","xmlNamespace","xmlnsKey","xmlNamespacePrefix","serializeSequenceType","valueType","tempDictionary","getXmlObjectValue","serializeDictionaryType","getPolymorphicDiscriminatorRecursively","getPolymorphicMapper","modelProps","resolveModelProperties","propertyMapper","readOnly","parentObject","xmlIsWrapped","xmlName","xmlElementName","splitSerializeName","pathName","childObject","propertyObjectName","toSerialize","polymorphicDiscriminator","clientName","xmlIsAttribute","additionalPropertiesMapper","additionalProperties","modelMapper","resolveReferencedMapper","resolveAdditionalProperties","propNames","clientPropName","every","pn","serializeCompositeType","ignoreUnknownProperties","handledPropertyNames","headerCollectionPrefix","dictionary","headerKey","deserialize","xmlIsMsText","wrapped","elementList","propertyInstance","steps","arrayInstance","isAdditionalProperty","responsePropName","isSpecialXmlProperty","deserializeCompositeType","unixTimeToDate","base64UrlToByteArray","deserializeSequenceType","deserializeDictionaryType","classes","partialclass","subwords","polymorphicPropertyName","discriminatorName","discriminatorValue","uberParent","polymorphicMapper","discriminators","typeNamesToCheck","currentName","indexDiscriminator","getIndexDiscriminator","getPolymorphicDiscriminatorSafely","MapperTypeNames","operationRequestMap","getOperationArgumentValueFromParameter","operationArguments","parameter","fallbackObject","parameterPath","parameterMapper","propertySearchResult","getPropertyFromParameterPath","propertyFound","useDefaultValue","propertyValue","parameterPathPart","originalRequestSymbol","getOperationRequestInfo","hasOriginalRequest","defaultJsonContentTypes","defaultXmlContentTypes","deserializationPolicy","jsonContentTypes","expectedContentTypes","json","xmlContentTypes","parseXML","serializerOptions","deserializeResponseBody","parsedResponse","contentComponents","errCode","operationInfo","shouldDeserialize","shouldDeserializeResponse","operationSpec","responses","operationResponseGetter","getOperationResponseMap","shouldReturnResponse","isSuccessByStatus","expectedStatusCodes","isOperationSpecEmpty","errorResponseSpec","initialErrorMessage","defaultBodyMapper","defaultHeadersMapper","headersMapper","deserializedError","valueToDeserialize","elementName","internalError","defaultError","handleErrorResponse","deserializeError","httpMethod","getPathStringFromParameter","serializationPolicy","stringifyXML","serializeHeaders","serializeRequestBody","headerParameters","headerParameter","headerValue","customHeaders","requestOptions","customHeaderName","requestBodyParameterPathString","isStream","getXmlValueWithNamespace","prepareXMLRootList","mediaType","formDataParameters","formDataParameter","formDataParameterValue","formDataParameterPropertyName","xmlNamespaceKey","CollectionFormatToDelimiterMap","CSV","SSV","Multi","TSV","Pipes","getRequestUrl","baseUri","urlReplacements","urlParameters","urlParameter","urlParameterValue","parameterPathString","skipEncoding","calculateUrlReplacements","isAbsolutePath","requestUrl","replaceAll","pathToAppend","newPath","searchStart","appendPath","queryParams","sequenceParams","queryParameters","queryParameter","queryParameterValue","collectionFormat","calculateQueryParameters","noOverwrite","combinedParams","simpleParseQueryParams","existingValue","valueSet","searchPieces","appendQueryParams","replacements","searchValue","replaceValue","queryString","pairs","pair","EmailSendResult","ErrorDetail","details","additionalInfo","ErrorAdditionalInfo","EmailMessage","senderAddress","recipients","attachments","replyTo","disableUserEngagementTracking","EmailContent","subject","plainText","EmailRecipients","to","cc","bcc","EmailAddress","address","EmailAttachment","contentInBase64","EmailGetSendResultHeaders","retryAfter","EmailGetSendResultExceptionHeaders","xMsErrorCode","EmailSendHeaders","operationLocation","EmailSendExceptionHeaders","accept","apiVersion","POLL_INTERVAL_IN_MS","terminalStates","deserializeState","serializedState","setStateError","inputs","stateProxy","isOperationError","setError","setFailed","appendReadableErrorMessage","currentMessage","innerMessage","processOperationStatus","isDone","processResult","setErrorAsResult","setSucceeded","postfix","curErr","innererror","simplifyError","errStr","setCanceled","setResult","buildResult","initOperation","getOperationStatus","withOperationLocation","resourceLocation","metadata","initState","pollOperation","poll","getResourceLocation","getOperationLocation","getPollingInterval","updateState","setDelay","pollOperationHelper","intervalInMs","isUpdated","getOperationLocationPollingUrl","azureAsyncOperation","getLocationHeader","rawResponse","getOperationLocationHeader","getAzureAsyncOperationHeader","findResourceLocation","requestMethod","requestPath","resourceLocationConfig","getDefault","inferLroMode","pollingUrl","normalizedRequestMethod","toLocaleUpperCase","transformStatus","toLocaleLowerCase","toOperationStatus","parseRetryAfter","retryAfterInSeconds","retryAfterDate","timeNow","retryAfterTime","calculatePollingIntervalFromDate","getErrorFromResponse","accessBodyProperty","helper","getStatus","provisioningState","getProvisioningState","flatResponse","lro","lroResourceLocationConfig","pollerConfig","isStarted","isCancelled","setRunning","isCanceled","isFailed","isRunning","isSucceeded","sendInitialRequest","initHttpOperation","inputState","inputOptions","sendPollRequest","pollHttpOperation","fireProgress","PollerStoppedError","PollerCancelledError","resolveOnUnsuccessful","stopped","pollProgressCallbacks","promise","pollOptions","isStopped","processUpdatedState","pollOncePromise","pollOnce","clearPollOncePromise","startPolling","cancelPromise","cancelOnce","resumeFrom","setPollerConfig","sendOperationFn","spec","restSpec","operationId","sendOperationRequest","getSendResultOperationSpec","directSendOperation","currentRawResponse","providedCallback","onResponse","updatedArgs","sendOperationSpec","poller","updateIntervalInMs","beginSend","pollUntilDone","200","201","202","204","_requestContentType","requestContentType","_endpoint","_allowInsecureConnection","_httpClient","credentialScopes","getCredentialScopes","credentialOptions","serializationOptions","deserializationOptions","createClientPipeline","createDefaultPipeline","additionalPolicies","policy","position","baseUrl","getStreamingResponseStatusCodes","addCustomApiVersionPolicy","apiVersionPolicy","param","newParams","connectionStringOrUrl","credentialOrOptions","maybeOptions","parseClientArguments","isEmailClientOptions","internalPipelineOptions","authPolicy","policyOptions","createCommunicationAuthPolicy","generatedClient","tryCreateFromDelimitedString","isBase64Encoded","tryCreateFromDelimitedBase64String"],"mappings":"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BACA,aACA,qBACA,cACA,sBACA,8BAbF,CAAYA,MAAY,KAmBxB,SAAYC,GACV,YACA,gBACA,cACA,YACA,kBALF,CAAYA,MAAU,KAWtB,SAAYC,GACV,kBACA,oBACA,kBACA,kBACA,cACA,gBACA,oBACA,gBACA,gBATF,CAAYA,MAAa,KAezB,SAAYC,GACV,iCACA,qCACA,qCACA,yCAJF,CAAYA,MAAa,KAUzB,SAAYC,GACV,cACA,qCACA,8CACA,oBAJF,CAAYA,MAAgC,KAS5C,SAAYC,GAIV,qDACA,uEACA,uDACA,iEACA,0EACA,0DACA,oEAEA,2EACA,2EACA,2DACA,uEACA,8EACA,8EACA,gEACA,+DACA,2EAEA,2EACA,2EAMA,8EAGA,6EACA,6EAQA,iFAOA,6EACA,mEACA,yFACA,iGACA,0EACA,4EACA,gDACA,uEACA,+EACA,uDAEA,uEACA,yEACA,uEACA,uEACA,8FACA,gGACA,8FACA,iGACA,+EACA,iFACA,gFACA,wGACA,0GACA,wGACA,mFACA,yDACA,wDACA,wDACA,iFACA,+EACA,iFACA,yFACA,wFACA,kEACA,gEAEA,oFACA,kEAEA,sFACA,wEAQA,6BAjGF,CAAYA,MAAqB,KAsGjC,SAAYC,GACV,mDACA,qDACA,mDACA,qDACA,yDACA,+CACA,sEACA,iEACA,wEACA,sEACA,2DACA,sDACA,6DACA,4DACA,oFACA,6EACA,sFACA,oFACA,2EACA,wDACA,+DACA,4CACA,0DACA,qCACA,wCACA,4BACA,qCACA,oCACA,oCACA,iDACA,2DACA,yDACA,2DACA,yDACA,mEACA,kEACA,mCACA,8CACA,4CAvCF,CAAYA,MAAsB,KA0ClC,SAAYC,GACV,wCACA,wBACA,sBACA,oCACA,kCACA,oBACA,YACA,0CACA,oBACA,0CACA,4CACA,4CACA,oBACA,8BAdF,CAAYA,MAAY,M,6BC7dtBC,EAAOC,QAAUC,EAAQ,K,iXCkBrB,MAAOC,UAAmBC,MAC9B,YAAYC,GACVC,MAAMD,GACNE,KAAKC,KAAO,cCJV,SAAUC,EAAMC,EAAkBC,GACtC,IAAIC,EACJ,MAA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","file":"static/js/2.dccd9bc2.chunk.js","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport interface PartitionKeyRangePropertiesNames {\n // Partition Key Range Constants\n MinInclusive: \"minInclusive\";\n MaxExclusive: \"maxExclusive\";\n Id: \"id\";\n}\n\n/**\n * @hidden\n */\nexport const Constants = {\n HttpHeaders: {\n Authorization: \"authorization\",\n ETag: \"etag\",\n MethodOverride: \"X-HTTP-Method\",\n Slug: \"Slug\",\n ContentType: \"Content-Type\",\n LastModified: \"Last-Modified\",\n ContentEncoding: \"Content-Encoding\",\n CharacterSet: \"CharacterSet\",\n UserAgent: \"User-Agent\",\n IfModifiedSince: \"If-Modified-Since\",\n IfMatch: \"If-Match\",\n IfNoneMatch: \"If-None-Match\",\n ContentLength: \"Content-Length\",\n AcceptEncoding: \"Accept-Encoding\",\n KeepAlive: \"Keep-Alive\",\n CacheControl: \"Cache-Control\",\n TransferEncoding: \"Transfer-Encoding\",\n ContentLanguage: \"Content-Language\",\n ContentLocation: \"Content-Location\",\n ContentMd5: \"Content-Md5\",\n ContentRange: \"Content-Range\",\n Accept: \"Accept\",\n AcceptCharset: \"Accept-Charset\",\n AcceptLanguage: \"Accept-Language\",\n IfRange: \"If-Range\",\n IfUnmodifiedSince: \"If-Unmodified-Since\",\n MaxForwards: \"Max-Forwards\",\n ProxyAuthorization: \"Proxy-Authorization\",\n AcceptRanges: \"Accept-Ranges\",\n ProxyAuthenticate: \"Proxy-Authenticate\",\n RetryAfter: \"Retry-After\",\n SetCookie: \"Set-Cookie\",\n WwwAuthenticate: \"Www-Authenticate\",\n Origin: \"Origin\",\n Host: \"Host\",\n AccessControlAllowOrigin: \"Access-Control-Allow-Origin\",\n AccessControlAllowHeaders: \"Access-Control-Allow-Headers\",\n KeyValueEncodingFormat: \"application/x-www-form-urlencoded\",\n WrapAssertionFormat: \"wrap_assertion_format\",\n WrapAssertion: \"wrap_assertion\",\n WrapScope: \"wrap_scope\",\n SimpleToken: \"SWT\",\n HttpDate: \"date\",\n Prefer: \"Prefer\",\n Location: \"Location\",\n Referer: \"referer\",\n A_IM: \"A-IM\",\n\n // Query\n Query: \"x-ms-documentdb-query\",\n IsQuery: \"x-ms-documentdb-isquery\",\n IsQueryPlan: \"x-ms-cosmos-is-query-plan-request\",\n SupportedQueryFeatures: \"x-ms-cosmos-supported-query-features\",\n QueryVersion: \"x-ms-cosmos-query-version\",\n\n // Our custom Azure Cosmos DB headers\n Continuation: \"x-ms-continuation\",\n ContinuationToken: \"x-ms-continuation-token\",\n PageSize: \"x-ms-max-item-count\",\n ItemCount: \"x-ms-item-count\",\n ChangeFeedWireFormatVersion: \"x-ms-cosmos-changefeed-wire-format-version\",\n\n // Request sender generated. Simply echoed by backend.\n ActivityId: \"x-ms-activity-id\",\n CorrelatedActivityId: \"x-ms-cosmos-correlated-activityid\",\n PreTriggerInclude: \"x-ms-documentdb-pre-trigger-include\",\n PreTriggerExclude: \"x-ms-documentdb-pre-trigger-exclude\",\n PostTriggerInclude: \"x-ms-documentdb-post-trigger-include\",\n PostTriggerExclude: \"x-ms-documentdb-post-trigger-exclude\",\n IndexingDirective: \"x-ms-indexing-directive\",\n SessionToken: \"x-ms-session-token\",\n ConsistencyLevel: \"x-ms-consistency-level\",\n XDate: \"x-ms-date\",\n CollectionPartitionInfo: \"x-ms-collection-partition-info\",\n CollectionServiceInfo: \"x-ms-collection-service-info\",\n // Deprecated, use RetryAfterInMs instead.\n RetryAfterInMilliseconds: \"x-ms-retry-after-ms\",\n RetryAfterInMs: \"x-ms-retry-after-ms\",\n IsFeedUnfiltered: \"x-ms-is-feed-unfiltered\",\n ResourceTokenExpiry: \"x-ms-documentdb-expiry-seconds\",\n EnableScanInQuery: \"x-ms-documentdb-query-enable-scan\",\n EmitVerboseTracesInQuery: \"x-ms-documentdb-query-emit-traces\",\n EnableCrossPartitionQuery: \"x-ms-documentdb-query-enablecrosspartition\",\n ParallelizeCrossPartitionQuery: \"x-ms-documentdb-query-parallelizecrosspartitionquery\",\n ResponseContinuationTokenLimitInKB: \"x-ms-documentdb-responsecontinuationtokenlimitinkb\",\n\n // QueryMetrics\n // Request header to tell backend to give you query metrics.\n PopulateQueryMetrics: \"x-ms-documentdb-populatequerymetrics\",\n // Response header that holds the serialized version of query metrics.\n QueryMetrics: \"x-ms-documentdb-query-metrics\",\n\n // IndexMetrics\n // Request header to tell backend to give you index metrics.\n PopulateIndexMetrics: \"x-ms-cosmos-populateindexmetrics\",\n // Response header that holds the serialized version of index metrics.\n IndexUtilization: \"x-ms-cosmos-index-utilization\",\n // Version headers and values\n Version: \"x-ms-version\",\n\n // Owner name\n OwnerFullName: \"x-ms-alt-content-path\",\n\n // Owner ID used for name based request in session token.\n OwnerId: \"x-ms-content-path\",\n\n // Partition Key\n PartitionKey: \"x-ms-documentdb-partitionkey\",\n PartitionKeyRangeID: \"x-ms-documentdb-partitionkeyrangeid\",\n\n // Epk Range headers\n StartEpk: \"x-ms-start-epk\",\n EndEpk: \"x-ms-end-epk\",\n\n // Read Feed Type\n ReadFeedKeyType: \"x-ms-read-key-type\",\n\n // Quota Info\n MaxEntityCount: \"x-ms-root-entity-max-count\",\n CurrentEntityCount: \"x-ms-root-entity-current-count\",\n CollectionQuotaInMb: \"x-ms-collection-quota-mb\",\n CollectionCurrentUsageInMb: \"x-ms-collection-usage-mb\",\n MaxMediaStorageUsageInMB: \"x-ms-max-media-storage-usage-mb\",\n CurrentMediaStorageUsageInMB: \"x-ms-media-storage-usage-mb\",\n RequestCharge: \"x-ms-request-charge\",\n PopulateQuotaInfo: \"x-ms-documentdb-populatequotainfo\",\n MaxResourceQuota: \"x-ms-resource-quota\",\n\n // Offer header\n OfferType: \"x-ms-offer-type\",\n OfferThroughput: \"x-ms-offer-throughput\",\n AutoscaleSettings: \"x-ms-cosmos-offer-autopilot-settings\",\n\n // Custom RUs/minute headers\n DisableRUPerMinuteUsage: \"x-ms-documentdb-disable-ru-per-minute-usage\",\n IsRUPerMinuteUsed: \"x-ms-documentdb-is-ru-per-minute-used\",\n OfferIsRUPerMinuteThroughputEnabled: \"x-ms-offer-is-ru-per-minute-throughput-enabled\",\n\n // Index progress headers\n IndexTransformationProgress: \"x-ms-documentdb-collection-index-transformation-progress\",\n LazyIndexingProgress: \"x-ms-documentdb-collection-lazy-indexing-progress\",\n\n // Upsert header\n IsUpsert: \"x-ms-documentdb-is-upsert\",\n\n // Sub status of the error\n SubStatus: \"x-ms-substatus\",\n\n // StoredProcedure related headers\n EnableScriptLogging: \"x-ms-documentdb-script-enable-logging\",\n ScriptLogResults: \"x-ms-documentdb-script-log-results\",\n\n // Multi-Region Write\n ALLOW_MULTIPLE_WRITES: \"x-ms-cosmos-allow-tentative-writes\",\n\n // Bulk/Batch header\n IsBatchRequest: \"x-ms-cosmos-is-batch-request\",\n IsBatchAtomic: \"x-ms-cosmos-batch-atomic\",\n BatchContinueOnError: \"x-ms-cosmos-batch-continue-on-error\",\n\n // Dedicated Gateway Headers\n DedicatedGatewayPerRequestCacheStaleness: \"x-ms-dedicatedgateway-max-age\",\n DedicatedGatewayPerRequestBypassCache: \"x-ms-dedicatedgateway-bypass-cache\",\n\n // Cache Refresh header\n ForceRefresh: \"x-ms-force-refresh\",\n\n // Priority Based throttling header\n PriorityLevel: \"x-ms-cosmos-priority-level\",\n },\n\n // GlobalDB related constants\n WritableLocations: \"writableLocations\",\n ReadableLocations: \"readableLocations\",\n LocationUnavailableExpirationTimeInMs: 5 * 60 * 1000, // 5 minutes\n\n // ServiceDocument Resource\n ENABLE_MULTIPLE_WRITABLE_LOCATIONS: \"enableMultipleWriteLocations\",\n\n // Background refresh time\n DefaultUnavailableLocationExpirationTimeMS: 5 * 60 * 1000,\n\n // Client generated retry count response header\n ThrottleRetryCount: \"x-ms-throttle-retry-count\",\n ThrottleRetryWaitTimeInMs: \"x-ms-throttle-retry-wait-time-ms\",\n\n // Platform\n CurrentVersion: \"2020-07-15\",\n AzureNamespace: \"Azure.Cosmos\",\n AzurePackageName: \"@azure/cosmos\",\n SDKName: \"azure-cosmos-js\",\n SDKVersion: \"4.2.0\",\n\n // Diagnostics\n CosmosDbDiagnosticLevelEnvVarName: \"AZURE_COSMOSDB_DIAGNOSTICS_LEVEL\",\n\n // Bulk Operations\n DefaultMaxBulkRequestBodySizeInBytes: 220201,\n\n Quota: {\n CollectionSize: \"collectionSize\",\n },\n\n Path: {\n Root: \"/\",\n DatabasesPathSegment: \"dbs\",\n CollectionsPathSegment: \"colls\",\n UsersPathSegment: \"users\",\n DocumentsPathSegment: \"docs\",\n PermissionsPathSegment: \"permissions\",\n StoredProceduresPathSegment: \"sprocs\",\n TriggersPathSegment: \"triggers\",\n UserDefinedFunctionsPathSegment: \"udfs\",\n ConflictsPathSegment: \"conflicts\",\n AttachmentsPathSegment: \"attachments\",\n PartitionKeyRangesPathSegment: \"pkranges\",\n SchemasPathSegment: \"schemas\",\n OffersPathSegment: \"offers\",\n TopologyPathSegment: \"topology\",\n DatabaseAccountPathSegment: \"databaseaccount\",\n },\n\n PartitionKeyRange: {\n // Partition Key Range Constants\n MinInclusive: \"minInclusive\",\n MaxExclusive: \"maxExclusive\",\n Id: \"id\",\n } as PartitionKeyRangePropertiesNames,\n\n QueryRangeConstants: {\n // Partition Key Range Constants\n MinInclusive: \"minInclusive\",\n MaxExclusive: \"maxExclusive\",\n min: \"min\",\n },\n\n /**\n * @deprecated Use EffectivePartitionKeyConstants instead\n */\n EffectiveParitionKeyConstants: {\n MinimumInclusiveEffectivePartitionKey: \"\",\n MaximumExclusiveEffectivePartitionKey: \"FF\",\n },\n\n EffectivePartitionKeyConstants: {\n MinimumInclusiveEffectivePartitionKey: \"\",\n MaximumExclusiveEffectivePartitionKey: \"FF\",\n },\n\n // Changefeed AllVersionsAndDeletesMode formatting version\n AllVersionsAndDeletesChangeFeedWireFormatVersion: \"2021-09-15\",\n ChangeFeedIfNoneMatchStartFromNowHeader: \"*\",\n};\n\n/**\n * @hidden\n */\nexport enum ResourceType {\n none = \"\",\n database = \"dbs\",\n offer = \"offers\",\n user = \"users\",\n permission = \"permissions\",\n container = \"colls\",\n conflicts = \"conflicts\",\n sproc = \"sprocs\",\n udf = \"udfs\",\n trigger = \"triggers\",\n item = \"docs\",\n pkranges = \"pkranges\",\n partitionkey = \"partitionKey\",\n}\n\n/**\n * @hidden\n */\nexport enum HTTPMethod {\n get = \"GET\",\n patch = \"PATCH\",\n post = \"POST\",\n put = \"PUT\",\n delete = \"DELETE\",\n}\n\n/**\n * @hidden\n */\nexport enum OperationType {\n Create = \"create\",\n Replace = \"replace\",\n Upsert = \"upsert\",\n Delete = \"delete\",\n Read = \"read\",\n Query = \"query\",\n Execute = \"execute\",\n Batch = \"batch\",\n Patch = \"patch\",\n}\n\n/**\n * @hidden\n */\nexport enum CosmosKeyType {\n PrimaryMaster = \"PRIMARY_MASTER\",\n SecondaryMaster = \"SECONDARY_MASTER\",\n PrimaryReadOnly = \"PRIMARY_READONLY\",\n SecondaryReadOnly = \"SECONDARY_READONLY\",\n}\n\n/**\n * @hidden\n */\nexport enum CosmosContainerChildResourceKind {\n Item = \"ITEM\",\n StoredProcedure = \"STORED_PROCEDURE\",\n UserDefinedFunction = \"USER_DEFINED_FUNCTION\",\n Trigger = \"TRIGGER\",\n}\n/**\n * @hidden\n */\nexport enum PermissionScopeValues {\n /**\n * Values which set permission Scope applicable to control plane related operations.\n */\n ScopeAccountReadValue = 0x0001,\n ScopeAccountListDatabasesValue = 0x0002,\n ScopeDatabaseReadValue = 0x0004,\n ScopeDatabaseReadOfferValue = 0x0008,\n ScopeDatabaseListContainerValue = 0x0010,\n ScopeContainerReadValue = 0x0020,\n ScopeContainerReadOfferValue = 0x0040,\n\n ScopeAccountCreateDatabasesValue = 0x0001,\n ScopeAccountDeleteDatabasesValue = 0x0002,\n ScopeDatabaseDeleteValue = 0x0004,\n ScopeDatabaseReplaceOfferValue = 0x0008,\n ScopeDatabaseCreateContainerValue = 0x0010,\n ScopeDatabaseDeleteContainerValue = 0x0020,\n ScopeContainerReplaceValue = 0x0040,\n ScopeContainerDeleteValue = 0x0080,\n ScopeContainerReplaceOfferValue = 0x0100,\n\n ScopeAccountReadAllAccessValue = 0xffff,\n ScopeDatabaseReadAllAccessValue = PermissionScopeValues.ScopeDatabaseReadValue |\n PermissionScopeValues.ScopeDatabaseReadOfferValue |\n PermissionScopeValues.ScopeDatabaseListContainerValue |\n PermissionScopeValues.ScopeContainerReadValue |\n PermissionScopeValues.ScopeContainerReadOfferValue,\n\n ScopeContainersReadAllAccessValue = PermissionScopeValues.ScopeContainerReadValue |\n PermissionScopeValues.ScopeContainerReadOfferValue,\n\n ScopeAccountWriteAllAccessValue = 0xffff,\n ScopeDatabaseWriteAllAccessValue = PermissionScopeValues.ScopeDatabaseDeleteValue |\n PermissionScopeValues.ScopeDatabaseReplaceOfferValue |\n PermissionScopeValues.ScopeDatabaseCreateContainerValue |\n PermissionScopeValues.ScopeDatabaseDeleteContainerValue |\n PermissionScopeValues.ScopeContainerReplaceValue |\n PermissionScopeValues.ScopeContainerDeleteValue |\n PermissionScopeValues.ScopeContainerReplaceOfferValue,\n\n ScopeContainersWriteAllAccessValue = PermissionScopeValues.ScopeContainerReplaceValue |\n PermissionScopeValues.ScopeContainerDeleteValue |\n PermissionScopeValues.ScopeContainerReplaceOfferValue,\n\n /**\n * Values which set permission Scope applicable to data plane related operations.\n */\n ScopeContainerExecuteQueriesValue = 0x00000001,\n ScopeContainerReadFeedsValue = 0x00000002,\n ScopeContainerReadStoredProceduresValue = 0x00000004,\n ScopeContainerReadUserDefinedFunctionsValue = 0x00000008,\n ScopeContainerReadTriggersValue = 0x00000010,\n ScopeContainerReadConflictsValue = 0x00000020,\n ScopeItemReadValue = 0x00000040,\n ScopeStoredProcedureReadValue = 0x00000080,\n ScopeUserDefinedFunctionReadValue = 0x00000100,\n ScopeTriggerReadValue = 0x00000200,\n\n ScopeContainerCreateItemsValue = 0x00000001,\n ScopeContainerReplaceItemsValue = 0x00000002,\n ScopeContainerUpsertItemsValue = 0x00000004,\n ScopeContainerDeleteItemsValue = 0x00000008,\n ScopeContainerCreateStoredProceduresValue = 0x00000010,\n ScopeContainerReplaceStoredProceduresValue = 0x00000020,\n ScopeContainerDeleteStoredProceduresValue = 0x00000040,\n ScopeContainerExecuteStoredProceduresValue = 0x00000080,\n ScopeContainerCreateTriggersValue = 0x00000100,\n ScopeContainerReplaceTriggersValue = 0x00000200,\n ScopeContainerDeleteTriggersValue = 0x00000400,\n ScopeContainerCreateUserDefinedFunctionsValue = 0x00000800,\n ScopeContainerReplaceUserDefinedFunctionsValue = 0x00001000,\n ScopeContainerDeleteUserDefinedFunctionSValue = 0x00002000,\n ScopeContainerDeleteCONFLICTSValue = 0x00004000,\n ScopeItemReplaceValue = 0x00010000,\n ScopeItemUpsertValue = 0x00020000,\n ScopeItemDeleteValue = 0x00040000,\n ScopeStoredProcedureReplaceValue = 0x00100000,\n ScopeStoredProcedureDeleteValue = 0x00200000,\n ScopeStoredProcedureExecuteValue = 0x00400000,\n ScopeUserDefinedFunctionReplaceValue = 0x00800000,\n ScopeUserDefinedFunctionDeleteValue = 0x01000000,\n ScopeTriggerReplaceValue = 0x02000000,\n ScopeTriggerDeleteValue = 0x04000000,\n\n ScopeContainerReadAllAccessValue = 0xffffffff,\n ScopeItemReadAllAccessValue = PermissionScopeValues.ScopeContainerExecuteQueriesValue |\n PermissionScopeValues.ScopeItemReadValue,\n ScopeContainerWriteAllAccessValue = 0xffffffff,\n ScopeItemWriteAllAccessValue = PermissionScopeValues.ScopeContainerCreateItemsValue |\n PermissionScopeValues.ScopeContainerReplaceItemsValue |\n PermissionScopeValues.ScopeContainerUpsertItemsValue |\n PermissionScopeValues.ScopeContainerDeleteItemsValue |\n PermissionScopeValues.ScopeItemReplaceValue |\n PermissionScopeValues.ScopeItemUpsertValue |\n PermissionScopeValues.ScopeItemDeleteValue,\n\n NoneValue = 0,\n}\n/**\n * @hidden\n */\nexport enum SasTokenPermissionKind {\n ContainerCreateItems = PermissionScopeValues.ScopeContainerCreateItemsValue,\n ContainerReplaceItems = PermissionScopeValues.ScopeContainerReplaceItemsValue,\n ContainerUpsertItems = PermissionScopeValues.ScopeContainerUpsertItemsValue,\n ContainerDeleteItems = PermissionScopeValues.ScopeContainerDeleteValue,\n ContainerExecuteQueries = PermissionScopeValues.ScopeContainerExecuteQueriesValue,\n ContainerReadFeeds = PermissionScopeValues.ScopeContainerReadFeedsValue,\n ContainerCreateStoreProcedure = PermissionScopeValues.ScopeContainerCreateStoredProceduresValue,\n ContainerReadStoreProcedure = PermissionScopeValues.ScopeContainerReadStoredProceduresValue,\n ContainerReplaceStoreProcedure = PermissionScopeValues.ScopeContainerReplaceStoredProceduresValue,\n ContainerDeleteStoreProcedure = PermissionScopeValues.ScopeContainerDeleteStoredProceduresValue,\n ContainerCreateTriggers = PermissionScopeValues.ScopeContainerCreateTriggersValue,\n ContainerReadTriggers = PermissionScopeValues.ScopeContainerReadTriggersValue,\n ContainerReplaceTriggers = PermissionScopeValues.ScopeContainerReplaceTriggersValue,\n ContainerDeleteTriggers = PermissionScopeValues.ScopeContainerDeleteTriggersValue,\n ContainerCreateUserDefinedFunctions = PermissionScopeValues.ScopeContainerCreateUserDefinedFunctionsValue,\n ContainerReadUserDefinedFunctions = PermissionScopeValues.ScopeContainerReadUserDefinedFunctionsValue,\n ContainerReplaceUserDefinedFunctions = PermissionScopeValues.ScopeContainerReplaceUserDefinedFunctionsValue,\n ContainerDeleteUserDefinedFunctions = PermissionScopeValues.ScopeContainerDeleteUserDefinedFunctionSValue,\n ContainerExecuteStoredProcedure = PermissionScopeValues.ScopeContainerExecuteStoredProceduresValue,\n ContainerReadConflicts = PermissionScopeValues.ScopeContainerReadConflictsValue,\n ContainerDeleteConflicts = PermissionScopeValues.ScopeContainerDeleteCONFLICTSValue,\n ContainerReadAny = PermissionScopeValues.ScopeContainerReadOfferValue,\n ContainerFullAccess = PermissionScopeValues.ScopeContainerReadAllAccessValue,\n ItemReadAny = PermissionScopeValues.ScopeItemReplaceValue,\n ItemFullAccess = PermissionScopeValues.ScopeItemReadAllAccessValue,\n ItemRead = PermissionScopeValues.ScopeItemReadValue,\n ItemReplace = PermissionScopeValues.ScopeItemReplaceValue,\n ItemUpsert = PermissionScopeValues.ScopeItemUpsertValue,\n ItemDelete = PermissionScopeValues.ScopeItemDeleteValue,\n StoreProcedureRead = PermissionScopeValues.ScopeStoredProcedureReadValue,\n StoreProcedureReplace = PermissionScopeValues.ScopeStoredProcedureReplaceValue,\n StoreProcedureDelete = PermissionScopeValues.ScopeStoredProcedureDeleteValue,\n StoreProcedureExecute = PermissionScopeValues.ScopeStoredProcedureExecuteValue,\n UserDefinedFuntionRead = PermissionScopeValues.ScopeUserDefinedFunctionReadValue,\n UserDefinedFuntionReplace = PermissionScopeValues.ScopeUserDefinedFunctionReplaceValue,\n UserDefinedFuntionDelete = PermissionScopeValues.ScopeUserDefinedFunctionDeleteValue,\n TriggerRead = PermissionScopeValues.ScopeTriggerReadValue,\n TriggerReplace = PermissionScopeValues.ScopeTriggerReplaceValue,\n TriggerDelete = PermissionScopeValues.ScopeTriggerDeleteValue,\n}\n\nexport enum QueryFeature {\n NonValueAggregate = \"NonValueAggregate\",\n Aggregate = \"Aggregate\",\n Distinct = \"Distinct\",\n MultipleOrderBy = \"MultipleOrderBy\",\n OffsetAndLimit = \"OffsetAndLimit\",\n OrderBy = \"OrderBy\",\n Top = \"Top\",\n CompositeAggregate = \"CompositeAggregate\",\n GroupBy = \"GroupBy\",\n MultipleAggregates = \"MultipleAggregates\",\n NonStreamingOrderBy = \"NonStreamingOrderBy\",\n ListAndSetAggregate = \"ListAndSetAggregate\",\n CountIf = \"CountIf\",\n HybridSearch = \"HybridSearch\",\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nexport class AbortError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"AbortError\";\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortOptions } from \"./aborterUtils.js\";\nimport { createAbortablePromise } from \"./createAbortablePromise.js\";\nimport { getRandomIntegerInclusive } from \"./random.js\";\n\nconst StandardAbortMessage = \"The delay was aborted.\";\n\n/**\n * Options for support abort functionality for the delay method\n */\nexport interface DelayOptions extends AbortOptions {}\n\n/**\n * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds.\n * @param timeInMs - The number of milliseconds to be delayed.\n * @param options - The options for delay - currently abort options\n * @returns Promise that is resolved after timeInMs\n */\nexport function delay(timeInMs: number, options?: DelayOptions): Promise {\n let token: ReturnType;\n const { abortSignal, abortErrorMsg } = options ?? {};\n return createAbortablePromise(\n (resolve) => {\n token = setTimeout(resolve, timeInMs);\n },\n {\n cleanupBeforeAbort: () => clearTimeout(token),\n abortSignal,\n abortErrorMsg: abortErrorMsg ?? StandardAbortMessage,\n },\n );\n}\n\n/**\n * Calculates the delay interval for retry attempts using exponential delay with jitter.\n * @param retryAttempt - The current retry attempt number.\n * @param config - The exponential retry configuration.\n * @returns An object containing the calculated retry delay.\n */\nexport function calculateRetryDelay(\n retryAttempt: number,\n config: {\n retryDelayInMs: number;\n maxRetryDelayInMs: number;\n },\n): { retryAfterInMs: number } {\n // Exponentially increase the delay each time\n const exponentialDelay = config.retryDelayInMs * Math.pow(2, retryAttempt);\n\n // Don't let the delay exceed the maximum\n const clampedDelay = Math.min(config.maxRetryDelayInMs, exponentialDelay);\n\n // Allow the final value to have some \"jitter\" (within 50% of the delay size) so\n // that retries across multiple clients don't occur simultaneously.\n const retryAfterInMs = clampedDelay / 2 + getRandomIntegerInclusive(0, clampedDelay / 2);\n\n return { retryAfterInMs };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type { AbortOptions } from \"./aborterUtils.js\";\n\n/**\n * Options for the createAbortablePromise function.\n */\nexport interface CreateAbortablePromiseOptions extends AbortOptions {\n /** A function to be called if the promise was aborted */\n cleanupBeforeAbort?: () => void;\n}\n\n/**\n * Creates an abortable promise.\n * @param buildPromise - A function that takes the resolve and reject functions as parameters.\n * @param options - The options for the abortable promise.\n * @returns A promise that can be aborted.\n */\nexport function createAbortablePromise(\n buildPromise: (\n resolve: (value: T | PromiseLike) => void,\n reject: (reason?: any) => void,\n ) => void,\n options?: CreateAbortablePromiseOptions,\n): Promise {\n const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options ?? {};\n return new Promise((resolve, reject) => {\n function rejectOnAbort(): void {\n reject(new AbortError(abortErrorMsg ?? \"The operation was aborted.\"));\n }\n function removeListeners(): void {\n abortSignal?.removeEventListener(\"abort\", onAbort);\n }\n function onAbort(): void {\n cleanupBeforeAbort?.();\n removeListeners();\n rejectOnAbort();\n }\n if (abortSignal?.aborted) {\n return rejectOnAbort();\n }\n try {\n buildPromise(\n (x) => {\n removeListeners();\n resolve(x);\n },\n (x) => {\n removeListeners();\n reject(x);\n },\n );\n } catch (err) {\n reject(err);\n }\n abortSignal?.addEventListener(\"abort\", onAbort);\n });\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Returns a random integer value between a lower and upper bound,\n * inclusive of both bounds.\n * Note that this uses Math.random and isn't secure. If you need to use\n * this for any kind of security purpose, find a better source of random.\n * @param min - The smallest integer value allowed.\n * @param max - The largest integer value allowed.\n */\nexport function getRandomIntegerInclusive(min: number, max: number): number {\n // Make sure inputs are integers.\n min = Math.ceil(min);\n max = Math.floor(max);\n // Pick a random offset from zero to the size of the range.\n // Since Math.random() can never return 1, we have to make the range one larger\n // in order to be inclusive of the maximum value after we take the floor.\n const offset = Math.floor(Math.random() * (max - min + 1));\n return offset + min;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * A generic shape for a plain JS object.\n */\nexport type UnknownObject = { [s: string]: unknown };\n\n/**\n * Helper to determine when an input is a generic JS object.\n * @returns true when input is an object type that is not null, Array, RegExp, or Date.\n */\nexport function isObject(input: unknown): input is UnknownObject {\n return (\n typeof input === \"object\" &&\n input !== null &&\n !Array.isArray(input) &&\n !(input instanceof RegExp) &&\n !(input instanceof Date)\n );\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isObject } from \"./object.js\";\n\n/**\n * Typeguard for an error object shape (has name and message)\n * @param e - Something caught by a catch clause.\n */\nexport function isError(e: unknown): e is Error {\n if (isObject(e)) {\n const hasName = typeof e.name === \"string\";\n const hasMessage = typeof e.message === \"string\";\n return hasName && hasMessage;\n }\n return false;\n}\n\n/**\n * Given what is thought to be an error object, return the message if possible.\n * If the message is missing, returns a stringified version of the input.\n * @param e - Something thrown from a try block\n * @returns The error message or a string of the input\n */\nexport function getErrorMessage(e: unknown): string {\n if (isError(e)) {\n return e.message;\n } else {\n let stringified: string;\n try {\n if (typeof e === \"object\" && e) {\n stringified = JSON.stringify(e);\n } else {\n stringified = String(e);\n }\n } catch (err: any) {\n stringified = \"[unable to stringify input]\";\n }\n return `Unknown error ${stringified}`;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ndeclare global {\n // stub these out for the browser\n function btoa(input: string): string;\n function atob(input: string): string;\n}\n\n/** The supported character encoding type */\nexport type EncodingType = \"utf-8\" | \"base64\" | \"base64url\" | \"hex\";\n\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\nexport function uint8ArrayToString(bytes: Uint8Array, format: EncodingType): string {\n switch (format) {\n case \"utf-8\":\n return uint8ArrayToUtf8String(bytes);\n case \"base64\":\n return uint8ArrayToBase64(bytes);\n case \"base64url\":\n return uint8ArrayToBase64Url(bytes);\n case \"hex\":\n return uint8ArrayToHexString(bytes);\n }\n}\n\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nexport function stringToUint8Array(value: string, format: EncodingType): Uint8Array {\n switch (format) {\n case \"utf-8\":\n return utf8StringToUint8Array(value);\n case \"base64\":\n return base64ToUint8Array(value);\n case \"base64url\":\n return base64UrlToUint8Array(value);\n case \"hex\":\n return hexStringToUint8Array(value);\n }\n}\n\n/**\n * Decodes a Uint8Array into a Base64 string.\n * @internal\n */\nexport function uint8ArrayToBase64(bytes: Uint8Array): string {\n return btoa([...bytes].map((x) => String.fromCharCode(x)).join(\"\"));\n}\n\n/**\n * Decodes a Uint8Array into a Base64Url string.\n * @internal\n */\nexport function uint8ArrayToBase64Url(bytes: Uint8Array): string {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\n\n/**\n * Decodes a Uint8Array into a javascript string.\n * @internal\n */\nexport function uint8ArrayToUtf8String(bytes: Uint8Array): string {\n const decoder = new TextDecoder();\n const dataString = decoder.decode(bytes);\n return dataString;\n}\n\n/**\n * Decodes a Uint8Array into a hex string\n * @internal\n */\nexport function uint8ArrayToHexString(bytes: Uint8Array): string {\n return [...bytes].map((x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\n/**\n * Encodes a JavaScript string into a Uint8Array.\n * @internal\n */\nexport function utf8StringToUint8Array(value: string): Uint8Array {\n return new TextEncoder().encode(value);\n}\n\n/**\n * Encodes a Base64 string into a Uint8Array.\n * @internal\n */\nexport function base64ToUint8Array(value: string): Uint8Array {\n return new Uint8Array([...atob(value)].map((x) => x.charCodeAt(0)));\n}\n\n/**\n * Encodes a Base64Url string into a Uint8Array.\n * @internal\n */\nexport function base64UrlToUint8Array(value: string): Uint8Array {\n const base64String = value.replace(/-/g, \"+\").replace(/_/g, \"/\");\n return base64ToUint8Array(base64String);\n}\n\nconst hexDigits = new Set(\"0123456789abcdefABCDEF\");\n\n/**\n * Encodes a hex string into a Uint8Array\n * @internal\n */\nexport function hexStringToUint8Array(value: string): Uint8Array {\n // If value has odd length, the last character will be ignored, consistent with NodeJS Buffer behavior\n const bytes = new Uint8Array(value.length / 2);\n for (let i = 0; i < value.length / 2; ++i) {\n const highNibble = value[2 * i];\n const lowNibble = value[2 * i + 1];\n if (!hexDigits.has(highNibble) || !hexDigits.has(lowNibble)) {\n // Replicate Node Buffer behavior by exiting early when we encounter an invalid byte\n return bytes.slice(0, i);\n }\n\n bytes[i] = parseInt(`${highNibble}${lowNibble}`, 16);\n }\n\n return bytes;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Helper TypeGuard that checks if something is defined or not.\n * @param thing - Anything\n */\nexport function isDefined(thing: T | undefined | null): thing is T {\n return typeof thing !== \"undefined\" && thing !== null;\n}\n\n/**\n * Helper TypeGuard that checks if the input is an object with the specified properties.\n * @param thing - Anything.\n * @param properties - The name of the properties that should appear in the object.\n */\nexport function isObjectWithProperties(\n thing: Thing,\n properties: PropertyName[],\n): thing is Thing & Record {\n if (!isDefined(thing) || typeof thing !== \"object\") {\n return false;\n }\n\n for (const property of properties) {\n if (!objectHasProperty(thing, property)) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Helper TypeGuard that checks if the input is an object with the specified property.\n * @param thing - Any object.\n * @param property - The name of the property that should appear in the object.\n */\nexport function objectHasProperty(\n thing: Thing,\n property: PropertyName,\n): thing is Thing & Record {\n return (\n isDefined(thing) && typeof thing === \"object\" && property in (thing as Record)\n );\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function generateUUID(): string {\n let uuid = \"\";\n for (let i = 0; i < 32; i++) {\n // Generate a random number between 0 and 15\n const randomNumber = Math.floor(Math.random() * 16);\n // Set the UUID version to 4 in the 13th position\n if (i === 12) {\n uuid += \"4\";\n } else if (i === 16) {\n // Set the UUID variant to \"10\" in the 17th position\n uuid += (randomNumber & 0x3) | 0x8;\n } else {\n // Add a random hexadecimal digit to the UUID string\n uuid += randomNumber.toString(16);\n }\n // Add hyphens to the UUID string at the appropriate positions\n if (i === 7 || i === 11 || i === 15 || i === 19) {\n uuid += \"-\";\n }\n }\n return uuid;\n}\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID(): string {\n return generateUUID();\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { generateUUID } from \"./uuidUtils.common.js\";\n\ninterface Crypto {\n randomUUID(): string;\n}\n\ndeclare const globalThis: {\n crypto: Crypto;\n};\n\n// NOTE: This could be undefined if not used in a secure context\nconst uuidFunction =\n typeof globalThis?.crypto?.randomUUID === \"function\"\n ? globalThis.crypto.randomUUID.bind(globalThis.crypto)\n : generateUUID;\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID(): string {\n return uuidFunction();\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\ninterface Window {\n document: unknown;\n}\n\ninterface DedicatedWorkerGlobalScope {\n constructor: {\n name: string;\n };\n\n importScripts: (...paths: string[]) => void;\n}\n\ninterface Navigator {\n product: string;\n}\n\ninterface DenoGlobal {\n version: {\n deno: string;\n };\n}\n\ninterface BunGlobal {\n version: string;\n}\n\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\ndeclare const window: Window;\ndeclare const self: DedicatedWorkerGlobalScope;\ndeclare const Deno: DenoGlobal;\ndeclare const Bun: BunGlobal;\ndeclare const navigator: Navigator;\n\n/**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\nexport const isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\nexport const isWebWorker =\n typeof self === \"object\" &&\n typeof self?.importScripts === \"function\" &&\n (self.constructor?.name === \"DedicatedWorkerGlobalScope\" ||\n self.constructor?.name === \"ServiceWorkerGlobalScope\" ||\n self.constructor?.name === \"SharedWorkerGlobalScope\");\n\n/**\n * A constant that indicates whether the environment the code is running is Deno.\n */\nexport const isDeno =\n typeof Deno !== \"undefined\" &&\n typeof Deno.version !== \"undefined\" &&\n typeof Deno.version.deno !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\nexport const isBun = typeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n */\nexport const isNodeLike =\n typeof globalThis.process !== \"undefined\" &&\n Boolean(globalThis.process.version) &&\n Boolean(globalThis.process.versions?.node);\n\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n * @deprecated Use `isNodeLike` instead.\n */\nexport const isNode = isNodeLike;\n\n/**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\nexport const isNodeRuntime = isNodeLike && !isBun && !isDeno;\n\n/**\n * A constant that indicates whether the environment the code is running is in React-Native.\n */\n// https://github.com/facebook/react-native/blob/main/packages/react-native/Libraries/Core/setUpNavigator.js\nexport const isReactNative =\n typeof navigator !== \"undefined\" && navigator?.product === \"ReactNative\";\n","// Copyright 2018 Google Inc.\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//\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.\nclass JSBI extends Array {\n constructor(length, sign) {\n super(length);\n this.sign = sign;\n // Explicitly set the prototype as per\n // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, JSBI.prototype);\n if (length > JSBI.__kMaxLength) {\n throw new RangeError('Maximum BigInt size exceeded');\n }\n }\n static BigInt(arg) {\n if (typeof arg === 'number') {\n if (arg === 0)\n return JSBI.__zero();\n if (JSBI.__isOneDigitInt(arg)) {\n if (arg < 0) {\n return JSBI.__oneDigit(-arg, true);\n }\n return JSBI.__oneDigit(arg, false);\n }\n if (!Number.isFinite(arg) || Math.floor(arg) !== arg) {\n throw new RangeError('The number ' + arg + ' cannot be converted to ' +\n 'BigInt because it is not an integer');\n }\n return JSBI.__fromDouble(arg);\n }\n else if (typeof arg === 'string') {\n const result = JSBI.__fromString(arg);\n if (result === null) {\n throw new SyntaxError('Cannot convert ' + arg + ' to a BigInt');\n }\n return result;\n }\n else if (typeof arg === 'boolean') {\n if (arg === true) {\n return JSBI.__oneDigit(1, false);\n }\n return JSBI.__zero();\n }\n else if (typeof arg === 'object') {\n if (arg.constructor === JSBI)\n return arg;\n const primitive = JSBI.__toPrimitive(arg);\n return JSBI.BigInt(primitive);\n }\n throw new TypeError('Cannot convert ' + arg + ' to a BigInt');\n }\n toDebugString() {\n const result = ['BigInt['];\n for (const digit of this) {\n result.push((digit ? (digit >>> 0).toString(16) : digit) + ', ');\n }\n result.push(']');\n return result.join('');\n }\n toString(radix = 10) {\n if (radix < 2 || radix > 36) {\n throw new RangeError('toString() radix argument must be between 2 and 36');\n }\n if (this.length === 0)\n return '0';\n if ((radix & (radix - 1)) === 0) {\n return JSBI.__toStringBasePowerOfTwo(this, radix);\n }\n return JSBI.__toStringGeneric(this, radix, false);\n }\n valueOf() {\n throw new Error('Convert JSBI instances to native numbers using `toNumber`.');\n }\n // Equivalent of \"Number(my_bigint)\" in the native implementation.\n // TODO: add more tests\n static toNumber(x) {\n const xLength = x.length;\n if (xLength === 0)\n return 0;\n if (xLength === 1) {\n const value = x.__unsignedDigit(0);\n return x.sign ? -value : value;\n }\n const xMsd = x.__digit(xLength - 1);\n const msdLeadingZeros = JSBI.__clz30(xMsd);\n const xBitLength = xLength * 30 - msdLeadingZeros;\n if (xBitLength > 1024)\n return x.sign ? -Infinity : Infinity;\n let exponent = xBitLength - 1;\n let currentDigit = xMsd;\n let digitIndex = xLength - 1;\n const shift = msdLeadingZeros + 3;\n let mantissaHigh = (shift === 32) ? 0 : currentDigit << shift;\n mantissaHigh >>>= 12;\n const mantissaHighBitsUnset = shift - 12;\n let mantissaLow = (shift >= 12) ? 0 : (currentDigit << (20 + shift));\n let mantissaLowBitsUnset = 20 + shift;\n if (mantissaHighBitsUnset > 0 && digitIndex > 0) {\n digitIndex--;\n currentDigit = x.__digit(digitIndex);\n mantissaHigh |= (currentDigit >>> (30 - mantissaHighBitsUnset));\n mantissaLow = currentDigit << mantissaHighBitsUnset + 2;\n mantissaLowBitsUnset = mantissaHighBitsUnset + 2;\n }\n while (mantissaLowBitsUnset > 0 && digitIndex > 0) {\n digitIndex--;\n currentDigit = x.__digit(digitIndex);\n if (mantissaLowBitsUnset >= 30) {\n mantissaLow |= (currentDigit << (mantissaLowBitsUnset - 30));\n }\n else {\n mantissaLow |= (currentDigit >>> (30 - mantissaLowBitsUnset));\n }\n mantissaLowBitsUnset -= 30;\n }\n const rounding = JSBI.__decideRounding(x, mantissaLowBitsUnset, digitIndex, currentDigit);\n if (rounding === 1 || (rounding === 0 && (mantissaLow & 1) === 1)) {\n mantissaLow = (mantissaLow + 1) >>> 0;\n if (mantissaLow === 0) {\n // Incrementing mantissaLow overflowed.\n mantissaHigh++;\n if ((mantissaHigh >>> 20) !== 0) {\n // Incrementing mantissaHigh overflowed.\n mantissaHigh = 0;\n exponent++;\n if (exponent > 1023) {\n // Incrementing the exponent overflowed.\n return x.sign ? -Infinity : Infinity;\n }\n }\n }\n }\n const signBit = x.sign ? (1 << 31) : 0;\n exponent = (exponent + 0x3FF) << 20;\n JSBI.__kBitConversionInts[1] = signBit | exponent | mantissaHigh;\n JSBI.__kBitConversionInts[0] = mantissaLow;\n return JSBI.__kBitConversionDouble[0];\n }\n // Operations.\n static unaryMinus(x) {\n if (x.length === 0)\n return x;\n const result = x.__copy();\n result.sign = !x.sign;\n return result;\n }\n static bitwiseNot(x) {\n if (x.sign) {\n // ~(-x) == ~(~(x-1)) == x-1\n return JSBI.__absoluteSubOne(x).__trim();\n }\n // ~x == -x-1 == -(x+1)\n return JSBI.__absoluteAddOne(x, true);\n }\n static exponentiate(x, y) {\n if (y.sign) {\n throw new RangeError('Exponent must be positive');\n }\n if (y.length === 0) {\n return JSBI.__oneDigit(1, false);\n }\n if (x.length === 0)\n return x;\n if (x.length === 1 && x.__digit(0) === 1) {\n // (-1) ** even_number == 1.\n if (x.sign && (y.__digit(0) & 1) === 0) {\n return JSBI.unaryMinus(x);\n }\n // (-1) ** odd_number == -1, 1 ** anything == 1.\n return x;\n }\n // For all bases >= 2, very large exponents would lead to unrepresentable\n // results.\n if (y.length > 1)\n throw new RangeError('BigInt too big');\n let expValue = y.__unsignedDigit(0);\n if (expValue === 1)\n return x;\n if (expValue >= JSBI.__kMaxLengthBits) {\n throw new RangeError('BigInt too big');\n }\n if (x.length === 1 && x.__digit(0) === 2) {\n // Fast path for 2^n.\n const neededDigits = 1 + ((expValue / 30) | 0);\n const sign = x.sign && ((expValue & 1) !== 0);\n const result = new JSBI(neededDigits, sign);\n result.__initializeDigits();\n // All bits are zero. Now set the n-th bit.\n const msd = 1 << (expValue % 30);\n result.__setDigit(neededDigits - 1, msd);\n return result;\n }\n let result = null;\n let runningSquare = x;\n // This implicitly sets the result's sign correctly.\n if ((expValue & 1) !== 0)\n result = x;\n expValue >>= 1;\n for (; expValue !== 0; expValue >>= 1) {\n runningSquare = JSBI.multiply(runningSquare, runningSquare);\n if ((expValue & 1) !== 0) {\n if (result === null) {\n result = runningSquare;\n }\n else {\n result = JSBI.multiply(result, runningSquare);\n }\n }\n }\n // TODO see if there's a way for tsc to infer this will always happen?\n return result;\n }\n static multiply(x, y) {\n if (x.length === 0)\n return x;\n if (y.length === 0)\n return y;\n let resultLength = x.length + y.length;\n if (x.__clzmsd() + y.__clzmsd() >= 30) {\n resultLength--;\n }\n const result = new JSBI(resultLength, x.sign !== y.sign);\n result.__initializeDigits();\n for (let i = 0; i < x.length; i++) {\n JSBI.__multiplyAccumulate(y, x.__digit(i), result, i);\n }\n return result.__trim();\n }\n static divide(x, y) {\n if (y.length === 0)\n throw new RangeError('Division by zero');\n if (JSBI.__absoluteCompare(x, y) < 0)\n return JSBI.__zero();\n const resultSign = x.sign !== y.sign;\n const divisor = y.__unsignedDigit(0);\n let quotient;\n if (y.length === 1 && divisor <= 0x7FFF) {\n if (divisor === 1) {\n return resultSign === x.sign ? x : JSBI.unaryMinus(x);\n }\n quotient = JSBI.__absoluteDivSmall(x, divisor, null);\n }\n else {\n quotient = JSBI.__absoluteDivLarge(x, y, true, false);\n }\n quotient.sign = resultSign;\n return quotient.__trim();\n }\n static remainder(x, y) {\n if (y.length === 0)\n throw new RangeError('Division by zero');\n if (JSBI.__absoluteCompare(x, y) < 0)\n return x;\n const divisor = y.__unsignedDigit(0);\n if (y.length === 1 && divisor <= 0x7FFF) {\n if (divisor === 1)\n return JSBI.__zero();\n const remainderDigit = JSBI.__absoluteModSmall(x, divisor);\n if (remainderDigit === 0)\n return JSBI.__zero();\n return JSBI.__oneDigit(remainderDigit, x.sign);\n }\n const remainder = JSBI.__absoluteDivLarge(x, y, false, true);\n remainder.sign = x.sign;\n return remainder.__trim();\n }\n static add(x, y) {\n const sign = x.sign;\n if (sign === y.sign) {\n // x + y == x + y\n // -x + -y == -(x + y)\n return JSBI.__absoluteAdd(x, y, sign);\n }\n // x + -y == x - y == -(y - x)\n // -x + y == y - x == -(x - y)\n if (JSBI.__absoluteCompare(x, y) >= 0) {\n return JSBI.__absoluteSub(x, y, sign);\n }\n return JSBI.__absoluteSub(y, x, !sign);\n }\n static subtract(x, y) {\n const sign = x.sign;\n if (sign !== y.sign) {\n // x - (-y) == x + y\n // (-x) - y == -(x + y)\n return JSBI.__absoluteAdd(x, y, sign);\n }\n // x - y == -(y - x)\n // (-x) - (-y) == y - x == -(x - y)\n if (JSBI.__absoluteCompare(x, y) >= 0) {\n return JSBI.__absoluteSub(x, y, sign);\n }\n return JSBI.__absoluteSub(y, x, !sign);\n }\n static leftShift(x, y) {\n if (y.length === 0 || x.length === 0)\n return x;\n if (y.sign)\n return JSBI.__rightShiftByAbsolute(x, y);\n return JSBI.__leftShiftByAbsolute(x, y);\n }\n static signedRightShift(x, y) {\n if (y.length === 0 || x.length === 0)\n return x;\n if (y.sign)\n return JSBI.__leftShiftByAbsolute(x, y);\n return JSBI.__rightShiftByAbsolute(x, y);\n }\n static unsignedRightShift() {\n throw new TypeError('BigInts have no unsigned right shift; use >> instead');\n }\n static lessThan(x, y) {\n return JSBI.__compareToBigInt(x, y) < 0;\n }\n static lessThanOrEqual(x, y) {\n return JSBI.__compareToBigInt(x, y) <= 0;\n }\n static greaterThan(x, y) {\n return JSBI.__compareToBigInt(x, y) > 0;\n }\n static greaterThanOrEqual(x, y) {\n return JSBI.__compareToBigInt(x, y) >= 0;\n }\n static equal(x, y) {\n if (x.sign !== y.sign)\n return false;\n if (x.length !== y.length)\n return false;\n for (let i = 0; i < x.length; i++) {\n if (x.__digit(i) !== y.__digit(i))\n return false;\n }\n return true;\n }\n static notEqual(x, y) {\n return !JSBI.equal(x, y);\n }\n static bitwiseAnd(x, y) {\n if (!x.sign && !y.sign) {\n return JSBI.__absoluteAnd(x, y).__trim();\n }\n else if (x.sign && y.sign) {\n const resultLength = Math.max(x.length, y.length) + 1;\n // (-x) & (-y) == ~(x-1) & ~(y-1) == ~((x-1) | (y-1))\n // == -(((x-1) | (y-1)) + 1)\n let result = JSBI.__absoluteSubOne(x, resultLength);\n const y1 = JSBI.__absoluteSubOne(y);\n result = JSBI.__absoluteOr(result, y1, result);\n return JSBI.__absoluteAddOne(result, true, result).__trim();\n }\n // Assume that x is the positive BigInt.\n if (x.sign) {\n [x, y] = [y, x];\n }\n // x & (-y) == x & ~(y-1) == x &~ (y-1)\n return JSBI.__absoluteAndNot(x, JSBI.__absoluteSubOne(y)).__trim();\n }\n static bitwiseXor(x, y) {\n if (!x.sign && !y.sign) {\n return JSBI.__absoluteXor(x, y).__trim();\n }\n else if (x.sign && y.sign) {\n // (-x) ^ (-y) == ~(x-1) ^ ~(y-1) == (x-1) ^ (y-1)\n const resultLength = Math.max(x.length, y.length);\n const result = JSBI.__absoluteSubOne(x, resultLength);\n const y1 = JSBI.__absoluteSubOne(y);\n return JSBI.__absoluteXor(result, y1, result).__trim();\n }\n const resultLength = Math.max(x.length, y.length) + 1;\n // Assume that x is the positive BigInt.\n if (x.sign) {\n [x, y] = [y, x];\n }\n // x ^ (-y) == x ^ ~(y-1) == ~(x ^ (y-1)) == -((x ^ (y-1)) + 1)\n let result = JSBI.__absoluteSubOne(y, resultLength);\n result = JSBI.__absoluteXor(result, x, result);\n return JSBI.__absoluteAddOne(result, true, result).__trim();\n }\n static bitwiseOr(x, y) {\n const resultLength = Math.max(x.length, y.length);\n if (!x.sign && !y.sign) {\n return JSBI.__absoluteOr(x, y).__trim();\n }\n else if (x.sign && y.sign) {\n // (-x) | (-y) == ~(x-1) | ~(y-1) == ~((x-1) & (y-1))\n // == -(((x-1) & (y-1)) + 1)\n let result = JSBI.__absoluteSubOne(x, resultLength);\n const y1 = JSBI.__absoluteSubOne(y);\n result = JSBI.__absoluteAnd(result, y1, result);\n return JSBI.__absoluteAddOne(result, true, result).__trim();\n }\n // Assume that x is the positive BigInt.\n if (x.sign) {\n [x, y] = [y, x];\n }\n // x | (-y) == x | ~(y-1) == ~((y-1) &~ x) == -(((y-1) ~& x) + 1)\n let result = JSBI.__absoluteSubOne(y, resultLength);\n result = JSBI.__absoluteAndNot(result, x, result);\n return JSBI.__absoluteAddOne(result, true, result).__trim();\n }\n static asIntN(n, x) {\n if (x.length === 0)\n return x;\n n = Math.floor(n);\n if (n < 0) {\n throw new RangeError('Invalid value: not (convertible to) a safe integer');\n }\n if (n === 0)\n return JSBI.__zero();\n // If {x} has less than {n} bits, return it directly.\n if (n >= JSBI.__kMaxLengthBits)\n return x;\n const neededLength = ((n + 29) / 30) | 0;\n if (x.length < neededLength)\n return x;\n const topDigit = x.__unsignedDigit(neededLength - 1);\n const compareDigit = 1 << ((n - 1) % 30);\n if (x.length === neededLength && topDigit < compareDigit)\n return x;\n // Otherwise truncate and simulate two's complement.\n const hasBit = (topDigit & compareDigit) === compareDigit;\n if (!hasBit)\n return JSBI.__truncateToNBits(n, x);\n if (!x.sign)\n return JSBI.__truncateAndSubFromPowerOfTwo(n, x, true);\n if ((topDigit & (compareDigit - 1)) === 0) {\n for (let i = neededLength - 2; i >= 0; i--) {\n if (x.__digit(i) !== 0) {\n return JSBI.__truncateAndSubFromPowerOfTwo(n, x, false);\n }\n }\n if (x.length === neededLength && topDigit === compareDigit)\n return x;\n return JSBI.__truncateToNBits(n, x);\n }\n return JSBI.__truncateAndSubFromPowerOfTwo(n, x, false);\n }\n static asUintN(n, x) {\n if (x.length === 0)\n return x;\n n = Math.floor(n);\n if (n < 0) {\n throw new RangeError('Invalid value: not (convertible to) a safe integer');\n }\n if (n === 0)\n return JSBI.__zero();\n // If {x} is negative, simulate two's complement representation.\n if (x.sign) {\n if (n > JSBI.__kMaxLengthBits) {\n throw new RangeError('BigInt too big');\n }\n return JSBI.__truncateAndSubFromPowerOfTwo(n, x, false);\n }\n // If {x} is positive and has up to {n} bits, return it directly.\n if (n >= JSBI.__kMaxLengthBits)\n return x;\n const neededLength = ((n + 29) / 30) | 0;\n if (x.length < neededLength)\n return x;\n const bitsInTopDigit = n % 30;\n if (x.length == neededLength) {\n if (bitsInTopDigit === 0)\n return x;\n const topDigit = x.__digit(neededLength - 1);\n if ((topDigit >>> bitsInTopDigit) === 0)\n return x;\n }\n // Otherwise, truncate.\n return JSBI.__truncateToNBits(n, x);\n }\n // Operators.\n static ADD(x, y) {\n x = JSBI.__toPrimitive(x);\n y = JSBI.__toPrimitive(y);\n if (typeof x === 'string') {\n if (typeof y !== 'string')\n y = y.toString();\n return x + y;\n }\n if (typeof y === 'string') {\n return x.toString() + y;\n }\n x = JSBI.__toNumeric(x);\n y = JSBI.__toNumeric(y);\n if (JSBI.__isBigInt(x) && JSBI.__isBigInt(y)) {\n return JSBI.add(x, y);\n }\n if (typeof x === 'number' && typeof y === 'number') {\n return x + y;\n }\n throw new TypeError('Cannot mix BigInt and other types, use explicit conversions');\n }\n static LT(x, y) {\n return JSBI.__compare(x, y, 0);\n }\n static LE(x, y) {\n return JSBI.__compare(x, y, 1);\n }\n static GT(x, y) {\n return JSBI.__compare(x, y, 2);\n }\n static GE(x, y) {\n return JSBI.__compare(x, y, 3);\n }\n static EQ(x, y) {\n while (true) {\n if (JSBI.__isBigInt(x)) {\n if (JSBI.__isBigInt(y))\n return JSBI.equal(x, y);\n return JSBI.EQ(y, x);\n }\n else if (typeof x === 'number') {\n if (JSBI.__isBigInt(y))\n return JSBI.__equalToNumber(y, x);\n if (typeof y !== 'object')\n return x == y;\n y = JSBI.__toPrimitive(y);\n }\n else if (typeof x === 'string') {\n if (JSBI.__isBigInt(y)) {\n x = JSBI.__fromString(x);\n if (x === null)\n return false;\n return JSBI.equal(x, y);\n }\n if (typeof y !== 'object')\n return x == y;\n y = JSBI.__toPrimitive(y);\n }\n else if (typeof x === 'boolean') {\n if (JSBI.__isBigInt(y))\n return JSBI.__equalToNumber(y, +x);\n if (typeof y !== 'object')\n return x == y;\n y = JSBI.__toPrimitive(y);\n }\n else if (typeof x === 'symbol') {\n if (JSBI.__isBigInt(y))\n return false;\n if (typeof y !== 'object')\n return x == y;\n y = JSBI.__toPrimitive(y);\n }\n else if (typeof x === 'object') {\n if (typeof y === 'object' && y.constructor !== JSBI)\n return x == y;\n x = JSBI.__toPrimitive(x);\n }\n else {\n return x == y;\n }\n }\n }\n static NE(x, y) {\n return !JSBI.EQ(x, y);\n }\n // DataView-related functionality.\n static DataViewGetBigInt64(dataview, byteOffset, littleEndian = false) {\n return JSBI.asIntN(64, JSBI.DataViewGetBigUint64(dataview, byteOffset, littleEndian));\n }\n static DataViewGetBigUint64(dataview, byteOffset, littleEndian = false) {\n const [h, l] = littleEndian ? [4, 0] : [0, 4];\n const high = dataview.getUint32(byteOffset + h, littleEndian);\n const low = dataview.getUint32(byteOffset + l, littleEndian);\n const result = new JSBI(3, false);\n result.__setDigit(0, low & 0x3FFFFFFF);\n result.__setDigit(1, ((high & 0xFFFFFFF) << 2) | (low >>> 30));\n result.__setDigit(2, high >>> 28);\n return result.__trim();\n }\n static DataViewSetBigInt64(dataview, byteOffset, value, littleEndian = false) {\n JSBI.DataViewSetBigUint64(dataview, byteOffset, value, littleEndian);\n }\n static DataViewSetBigUint64(dataview, byteOffset, value, littleEndian = false) {\n value = JSBI.asUintN(64, value);\n let high = 0;\n let low = 0;\n if (value.length > 0) {\n low = value.__digit(0);\n if (value.length > 1) {\n const d1 = value.__digit(1);\n low = low | d1 << 30;\n high = d1 >>> 2;\n if (value.length > 2) {\n high = high | (value.__digit(2) << 28);\n }\n }\n }\n const [h, l] = littleEndian ? [4, 0] : [0, 4];\n dataview.setUint32(byteOffset + h, high, littleEndian);\n dataview.setUint32(byteOffset + l, low, littleEndian);\n }\n // Helpers.\n static __zero() {\n return new JSBI(0, false);\n }\n static __oneDigit(value, sign) {\n const result = new JSBI(1, sign);\n result.__setDigit(0, value);\n return result;\n }\n __copy() {\n const result = new JSBI(this.length, this.sign);\n for (let i = 0; i < this.length; i++) {\n result[i] = this[i];\n }\n return result;\n }\n __trim() {\n let newLength = this.length;\n let last = this[newLength - 1];\n while (last === 0) {\n newLength--;\n last = this[newLength - 1];\n this.pop();\n }\n if (newLength === 0)\n this.sign = false;\n return this;\n }\n __initializeDigits() {\n for (let i = 0; i < this.length; i++) {\n this[i] = 0;\n }\n }\n static __decideRounding(x, mantissaBitsUnset, digitIndex, currentDigit) {\n if (mantissaBitsUnset > 0)\n return -1;\n let topUnconsumedBit;\n if (mantissaBitsUnset < 0) {\n topUnconsumedBit = -mantissaBitsUnset - 1;\n }\n else {\n // {currentDigit} fit the mantissa exactly; look at the next digit.\n if (digitIndex === 0)\n return -1;\n digitIndex--;\n currentDigit = x.__digit(digitIndex);\n topUnconsumedBit = 29;\n }\n // If the most significant remaining bit is 0, round down.\n let mask = 1 << topUnconsumedBit;\n if ((currentDigit & mask) === 0)\n return -1;\n // If any other remaining bit is set, round up.\n mask -= 1;\n if ((currentDigit & mask) !== 0)\n return 1;\n while (digitIndex > 0) {\n digitIndex--;\n if (x.__digit(digitIndex) !== 0)\n return 1;\n }\n return 0;\n }\n static __fromDouble(value) {\n const sign = value < 0;\n JSBI.__kBitConversionDouble[0] = value;\n const rawExponent = (JSBI.__kBitConversionInts[1] >>> 20) & 0x7FF;\n const exponent = rawExponent - 0x3FF;\n const digits = ((exponent / 30) | 0) + 1;\n const result = new JSBI(digits, sign);\n const kHiddenBit = 0x00100000;\n let mantissaHigh = (JSBI.__kBitConversionInts[1] & 0xFFFFF) | kHiddenBit;\n let mantissaLow = JSBI.__kBitConversionInts[0];\n const kMantissaHighTopBit = 20;\n // 0-indexed position of most significant bit in most significant digit.\n const msdTopBit = exponent % 30;\n // Number of unused bits in the mantissa. We'll keep them shifted to the\n // left (i.e. most significant part).\n let remainingMantissaBits = 0;\n // Next digit under construction.\n let digit;\n // First, build the MSD by shifting the mantissa appropriately.\n if (msdTopBit < kMantissaHighTopBit) {\n const shift = kMantissaHighTopBit - msdTopBit;\n remainingMantissaBits = shift + 32;\n digit = mantissaHigh >>> shift;\n mantissaHigh = (mantissaHigh << (32 - shift)) | (mantissaLow >>> shift);\n mantissaLow = mantissaLow << (32 - shift);\n }\n else if (msdTopBit === kMantissaHighTopBit) {\n remainingMantissaBits = 32;\n digit = mantissaHigh;\n mantissaHigh = mantissaLow;\n mantissaLow = 0;\n }\n else {\n const shift = msdTopBit - kMantissaHighTopBit;\n remainingMantissaBits = 32 - shift;\n digit = (mantissaHigh << shift) | (mantissaLow >>> (32 - shift));\n mantissaHigh = mantissaLow << shift;\n mantissaLow = 0;\n }\n result.__setDigit(digits - 1, digit);\n // Then fill in the rest of the digits.\n for (let digitIndex = digits - 2; digitIndex >= 0; digitIndex--) {\n if (remainingMantissaBits > 0) {\n remainingMantissaBits -= 30;\n digit = mantissaHigh >>> 2;\n mantissaHigh = (mantissaHigh << 30) | (mantissaLow >>> 2);\n mantissaLow = (mantissaLow << 30);\n }\n else {\n digit = 0;\n }\n result.__setDigit(digitIndex, digit);\n }\n return result.__trim();\n }\n static __isWhitespace(c) {\n if (c <= 0x0D && c >= 0x09)\n return true;\n if (c <= 0x9F)\n return c === 0x20;\n if (c <= 0x01FFFF) {\n return c === 0xA0 || c === 0x1680;\n }\n if (c <= 0x02FFFF) {\n c &= 0x01FFFF;\n return c <= 0x0A || c === 0x28 || c === 0x29 || c === 0x2F ||\n c === 0x5F || c === 0x1000;\n }\n return c === 0xFEFF;\n }\n static __fromString(string, radix = 0) {\n let sign = 0;\n let leadingZero = false;\n const length = string.length;\n let cursor = 0;\n if (cursor === length)\n return JSBI.__zero();\n let current = string.charCodeAt(cursor);\n // Skip whitespace.\n while (JSBI.__isWhitespace(current)) {\n if (++cursor === length)\n return JSBI.__zero();\n current = string.charCodeAt(cursor);\n }\n // Detect radix.\n if (current === 0x2B) { // '+'\n if (++cursor === length)\n return null;\n current = string.charCodeAt(cursor);\n sign = 1;\n }\n else if (current === 0x2D) { // '-'\n if (++cursor === length)\n return null;\n current = string.charCodeAt(cursor);\n sign = -1;\n }\n if (radix === 0) {\n radix = 10;\n if (current === 0x30) { // '0'\n if (++cursor === length)\n return JSBI.__zero();\n current = string.charCodeAt(cursor);\n if (current === 0x58 || current === 0x78) { // 'X' or 'x'\n radix = 16;\n if (++cursor === length)\n return null;\n current = string.charCodeAt(cursor);\n }\n else if (current === 0x4F || current === 0x6F) { // 'O' or 'o'\n radix = 8;\n if (++cursor === length)\n return null;\n current = string.charCodeAt(cursor);\n }\n else if (current === 0x42 || current === 0x62) { // 'B' or 'b'\n radix = 2;\n if (++cursor === length)\n return null;\n current = string.charCodeAt(cursor);\n }\n else {\n leadingZero = true;\n }\n }\n }\n else if (radix === 16) {\n if (current === 0x30) { // '0'\n // Allow \"0x\" prefix.\n if (++cursor === length)\n return JSBI.__zero();\n current = string.charCodeAt(cursor);\n if (current === 0x58 || current === 0x78) { // 'X' or 'x'\n if (++cursor === length)\n return null;\n current = string.charCodeAt(cursor);\n }\n else {\n leadingZero = true;\n }\n }\n }\n if (sign !== 0 && radix !== 10)\n return null;\n // Skip leading zeros.\n while (current === 0x30) {\n leadingZero = true;\n if (++cursor === length)\n return JSBI.__zero();\n current = string.charCodeAt(cursor);\n }\n // Allocate result.\n const chars = length - cursor;\n let bitsPerChar = JSBI.__kMaxBitsPerChar[radix];\n let roundup = JSBI.__kBitsPerCharTableMultiplier - 1;\n if (chars > (1 << 30) / bitsPerChar)\n return null;\n const bitsMin = (bitsPerChar * chars + roundup) >>> JSBI.__kBitsPerCharTableShift;\n const resultLength = ((bitsMin + 29) / 30) | 0;\n const result = new JSBI(resultLength, false);\n // Parse.\n const limDigit = radix < 10 ? radix : 10;\n const limAlpha = radix > 10 ? radix - 10 : 0;\n if ((radix & (radix - 1)) === 0) {\n // Power-of-two radix.\n bitsPerChar >>= JSBI.__kBitsPerCharTableShift;\n const parts = [];\n const partsBits = [];\n let done = false;\n do {\n let part = 0;\n let bits = 0;\n while (true) {\n let d;\n if (((current - 48) >>> 0) < limDigit) {\n d = current - 48;\n }\n else if ((((current | 32) - 97) >>> 0) < limAlpha) {\n d = (current | 32) - 87;\n }\n else {\n done = true;\n break;\n }\n bits += bitsPerChar;\n part = (part << bitsPerChar) | d;\n if (++cursor === length) {\n done = true;\n break;\n }\n current = string.charCodeAt(cursor);\n if (bits + bitsPerChar > 30)\n break;\n }\n parts.push(part);\n partsBits.push(bits);\n } while (!done);\n JSBI.__fillFromParts(result, parts, partsBits);\n }\n else {\n result.__initializeDigits();\n let done = false;\n let charsSoFar = 0;\n do {\n let part = 0;\n let multiplier = 1;\n while (true) {\n let d;\n if (((current - 48) >>> 0) < limDigit) {\n d = current - 48;\n }\n else if ((((current | 32) - 97) >>> 0) < limAlpha) {\n d = (current | 32) - 87;\n }\n else {\n done = true;\n break;\n }\n const m = multiplier * radix;\n if (m > 0x3FFFFFFF)\n break;\n multiplier = m;\n part = part * radix + d;\n charsSoFar++;\n if (++cursor === length) {\n done = true;\n break;\n }\n current = string.charCodeAt(cursor);\n }\n roundup = JSBI.__kBitsPerCharTableMultiplier * 30 - 1;\n const digitsSoFar = (((bitsPerChar * charsSoFar + roundup) >>>\n JSBI.__kBitsPerCharTableShift) / 30) | 0;\n result.__inplaceMultiplyAdd(multiplier, part, digitsSoFar);\n } while (!done);\n }\n if (cursor !== length) {\n if (!JSBI.__isWhitespace(current))\n return null;\n for (cursor++; cursor < length; cursor++) {\n current = string.charCodeAt(cursor);\n if (!JSBI.__isWhitespace(current))\n return null;\n }\n }\n // Get result.\n result.sign = (sign === -1);\n return result.__trim();\n }\n static __fillFromParts(result, parts, partsBits) {\n let digitIndex = 0;\n let digit = 0;\n let bitsInDigit = 0;\n for (let i = parts.length - 1; i >= 0; i--) {\n const part = parts[i];\n const partBits = partsBits[i];\n digit |= (part << bitsInDigit);\n bitsInDigit += partBits;\n if (bitsInDigit === 30) {\n result.__setDigit(digitIndex++, digit);\n bitsInDigit = 0;\n digit = 0;\n }\n else if (bitsInDigit > 30) {\n result.__setDigit(digitIndex++, digit & 0x3FFFFFFF);\n bitsInDigit -= 30;\n digit = part >>> (partBits - bitsInDigit);\n }\n }\n if (digit !== 0) {\n if (digitIndex >= result.length)\n throw new Error('implementation bug');\n result.__setDigit(digitIndex++, digit);\n }\n for (; digitIndex < result.length; digitIndex++) {\n result.__setDigit(digitIndex, 0);\n }\n }\n static __toStringBasePowerOfTwo(x, radix) {\n const length = x.length;\n let bits = radix - 1;\n bits = ((bits >>> 1) & 0x55) + (bits & 0x55);\n bits = ((bits >>> 2) & 0x33) + (bits & 0x33);\n bits = ((bits >>> 4) & 0x0F) + (bits & 0x0F);\n const bitsPerChar = bits;\n const charMask = radix - 1;\n const msd = x.__digit(length - 1);\n const msdLeadingZeros = JSBI.__clz30(msd);\n const bitLength = length * 30 - msdLeadingZeros;\n let charsRequired = ((bitLength + bitsPerChar - 1) / bitsPerChar) | 0;\n if (x.sign)\n charsRequired++;\n if (charsRequired > (1 << 28))\n throw new Error('string too long');\n const result = new Array(charsRequired);\n let pos = charsRequired - 1;\n let digit = 0;\n let availableBits = 0;\n for (let i = 0; i < length - 1; i++) {\n const newDigit = x.__digit(i);\n const current = (digit | (newDigit << availableBits)) & charMask;\n result[pos--] = JSBI.__kConversionChars[current];\n const consumedBits = bitsPerChar - availableBits;\n digit = newDigit >>> consumedBits;\n availableBits = 30 - consumedBits;\n while (availableBits >= bitsPerChar) {\n result[pos--] = JSBI.__kConversionChars[digit & charMask];\n digit >>>= bitsPerChar;\n availableBits -= bitsPerChar;\n }\n }\n const current = (digit | (msd << availableBits)) & charMask;\n result[pos--] = JSBI.__kConversionChars[current];\n digit = msd >>> (bitsPerChar - availableBits);\n while (digit !== 0) {\n result[pos--] = JSBI.__kConversionChars[digit & charMask];\n digit >>>= bitsPerChar;\n }\n if (x.sign)\n result[pos--] = '-';\n if (pos !== -1)\n throw new Error('implementation bug');\n return result.join('');\n }\n static __toStringGeneric(x, radix, isRecursiveCall) {\n const length = x.length;\n if (length === 0)\n return '';\n if (length === 1) {\n let result = x.__unsignedDigit(0).toString(radix);\n if (isRecursiveCall === false && x.sign) {\n result = '-' + result;\n }\n return result;\n }\n const bitLength = length * 30 - JSBI.__clz30(x.__digit(length - 1));\n const maxBitsPerChar = JSBI.__kMaxBitsPerChar[radix];\n const minBitsPerChar = maxBitsPerChar - 1;\n let charsRequired = bitLength * JSBI.__kBitsPerCharTableMultiplier;\n charsRequired += minBitsPerChar - 1;\n charsRequired = (charsRequired / minBitsPerChar) | 0;\n const secondHalfChars = (charsRequired + 1) >> 1;\n // Divide-and-conquer: split by a power of {radix} that's approximately\n // the square root of {x}, then recurse.\n const conqueror = JSBI.exponentiate(JSBI.__oneDigit(radix, false), JSBI.__oneDigit(secondHalfChars, false));\n let quotient;\n let secondHalf;\n const divisor = conqueror.__unsignedDigit(0);\n if (conqueror.length === 1 && divisor <= 0x7FFF) {\n quotient = new JSBI(x.length, false);\n quotient.__initializeDigits();\n let remainder = 0;\n for (let i = x.length * 2 - 1; i >= 0; i--) {\n const input = (remainder << 15) | x.__halfDigit(i);\n quotient.__setHalfDigit(i, (input / divisor) | 0);\n remainder = (input % divisor) | 0;\n }\n secondHalf = remainder.toString(radix);\n }\n else {\n const divisionResult = JSBI.__absoluteDivLarge(x, conqueror, true, true);\n quotient = divisionResult.quotient;\n const remainder = divisionResult.remainder.__trim();\n secondHalf = JSBI.__toStringGeneric(remainder, radix, true);\n }\n quotient.__trim();\n let firstHalf = JSBI.__toStringGeneric(quotient, radix, true);\n while (secondHalf.length < secondHalfChars) {\n secondHalf = '0' + secondHalf;\n }\n if (isRecursiveCall === false && x.sign) {\n firstHalf = '-' + firstHalf;\n }\n return firstHalf + secondHalf;\n }\n static __unequalSign(leftNegative) {\n return leftNegative ? -1 : 1;\n }\n static __absoluteGreater(bothNegative) {\n return bothNegative ? -1 : 1;\n }\n static __absoluteLess(bothNegative) {\n return bothNegative ? 1 : -1;\n }\n static __compareToBigInt(x, y) {\n const xSign = x.sign;\n if (xSign !== y.sign)\n return JSBI.__unequalSign(xSign);\n const result = JSBI.__absoluteCompare(x, y);\n if (result > 0)\n return JSBI.__absoluteGreater(xSign);\n if (result < 0)\n return JSBI.__absoluteLess(xSign);\n return 0;\n }\n static __compareToNumber(x, y) {\n if (JSBI.__isOneDigitInt(y)) {\n const xSign = x.sign;\n const ySign = (y < 0);\n if (xSign !== ySign)\n return JSBI.__unequalSign(xSign);\n if (x.length === 0) {\n if (ySign)\n throw new Error('implementation bug');\n return y === 0 ? 0 : -1;\n }\n // Any multi-digit BigInt is bigger than an int32.\n if (x.length > 1)\n return JSBI.__absoluteGreater(xSign);\n const yAbs = Math.abs(y);\n const xDigit = x.__unsignedDigit(0);\n if (xDigit > yAbs)\n return JSBI.__absoluteGreater(xSign);\n if (xDigit < yAbs)\n return JSBI.__absoluteLess(xSign);\n return 0;\n }\n return JSBI.__compareToDouble(x, y);\n }\n static __compareToDouble(x, y) {\n if (y !== y)\n return y; // NaN.\n if (y === Infinity)\n return -1;\n if (y === -Infinity)\n return 1;\n const xSign = x.sign;\n const ySign = (y < 0);\n if (xSign !== ySign)\n return JSBI.__unequalSign(xSign);\n if (y === 0) {\n throw new Error('implementation bug: should be handled elsewhere');\n }\n if (x.length === 0)\n return -1;\n JSBI.__kBitConversionDouble[0] = y;\n const rawExponent = (JSBI.__kBitConversionInts[1] >>> 20) & 0x7FF;\n if (rawExponent === 0x7FF) {\n throw new Error('implementation bug: handled elsewhere');\n }\n const exponent = rawExponent - 0x3FF;\n if (exponent < 0) {\n // The absolute value of y is less than 1. Only 0n has an absolute\n // value smaller than that, but we've already covered that case.\n return JSBI.__absoluteGreater(xSign);\n }\n const xLength = x.length;\n let xMsd = x.__digit(xLength - 1);\n const msdLeadingZeros = JSBI.__clz30(xMsd);\n const xBitLength = xLength * 30 - msdLeadingZeros;\n const yBitLength = exponent + 1;\n if (xBitLength < yBitLength)\n return JSBI.__absoluteLess(xSign);\n if (xBitLength > yBitLength)\n return JSBI.__absoluteGreater(xSign);\n // Same sign, same bit length. Shift mantissa to align with x and compare\n // bit for bit.\n const kHiddenBit = 0x00100000;\n let mantissaHigh = (JSBI.__kBitConversionInts[1] & 0xFFFFF) | kHiddenBit;\n let mantissaLow = JSBI.__kBitConversionInts[0];\n const kMantissaHighTopBit = 20;\n const msdTopBit = 29 - msdLeadingZeros;\n if (msdTopBit !== (((xBitLength - 1) % 30) | 0)) {\n throw new Error('implementation bug');\n }\n let compareMantissa; // Shifted chunk of mantissa.\n let remainingMantissaBits = 0;\n // First, compare most significant digit against beginning of mantissa.\n if (msdTopBit < kMantissaHighTopBit) {\n const shift = kMantissaHighTopBit - msdTopBit;\n remainingMantissaBits = shift + 32;\n compareMantissa = mantissaHigh >>> shift;\n mantissaHigh = (mantissaHigh << (32 - shift)) | (mantissaLow >>> shift);\n mantissaLow = mantissaLow << (32 - shift);\n }\n else if (msdTopBit === kMantissaHighTopBit) {\n remainingMantissaBits = 32;\n compareMantissa = mantissaHigh;\n mantissaHigh = mantissaLow;\n mantissaLow = 0;\n }\n else {\n const shift = msdTopBit - kMantissaHighTopBit;\n remainingMantissaBits = 32 - shift;\n compareMantissa =\n (mantissaHigh << shift) | (mantissaLow >>> (32 - shift));\n mantissaHigh = mantissaLow << shift;\n mantissaLow = 0;\n }\n xMsd = xMsd >>> 0;\n compareMantissa = compareMantissa >>> 0;\n if (xMsd > compareMantissa)\n return JSBI.__absoluteGreater(xSign);\n if (xMsd < compareMantissa)\n return JSBI.__absoluteLess(xSign);\n // Then, compare additional digits against remaining mantissa bits.\n for (let digitIndex = xLength - 2; digitIndex >= 0; digitIndex--) {\n if (remainingMantissaBits > 0) {\n remainingMantissaBits -= 30;\n compareMantissa = mantissaHigh >>> 2;\n mantissaHigh = (mantissaHigh << 30) | (mantissaLow >>> 2);\n mantissaLow = (mantissaLow << 30);\n }\n else {\n compareMantissa = 0;\n }\n const digit = x.__unsignedDigit(digitIndex);\n if (digit > compareMantissa)\n return JSBI.__absoluteGreater(xSign);\n if (digit < compareMantissa)\n return JSBI.__absoluteLess(xSign);\n }\n // Integer parts are equal; check whether {y} has a fractional part.\n if (mantissaHigh !== 0 || mantissaLow !== 0) {\n if (remainingMantissaBits === 0)\n throw new Error('implementation bug');\n return JSBI.__absoluteLess(xSign);\n }\n return 0;\n }\n static __equalToNumber(x, y) {\n if (JSBI.__isOneDigitInt(y)) {\n if (y === 0)\n return x.length === 0;\n // Any multi-digit BigInt is bigger than an int32.\n return (x.length === 1) && (x.sign === (y < 0)) &&\n (x.__unsignedDigit(0) === Math.abs(y));\n }\n return JSBI.__compareToDouble(x, y) === 0;\n }\n // Comparison operations, chosen such that \"op ^ 2\" reverses direction:\n // 0 - lessThan\n // 1 - lessThanOrEqual\n // 2 - greaterThan\n // 3 - greaterThanOrEqual\n static __comparisonResultToBool(result, op) {\n switch (op) {\n case 0: return result < 0;\n case 1: return result <= 0;\n case 2: return result > 0;\n case 3: return result >= 0;\n }\n }\n static __compare(x, y, op) {\n x = JSBI.__toPrimitive(x);\n y = JSBI.__toPrimitive(y);\n if (typeof x === 'string' && typeof y === 'string') {\n switch (op) {\n case 0: return x < y;\n case 1: return x <= y;\n case 2: return x > y;\n case 3: return x >= y;\n }\n }\n if (JSBI.__isBigInt(x) && typeof y === 'string') {\n y = JSBI.__fromString(y);\n if (y === null)\n return false;\n return JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(x, y), op);\n }\n if (typeof x === 'string' && JSBI.__isBigInt(y)) {\n x = JSBI.__fromString(x);\n if (x === null)\n return false;\n return JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(x, y), op);\n }\n x = JSBI.__toNumeric(x);\n y = JSBI.__toNumeric(y);\n if (JSBI.__isBigInt(x)) {\n if (JSBI.__isBigInt(y)) {\n return JSBI.__comparisonResultToBool(JSBI.__compareToBigInt(x, y), op);\n }\n if (typeof y !== 'number')\n throw new Error('implementation bug');\n return JSBI.__comparisonResultToBool(JSBI.__compareToNumber(x, y), op);\n }\n if (typeof x !== 'number')\n throw new Error('implementation bug');\n if (JSBI.__isBigInt(y)) {\n // Note that \"op ^ 2\" reverses the op's direction.\n return JSBI.__comparisonResultToBool(JSBI.__compareToNumber(y, x), (op ^ 2));\n }\n if (typeof y !== 'number')\n throw new Error('implementation bug');\n switch (op) {\n case 0: return x < y;\n case 1: return x <= y;\n case 2: return x > y;\n case 3: return x >= y;\n }\n }\n __clzmsd() {\n return JSBI.__clz30(this.__digit(this.length - 1));\n }\n static __absoluteAdd(x, y, resultSign) {\n if (x.length < y.length)\n return JSBI.__absoluteAdd(y, x, resultSign);\n if (x.length === 0)\n return x;\n if (y.length === 0)\n return x.sign === resultSign ? x : JSBI.unaryMinus(x);\n let resultLength = x.length;\n if (x.__clzmsd() === 0 || (y.length === x.length && y.__clzmsd() === 0)) {\n resultLength++;\n }\n const result = new JSBI(resultLength, resultSign);\n let carry = 0;\n let i = 0;\n for (; i < y.length; i++) {\n const r = x.__digit(i) + y.__digit(i) + carry;\n carry = r >>> 30;\n result.__setDigit(i, r & 0x3FFFFFFF);\n }\n for (; i < x.length; i++) {\n const r = x.__digit(i) + carry;\n carry = r >>> 30;\n result.__setDigit(i, r & 0x3FFFFFFF);\n }\n if (i < result.length) {\n result.__setDigit(i, carry);\n }\n return result.__trim();\n }\n static __absoluteSub(x, y, resultSign) {\n if (x.length === 0)\n return x;\n if (y.length === 0)\n return x.sign === resultSign ? x : JSBI.unaryMinus(x);\n const result = new JSBI(x.length, resultSign);\n let borrow = 0;\n let i = 0;\n for (; i < y.length; i++) {\n const r = x.__digit(i) - y.__digit(i) - borrow;\n borrow = (r >>> 30) & 1;\n result.__setDigit(i, r & 0x3FFFFFFF);\n }\n for (; i < x.length; i++) {\n const r = x.__digit(i) - borrow;\n borrow = (r >>> 30) & 1;\n result.__setDigit(i, r & 0x3FFFFFFF);\n }\n return result.__trim();\n }\n static __absoluteAddOne(x, sign, result = null) {\n const inputLength = x.length;\n if (result === null) {\n result = new JSBI(inputLength, sign);\n }\n else {\n result.sign = sign;\n }\n let carry = 1;\n for (let i = 0; i < inputLength; i++) {\n const r = x.__digit(i) + carry;\n carry = r >>> 30;\n result.__setDigit(i, r & 0x3FFFFFFF);\n }\n if (carry !== 0) {\n result.__setDigitGrow(inputLength, 1);\n }\n return result;\n }\n static __absoluteSubOne(x, resultLength) {\n const length = x.length;\n resultLength = resultLength || length;\n const result = new JSBI(resultLength, false);\n let borrow = 1;\n for (let i = 0; i < length; i++) {\n const r = x.__digit(i) - borrow;\n borrow = (r >>> 30) & 1;\n result.__setDigit(i, r & 0x3FFFFFFF);\n }\n if (borrow !== 0)\n throw new Error('implementation bug');\n for (let i = length; i < resultLength; i++) {\n result.__setDigit(i, 0);\n }\n return result;\n }\n static __absoluteAnd(x, y, result = null) {\n let xLength = x.length;\n let yLength = y.length;\n let numPairs = yLength;\n if (xLength < yLength) {\n numPairs = xLength;\n const tmp = x;\n const tmpLength = xLength;\n x = y;\n xLength = yLength;\n y = tmp;\n yLength = tmpLength;\n }\n let resultLength = numPairs;\n if (result === null) {\n result = new JSBI(resultLength, false);\n }\n else {\n resultLength = result.length;\n }\n let i = 0;\n for (; i < numPairs; i++) {\n result.__setDigit(i, x.__digit(i) & y.__digit(i));\n }\n for (; i < resultLength; i++) {\n result.__setDigit(i, 0);\n }\n return result;\n }\n static __absoluteAndNot(x, y, result = null) {\n const xLength = x.length;\n const yLength = y.length;\n let numPairs = yLength;\n if (xLength < yLength) {\n numPairs = xLength;\n }\n let resultLength = xLength;\n if (result === null) {\n result = new JSBI(resultLength, false);\n }\n else {\n resultLength = result.length;\n }\n let i = 0;\n for (; i < numPairs; i++) {\n result.__setDigit(i, x.__digit(i) & ~y.__digit(i));\n }\n for (; i < xLength; i++) {\n result.__setDigit(i, x.__digit(i));\n }\n for (; i < resultLength; i++) {\n result.__setDigit(i, 0);\n }\n return result;\n }\n static __absoluteOr(x, y, result = null) {\n let xLength = x.length;\n let yLength = y.length;\n let numPairs = yLength;\n if (xLength < yLength) {\n numPairs = xLength;\n const tmp = x;\n const tmpLength = xLength;\n x = y;\n xLength = yLength;\n y = tmp;\n yLength = tmpLength;\n }\n let resultLength = xLength;\n if (result === null) {\n result = new JSBI(resultLength, false);\n }\n else {\n resultLength = result.length;\n }\n let i = 0;\n for (; i < numPairs; i++) {\n result.__setDigit(i, x.__digit(i) | y.__digit(i));\n }\n for (; i < xLength; i++) {\n result.__setDigit(i, x.__digit(i));\n }\n for (; i < resultLength; i++) {\n result.__setDigit(i, 0);\n }\n return result;\n }\n static __absoluteXor(x, y, result = null) {\n let xLength = x.length;\n let yLength = y.length;\n let numPairs = yLength;\n if (xLength < yLength) {\n numPairs = xLength;\n const tmp = x;\n const tmpLength = xLength;\n x = y;\n xLength = yLength;\n y = tmp;\n yLength = tmpLength;\n }\n let resultLength = xLength;\n if (result === null) {\n result = new JSBI(resultLength, false);\n }\n else {\n resultLength = result.length;\n }\n let i = 0;\n for (; i < numPairs; i++) {\n result.__setDigit(i, x.__digit(i) ^ y.__digit(i));\n }\n for (; i < xLength; i++) {\n result.__setDigit(i, x.__digit(i));\n }\n for (; i < resultLength; i++) {\n result.__setDigit(i, 0);\n }\n return result;\n }\n static __absoluteCompare(x, y) {\n const diff = x.length - y.length;\n if (diff !== 0)\n return diff;\n let i = x.length - 1;\n while (i >= 0 && x.__digit(i) === y.__digit(i))\n i--;\n if (i < 0)\n return 0;\n return x.__unsignedDigit(i) > y.__unsignedDigit(i) ? 1 : -1;\n }\n static __multiplyAccumulate(multiplicand, multiplier, accumulator, accumulatorIndex) {\n if (multiplier === 0)\n return;\n const m2Low = multiplier & 0x7FFF;\n const m2High = multiplier >>> 15;\n let carry = 0;\n let high = 0;\n for (let i = 0; i < multiplicand.length; i++, accumulatorIndex++) {\n let acc = accumulator.__digit(accumulatorIndex);\n const m1 = multiplicand.__digit(i);\n const m1Low = m1 & 0x7FFF;\n const m1High = m1 >>> 15;\n const rLow = JSBI.__imul(m1Low, m2Low);\n const rMid1 = JSBI.__imul(m1Low, m2High);\n const rMid2 = JSBI.__imul(m1High, m2Low);\n const rHigh = JSBI.__imul(m1High, m2High);\n acc += high + rLow + carry;\n carry = acc >>> 30;\n acc &= 0x3FFFFFFF;\n acc += ((rMid1 & 0x7FFF) << 15) + ((rMid2 & 0x7FFF) << 15);\n carry += acc >>> 30;\n high = rHigh + (rMid1 >>> 15) + (rMid2 >>> 15);\n accumulator.__setDigit(accumulatorIndex, acc & 0x3FFFFFFF);\n }\n for (; carry !== 0 || high !== 0; accumulatorIndex++) {\n let acc = accumulator.__digit(accumulatorIndex);\n acc += carry + high;\n high = 0;\n carry = acc >>> 30;\n accumulator.__setDigit(accumulatorIndex, acc & 0x3FFFFFFF);\n }\n }\n static __internalMultiplyAdd(source, factor, summand, n, result) {\n let carry = summand;\n let high = 0;\n for (let i = 0; i < n; i++) {\n const digit = source.__digit(i);\n const rx = JSBI.__imul(digit & 0x7FFF, factor);\n const ry = JSBI.__imul(digit >>> 15, factor);\n const r = rx + ((ry & 0x7FFF) << 15) + high + carry;\n carry = r >>> 30;\n high = ry >>> 15;\n result.__setDigit(i, r & 0x3FFFFFFF);\n }\n if (result.length > n) {\n result.__setDigit(n++, carry + high);\n while (n < result.length) {\n result.__setDigit(n++, 0);\n }\n }\n else {\n if (carry + high !== 0)\n throw new Error('implementation bug');\n }\n }\n __inplaceMultiplyAdd(multiplier, summand, length) {\n if (length > this.length)\n length = this.length;\n const mLow = multiplier & 0x7FFF;\n const mHigh = multiplier >>> 15;\n let carry = 0;\n let high = summand;\n for (let i = 0; i < length; i++) {\n const d = this.__digit(i);\n const dLow = d & 0x7FFF;\n const dHigh = d >>> 15;\n const pLow = JSBI.__imul(dLow, mLow);\n const pMid1 = JSBI.__imul(dLow, mHigh);\n const pMid2 = JSBI.__imul(dHigh, mLow);\n const pHigh = JSBI.__imul(dHigh, mHigh);\n let result = high + pLow + carry;\n carry = result >>> 30;\n result &= 0x3FFFFFFF;\n result += ((pMid1 & 0x7FFF) << 15) + ((pMid2 & 0x7FFF) << 15);\n carry += result >>> 30;\n high = pHigh + (pMid1 >>> 15) + (pMid2 >>> 15);\n this.__setDigit(i, result & 0x3FFFFFFF);\n }\n if (carry !== 0 || high !== 0) {\n throw new Error('implementation bug');\n }\n }\n static __absoluteDivSmall(x, divisor, quotient = null) {\n if (quotient === null)\n quotient = new JSBI(x.length, false);\n let remainder = 0;\n for (let i = x.length * 2 - 1; i >= 0; i -= 2) {\n let input = ((remainder << 15) | x.__halfDigit(i)) >>> 0;\n const upperHalf = (input / divisor) | 0;\n remainder = (input % divisor) | 0;\n input = ((remainder << 15) | x.__halfDigit(i - 1)) >>> 0;\n const lowerHalf = (input / divisor) | 0;\n remainder = (input % divisor) | 0;\n quotient.__setDigit(i >>> 1, (upperHalf << 15) | lowerHalf);\n }\n return quotient;\n }\n static __absoluteModSmall(x, divisor) {\n let remainder = 0;\n for (let i = x.length * 2 - 1; i >= 0; i--) {\n const input = ((remainder << 15) | x.__halfDigit(i)) >>> 0;\n remainder = (input % divisor) | 0;\n }\n return remainder;\n }\n static __absoluteDivLarge(dividend, divisor, wantQuotient, wantRemainder) {\n const n = divisor.__halfDigitLength();\n const n2 = divisor.length;\n const m = dividend.__halfDigitLength() - n;\n let q = null;\n if (wantQuotient) {\n q = new JSBI((m + 2) >>> 1, false);\n q.__initializeDigits();\n }\n const qhatv = new JSBI((n + 2) >>> 1, false);\n qhatv.__initializeDigits();\n // D1.\n const shift = JSBI.__clz15(divisor.__halfDigit(n - 1));\n if (shift > 0) {\n divisor = JSBI.__specialLeftShift(divisor, shift, 0 /* add no digits*/);\n }\n const u = JSBI.__specialLeftShift(dividend, shift, 1 /* add one digit */);\n // D2.\n const vn1 = divisor.__halfDigit(n - 1);\n let halfDigitBuffer = 0;\n for (let j = m; j >= 0; j--) {\n // D3.\n let qhat = 0x7FFF;\n const ujn = u.__halfDigit(j + n);\n if (ujn !== vn1) {\n const input = ((ujn << 15) | u.__halfDigit(j + n - 1)) >>> 0;\n qhat = (input / vn1) | 0;\n let rhat = (input % vn1) | 0;\n const vn2 = divisor.__halfDigit(n - 2);\n const ujn2 = u.__halfDigit(j + n - 2);\n while ((JSBI.__imul(qhat, vn2) >>> 0) > (((rhat << 16) | ujn2) >>> 0)) {\n qhat--;\n rhat += vn1;\n if (rhat > 0x7FFF)\n break;\n }\n }\n // D4.\n JSBI.__internalMultiplyAdd(divisor, qhat, 0, n2, qhatv);\n let c = u.__inplaceSub(qhatv, j, n + 1);\n if (c !== 0) {\n c = u.__inplaceAdd(divisor, j, n);\n u.__setHalfDigit(j + n, (u.__halfDigit(j + n) + c) & 0x7FFF);\n qhat--;\n }\n if (wantQuotient) {\n if (j & 1) {\n halfDigitBuffer = qhat << 15;\n }\n else {\n // TODO make this statically determinable\n q.__setDigit(j >>> 1, halfDigitBuffer | qhat);\n }\n }\n }\n if (wantRemainder) {\n u.__inplaceRightShift(shift);\n if (wantQuotient) {\n return { quotient: q, remainder: u };\n }\n return u;\n }\n if (wantQuotient)\n return q;\n // TODO find a way to make this statically unreachable?\n throw new Error('unreachable');\n }\n static __clz15(value) {\n return JSBI.__clz30(value) - 15;\n }\n // TODO: work on full digits, like __inplaceSub?\n __inplaceAdd(summand, startIndex, halfDigits) {\n let carry = 0;\n for (let i = 0; i < halfDigits; i++) {\n const sum = this.__halfDigit(startIndex + i) +\n summand.__halfDigit(i) +\n carry;\n carry = sum >>> 15;\n this.__setHalfDigit(startIndex + i, sum & 0x7FFF);\n }\n return carry;\n }\n __inplaceSub(subtrahend, startIndex, halfDigits) {\n const fullSteps = (halfDigits - 1) >>> 1;\n let borrow = 0;\n if (startIndex & 1) {\n // this: [..][..][..]\n // subtr.: [..][..]\n startIndex >>= 1;\n let current = this.__digit(startIndex);\n let r0 = current & 0x7FFF;\n let i = 0;\n for (; i < fullSteps; i++) {\n const sub = subtrahend.__digit(i);\n const r15 = (current >>> 15) - (sub & 0x7FFF) - borrow;\n borrow = (r15 >>> 15) & 1;\n this.__setDigit(startIndex + i, ((r15 & 0x7FFF) << 15) | (r0 & 0x7FFF));\n current = this.__digit(startIndex + i + 1);\n r0 = (current & 0x7FFF) - (sub >>> 15) - borrow;\n borrow = (r0 >>> 15) & 1;\n }\n // Unrolling the last iteration gives a 5% performance benefit!\n const sub = subtrahend.__digit(i);\n const r15 = (current >>> 15) - (sub & 0x7FFF) - borrow;\n borrow = (r15 >>> 15) & 1;\n this.__setDigit(startIndex + i, ((r15 & 0x7FFF) << 15) | (r0 & 0x7FFF));\n const subTop = sub >>> 15;\n if (startIndex + i + 1 >= this.length) {\n throw new RangeError('out of bounds');\n }\n if ((halfDigits & 1) === 0) {\n current = this.__digit(startIndex + i + 1);\n r0 = (current & 0x7FFF) - subTop - borrow;\n borrow = (r0 >>> 15) & 1;\n this.__setDigit(startIndex + subtrahend.length, (current & 0x3FFF8000) | (r0 & 0x7FFF));\n }\n }\n else {\n startIndex >>= 1;\n let i = 0;\n for (; i < subtrahend.length - 1; i++) {\n const current = this.__digit(startIndex + i);\n const sub = subtrahend.__digit(i);\n const r0 = (current & 0x7FFF) - (sub & 0x7FFF) - borrow;\n borrow = (r0 >>> 15) & 1;\n const r15 = (current >>> 15) - (sub >>> 15) - borrow;\n borrow = (r15 >>> 15) & 1;\n this.__setDigit(startIndex + i, ((r15 & 0x7FFF) << 15) | (r0 & 0x7FFF));\n }\n const current = this.__digit(startIndex + i);\n const sub = subtrahend.__digit(i);\n const r0 = (current & 0x7FFF) - (sub & 0x7FFF) - borrow;\n borrow = (r0 >>> 15) & 1;\n let r15 = 0;\n if ((halfDigits & 1) === 0) {\n r15 = (current >>> 15) - (sub >>> 15) - borrow;\n borrow = (r15 >>> 15) & 1;\n }\n this.__setDigit(startIndex + i, ((r15 & 0x7FFF) << 15) | (r0 & 0x7FFF));\n }\n return borrow;\n }\n __inplaceRightShift(shift) {\n if (shift === 0)\n return;\n let carry = this.__digit(0) >>> shift;\n const last = this.length - 1;\n for (let i = 0; i < last; i++) {\n const d = this.__digit(i + 1);\n this.__setDigit(i, ((d << (30 - shift)) & 0x3FFFFFFF) | carry);\n carry = d >>> shift;\n }\n this.__setDigit(last, carry);\n }\n static __specialLeftShift(x, shift, addDigit) {\n const n = x.length;\n const resultLength = n + addDigit;\n const result = new JSBI(resultLength, false);\n if (shift === 0) {\n for (let i = 0; i < n; i++)\n result.__setDigit(i, x.__digit(i));\n if (addDigit > 0)\n result.__setDigit(n, 0);\n return result;\n }\n let carry = 0;\n for (let i = 0; i < n; i++) {\n const d = x.__digit(i);\n result.__setDigit(i, ((d << shift) & 0x3FFFFFFF) | carry);\n carry = d >>> (30 - shift);\n }\n if (addDigit > 0) {\n result.__setDigit(n, carry);\n }\n return result;\n }\n static __leftShiftByAbsolute(x, y) {\n const shift = JSBI.__toShiftAmount(y);\n if (shift < 0)\n throw new RangeError('BigInt too big');\n const digitShift = (shift / 30) | 0;\n const bitsShift = shift % 30;\n const length = x.length;\n const grow = bitsShift !== 0 &&\n (x.__digit(length - 1) >>> (30 - bitsShift)) !== 0;\n const resultLength = length + digitShift + (grow ? 1 : 0);\n const result = new JSBI(resultLength, x.sign);\n if (bitsShift === 0) {\n let i = 0;\n for (; i < digitShift; i++)\n result.__setDigit(i, 0);\n for (; i < resultLength; i++) {\n result.__setDigit(i, x.__digit(i - digitShift));\n }\n }\n else {\n let carry = 0;\n for (let i = 0; i < digitShift; i++)\n result.__setDigit(i, 0);\n for (let i = 0; i < length; i++) {\n const d = x.__digit(i);\n result.__setDigit(i + digitShift, ((d << bitsShift) & 0x3FFFFFFF) | carry);\n carry = d >>> (30 - bitsShift);\n }\n if (grow) {\n result.__setDigit(length + digitShift, carry);\n }\n else {\n if (carry !== 0)\n throw new Error('implementation bug');\n }\n }\n return result.__trim();\n }\n static __rightShiftByAbsolute(x, y) {\n const length = x.length;\n const sign = x.sign;\n const shift = JSBI.__toShiftAmount(y);\n if (shift < 0)\n return JSBI.__rightShiftByMaximum(sign);\n const digitShift = (shift / 30) | 0;\n const bitsShift = shift % 30;\n let resultLength = length - digitShift;\n if (resultLength <= 0)\n return JSBI.__rightShiftByMaximum(sign);\n // For negative numbers, round down if any bit was shifted out (so that\n // e.g. -5n >> 1n == -3n and not -2n). Check now whether this will happen\n // and whether itc an cause overflow into a new digit. If we allocate the\n // result large enough up front, it avoids having to do grow it later.\n let mustRoundDown = false;\n if (sign) {\n const mask = (1 << bitsShift) - 1;\n if ((x.__digit(digitShift) & mask) !== 0) {\n mustRoundDown = true;\n }\n else {\n for (let i = 0; i < digitShift; i++) {\n if (x.__digit(i) !== 0) {\n mustRoundDown = true;\n break;\n }\n }\n }\n }\n // If bitsShift is non-zero, it frees up bits, preventing overflow.\n if (mustRoundDown && bitsShift === 0) {\n // Overflow cannot happen if the most significant digit has unset bits.\n const msd = x.__digit(length - 1);\n const roundingCanOverflow = ~msd === 0;\n if (roundingCanOverflow)\n resultLength++;\n }\n let result = new JSBI(resultLength, sign);\n if (bitsShift === 0) {\n // Zero out any overflow digit (see \"roundingCanOverflow\" above).\n result.__setDigit(resultLength - 1, 0);\n for (let i = digitShift; i < length; i++) {\n result.__setDigit(i - digitShift, x.__digit(i));\n }\n }\n else {\n let carry = x.__digit(digitShift) >>> bitsShift;\n const last = length - digitShift - 1;\n for (let i = 0; i < last; i++) {\n const d = x.__digit(i + digitShift + 1);\n result.__setDigit(i, ((d << (30 - bitsShift)) & 0x3FFFFFFF) | carry);\n carry = d >>> bitsShift;\n }\n result.__setDigit(last, carry);\n }\n if (mustRoundDown) {\n // Since the result is negative, rounding down means adding one to its\n // absolute value. This cannot overflow.\n result = JSBI.__absoluteAddOne(result, true, result);\n }\n return result.__trim();\n }\n static __rightShiftByMaximum(sign) {\n if (sign) {\n return JSBI.__oneDigit(1, true);\n }\n return JSBI.__zero();\n }\n static __toShiftAmount(x) {\n if (x.length > 1)\n return -1;\n const value = x.__unsignedDigit(0);\n if (value > JSBI.__kMaxLengthBits)\n return -1;\n return value;\n }\n static __toPrimitive(obj, hint = 'default') {\n if (typeof obj !== 'object')\n return obj;\n if (obj.constructor === JSBI)\n return obj;\n if (typeof Symbol !== 'undefined' &&\n typeof Symbol.toPrimitive === 'symbol') {\n const exoticToPrim = obj[Symbol.toPrimitive];\n if (exoticToPrim) {\n const primitive = exoticToPrim(hint);\n if (typeof primitive !== 'object')\n return primitive;\n throw new TypeError('Cannot convert object to primitive value');\n }\n }\n const valueOf = obj.valueOf;\n if (valueOf) {\n const primitive = valueOf.call(obj);\n if (typeof primitive !== 'object')\n return primitive;\n }\n const toString = obj.toString;\n if (toString) {\n const primitive = toString.call(obj);\n if (typeof primitive !== 'object')\n return primitive;\n }\n throw new TypeError('Cannot convert object to primitive value');\n }\n static __toNumeric(value) {\n if (JSBI.__isBigInt(value))\n return value;\n return +value;\n }\n static __isBigInt(value) {\n return typeof value === 'object' && value !== null &&\n value.constructor === JSBI;\n }\n static __truncateToNBits(n, x) {\n const neededDigits = ((n + 29) / 30) | 0;\n const result = new JSBI(neededDigits, x.sign);\n const last = neededDigits - 1;\n for (let i = 0; i < last; i++) {\n result.__setDigit(i, x.__digit(i));\n }\n let msd = x.__digit(last);\n if ((n % 30) !== 0) {\n const drop = 32 - (n % 30);\n msd = (msd << drop) >>> drop;\n }\n result.__setDigit(last, msd);\n return result.__trim();\n }\n static __truncateAndSubFromPowerOfTwo(n, x, resultSign) {\n const neededDigits = ((n + 29) / 30) | 0;\n const result = new JSBI(neededDigits, resultSign);\n let i = 0;\n const last = neededDigits - 1;\n let borrow = 0;\n const limit = Math.min(last, x.length);\n for (; i < limit; i++) {\n const r = 0 - x.__digit(i) - borrow;\n borrow = (r >>> 30) & 1;\n result.__setDigit(i, r & 0x3FFFFFFF);\n }\n for (; i < last; i++) {\n result.__setDigit(i, (-borrow & 0x3FFFFFFF) | 0);\n }\n let msd = last < x.length ? x.__digit(last) : 0;\n const msdBitsConsumed = n % 30;\n let resultMsd;\n if (msdBitsConsumed === 0) {\n resultMsd = 0 - msd - borrow;\n resultMsd &= 0x3FFFFFFF;\n }\n else {\n const drop = 32 - msdBitsConsumed;\n msd = (msd << drop) >>> drop;\n const minuendMsd = 1 << (32 - drop);\n resultMsd = minuendMsd - msd - borrow;\n resultMsd &= (minuendMsd - 1);\n }\n result.__setDigit(last, resultMsd);\n return result.__trim();\n }\n // Digit helpers.\n __digit(i) {\n return this[i];\n }\n __unsignedDigit(i) {\n return this[i] >>> 0;\n }\n __setDigit(i, digit) {\n this[i] = digit | 0;\n }\n __setDigitGrow(i, digit) {\n this[i] = digit | 0;\n }\n __halfDigitLength() {\n const len = this.length;\n if (this.__unsignedDigit(len - 1) <= 0x7FFF)\n return len * 2 - 1;\n return len * 2;\n }\n __halfDigit(i) {\n return (this[i >>> 1] >>> ((i & 1) * 15)) & 0x7FFF;\n }\n __setHalfDigit(i, value) {\n const digitIndex = i >>> 1;\n const previous = this.__digit(digitIndex);\n const updated = (i & 1) ? (previous & 0x7FFF) | (value << 15)\n : (previous & 0x3FFF8000) | (value & 0x7FFF);\n this.__setDigit(digitIndex, updated);\n }\n static __digitPow(base, exponent) {\n let result = 1;\n while (exponent > 0) {\n if (exponent & 1)\n result *= base;\n exponent >>>= 1;\n base *= base;\n }\n return result;\n }\n static __isOneDigitInt(x) {\n return (x & 0x3FFFFFFF) === x;\n }\n}\nJSBI.__kMaxLength = 1 << 25;\nJSBI.__kMaxLengthBits = JSBI.__kMaxLength << 5;\n// Lookup table for the maximum number of bits required per character of a\n// base-N string representation of a number. To increase accuracy, the array\n// value is the actual value multiplied by 32. To generate this table:\n//\n// for (let i = 0; i <= 36; i++) {\n// console.log(Math.ceil(Math.log2(i) * 32) + ',');\n// }\nJSBI.__kMaxBitsPerChar = [\n 0, 0, 32, 51, 64, 75, 83, 90, 96,\n 102, 107, 111, 115, 119, 122, 126, 128,\n 131, 134, 136, 139, 141, 143, 145, 147,\n 149, 151, 153, 154, 156, 158, 159, 160,\n 162, 163, 165, 166, // 33..36\n];\nJSBI.__kBitsPerCharTableShift = 5;\nJSBI.__kBitsPerCharTableMultiplier = 1 << JSBI.__kBitsPerCharTableShift;\nJSBI.__kConversionChars = '0123456789abcdefghijklmnopqrstuvwxyz'.split('');\nJSBI.__kBitConversionBuffer = new ArrayBuffer(8);\nJSBI.__kBitConversionDouble = new Float64Array(JSBI.__kBitConversionBuffer);\nJSBI.__kBitConversionInts = new Int32Array(JSBI.__kBitConversionBuffer);\n// For IE11 compatibility.\n// Note that the custom replacements are tailored for JSBI's needs, and as\n// such are not reusable as general-purpose polyfills.\nJSBI.__clz30 = Math.clz32 ? function (x) {\n return Math.clz32(x) - 2;\n} : function (x) {\n if (x === 0)\n return 30;\n return 29 - (Math.log(x >>> 0) / Math.LN2 | 0) | 0;\n};\nJSBI.__imul = Math.imul || function (a, b) {\n return (a * b) | 0;\n};\nexport default JSBI;\n//# sourceMappingURL=jsbi.js.map","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const BytePrefix = {\n Undefined: \"00\",\n Null: \"01\",\n False: \"02\",\n True: \"03\",\n MinNumber: \"04\",\n Number: \"05\",\n MaxNumber: \"06\",\n MinString: \"07\",\n String: \"08\",\n MaxString: \"09\",\n Int64: \"0a\",\n Int32: \"0b\",\n Int16: \"0c\",\n Int8: \"0d\",\n Uint64: \"0e\",\n Uint32: \"0f\",\n Uint16: \"10\",\n Uint8: \"11\",\n Binary: \"12\",\n Guid: \"13\",\n Float: \"14\",\n Infinity: \"FF\",\n};\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport { createHttpPoller } from \"./http/poller.js\";\nexport {\n CancelOnProgress,\n OperationState,\n OperationStatus,\n SimplePollerLike,\n} from \"./poller/models.js\";\nexport { CreateHttpPollerOptions } from \"./http/models.js\";\nexport {\n LroResourceLocationConfig,\n LongRunningOperation,\n LroResponse,\n RawResponse,\n} from \"./http/models.js\";\n\n/**\n * This can be uncommented to expose the protocol-agnostic poller\n */\n// export {\n// BuildCreatePollerOptions,\n// Operation,\n// CreatePollerOptions,\n// OperationConfig,\n// RestorableOperationState,\n// } from \"./poller/models\";\n// export { buildCreatePoller } from \"./poller/poller\";\n\n/** legacy */\nexport * from \"./legacy/lroEngine/index.js\";\nexport * from \"./legacy/poller.js\";\nexport * from \"./legacy/pollOperation.js\";\nexport { PollerLike } from \"./legacy/models.js\";\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { DeserializationPolicyOptions } from \"./deserializationPolicy.js\";\nimport { deserializationPolicy } from \"./deserializationPolicy.js\";\nimport type { InternalPipelineOptions, Pipeline } from \"@azure/core-rest-pipeline\";\nimport {\n bearerTokenAuthenticationPolicy,\n createPipelineFromOptions,\n} from \"@azure/core-rest-pipeline\";\nimport type { SerializationPolicyOptions } from \"./serializationPolicy.js\";\nimport { serializationPolicy } from \"./serializationPolicy.js\";\nimport type { TokenCredential } from \"@azure/core-auth\";\n\n/**\n * Options for creating a Pipeline to use with ServiceClient.\n * Mostly for customizing the auth policy (if using token auth) or\n * the deserialization options when using XML.\n */\nexport interface InternalClientPipelineOptions extends InternalPipelineOptions {\n /**\n * Options to customize bearerTokenAuthenticationPolicy.\n */\n credentialOptions?: { credentialScopes: string | string[]; credential: TokenCredential };\n /**\n * Options to customize deserializationPolicy.\n */\n deserializationOptions?: DeserializationPolicyOptions;\n /**\n * Options to customize serializationPolicy.\n */\n serializationOptions?: SerializationPolicyOptions;\n}\n\n/**\n * Creates a new Pipeline for use with a Service Client.\n * Adds in deserializationPolicy by default.\n * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential.\n * @param options - Options to customize the created pipeline.\n */\nexport function createClientPipeline(options: InternalClientPipelineOptions = {}): Pipeline {\n const pipeline = createPipelineFromOptions(options ?? {});\n if (options.credentialOptions) {\n pipeline.addPolicy(\n bearerTokenAuthenticationPolicy({\n credential: options.credentialOptions.credential,\n scopes: options.credentialOptions.credentialScopes,\n }),\n );\n }\n\n pipeline.addPolicy(serializationPolicy(options.serializationOptions), { phase: \"Serialize\" });\n pipeline.addPolicy(deserializationPolicy(options.deserializationOptions), {\n phase: \"Deserialize\",\n });\n\n return pipeline;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\nexport const logger = createClientLogger(\"core-client\");\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type UnknownObject, isObject } from \"@azure/core-util\";\n\n/**\n * @internal\n */\nexport interface SanitizerOptions {\n /**\n * Header names whose values will be logged when logging is enabled.\n * Defaults include a list of well-known safe headers. Any headers\n * specified in this field will be added to that list. Any other values will\n * be written to logs as \"REDACTED\".\n */\n additionalAllowedHeaderNames?: string[];\n\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n}\n\nconst RedactedString = \"REDACTED\";\n\n// Make sure this list is up-to-date with the one under core/logger/Readme#Keyconcepts\nconst defaultAllowedHeaderNames = [\n \"x-ms-client-request-id\",\n \"x-ms-return-client-request-id\",\n \"x-ms-useragent\",\n \"x-ms-correlation-request-id\",\n \"x-ms-request-id\",\n \"client-request-id\",\n \"ms-cv\",\n \"return-client-request-id\",\n \"traceparent\",\n\n \"Access-Control-Allow-Credentials\",\n \"Access-Control-Allow-Headers\",\n \"Access-Control-Allow-Methods\",\n \"Access-Control-Allow-Origin\",\n \"Access-Control-Expose-Headers\",\n \"Access-Control-Max-Age\",\n \"Access-Control-Request-Headers\",\n \"Access-Control-Request-Method\",\n \"Origin\",\n\n \"Accept\",\n \"Accept-Encoding\",\n \"Cache-Control\",\n \"Connection\",\n \"Content-Length\",\n \"Content-Type\",\n \"Date\",\n \"ETag\",\n \"Expires\",\n \"If-Match\",\n \"If-Modified-Since\",\n \"If-None-Match\",\n \"If-Unmodified-Since\",\n \"Last-Modified\",\n \"Pragma\",\n \"Request-Id\",\n \"Retry-After\",\n \"Server\",\n \"Transfer-Encoding\",\n \"User-Agent\",\n \"WWW-Authenticate\",\n];\n\nconst defaultAllowedQueryParameters: string[] = [\"api-version\"];\n\n/**\n * @internal\n */\nexport class Sanitizer {\n private allowedHeaderNames: Set;\n private allowedQueryParameters: Set;\n\n constructor({\n additionalAllowedHeaderNames: allowedHeaderNames = [],\n additionalAllowedQueryParameters: allowedQueryParameters = [],\n }: SanitizerOptions = {}) {\n allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames);\n allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters);\n\n this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));\n this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));\n }\n\n public sanitize(obj: unknown): string {\n const seen = new Set();\n return JSON.stringify(\n obj,\n (key: string, value: unknown) => {\n // Ensure Errors include their interesting non-enumerable members\n if (value instanceof Error) {\n return {\n ...value,\n name: value.name,\n message: value.message,\n };\n }\n\n if (key === \"headers\") {\n return this.sanitizeHeaders(value as UnknownObject);\n } else if (key === \"url\") {\n return this.sanitizeUrl(value as string);\n } else if (key === \"query\") {\n return this.sanitizeQuery(value as UnknownObject);\n } else if (key === \"body\") {\n // Don't log the request body\n return undefined;\n } else if (key === \"response\") {\n // Don't log response again\n return undefined;\n } else if (key === \"operationSpec\") {\n // When using sendOperationRequest, the request carries a massive\n // field with the autorest spec. No need to log it.\n return undefined;\n } else if (Array.isArray(value) || isObject(value)) {\n if (seen.has(value)) {\n return \"[Circular]\";\n }\n seen.add(value);\n }\n\n return value;\n },\n 2,\n );\n }\n\n public sanitizeUrl(value: string): string {\n if (typeof value !== \"string\" || value === null || value === \"\") {\n return value;\n }\n\n const url = new URL(value);\n\n if (!url.search) {\n return value;\n }\n\n for (const [key] of url.searchParams) {\n if (!this.allowedQueryParameters.has(key.toLowerCase())) {\n url.searchParams.set(key, RedactedString);\n }\n }\n\n return url.toString();\n }\n\n private sanitizeHeaders(obj: UnknownObject): UnknownObject {\n const sanitized: UnknownObject = {};\n for (const key of Object.keys(obj)) {\n if (this.allowedHeaderNames.has(key.toLowerCase())) {\n sanitized[key] = obj[key];\n } else {\n sanitized[key] = RedactedString;\n }\n }\n return sanitized;\n }\n\n private sanitizeQuery(value: UnknownObject): UnknownObject {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n\n const sanitized: UnknownObject = {};\n\n for (const k of Object.keys(value)) {\n if (this.allowedQueryParameters.has(k.toLowerCase())) {\n sanitized[k] = value[k];\n } else {\n sanitized[k] = RedactedString;\n }\n }\n\n return sanitized;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the redirectPolicy.\n */\nexport const redirectPolicyName = \"redirectPolicy\";\n\n/**\n * Methods that are allowed to follow redirects 301 and 302\n */\nconst allowedRedirect = [\"GET\", \"HEAD\"];\n\n/**\n * Options for how redirect responses are handled.\n */\nexport interface RedirectPolicyOptions {\n /**\n * The maximum number of times the redirect URL will be tried before\n * failing. Defaults to 20.\n */\n maxRetries?: number;\n}\n\n/**\n * A policy to follow Location headers from the server in order\n * to support server-side redirection.\n * In the browser, this policy is not used.\n * @param options - Options to control policy behavior.\n */\nexport function redirectPolicy(options: RedirectPolicyOptions = {}): PipelinePolicy {\n const { maxRetries = 20 } = options;\n return {\n name: redirectPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n const response = await next(request);\n return handleRedirect(next, response, maxRetries);\n },\n };\n}\n\nasync function handleRedirect(\n next: SendRequest,\n response: PipelineResponse,\n maxRetries: number,\n currentRetries: number = 0,\n): Promise {\n const { request, status, headers } = response;\n const locationHeader = headers.get(\"location\");\n if (\n locationHeader &&\n (status === 300 ||\n (status === 301 && allowedRedirect.includes(request.method)) ||\n (status === 302 && allowedRedirect.includes(request.method)) ||\n (status === 303 && request.method === \"POST\") ||\n status === 307) &&\n currentRetries < maxRetries\n ) {\n const url = new URL(locationHeader, request.url);\n request.url = url.toString();\n\n // POST request with Status code 303 should be converted into a\n // redirected GET request if the redirect url is present in the location header\n if (status === 303) {\n request.method = \"GET\";\n request.headers.delete(\"Content-Length\");\n delete request.body;\n }\n\n request.headers.delete(\"Authorization\");\n\n const res = await next(request);\n return handleRedirect(next, res, maxRetries, currentRetries + 1);\n }\n\n return response;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { getHeaderName, setPlatformSpecificData } from \"./userAgentPlatform.js\";\nimport { SDK_VERSION } from \"../constants.js\";\n\nfunction getUserAgentString(telemetryInfo: Map): string {\n const parts: string[] = [];\n for (const [key, value] of telemetryInfo) {\n const token = value ? `${key}/${value}` : key;\n parts.push(token);\n }\n return parts.join(\" \");\n}\n\n/**\n * @internal\n */\nexport function getUserAgentHeaderName(): string {\n return getHeaderName();\n}\n\n/**\n * @internal\n */\nexport async function getUserAgentValue(prefix?: string): Promise {\n const runtimeInfo = new Map();\n runtimeInfo.set(\"core-rest-pipeline\", SDK_VERSION);\n await setPlatformSpecificData(runtimeInfo);\n const defaultAgent = getUserAgentString(runtimeInfo);\n const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent;\n return userAgentValue;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const SDK_VERSION: string = \"1.19.1\";\n\nexport const DEFAULT_RETRY_POLICY_COUNT = 3;\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @internal\n */\nexport function getHeaderName(): string {\n return \"x-ms-useragent\";\n}\n\ninterface BrowserBrand {\n brand: string;\n version: string;\n}\n\ninterface NavigatorEx extends Navigator {\n userAgentData?: {\n brands: BrowserBrand[];\n mobile: boolean;\n platform?: string;\n getHighEntropyValues: (hints: string[]) => Promise<{\n architecture: string;\n bitness: string;\n brands: BrowserBrand[];\n formFactor: string;\n fullVersionList: BrowserBrand[];\n mobile: boolean;\n model: string;\n platform: string;\n platformVersion: string;\n wow64: boolean;\n }>;\n };\n}\n\ndeclare const globalThis: {\n navigator?: NavigatorEx;\n EdgeRuntime?: unknown;\n};\n\nfunction getBrowserInfo(userAgent: string): BrowserBrand | undefined {\n const browserRegexes = [\n { name: \"Firefox\", regex: /Firefox\\/([\\d.]+)/ },\n { name: \"Safari\", regex: /Version\\/([\\d.]+).*Safari/ },\n ];\n\n for (const browser of browserRegexes) {\n const match = userAgent.match(browser.regex);\n if (match) {\n return { brand: browser.name, version: match[1] };\n }\n }\n\n return undefined;\n}\n\nfunction getBrandVersionString(brands: BrowserBrand[]): BrowserBrand | undefined {\n const brandOrder = [\"Google Chrome\", \"Microsoft Edge\", \"Opera\", \"Brave\", \"Chromium\"];\n for (const brand of brandOrder) {\n const foundBrand = brands.find((b) => b.brand === brand);\n if (foundBrand) {\n return foundBrand;\n }\n }\n return undefined;\n}\n\n/**\n * @internal\n */\nexport async function setPlatformSpecificData(map: Map): Promise {\n const localNavigator = globalThis.navigator as NavigatorEx;\n let osPlatform = \"unknown\";\n if (localNavigator?.userAgentData) {\n const entropyValues = await localNavigator.userAgentData.getHighEntropyValues([\n \"architecture\",\n \"platformVersion\",\n ]);\n osPlatform = `${entropyValues.architecture}-${entropyValues.platform}-${entropyValues.platformVersion}`;\n\n // Get the brand and version\n const brand = getBrandVersionString(localNavigator.userAgentData.brands);\n if (brand) {\n map.set(brand.brand, brand.version);\n }\n } else if (localNavigator?.platform) {\n osPlatform = localNavigator.platform;\n const brand = getBrowserInfo(localNavigator.userAgent);\n if (brand) {\n map.set(brand.brand, brand.version);\n }\n } else if (typeof globalThis.EdgeRuntime === \"string\") {\n map.set(\"EdgeRuntime\", globalThis.EdgeRuntime);\n }\n\n map.set(\"OS\", osPlatform);\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function isNodeReadableStream(x: unknown): x is NodeJS.ReadableStream {\n return Boolean(x && typeof (x as NodeJS.ReadableStream)[\"pipe\"] === \"function\");\n}\n\nexport function isWebReadableStream(x: unknown): x is ReadableStream {\n return Boolean(\n x &&\n typeof (x as ReadableStream).getReader === \"function\" &&\n typeof (x as ReadableStream).tee === \"function\",\n );\n}\n\nexport function isReadableStream(x: unknown): x is ReadableStream | NodeJS.ReadableStream {\n return isNodeReadableStream(x) || isWebReadableStream(x);\n}\n\nexport function isBlob(x: unknown): x is Blob {\n return typeof (x as Blob).stream === \"function\";\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNodeLike } from \"@azure/core-util\";\nimport { isNodeReadableStream } from \"./typeGuards.js\";\n\n/**\n * Options passed into createFile specifying metadata about the file.\n */\nexport interface CreateFileOptions {\n /**\n * The MIME type of the file.\n */\n type?: string;\n\n /**\n * Last modified time of the file as a UNIX timestamp.\n * This will default to the current date.\n */\n lastModified?: number;\n\n /**\n * relative path of this file when uploading a directory.\n */\n webkitRelativePath?: string;\n}\n\n/**\n * Extra options for createFile when a stream is being passed in.\n */\nexport interface CreateFileFromStreamOptions extends CreateFileOptions {\n /**\n * Size of the file represented by the stream in bytes.\n *\n * This will be used by the pipeline when calculating the Content-Length header\n * for the overall request.\n */\n size?: number;\n}\n\nconst unimplementedMethods = {\n arrayBuffer: () => {\n throw new Error(\"Not implemented\");\n },\n bytes: () => {\n throw new Error(\"Not implemented\");\n },\n slice: () => {\n throw new Error(\"Not implemented\");\n },\n text: () => {\n throw new Error(\"Not implemented\");\n },\n};\n\n/**\n * Private symbol used as key on objects created using createFile containing the\n * original source of the file object.\n *\n * This is used in Node to access the original Node stream without using Blob#stream, which\n * returns a web stream. This is done to avoid a couple of bugs to do with Blob#stream and\n * Readable#to/fromWeb in Node versions we support:\n * - https://github.com/nodejs/node/issues/42694 (fixed in Node 18.14)\n * - https://github.com/nodejs/node/issues/48916 (fixed in Node 20.6)\n *\n * Once these versions are no longer supported, we may be able to stop doing this.\n *\n * @internal\n */\nconst rawContent: unique symbol = Symbol(\"rawContent\");\n\n/**\n * Type signature of a blob-like object with a raw content property.\n */\ninterface RawContent {\n [rawContent](): Uint8Array | NodeJS.ReadableStream | ReadableStream;\n}\n\nfunction hasRawContent(x: unknown): x is RawContent {\n return typeof (x as RawContent)[rawContent] === \"function\";\n}\n\n/**\n * Extract the raw content from a given blob-like object. If the input was created using createFile\n * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used.\n * For true instances of Blob and File, returns the blob's content as a Web ReadableStream.\n *\n * @internal\n */\nexport function getRawContent(\n blob: Blob,\n): NodeJS.ReadableStream | ReadableStream | Uint8Array {\n if (hasRawContent(blob)) {\n return blob[rawContent]();\n } else {\n return blob.stream();\n }\n}\n\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function to:\n * - Create a File object for use in RequestBodyType.formData in environments where the\n * global File object is unavailable.\n * - Create a File-like object from a readable stream without reading the stream into memory.\n *\n * @param stream - the content of the file as a callback returning a stream. When a File object made using createFile is\n * passed in a request's form data map, the stream will not be read into memory\n * and instead will be streamed when the request is made. In the event of a retry, the\n * stream needs to be read again, so this callback SHOULD return a fresh stream if possible.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFileFromStream(\n stream: () => ReadableStream | NodeJS.ReadableStream,\n name: string,\n options: CreateFileFromStreamOptions = {},\n): File {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: options.size ?? -1,\n name,\n stream: () => {\n const s = stream();\n if (isNodeReadableStream(s)) {\n throw new Error(\n \"Not supported: a Node stream was provided as input to createFileFromStream.\",\n );\n }\n\n return s;\n },\n [rawContent]: stream,\n } as File & RawContent;\n}\n\n/**\n * Create an object that implements the File interface. This object is intended to be\n * passed into RequestBodyType.formData, and is not guaranteed to work as expected in\n * other situations.\n *\n * Use this function create a File object for use in RequestBodyType.formData in environments where the global File object is unavailable.\n *\n * @param content - the content of the file as a Uint8Array in memory.\n * @param name - the name of the file.\n * @param options - optional metadata about the file, e.g. file name, file size, MIME type.\n */\nexport function createFile(\n content: Uint8Array,\n name: string,\n options: CreateFileOptions = {},\n): File {\n if (isNodeLike) {\n return {\n ...unimplementedMethods,\n type: options.type ?? \"\",\n lastModified: options.lastModified ?? new Date().getTime(),\n webkitRelativePath: options.webkitRelativePath ?? \"\",\n size: content.byteLength,\n name,\n arrayBuffer: async () => content.buffer,\n stream: () => new Blob([content]).stream(),\n [rawContent]: () => content,\n } as File & RawContent;\n } else {\n return new File([content], name, options);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { getRawContent } from \"./file.js\";\nimport { isNodeReadableStream, isWebReadableStream } from \"./typeGuards.js\";\n\n/**\n * Drain the content of the given ReadableStream into a Blob.\n * The blob's content may end up in memory or on disk dependent on size.\n */\nfunction drain(stream: ReadableStream): Promise {\n return new Response(stream).blob();\n}\n\nasync function toBlobPart(\n source: ReadableStream | Blob | Uint8Array,\n): Promise {\n if (source instanceof Blob || source instanceof Uint8Array) {\n return source;\n }\n\n if (isWebReadableStream(source)) {\n return drain(source);\n }\n\n // If it's not a true Blob, and it's not a Uint8Array, we can assume the source\n // is a fake File created by createFileFromStream and we can get the original stream\n // using getRawContent.\n const rawContent = getRawContent(source);\n\n // Shouldn't happen but guard for it anyway\n if (isNodeReadableStream(rawContent)) {\n throw new Error(\n \"Encountered unexpected type. In the browser, `concat` supports Web ReadableStream, Blob, Uint8Array, and files created using `createFile` only.\",\n );\n }\n\n return toBlobPart(rawContent);\n}\n\n/**\n * Accepted binary data types for concat\n *\n * @internal\n */\ntype ConcatSource = ReadableStream | Blob | Uint8Array;\n\n/**\n * Utility function that concatenates a set of binary inputs into one combined output.\n *\n * @param sources - array of sources for the concatenation\n * @returns - in Node, a (() =\\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs.\n * In browser, returns a `Blob` representing all the concatenated inputs.\n *\n * @internal\n */\nexport async function concat(\n sources: (ConcatSource | (() => ConcatSource))[],\n): Promise<(() => NodeJS.ReadableStream) | Blob> {\n const parts = [];\n for (const source of sources) {\n parts.push(await toBlobPart(typeof source === \"function\" ? source() : source));\n }\n\n return new Blob(parts);\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { randomUUID, stringToUint8Array } from \"@azure/core-util\";\nimport type { BodyPart, HttpHeaders, PipelineRequest, PipelineResponse } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { concat } from \"../util/concat.js\";\nimport { isBlob } from \"../util/typeGuards.js\";\n\nfunction generateBoundary(): string {\n return `----AzSDKFormBoundary${randomUUID()}`;\n}\n\nfunction encodeHeaders(headers: HttpHeaders): string {\n let result = \"\";\n for (const [key, value] of headers) {\n result += `${key}: ${value}\\r\\n`;\n }\n return result;\n}\n\nfunction getLength(\n source:\n | (() => ReadableStream)\n | (() => NodeJS.ReadableStream)\n | Uint8Array\n | Blob\n | ReadableStream\n | NodeJS.ReadableStream,\n): number | undefined {\n if (source instanceof Uint8Array) {\n return source.byteLength;\n } else if (isBlob(source)) {\n // if was created using createFile then -1 means we have an unknown size\n return source.size === -1 ? undefined : source.size;\n } else {\n return undefined;\n }\n}\n\nfunction getTotalLength(\n sources: (\n | (() => ReadableStream)\n | (() => NodeJS.ReadableStream)\n | Uint8Array\n | Blob\n | ReadableStream\n | NodeJS.ReadableStream\n )[],\n): number | undefined {\n let total = 0;\n for (const source of sources) {\n const partLength = getLength(source);\n if (partLength === undefined) {\n return undefined;\n } else {\n total += partLength;\n }\n }\n return total;\n}\n\nasync function buildRequestBody(\n request: PipelineRequest,\n parts: BodyPart[],\n boundary: string,\n): Promise {\n const sources = [\n stringToUint8Array(`--${boundary}`, \"utf-8\"),\n ...parts.flatMap((part) => [\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n stringToUint8Array(encodeHeaders(part.headers), \"utf-8\"),\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n part.body,\n stringToUint8Array(`\\r\\n--${boundary}`, \"utf-8\"),\n ]),\n stringToUint8Array(\"--\\r\\n\\r\\n\", \"utf-8\"),\n ];\n\n const contentLength = getTotalLength(sources);\n if (contentLength) {\n request.headers.set(\"Content-Length\", contentLength);\n }\n\n request.body = await concat(sources);\n}\n\n/**\n * Name of multipart policy\n */\nexport const multipartPolicyName = \"multipartPolicy\";\n\nconst maxBoundaryLength = 70;\nconst validBoundaryCharacters = new Set(\n `abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`,\n);\n\nfunction assertValidBoundary(boundary: string): void {\n if (boundary.length > maxBoundaryLength) {\n throw new Error(`Multipart boundary \"${boundary}\" exceeds maximum length of 70 characters`);\n }\n\n if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) {\n throw new Error(`Multipart boundary \"${boundary}\" contains invalid characters`);\n }\n}\n\n/**\n * Pipeline policy for multipart requests\n */\nexport function multipartPolicy(): PipelinePolicy {\n return {\n name: multipartPolicyName,\n async sendRequest(request, next): Promise {\n if (!request.multipartBody) {\n return next(request);\n }\n\n if (request.body) {\n throw new Error(\"multipartBody and regular body cannot be set at the same time\");\n }\n\n let boundary = request.multipartBody.boundary;\n\n const contentTypeHeader = request.headers.get(\"Content-Type\") ?? \"multipart/mixed\";\n const parsedHeader = contentTypeHeader.match(/^(multipart\\/[^ ;]+)(?:; *boundary=(.+))?$/);\n if (!parsedHeader) {\n throw new Error(\n `Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`,\n );\n }\n\n const [, contentType, parsedBoundary] = parsedHeader;\n if (parsedBoundary && boundary && parsedBoundary !== boundary) {\n throw new Error(\n `Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`,\n );\n }\n\n boundary ??= parsedBoundary;\n if (boundary) {\n assertValidBoundary(boundary);\n } else {\n boundary = generateBoundary();\n }\n request.headers.set(\"Content-Type\", `${contentType}; boundary=${boundary}`);\n await buildRequestBody(request, request.multipartBody.parts, boundary);\n\n request.multipartBody = undefined;\n\n return next(request);\n },\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError, type AbortSignalLike } from \"@azure/abort-controller\";\nimport type { PipelineResponse } from \"../interfaces.js\";\n\nconst StandardAbortMessage = \"The operation was aborted.\";\n\n/**\n * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds.\n * @param delayInMs - The number of milliseconds to be delayed.\n * @param value - The value to be resolved with after a timeout of t milliseconds.\n * @param options - The options for delay - currently abort options\n * - abortSignal - The abortSignal associated with containing operation.\n * - abortErrorMsg - The abort error message associated with containing operation.\n * @returns Resolved promise\n */\nexport function delay(\n delayInMs: number,\n value?: T,\n options?: {\n abortSignal?: AbortSignalLike;\n abortErrorMsg?: string;\n },\n): Promise {\n return new Promise((resolve, reject) => {\n let timer: ReturnType | undefined = undefined;\n let onAborted: (() => void) | undefined = undefined;\n\n const rejectOnAbort = (): void => {\n return reject(\n new AbortError(options?.abortErrorMsg ? options?.abortErrorMsg : StandardAbortMessage),\n );\n };\n\n const removeListeners = (): void => {\n if (options?.abortSignal && onAborted) {\n options.abortSignal.removeEventListener(\"abort\", onAborted);\n }\n };\n\n onAborted = (): void => {\n if (timer) {\n clearTimeout(timer);\n }\n removeListeners();\n return rejectOnAbort();\n };\n\n if (options?.abortSignal && options.abortSignal.aborted) {\n return rejectOnAbort();\n }\n\n timer = setTimeout(() => {\n removeListeners();\n resolve(value);\n }, delayInMs);\n\n if (options?.abortSignal) {\n options.abortSignal.addEventListener(\"abort\", onAborted);\n }\n });\n}\n\n/**\n * @internal\n * @returns the parsed value or undefined if the parsed value is invalid.\n */\nexport function parseHeaderValueAsNumber(\n response: PipelineResponse,\n headerName: string,\n): number | undefined {\n const value = response.headers.get(headerName);\n if (!value) return;\n const valueAsNum = Number(value);\n if (Number.isNaN(valueAsNum)) return;\n return valueAsNum;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineResponse } from \"../index.js\";\nimport { parseHeaderValueAsNumber } from \"../util/helpers.js\";\nimport type { RetryStrategy } from \"./retryStrategy.js\";\n\n/**\n * The header that comes back from Azure services representing\n * the amount of time (minimum) to wait to retry (in seconds or timestamp after which we can retry).\n */\nconst RetryAfterHeader = \"Retry-After\";\n/**\n * The headers that come back from Azure services representing\n * the amount of time (minimum) to wait to retry.\n *\n * \"retry-after-ms\", \"x-ms-retry-after-ms\" : milliseconds\n * \"Retry-After\" : seconds or timestamp\n */\nconst AllRetryAfterHeaders: string[] = [\"retry-after-ms\", \"x-ms-retry-after-ms\", RetryAfterHeader];\n\n/**\n * A response is a throttling retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n *\n * Returns the `retryAfterInMs` value if the response is a throttling retry response.\n * If not throttling retry response, returns `undefined`.\n *\n * @internal\n */\nfunction getRetryAfterInMs(response?: PipelineResponse): number | undefined {\n if (!(response && [429, 503].includes(response.status))) return undefined;\n try {\n // Headers: \"retry-after-ms\", \"x-ms-retry-after-ms\", \"Retry-After\"\n for (const header of AllRetryAfterHeaders) {\n const retryAfterValue = parseHeaderValueAsNumber(response, header);\n if (retryAfterValue === 0 || retryAfterValue) {\n // \"Retry-After\" header ==> seconds\n // \"retry-after-ms\", \"x-ms-retry-after-ms\" headers ==> milli-seconds\n const multiplyingFactor = header === RetryAfterHeader ? 1000 : 1;\n return retryAfterValue * multiplyingFactor; // in milli-seconds\n }\n }\n\n // RetryAfterHeader (\"Retry-After\") has a special case where it might be formatted as a date instead of a number of seconds\n const retryAfterHeader = response.headers.get(RetryAfterHeader);\n if (!retryAfterHeader) return;\n\n const date = Date.parse(retryAfterHeader);\n const diff = date - Date.now();\n // negative diff would mean a date in the past, so retry asap with 0 milliseconds\n return Number.isFinite(diff) ? Math.max(0, diff) : undefined;\n } catch {\n return undefined;\n }\n}\n\n/**\n * A response is a retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n */\nexport function isThrottlingRetryResponse(response?: PipelineResponse): boolean {\n return Number.isFinite(getRetryAfterInMs(response));\n}\n\nexport function throttlingRetryStrategy(): RetryStrategy {\n return {\n name: \"throttlingRetryStrategy\",\n retry({ response }) {\n const retryAfterInMs = getRetryAfterInMs(response);\n if (!Number.isFinite(retryAfterInMs)) {\n return { skipStrategy: true };\n }\n return {\n retryAfterInMs,\n };\n },\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineResponse } from \"../interfaces.js\";\nimport type { RestError } from \"../restError.js\";\nimport { calculateRetryDelay } from \"@azure/core-util\";\nimport type { RetryStrategy } from \"./retryStrategy.js\";\nimport { isThrottlingRetryResponse } from \"./throttlingRetryStrategy.js\";\n\n// intervals are in milliseconds\nconst DEFAULT_CLIENT_RETRY_INTERVAL = 1000;\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n\n/**\n * A retry strategy that retries with an exponentially increasing delay in these two cases:\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505).\n */\nexport function exponentialRetryStrategy(\n options: {\n /**\n * The amount of delay in milliseconds between retry attempts. Defaults to 1000\n * (1 second.) The delay increases exponentially with each retry up to a maximum\n * specified by maxRetryDelayInMs.\n */\n retryDelayInMs?: number;\n\n /**\n * The maximum delay in milliseconds allowed before retrying an operation. Defaults\n * to 64000 (64 seconds).\n */\n maxRetryDelayInMs?: number;\n\n /**\n * If true it won't retry if it received a system error.\n */\n ignoreSystemErrors?: boolean;\n\n /**\n * If true it won't retry if it received a non-fatal HTTP status code.\n */\n ignoreHttpStatusCodes?: boolean;\n } = {},\n): RetryStrategy {\n const retryInterval = options.retryDelayInMs ?? DEFAULT_CLIENT_RETRY_INTERVAL;\n const maxRetryInterval = options.maxRetryDelayInMs ?? DEFAULT_CLIENT_MAX_RETRY_INTERVAL;\n\n return {\n name: \"exponentialRetryStrategy\",\n retry({ retryCount, response, responseError }) {\n const matchedSystemError = isSystemError(responseError);\n const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors;\n\n const isExponential = isExponentialRetryResponse(response);\n const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes;\n const unknownResponse = response && (isThrottlingRetryResponse(response) || !isExponential);\n\n if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) {\n return { skipStrategy: true };\n }\n\n if (responseError && !matchedSystemError && !isExponential) {\n return { errorToThrow: responseError };\n }\n\n return calculateRetryDelay(retryCount, {\n retryDelayInMs: retryInterval,\n maxRetryDelayInMs: maxRetryInterval,\n });\n },\n };\n}\n\n/**\n * A response is a retry response if it has status codes:\n * - 408, or\n * - Greater or equal than 500, except for 501 and 505.\n */\nexport function isExponentialRetryResponse(response?: PipelineResponse): boolean {\n return Boolean(\n response &&\n response.status !== undefined &&\n (response.status >= 500 || response.status === 408) &&\n response.status !== 501 &&\n response.status !== 505,\n );\n}\n\n/**\n * Determines whether an error from a pipeline response was triggered in the network layer.\n */\nexport function isSystemError(err?: RestError): boolean {\n if (!err) {\n return false;\n }\n return (\n err.code === \"ETIMEDOUT\" ||\n err.code === \"ESOCKETTIMEDOUT\" ||\n err.code === \"ECONNREFUSED\" ||\n err.code === \"ECONNRESET\" ||\n err.code === \"ENOENT\" ||\n err.code === \"ENOTFOUND\"\n );\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { delay } from \"../util/helpers.js\";\nimport { type AzureLogger, createClientLogger } from \"@azure/logger\";\nimport type { RetryStrategy } from \"../retryStrategies/retryStrategy.js\";\nimport type { RestError } from \"../restError.js\";\nimport { AbortError } from \"@azure/abort-controller\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\nconst retryPolicyLogger = createClientLogger(\"core-rest-pipeline retryPolicy\");\n\n/**\n * The programmatic identifier of the retryPolicy.\n */\nconst retryPolicyName = \"retryPolicy\";\n\n/**\n * Options to the {@link retryPolicy}\n */\nexport interface RetryPolicyOptions {\n /**\n * Maximum number of retries. If not specified, it will limit to 3 retries.\n */\n maxRetries?: number;\n /**\n * Logger. If it's not provided, a default logger is used.\n */\n logger?: AzureLogger;\n}\n\n/**\n * retryPolicy is a generic policy to enable retrying requests when certain conditions are met\n */\nexport function retryPolicy(\n strategies: RetryStrategy[],\n options: RetryPolicyOptions = { maxRetries: DEFAULT_RETRY_POLICY_COUNT },\n): PipelinePolicy {\n const logger = options.logger || retryPolicyLogger;\n return {\n name: retryPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n let response: PipelineResponse | undefined;\n let responseError: RestError | undefined;\n let retryCount = -1;\n\n retryRequest: while (true) {\n retryCount += 1;\n response = undefined;\n responseError = undefined;\n\n try {\n logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId);\n response = await next(request);\n logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId);\n } catch (e: any) {\n logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId);\n\n // RestErrors are valid targets for the retry strategies.\n // If none of the retry strategies can work with them, they will be thrown later in this policy.\n // If the received error is not a RestError, it is immediately thrown.\n responseError = e as RestError;\n if (!e || responseError.name !== \"RestError\") {\n throw e;\n }\n\n response = responseError.response;\n }\n\n if (request.abortSignal?.aborted) {\n logger.error(`Retry ${retryCount}: Request aborted.`);\n const abortError = new AbortError();\n throw abortError;\n }\n\n if (retryCount >= (options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT)) {\n logger.info(\n `Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`,\n );\n if (responseError) {\n throw responseError;\n } else if (response) {\n return response;\n } else {\n throw new Error(\"Maximum retries reached with no response or error to throw\");\n }\n }\n\n logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`);\n\n strategiesLoop: for (const strategy of strategies) {\n const strategyLogger = strategy.logger || retryPolicyLogger;\n strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`);\n\n const modifiers = strategy.retry({\n retryCount,\n response,\n responseError,\n });\n\n if (modifiers.skipStrategy) {\n strategyLogger.info(`Retry ${retryCount}: Skipped.`);\n continue strategiesLoop;\n }\n\n const { errorToThrow, retryAfterInMs, redirectTo } = modifiers;\n\n if (errorToThrow) {\n strategyLogger.error(\n `Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`,\n errorToThrow,\n );\n throw errorToThrow;\n }\n\n if (retryAfterInMs || retryAfterInMs === 0) {\n strategyLogger.info(\n `Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`,\n );\n await delay(retryAfterInMs, undefined, { abortSignal: request.abortSignal });\n continue retryRequest;\n }\n\n if (redirectTo) {\n strategyLogger.info(\n `Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`,\n );\n request.url = redirectTo;\n continue retryRequest;\n }\n }\n\n if (responseError) {\n logger.info(\n `None of the retry strategies could work with the received error. Throwing it.`,\n );\n throw responseError;\n }\n if (response) {\n logger.info(\n `None of the retry strategies could work with the received response. Returning it.`,\n );\n return response;\n }\n\n // If all the retries skip and there's no response,\n // we're still in the retry loop, so a new request will be sent\n // until `maxRetries` is reached.\n }\n },\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpHeaders, RawHttpHeaders, RawHttpHeadersInput } from \"./interfaces.js\";\n\ninterface HeaderEntry {\n name: string;\n value: string;\n}\n\nfunction normalizeName(name: string): string {\n return name.toLowerCase();\n}\n\nfunction* headerIterator(map: Map): IterableIterator<[string, string]> {\n for (const entry of map.values()) {\n yield [entry.name, entry.value];\n }\n}\n\nclass HttpHeadersImpl implements HttpHeaders {\n private readonly _headersMap: Map;\n\n constructor(rawHeaders?: RawHttpHeaders | RawHttpHeadersInput) {\n this._headersMap = new Map();\n if (rawHeaders) {\n for (const headerName of Object.keys(rawHeaders)) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param name - The name of the header to set. This value is case-insensitive.\n * @param value - The value of the header to set.\n */\n public set(name: string, value: string | number | boolean): void {\n this._headersMap.set(normalizeName(name), { name, value: String(value).trim() });\n }\n\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param name - The name of the header. This value is case-insensitive.\n */\n public get(name: string): string | undefined {\n return this._headersMap.get(normalizeName(name))?.value;\n }\n\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n * @param name - The name of the header to set. This value is case-insensitive.\n */\n public has(name: string): boolean {\n return this._headersMap.has(normalizeName(name));\n }\n\n /**\n * Remove the header with the provided headerName.\n * @param name - The name of the header to remove.\n */\n public delete(name: string): void {\n this._headersMap.delete(normalizeName(name));\n }\n\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n public toJSON(options: { preserveCase?: boolean } = {}): RawHttpHeaders {\n const result: RawHttpHeaders = {};\n if (options.preserveCase) {\n for (const entry of this._headersMap.values()) {\n result[entry.name] = entry.value;\n }\n } else {\n for (const [normalizedName, entry] of this._headersMap) {\n result[normalizedName] = entry.value;\n }\n }\n\n return result;\n }\n\n /**\n * Get the string representation of this HTTP header collection.\n */\n public toString(): string {\n return JSON.stringify(this.toJSON({ preserveCase: true }));\n }\n\n /**\n * Iterate over tuples of header [name, value] pairs.\n */\n [Symbol.iterator](): Iterator<[string, string]> {\n return headerIterator(this._headersMap);\n }\n}\n\n/**\n * Creates an object that satisfies the `HttpHeaders` interface.\n * @param rawHeaders - A simple object representing initial headers\n */\nexport function createHttpHeaders(rawHeaders?: RawHttpHeadersInput): HttpHeaders {\n return new HttpHeadersImpl(rawHeaders);\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isNodeLike, stringToUint8Array } from \"@azure/core-util\";\nimport { createHttpHeaders } from \"../httpHeaders.js\";\nimport type {\n BodyPart,\n FormDataMap,\n FormDataValue,\n PipelineRequest,\n PipelineResponse,\n SendRequest,\n} from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the formDataPolicy.\n */\nexport const formDataPolicyName = \"formDataPolicy\";\n\nfunction formDataToFormDataMap(formData: FormData): FormDataMap {\n const formDataMap: FormDataMap = {};\n for (const [key, value] of formData.entries()) {\n formDataMap[key] ??= [];\n (formDataMap[key] as FormDataValue[]).push(value);\n }\n return formDataMap;\n}\n\n/**\n * A policy that encodes FormData on the request into the body.\n */\nexport function formDataPolicy(): PipelinePolicy {\n return {\n name: formDataPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (isNodeLike && typeof FormData !== \"undefined\" && request.body instanceof FormData) {\n request.formData = formDataToFormDataMap(request.body);\n request.body = undefined;\n }\n\n if (request.formData) {\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && contentType.indexOf(\"application/x-www-form-urlencoded\") !== -1) {\n request.body = wwwFormUrlEncode(request.formData);\n } else {\n await prepareFormData(request.formData, request);\n }\n\n request.formData = undefined;\n }\n return next(request);\n },\n };\n}\n\nfunction wwwFormUrlEncode(formData: FormDataMap): string {\n const urlSearchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(formData)) {\n if (Array.isArray(value)) {\n for (const subValue of value) {\n urlSearchParams.append(key, subValue.toString());\n }\n } else {\n urlSearchParams.append(key, value.toString());\n }\n }\n return urlSearchParams.toString();\n}\n\nasync function prepareFormData(formData: FormDataMap, request: PipelineRequest): Promise {\n // validate content type (multipart/form-data)\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && !contentType.startsWith(\"multipart/form-data\")) {\n // content type is specified and is not multipart/form-data. Exit.\n return;\n }\n\n request.headers.set(\"Content-Type\", contentType ?? \"multipart/form-data\");\n\n // set body to MultipartRequestBody using content from FormDataMap\n const parts: BodyPart[] = [];\n\n for (const [fieldName, values] of Object.entries(formData)) {\n for (const value of Array.isArray(values) ? values : [values]) {\n if (typeof value === \"string\") {\n parts.push({\n headers: createHttpHeaders({\n \"Content-Disposition\": `form-data; name=\"${fieldName}\"`,\n }),\n body: stringToUint8Array(value, \"utf-8\"),\n });\n } else if (value === undefined || value === null || typeof value !== \"object\") {\n throw new Error(\n `Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`,\n );\n } else {\n // using || instead of ?? here since if value.name is empty we should create a file name\n const fileName = (value as File).name || \"blob\";\n const headers = createHttpHeaders();\n headers.set(\n \"Content-Disposition\",\n `form-data; name=\"${fieldName}\"; filename=\"${fileName}\"`,\n );\n\n // again, || is used since an empty value.type means the content type is unset\n headers.set(\"Content-Type\", value.type || \"application/octet-stream\");\n\n parts.push({\n headers,\n body: value,\n });\n }\n }\n }\n request.multipartBody = { parts };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const proxyPolicyName = \"proxyPolicy\";\nconst errorMessage = \"proxyPolicy is not supported in browser environment\";\n\nexport function getDefaultProxySettings(): never {\n throw new Error(errorMessage);\n}\n\n/**\n * proxyPolicy is not supported in the browser and attempting\n * to use it will raise an error.\n */\nexport function proxyPolicy(): never {\n throw new Error(errorMessage);\n}\n\n/**\n * A function to reset the cached agents.\n * proxyPolicy is not supported in the browser and attempting\n * to use it will raise an error.\n * @internal\n */\nexport function resetCachedProxyAgents(): never {\n throw new Error(errorMessage);\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { TracingContext, TracingSpan } from \"./interfaces.js\";\n\n/** @internal */\nexport const knownContextKeys = {\n span: Symbol.for(\"@azure/core-tracing span\"),\n namespace: Symbol.for(\"@azure/core-tracing namespace\"),\n};\n\n/**\n * Creates a new {@link TracingContext} with the given options.\n * @param options - A set of known keys that may be set on the context.\n * @returns A new {@link TracingContext} with the given options.\n *\n * @internal\n */\nexport function createTracingContext(options: CreateTracingContextOptions = {}): TracingContext {\n let context: TracingContext = new TracingContextImpl(options.parentContext);\n if (options.span) {\n context = context.setValue(knownContextKeys.span, options.span);\n }\n if (options.namespace) {\n context = context.setValue(knownContextKeys.namespace, options.namespace);\n }\n return context;\n}\n\n/** @internal */\nexport class TracingContextImpl implements TracingContext {\n private _contextMap: Map;\n constructor(initialContext?: TracingContext) {\n this._contextMap =\n initialContext instanceof TracingContextImpl\n ? new Map(initialContext._contextMap)\n : new Map();\n }\n\n setValue(key: symbol, value: unknown): TracingContext {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.set(key, value);\n return newContext;\n }\n\n getValue(key: symbol): unknown {\n return this._contextMap.get(key);\n }\n\n deleteValue(key: symbol): TracingContext {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.delete(key);\n return newContext;\n }\n}\n\n/**\n * Represents a set of items that can be set when creating a new {@link TracingContext}.\n */\nexport interface CreateTracingContextOptions {\n /** The {@link parentContext} - the newly created context will contain all the values of the parent context unless overridden. */\n parentContext?: TracingContext;\n /** An initial span to set on the context. */\n span?: TracingSpan;\n /** The namespace to set on any child spans. */\n namespace?: string;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { OperationRequest, OperationRequestInfo } from \"./interfaces.js\";\n\n/**\n * Browser-only implementation of the module's state. The browser esm variant will not load the commonjs state, so we do not need to share state between the two.\n */\nexport const state = {\n operationRequestMap: new WeakMap(),\n};\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n Instrumenter,\n InstrumenterSpanOptions,\n TracingContext,\n TracingSpan,\n} from \"./interfaces.js\";\n\nimport { createTracingContext } from \"./tracingContext.js\";\nimport { state } from \"./state.js\";\n\nexport function createDefaultTracingSpan(): TracingSpan {\n return {\n end: () => {\n // noop\n },\n isRecording: () => false,\n recordException: () => {\n // noop\n },\n setAttribute: () => {\n // noop\n },\n setStatus: () => {\n // noop\n },\n addEvent: () => {\n // noop\n },\n };\n}\n\nexport function createDefaultInstrumenter(): Instrumenter {\n return {\n createRequestHeaders: (): Record => {\n return {};\n },\n parseTraceparentHeader: (): TracingContext | undefined => {\n return undefined;\n },\n startSpan: (\n _name: string,\n spanOptions: InstrumenterSpanOptions,\n ): { span: TracingSpan; tracingContext: TracingContext } => {\n return {\n span: createDefaultTracingSpan(),\n tracingContext: createTracingContext({ parentContext: spanOptions.tracingContext }),\n };\n },\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n _context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType {\n return callback(...callbackArgs);\n },\n };\n}\n\n/**\n * Extends the Azure SDK with support for a given instrumenter implementation.\n *\n * @param instrumenter - The instrumenter implementation to use.\n */\nexport function useInstrumenter(instrumenter: Instrumenter): void {\n state.instrumenterImplementation = instrumenter;\n}\n\n/**\n * Gets the currently set instrumenter, a No-Op instrumenter by default.\n *\n * @returns The currently set instrumenter\n */\nexport function getInstrumenter(): Instrumenter {\n if (!state.instrumenterImplementation) {\n state.instrumenterImplementation = createDefaultInstrumenter();\n }\n return state.instrumenterImplementation;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const custom = {};\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isError } from \"@azure/core-util\";\nimport type { PipelineRequest, PipelineResponse } from \"./interfaces.js\";\nimport { custom } from \"./util/inspect.js\";\nimport { Sanitizer } from \"./util/sanitizer.js\";\n\nconst errorSanitizer = new Sanitizer();\n\n/**\n * The options supported by RestError.\n */\nexport interface RestErrorOptions {\n /**\n * The code of the error itself (use statics on RestError if possible.)\n */\n code?: string;\n /**\n * The HTTP status code of the request (if applicable.)\n */\n statusCode?: number;\n /**\n * The request that was made.\n */\n request?: PipelineRequest;\n /**\n * The response received (if any.)\n */\n response?: PipelineResponse;\n}\n\n/**\n * A custom error type for failed pipeline requests.\n */\nexport class RestError extends Error {\n /**\n * Something went wrong when making the request.\n * This means the actual request failed for some reason,\n * such as a DNS issue or the connection being lost.\n */\n static readonly REQUEST_SEND_ERROR: string = \"REQUEST_SEND_ERROR\";\n /**\n * This means that parsing the response from the server failed.\n * It may have been malformed.\n */\n static readonly PARSE_ERROR: string = \"PARSE_ERROR\";\n\n /**\n * The code of the error itself (use statics on RestError if possible.)\n */\n public code?: string;\n /**\n * The HTTP status code of the request (if applicable.)\n */\n public statusCode?: number;\n /**\n * The request that was made.\n * This property is non-enumerable.\n */\n public request?: PipelineRequest;\n /**\n * The response received (if any.)\n * This property is non-enumerable.\n */\n public response?: PipelineResponse;\n /**\n * Bonus property set by the throw site.\n */\n public details?: unknown;\n\n constructor(message: string, options: RestErrorOptions = {}) {\n super(message);\n this.name = \"RestError\";\n this.code = options.code;\n this.statusCode = options.statusCode;\n\n // The request and response may contain sensitive information in the headers or body.\n // To help prevent this sensitive information being accidentally logged, the request and response\n // properties are marked as non-enumerable here. This prevents them showing up in the output of\n // JSON.stringify and console.log.\n Object.defineProperty(this, \"request\", { value: options.request, enumerable: false });\n Object.defineProperty(this, \"response\", { value: options.response, enumerable: false });\n\n Object.setPrototypeOf(this, RestError.prototype);\n }\n\n /**\n * Logging method for util.inspect in Node\n */\n [custom](): string {\n // Extract non-enumerable properties and add them back. This is OK since in this output the request and\n // response get sanitized.\n return `RestError: ${this.message} \\n ${errorSanitizer.sanitize({\n ...this,\n request: this.request,\n response: this.response,\n })}`;\n }\n}\n\n/**\n * Typeguard for RestError\n * @param e - Something caught by a catch clause.\n */\nexport function isRestError(e: unknown): e is RestError {\n if (e instanceof RestError) {\n return true;\n }\n return isError(e) && e.name === \"RestError\";\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n type TracingClient,\n type TracingContext,\n type TracingSpan,\n createTracingClient,\n} from \"@azure/core-tracing\";\nimport { SDK_VERSION } from \"../constants.js\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { getUserAgentValue } from \"../util/userAgent.js\";\nimport { logger } from \"../log.js\";\nimport { getErrorMessage, isError } from \"@azure/core-util\";\nimport { isRestError } from \"../restError.js\";\nimport { Sanitizer } from \"../util/sanitizer.js\";\n\n/**\n * The programmatic identifier of the tracingPolicy.\n */\nexport const tracingPolicyName = \"tracingPolicy\";\n\n/**\n * Options to configure the tracing policy.\n */\nexport interface TracingPolicyOptions {\n /**\n * String prefix to add to the user agent logged as metadata\n * on the generated Span.\n * Defaults to an empty string.\n */\n userAgentPrefix?: string;\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n}\n\n/**\n * A simple policy to create OpenTelemetry Spans for each request made by the pipeline\n * that has SpanOptions with a parent.\n * Requests made without a parent Span will not be recorded.\n * @param options - Options to configure the telemetry logged by the tracing policy.\n */\nexport function tracingPolicy(options: TracingPolicyOptions = {}): PipelinePolicy {\n const userAgentPromise = getUserAgentValue(options.userAgentPrefix);\n const sanitizer = new Sanitizer({\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n const tracingClient = tryCreateTracingClient();\n\n return {\n name: tracingPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!tracingClient) {\n return next(request);\n }\n\n const userAgent = await userAgentPromise;\n\n const spanAttributes = {\n \"http.url\": sanitizer.sanitizeUrl(request.url),\n \"http.method\": request.method,\n \"http.user_agent\": userAgent,\n requestId: request.requestId,\n };\n if (userAgent) {\n spanAttributes[\"http.user_agent\"] = userAgent;\n }\n\n const { span, tracingContext } = tryCreateSpan(tracingClient, request, spanAttributes) ?? {};\n\n if (!span || !tracingContext) {\n return next(request);\n }\n\n try {\n const response = await tracingClient.withContext(tracingContext, next, request);\n tryProcessResponse(span, response);\n return response;\n } catch (err: any) {\n tryProcessError(span, err);\n throw err;\n }\n },\n };\n}\n\nfunction tryCreateTracingClient(): TracingClient | undefined {\n try {\n return createTracingClient({\n namespace: \"\",\n packageName: \"@azure/core-rest-pipeline\",\n packageVersion: SDK_VERSION,\n });\n } catch (e: unknown) {\n logger.warning(`Error when creating the TracingClient: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\n\nfunction tryCreateSpan(\n tracingClient: TracingClient,\n request: PipelineRequest,\n spanAttributes: Record,\n): { span: TracingSpan; tracingContext: TracingContext } | undefined {\n try {\n // As per spec, we do not need to differentiate between HTTP and HTTPS in span name.\n const { span, updatedOptions } = tracingClient.startSpan(\n `HTTP ${request.method}`,\n { tracingOptions: request.tracingOptions },\n {\n spanKind: \"client\",\n spanAttributes,\n },\n );\n\n // If the span is not recording, don't do any more work.\n if (!span.isRecording()) {\n span.end();\n return undefined;\n }\n\n // set headers\n const headers = tracingClient.createRequestHeaders(\n updatedOptions.tracingOptions.tracingContext,\n );\n for (const [key, value] of Object.entries(headers)) {\n request.headers.set(key, value);\n }\n return { span, tracingContext: updatedOptions.tracingOptions.tracingContext };\n } catch (e: any) {\n logger.warning(`Skipping creating a tracing span due to an error: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\n\nfunction tryProcessError(span: TracingSpan, error: unknown): void {\n try {\n span.setStatus({\n status: \"error\",\n error: isError(error) ? error : undefined,\n });\n if (isRestError(error) && error.statusCode) {\n span.setAttribute(\"http.status_code\", error.statusCode);\n }\n span.end();\n } catch (e: any) {\n logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\n\nfunction tryProcessResponse(span: TracingSpan, response: PipelineResponse): void {\n try {\n span.setAttribute(\"http.status_code\", response.status);\n const serviceRequestId = response.headers.get(\"x-ms-request-id\");\n if (serviceRequestId) {\n span.setAttribute(\"serviceRequestId\", serviceRequestId);\n }\n // Per semantic conventions, only set the status to error if the status code is 4xx or 5xx.\n // Otherwise, the status MUST remain unset.\n // https://opentelemetry.io/docs/specs/semconv/http/http-spans/#status\n if (response.status >= 400) {\n span.setStatus({\n status: \"error\",\n });\n }\n span.end();\n } catch (e: any) {\n logger.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n OperationTracingOptions,\n OptionsWithTracingContext,\n Resolved,\n TracingClient,\n TracingClientOptions,\n TracingContext,\n TracingSpan,\n TracingSpanOptions,\n} from \"./interfaces.js\";\nimport { getInstrumenter } from \"./instrumenter.js\";\nimport { knownContextKeys } from \"./tracingContext.js\";\n\n/**\n * Creates a new tracing client.\n *\n * @param options - Options used to configure the tracing client.\n * @returns - An instance of {@link TracingClient}.\n */\nexport function createTracingClient(options: TracingClientOptions): TracingClient {\n const { namespace, packageName, packageVersion } = options;\n\n function startSpan(\n name: string,\n operationOptions?: Options,\n spanOptions?: TracingSpanOptions,\n ): {\n span: TracingSpan;\n updatedOptions: OptionsWithTracingContext;\n } {\n const startSpanResult = getInstrumenter().startSpan(name, {\n ...spanOptions,\n packageName: packageName,\n packageVersion: packageVersion,\n tracingContext: operationOptions?.tracingOptions?.tracingContext,\n });\n let tracingContext = startSpanResult.tracingContext;\n const span = startSpanResult.span;\n if (!tracingContext.getValue(knownContextKeys.namespace)) {\n tracingContext = tracingContext.setValue(knownContextKeys.namespace, namespace);\n }\n span.setAttribute(\"az.namespace\", tracingContext.getValue(knownContextKeys.namespace));\n const updatedOptions: OptionsWithTracingContext = Object.assign({}, operationOptions, {\n tracingOptions: { ...operationOptions?.tracingOptions, tracingContext },\n });\n\n return {\n span,\n updatedOptions,\n };\n }\n\n async function withSpan<\n Options extends { tracingOptions?: OperationTracingOptions },\n Callback extends (\n updatedOptions: Options,\n span: Omit,\n ) => ReturnType,\n >(\n name: string,\n operationOptions: Options,\n callback: Callback,\n spanOptions?: TracingSpanOptions,\n ): Promise>> {\n const { span, updatedOptions } = startSpan(name, operationOptions, spanOptions);\n try {\n const result = await withContext(updatedOptions.tracingOptions.tracingContext, () =>\n Promise.resolve(callback(updatedOptions, span)),\n );\n span.setStatus({ status: \"success\" });\n return result as ReturnType;\n } catch (err: any) {\n span.setStatus({ status: \"error\", error: err });\n throw err;\n } finally {\n span.end();\n }\n }\n\n function withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType,\n >(\n context: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType {\n return getInstrumenter().withContext(context, callback, ...callbackArgs);\n }\n\n /**\n * Parses a traceparent header value into a span identifier.\n *\n * @param traceparentHeader - The traceparent header to parse.\n * @returns An implementation-specific identifier for the span.\n */\n function parseTraceparentHeader(traceparentHeader: string): TracingContext | undefined {\n return getInstrumenter().parseTraceparentHeader(traceparentHeader);\n }\n\n /**\n * Creates a set of request headers to propagate tracing information to a backend.\n *\n * @param tracingContext - The context containing the span to serialize.\n * @returns The set of headers to add to a request.\n */\n function createRequestHeaders(tracingContext?: TracingContext): Record {\n return getInstrumenter().createRequestHeaders(tracingContext);\n }\n\n return {\n startSpan,\n withSpan,\n withContext,\n parseTraceparentHeader,\n createRequestHeaders,\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { type LogPolicyOptions, logPolicy } from \"./policies/logPolicy.js\";\nimport { type Pipeline, createEmptyPipeline } from \"./pipeline.js\";\nimport type { Agent, PipelineRetryOptions, ProxySettings, TlsSettings } from \"./interfaces.js\";\nimport { type RedirectPolicyOptions, redirectPolicy } from \"./policies/redirectPolicy.js\";\nimport { type UserAgentPolicyOptions, userAgentPolicy } from \"./policies/userAgentPolicy.js\";\nimport { multipartPolicy, multipartPolicyName } from \"./policies/multipartPolicy.js\";\nimport { decompressResponsePolicy } from \"./policies/decompressResponsePolicy.js\";\nimport { defaultRetryPolicy } from \"./policies/defaultRetryPolicy.js\";\nimport { formDataPolicy } from \"./policies/formDataPolicy.js\";\nimport { isNodeLike } from \"@azure/core-util\";\nimport { proxyPolicy } from \"./policies/proxyPolicy.js\";\nimport { setClientRequestIdPolicy } from \"./policies/setClientRequestIdPolicy.js\";\nimport { agentPolicy } from \"./policies/agentPolicy.js\";\nimport { tlsPolicy } from \"./policies/tlsPolicy.js\";\nimport { tracingPolicy } from \"./policies/tracingPolicy.js\";\n\n/**\n * Defines options that are used to configure the HTTP pipeline for\n * an SDK client.\n */\nexport interface PipelineOptions {\n /**\n * Options that control how to retry failed requests.\n */\n retryOptions?: PipelineRetryOptions;\n\n /**\n * Options to configure a proxy for outgoing requests.\n */\n proxyOptions?: ProxySettings;\n\n /** Options for configuring Agent instance for outgoing requests */\n agent?: Agent;\n\n /** Options for configuring TLS authentication */\n tlsOptions?: TlsSettings;\n\n /**\n * Options for how redirect responses are handled.\n */\n redirectOptions?: RedirectPolicyOptions;\n\n /**\n * Options for adding user agent details to outgoing requests.\n */\n userAgentOptions?: UserAgentPolicyOptions;\n\n /**\n * Options for setting common telemetry and tracing info to outgoing requests.\n */\n telemetryOptions?: TelemetryOptions;\n}\n\n/**\n * Defines options that are used to configure common telemetry and tracing info\n */\nexport interface TelemetryOptions {\n /**\n * The name of the header to pass the request ID to.\n */\n clientRequestIdHeaderName?: string;\n}\n\n/**\n * Defines options that are used to configure internal options of\n * the HTTP pipeline for an SDK client.\n */\nexport interface InternalPipelineOptions extends PipelineOptions {\n /**\n * Options to configure request/response logging.\n */\n loggingOptions?: LogPolicyOptions;\n}\n\n/**\n * Create a new pipeline with a default set of customizable policies.\n * @param options - Options to configure a custom pipeline.\n */\nexport function createPipelineFromOptions(options: InternalPipelineOptions): Pipeline {\n const pipeline = createEmptyPipeline();\n\n if (isNodeLike) {\n if (options.agent) {\n pipeline.addPolicy(agentPolicy(options.agent));\n }\n if (options.tlsOptions) {\n pipeline.addPolicy(tlsPolicy(options.tlsOptions));\n }\n pipeline.addPolicy(proxyPolicy(options.proxyOptions));\n pipeline.addPolicy(decompressResponsePolicy());\n }\n\n pipeline.addPolicy(formDataPolicy(), { beforePolicies: [multipartPolicyName] });\n pipeline.addPolicy(userAgentPolicy(options.userAgentOptions));\n pipeline.addPolicy(setClientRequestIdPolicy(options.telemetryOptions?.clientRequestIdHeaderName));\n // The multipart policy is added after policies with no phase, so that\n // policies can be added between it and formDataPolicy to modify\n // properties (e.g., making the boundary constant in recorded tests).\n pipeline.addPolicy(multipartPolicy(), { afterPhase: \"Deserialize\" });\n pipeline.addPolicy(defaultRetryPolicy(options.retryOptions), { phase: \"Retry\" });\n pipeline.addPolicy(tracingPolicy({ ...options.userAgentOptions, ...options.loggingOptions }), {\n afterPhase: \"Retry\",\n });\n if (isNodeLike) {\n // Both XHR and Fetch expect to handle redirects automatically,\n // so only include this policy when we're in Node.\n pipeline.addPolicy(redirectPolicy(options.redirectOptions), { afterPhase: \"Retry\" });\n }\n pipeline.addPolicy(logPolicy(options.loggingOptions), { afterPhase: \"Sign\" });\n\n return pipeline;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport type { TlsSettings } from \"../interfaces.js\";\n\n/**\n * Name of the TLS Policy\n */\nexport const tlsPolicyName = \"tlsPolicy\";\n\n/**\n * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication.\n */\nexport function tlsPolicy(tlsSettings?: TlsSettings): PipelinePolicy {\n return {\n name: tlsPolicyName,\n sendRequest: async (req, next) => {\n // Users may define a request tlsSettings, honor those over the client level one\n if (!req.tlsSettings) {\n req.tlsSettings = tlsSettings;\n }\n return next(req);\n },\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport type { Agent } from \"../interfaces.js\";\n\n/**\n * Name of the Agent Policy\n */\nexport const agentPolicyName = \"agentPolicy\";\n\n/**\n * Gets a pipeline policy that sets http.agent\n */\nexport function agentPolicy(agent?: Agent): PipelinePolicy {\n return {\n name: agentPolicyName,\n sendRequest: async (req, next) => {\n // Users may define an agent on the request, honor it over the client level one\n if (!req.agent) {\n req.agent = agent;\n }\n return next(req);\n },\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/*\n * NOTE: When moving this file, please update \"browser\" section in package.json\n */\n\nexport const decompressResponsePolicyName = \"decompressResponsePolicy\";\n\n/**\n * decompressResponsePolicy is not supported in the browser and attempting\n * to use it will raise an error.\n */\nexport function decompressResponsePolicy(): never {\n throw new Error(\"decompressResponsePolicy is not supported in browser environment\");\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { getUserAgentHeaderName, getUserAgentValue } from \"../util/userAgent.js\";\n\nconst UserAgentHeaderName = getUserAgentHeaderName();\n\n/**\n * The programmatic identifier of the userAgentPolicy.\n */\nexport const userAgentPolicyName = \"userAgentPolicy\";\n\n/**\n * Options for adding user agent details to outgoing requests.\n */\nexport interface UserAgentPolicyOptions {\n /**\n * String prefix to add to the user agent for outgoing requests.\n * Defaults to an empty string.\n */\n userAgentPrefix?: string;\n}\n\n/**\n * A policy that sets the User-Agent header (or equivalent) to reflect\n * the library version.\n * @param options - Options to customize the user agent value.\n */\nexport function userAgentPolicy(options: UserAgentPolicyOptions = {}): PipelinePolicy {\n const userAgentValue = getUserAgentValue(options.userAgentPrefix);\n return {\n name: userAgentPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.headers.has(UserAgentHeaderName)) {\n request.headers.set(UserAgentHeaderName, await userAgentValue);\n }\n return next(request);\n },\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\n\n/**\n * The programmatic identifier of the setClientRequestIdPolicy.\n */\nexport const setClientRequestIdPolicyName = \"setClientRequestIdPolicy\";\n\n/**\n * Each PipelineRequest gets a unique id upon creation.\n * This policy passes that unique id along via an HTTP header to enable better\n * telemetry and tracing.\n * @param requestIdHeaderName - The name of the header to pass the request ID to.\n */\nexport function setClientRequestIdPolicy(\n requestIdHeaderName = \"x-ms-client-request-id\",\n): PipelinePolicy {\n return {\n name: setClientRequestIdPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.headers.has(requestIdHeaderName)) {\n request.headers.set(requestIdHeaderName, request.requestId);\n }\n return next(request);\n },\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineRetryOptions } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { exponentialRetryStrategy } from \"../retryStrategies/exponentialRetryStrategy.js\";\nimport { throttlingRetryStrategy } from \"../retryStrategies/throttlingRetryStrategy.js\";\nimport { retryPolicy } from \"./retryPolicy.js\";\nimport { DEFAULT_RETRY_POLICY_COUNT } from \"../constants.js\";\n\n/**\n * Name of the {@link defaultRetryPolicy}\n */\nexport const defaultRetryPolicyName = \"defaultRetryPolicy\";\n\n/**\n * Options that control how to retry failed requests.\n */\nexport interface DefaultRetryPolicyOptions extends PipelineRetryOptions {}\n\n/**\n * A policy that retries according to three strategies:\n * - When the server sends a 429 response with a Retry-After header.\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay.\n */\nexport function defaultRetryPolicy(options: DefaultRetryPolicyOptions = {}): PipelinePolicy {\n return {\n name: defaultRetryPolicyName,\n sendRequest: retryPolicy([throttlingRetryStrategy(), exponentialRetryStrategy(options)], {\n maxRetries: options.maxRetries ?? DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { Debugger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport { Sanitizer } from \"../util/sanitizer.js\";\n\n/**\n * The programmatic identifier of the logPolicy.\n */\nexport const logPolicyName = \"logPolicy\";\n\n/**\n * Options to configure the logPolicy.\n */\nexport interface LogPolicyOptions {\n /**\n * Header names whose values will be logged when logging is enabled.\n * Defaults include a list of well-known safe headers. Any headers\n * specified in this field will be added to that list. Any other values will\n * be written to logs as \"REDACTED\".\n */\n additionalAllowedHeaderNames?: string[];\n\n /**\n * Query string names whose values will be logged when logging is enabled. By default no\n * query string values are logged.\n */\n additionalAllowedQueryParameters?: string[];\n\n /**\n * The log function to use for writing pipeline logs.\n * Defaults to core-http's built-in logger.\n * Compatible with the `debug` library.\n */\n logger?: Debugger;\n}\n\n/**\n * A policy that logs all requests and responses.\n * @param options - Options to configure logPolicy.\n */\nexport function logPolicy(options: LogPolicyOptions = {}): PipelinePolicy {\n const logger = options.logger ?? coreLogger.info;\n const sanitizer = new Sanitizer({\n additionalAllowedHeaderNames: options.additionalAllowedHeaderNames,\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n return {\n name: logPolicyName,\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!logger.enabled) {\n return next(request);\n }\n\n logger(`Request: ${sanitizer.sanitize(request)}`);\n\n const response = await next(request);\n\n logger(`Response status code: ${response.status}`);\n logger(`Headers: ${sanitizer.sanitize(response.headers)}`);\n\n return response;\n },\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type {\n HttpClient,\n HttpHeaders as PipelineHeaders,\n PipelineRequest,\n PipelineResponse,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { RestError } from \"./restError.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport { isNodeReadableStream, isWebReadableStream } from \"./util/typeGuards.js\";\n\n/**\n * Checks if the body is a Blob or Blob-like\n */\nfunction isBlob(body: unknown): body is Blob {\n // File objects count as a type of Blob, so we want to use instanceof explicitly\n return (typeof Blob === \"function\" || typeof Blob === \"object\") && body instanceof Blob;\n}\n\n/**\n * A HttpClient implementation that uses window.fetch to send HTTP requests.\n * @internal\n */\nclass FetchHttpClient implements HttpClient {\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n public async sendRequest(request: PipelineRequest): Promise {\n const url = new URL(request.url);\n const isInsecure = url.protocol !== \"https:\";\n\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n\n if (request.proxySettings) {\n throw new Error(\"HTTP proxy is not supported in browser environment\");\n }\n\n try {\n return await makeRequest(request);\n } catch (e: any) {\n throw getError(e, request);\n }\n }\n}\n\n/**\n * Sends a request\n */\nasync function makeRequest(request: PipelineRequest): Promise {\n const { abortController, abortControllerCleanup } = setupAbortSignal(request);\n try {\n const headers = buildFetchHeaders(request.headers);\n const { streaming, body: requestBody } = buildRequestBody(request);\n const requestInit: RequestInit = {\n body: requestBody,\n method: request.method,\n headers: headers,\n signal: abortController.signal,\n // Cloudflare doesn't implement the full Fetch API spec\n // because of some of it doesn't make sense in the edge.\n // See https://github.com/cloudflare/workerd/issues/902\n ...(\"credentials\" in Request.prototype\n ? { credentials: request.withCredentials ? \"include\" : \"same-origin\" }\n : {}),\n ...(\"cache\" in Request.prototype ? { cache: \"no-store\" } : {}),\n };\n\n // According to https://fetch.spec.whatwg.org/#fetch-method,\n // init.duplex must be set when body is a ReadableStream object.\n // currently \"half\" is the only valid value.\n if (streaming) {\n (requestInit as any).duplex = \"half\";\n }\n /**\n * Developers of the future:\n * Do not set redirect: \"manual\" as part\n * of request options.\n * It will not work as you expect.\n */\n const response = await fetch(request.url, requestInit);\n // If we're uploading a blob, we need to fire the progress event manually\n if (isBlob(request.body) && request.onUploadProgress) {\n request.onUploadProgress({ loadedBytes: request.body.size });\n }\n return buildPipelineResponse(response, request, abortControllerCleanup);\n } catch (e) {\n abortControllerCleanup?.();\n throw e;\n }\n}\n\n/**\n * Creates a pipeline response from a Fetch response;\n */\nasync function buildPipelineResponse(\n httpResponse: Response,\n request: PipelineRequest,\n abortControllerCleanup?: () => void,\n): Promise {\n const headers = buildPipelineHeaders(httpResponse);\n const response: PipelineResponse = {\n request,\n headers,\n status: httpResponse.status,\n };\n\n const bodyStream = isWebReadableStream(httpResponse.body)\n ? buildBodyStream(httpResponse.body, {\n onProgress: request.onDownloadProgress,\n onEnd: abortControllerCleanup,\n })\n : httpResponse.body;\n\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY) ||\n request.streamResponseStatusCodes?.has(response.status)\n ) {\n if (request.enableBrowserStreams) {\n response.browserStreamBody = bodyStream ?? undefined;\n } else {\n const responseStream = new Response(bodyStream);\n response.blobBody = responseStream.blob();\n abortControllerCleanup?.();\n }\n } else {\n const responseStream = new Response(bodyStream);\n\n response.bodyAsText = await responseStream.text();\n abortControllerCleanup?.();\n }\n\n return response;\n}\n\nfunction setupAbortSignal(request: PipelineRequest): {\n abortController: AbortController;\n abortControllerCleanup: (() => void) | undefined;\n} {\n const abortController = new AbortController();\n\n // Cleanup function\n let abortControllerCleanup: (() => void) | undefined;\n\n /**\n * Attach an abort listener to the request\n */\n let abortListener: ((event: any) => void) | undefined;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted. Request has already been canceled.\");\n }\n\n abortListener = (event: Event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n abortControllerCleanup = () => {\n if (abortListener) {\n request.abortSignal?.removeEventListener(\"abort\", abortListener);\n }\n };\n }\n\n // If a timeout was passed, call the abort signal once the time elapses\n if (request.timeout > 0) {\n setTimeout(() => {\n abortController.abort();\n }, request.timeout);\n }\n\n return { abortController, abortControllerCleanup };\n}\n\n/**\n * Gets the specific error\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters\nfunction getError(e: RestError, request: PipelineRequest): RestError {\n if (e && e?.name === \"AbortError\") {\n return e;\n } else {\n return new RestError(`Error sending request: ${e.message}`, {\n code: e?.code ?? RestError.REQUEST_SEND_ERROR,\n request,\n });\n }\n}\n\n/**\n * Converts PipelineRequest headers to Fetch headers\n */\nfunction buildFetchHeaders(pipelineHeaders: PipelineHeaders): Headers {\n const headers = new Headers();\n for (const [name, value] of pipelineHeaders) {\n headers.append(name, value);\n }\n\n return headers;\n}\n\nfunction buildPipelineHeaders(httpResponse: Response): PipelineHeaders {\n const responseHeaders = createHttpHeaders();\n for (const [name, value] of httpResponse.headers) {\n responseHeaders.set(name, value);\n }\n\n return responseHeaders;\n}\n\ninterface BuildRequestBodyResponse {\n body:\n | string\n | Blob\n | ReadableStream\n | ArrayBuffer\n | ArrayBufferView\n | FormData\n | null\n | undefined;\n streaming: boolean;\n}\n\nfunction buildRequestBody(request: PipelineRequest): BuildRequestBodyResponse {\n const body = typeof request.body === \"function\" ? request.body() : request.body;\n if (isNodeReadableStream(body)) {\n throw new Error(\"Node streams are not supported in browser environment.\");\n }\n\n return isWebReadableStream(body)\n ? { streaming: true, body: buildBodyStream(body, { onProgress: request.onUploadProgress }) }\n : { streaming: false, body };\n}\n\n/**\n * Reads the request/response original stream and stream it through a new\n * ReadableStream, this is done to be able to report progress in a way that\n * all modern browsers support. TransformStreams would be an alternative,\n * however they are not yet supported by all browsers i.e Firefox\n */\nfunction buildBodyStream(\n readableStream: ReadableStream,\n options: { onProgress?: (progress: TransferProgressEvent) => void; onEnd?: () => void } = {},\n): ReadableStream {\n let loadedBytes = 0;\n const { onProgress, onEnd } = options;\n\n // If the current browser supports pipeThrough we use a TransformStream\n // to report progress\n if (isTransformStreamSupported(readableStream)) {\n return readableStream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n if (chunk === null) {\n controller.terminate();\n return;\n }\n\n controller.enqueue(chunk);\n loadedBytes += chunk.length;\n if (onProgress) {\n onProgress({ loadedBytes });\n }\n },\n flush() {\n onEnd?.();\n },\n }),\n );\n } else {\n // If we can't use transform streams, wrap the original stream in a new readable stream\n // and use pull to enqueue each chunk and report progress.\n const reader = readableStream.getReader();\n return new ReadableStream({\n async pull(controller) {\n const { done, value } = await reader.read();\n // When no more data needs to be consumed, break the reading\n if (done || !value) {\n onEnd?.();\n // Close the stream\n controller.close();\n reader.releaseLock();\n return;\n }\n\n loadedBytes += value?.length ?? 0;\n\n // Enqueue the next data chunk into our target stream\n controller.enqueue(value);\n\n if (onProgress) {\n onProgress({ loadedBytes });\n }\n },\n cancel(reason?: string) {\n onEnd?.();\n return reader.cancel(reason);\n },\n });\n }\n}\n\n/**\n * Create a new HttpClient instance for the browser environment.\n * @internal\n */\nexport function createFetchHttpClient(): HttpClient {\n return new FetchHttpClient();\n}\n\nfunction isTransformStreamSupported(readableStream: ReadableStream): boolean {\n return readableStream.pipeThrough !== undefined && self.TransformStream !== undefined;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient } from \"./interfaces.js\";\nimport { createFetchHttpClient } from \"./fetchHttpClient.js\";\n\n/**\n * Create the correct HttpClient for the current environment.\n */\nexport function createDefaultHttpClient(): HttpClient {\n return createFetchHttpClient();\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n Agent,\n FormDataMap,\n HttpHeaders,\n MultipartRequestBody,\n PipelineRequest,\n ProxySettings,\n RequestBodyType,\n TlsSettings,\n TransferProgressEvent,\n} from \"./interfaces.js\";\nimport { createHttpHeaders } from \"./httpHeaders.js\";\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { randomUUID } from \"@azure/core-util\";\nimport type { OperationTracingOptions } from \"@azure/core-tracing\";\nimport type { HttpMethods } from \"@azure/core-util\";\n\n/**\n * Settings to initialize a request.\n * Almost equivalent to Partial, but url is mandatory.\n */\nexport interface PipelineRequestOptions {\n /**\n * The URL to make the request to.\n */\n url: string;\n\n /**\n * The HTTP method to use when making the request.\n */\n method?: HttpMethods;\n\n /**\n * The HTTP headers to use when making the request.\n */\n headers?: HttpHeaders;\n\n /**\n * The number of milliseconds a request can take before automatically being terminated.\n * If the request is terminated, an `AbortError` is thrown.\n * Defaults to 0, which disables the timeout.\n */\n timeout?: number;\n\n /**\n * If credentials (cookies) should be sent along during an XHR.\n * Defaults to false.\n */\n withCredentials?: boolean;\n\n /**\n * A unique identifier for the request. Used for logging and tracing.\n */\n requestId?: string;\n\n /**\n * The HTTP body content (if any)\n */\n body?: RequestBodyType;\n\n /**\n * Body for a multipart request.\n */\n multipartBody?: MultipartRequestBody;\n\n /**\n * To simulate a browser form post\n */\n formData?: FormDataMap;\n\n /**\n * A list of response status codes whose corresponding PipelineResponse body should be treated as a stream.\n */\n streamResponseStatusCodes?: Set;\n\n /**\n * NODEJS ONLY\n *\n * A Node-only option to provide a custom `http.Agent`/`https.Agent`.\n * NOTE: usually this should be one instance shared by multiple requests so that the underlying\n * connection to the service can be reused.\n * Does nothing when running in the browser.\n */\n agent?: Agent;\n\n /**\n * BROWSER ONLY\n *\n * A browser only option to enable use of the Streams API. If this option is set and streaming is used\n * (see `streamResponseStatusCodes`), the response will have a property `browserStream` instead of\n * `blobBody` which will be undefined.\n *\n * Default value is false\n */\n enableBrowserStreams?: boolean;\n\n /** Settings for configuring TLS authentication */\n tlsSettings?: TlsSettings;\n\n /**\n * Proxy configuration.\n */\n proxySettings?: ProxySettings;\n\n /**\n * If the connection should not be reused.\n */\n disableKeepAlive?: boolean;\n\n /**\n * Used to abort the request later.\n */\n abortSignal?: AbortSignalLike;\n\n /**\n * Options used to create a span when tracing is enabled.\n */\n tracingOptions?: OperationTracingOptions;\n\n /**\n * Callback which fires upon upload progress.\n */\n onUploadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Callback which fires upon download progress. */\n onDownloadProgress?: (progress: TransferProgressEvent) => void;\n\n /** Set to true if the request is sent over HTTP instead of HTTPS */\n allowInsecureConnection?: boolean;\n}\n\nclass PipelineRequestImpl implements PipelineRequest {\n public url: string;\n public method: HttpMethods;\n public headers: HttpHeaders;\n public timeout: number;\n public withCredentials: boolean;\n public body?: RequestBodyType;\n public multipartBody?: MultipartRequestBody;\n public formData?: FormDataMap;\n public streamResponseStatusCodes?: Set;\n public enableBrowserStreams: boolean;\n public proxySettings?: ProxySettings;\n public disableKeepAlive: boolean;\n public abortSignal?: AbortSignalLike;\n public requestId: string;\n public tracingOptions?: OperationTracingOptions;\n public allowInsecureConnection?: boolean;\n public onUploadProgress?: (progress: TransferProgressEvent) => void;\n public onDownloadProgress?: (progress: TransferProgressEvent) => void;\n public agent?: Agent;\n public tlsSettings?: TlsSettings;\n\n constructor(options: PipelineRequestOptions) {\n this.url = options.url;\n this.body = options.body;\n this.headers = options.headers ?? createHttpHeaders();\n this.method = options.method ?? \"GET\";\n this.timeout = options.timeout ?? 0;\n this.multipartBody = options.multipartBody;\n this.formData = options.formData;\n this.disableKeepAlive = options.disableKeepAlive ?? false;\n this.proxySettings = options.proxySettings;\n this.streamResponseStatusCodes = options.streamResponseStatusCodes;\n this.withCredentials = options.withCredentials ?? false;\n this.abortSignal = options.abortSignal;\n this.tracingOptions = options.tracingOptions;\n this.onUploadProgress = options.onUploadProgress;\n this.onDownloadProgress = options.onDownloadProgress;\n this.requestId = options.requestId || randomUUID();\n this.allowInsecureConnection = options.allowInsecureConnection ?? false;\n this.enableBrowserStreams = options.enableBrowserStreams ?? false;\n this.agent = options.agent;\n this.tlsSettings = options.tlsSettings;\n }\n}\n\n/**\n * Creates a new pipeline request with the given options.\n * This method is to allow for the easy setting of default values and not required.\n * @param options - The options to create the request with.\n */\nexport function createPipelineRequest(options: PipelineRequestOptions): PipelineRequest {\n return new PipelineRequestImpl(options);\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport { delay } from \"./helpers.js\";\n\n/**\n * A function that gets a promise of an access token and allows providing\n * options.\n *\n * @param options - the options to pass to the underlying token provider\n */\nexport type AccessTokenGetter = (\n scopes: string | string[],\n options: GetTokenOptions,\n) => Promise;\n\nexport interface TokenCyclerOptions {\n /**\n * The window of time before token expiration during which the token will be\n * considered unusable due to risk of the token expiring before sending the\n * request.\n *\n * This will only become meaningful if the refresh fails for over\n * (refreshWindow - forcedRefreshWindow) milliseconds.\n */\n forcedRefreshWindowInMs: number;\n /**\n * Interval in milliseconds to retry failed token refreshes.\n */\n retryIntervalInMs: number;\n /**\n * The window of time before token expiration during which\n * we will attempt to refresh the token.\n */\n refreshWindowInMs: number;\n}\n\n// Default options for the cycler if none are provided\nexport const DEFAULT_CYCLER_OPTIONS: TokenCyclerOptions = {\n forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires\n retryIntervalInMs: 3000, // Allow refresh attempts every 3s\n refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null.\n * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts.\n * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception.\n * @returns - A promise that, if it resolves, will resolve with an access token.\n */\nasync function beginRefresh(\n getAccessToken: () => Promise,\n retryIntervalInMs: number,\n refreshTimeout: number,\n): Promise {\n // This wrapper handles exceptions gracefully as long as we haven't exceeded\n // the timeout.\n async function tryGetAccessToken(): Promise {\n if (Date.now() < refreshTimeout) {\n try {\n return await getAccessToken();\n } catch {\n return null;\n }\n } else {\n const finalToken = await getAccessToken();\n\n // Timeout is up, so throw if it's still null\n if (finalToken === null) {\n throw new Error(\"Failed to refresh access token.\");\n }\n\n return finalToken;\n }\n }\n\n let token: AccessToken | null = await tryGetAccessToken();\n\n while (token === null) {\n await delay(retryIntervalInMs);\n\n token = await tryGetAccessToken();\n }\n\n return token;\n}\n\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nexport function createTokenCycler(\n credential: TokenCredential,\n tokenCyclerOptions?: Partial,\n): AccessTokenGetter {\n let refreshWorker: Promise | null = null;\n let token: AccessToken | null = null;\n let tenantId: string | undefined;\n\n const options = {\n ...DEFAULT_CYCLER_OPTIONS,\n ...tokenCyclerOptions,\n };\n\n /**\n * This little holder defines several predicates that we use to construct\n * the rules of refreshing the token.\n */\n const cycler = {\n /**\n * Produces true if a refresh job is currently in progress.\n */\n get isRefreshing(): boolean {\n return refreshWorker !== null;\n },\n /**\n * Produces true if the cycler SHOULD refresh (we are within the refresh\n * window and not already refreshing)\n */\n get shouldRefresh(): boolean {\n if (cycler.isRefreshing) {\n return false;\n }\n if (token?.refreshAfterTimestamp && token.refreshAfterTimestamp < Date.now()) {\n return true;\n }\n\n return (token?.expiresOnTimestamp ?? 0) - options.refreshWindowInMs < Date.now();\n },\n /**\n * Produces true if the cycler MUST refresh (null or nearly-expired\n * token).\n */\n get mustRefresh(): boolean {\n return (\n token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now()\n );\n },\n };\n\n /**\n * Starts a refresh job or returns the existing job if one is already\n * running.\n */\n function refresh(\n scopes: string | string[],\n getTokenOptions: GetTokenOptions,\n ): Promise {\n if (!cycler.isRefreshing) {\n // We bind `scopes` here to avoid passing it around a lot\n const tryGetAccessToken = (): Promise =>\n credential.getToken(scopes, getTokenOptions);\n\n // Take advantage of promise chaining to insert an assignment to `token`\n // before the refresh can be considered done.\n refreshWorker = beginRefresh(\n tryGetAccessToken,\n options.retryIntervalInMs,\n // If we don't have a token, then we should timeout immediately\n token?.expiresOnTimestamp ?? Date.now(),\n )\n .then((_token) => {\n refreshWorker = null;\n token = _token;\n tenantId = getTokenOptions.tenantId;\n return token;\n })\n .catch((reason) => {\n // We also should reset the refresher if we enter a failed state. All\n // existing awaiters will throw, but subsequent requests will start a\n // new retry chain.\n refreshWorker = null;\n token = null;\n tenantId = undefined;\n throw reason;\n });\n }\n\n return refreshWorker as Promise;\n }\n\n return async (scopes: string | string[], tokenOptions: GetTokenOptions): Promise => {\n //\n // Simple rules:\n // - If we MUST refresh, then return the refresh task, blocking\n // the pipeline until a token is available.\n // - If we SHOULD refresh, then run refresh but don't return it\n // (we can still use the cached token).\n // - Return the token, since it's fine if we didn't return in\n // step 1.\n //\n\n const hasClaimChallenge = Boolean(tokenOptions.claims);\n const tenantIdChanged = tenantId !== tokenOptions.tenantId;\n\n if (hasClaimChallenge) {\n // If we've received a claim, we know the existing token isn't valid\n // We want to clear it so that that refresh worker won't use the old expiration time as a timeout\n token = null;\n }\n\n // If the tenantId passed in token options is different to the one we have\n // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to\n // refresh the token with the new tenantId or token.\n const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh;\n\n if (mustRefresh) {\n return refresh(scopes, tokenOptions);\n }\n\n if (cycler.shouldRefresh) {\n refresh(scopes, tokenOptions);\n }\n\n return token as AccessToken;\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AccessToken, GetTokenOptions, TokenCredential } from \"@azure/core-auth\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport type { PipelineRequest, PipelineResponse, SendRequest } from \"../interfaces.js\";\nimport type { PipelinePolicy } from \"../pipeline.js\";\nimport { createTokenCycler } from \"../util/tokenCycler.js\";\nimport { logger as coreLogger } from \"../log.js\";\nimport type { RestError } from \"../restError.js\";\nimport { isRestError } from \"../restError.js\";\n\n/**\n * The programmatic identifier of the bearerTokenAuthenticationPolicy.\n */\nexport const bearerTokenAuthenticationPolicyName = \"bearerTokenAuthenticationPolicy\";\n\n/**\n * Options sent to the authorizeRequest callback\n */\nexport interface AuthorizeRequestOptions {\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string[];\n /**\n * Function that retrieves either a cached access token or a new access token.\n */\n getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise;\n /**\n * Request that the policy is trying to fulfill.\n */\n request: PipelineRequest;\n /**\n * A logger, if one was sent through the HTTP pipeline.\n */\n logger?: AzureLogger;\n}\n\n/**\n * Options sent to the authorizeRequestOnChallenge callback\n */\nexport interface AuthorizeRequestOnChallengeOptions {\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string[];\n /**\n * Function that retrieves either a cached access token or a new access token.\n */\n getAccessToken: (scopes: string[], options: GetTokenOptions) => Promise;\n /**\n * Request that the policy is trying to fulfill.\n */\n request: PipelineRequest;\n /**\n * Response containing the challenge.\n */\n response: PipelineResponse;\n /**\n * A logger, if one was sent through the HTTP pipeline.\n */\n logger?: AzureLogger;\n}\n\n/**\n * Options to override the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges.\n */\nexport interface ChallengeCallbacks {\n /**\n * Allows for the authorization of the main request of this policy before it's sent.\n */\n authorizeRequest?(options: AuthorizeRequestOptions): Promise;\n /**\n * Allows to handle authentication challenges and to re-authorize the request.\n * The response containing the challenge is `options.response`.\n * If this method returns true, the underlying request will be sent once again.\n * The request may be modified before being sent.\n */\n authorizeRequestOnChallenge?(options: AuthorizeRequestOnChallengeOptions): Promise;\n}\n\n/**\n * Options to configure the bearerTokenAuthenticationPolicy\n */\nexport interface BearerTokenAuthenticationPolicyOptions {\n /**\n * The TokenCredential implementation that can supply the bearer token.\n */\n credential?: TokenCredential;\n /**\n * The scopes for which the bearer token applies.\n */\n scopes: string | string[];\n /**\n * Allows for the processing of [Continuous Access Evaluation](https://learn.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation) challenges.\n * If provided, it must contain at least the `authorizeRequestOnChallenge` method.\n * If provided, after a request is sent, if it has a challenge, it can be processed to re-send the original request with the relevant challenge information.\n */\n challengeCallbacks?: ChallengeCallbacks;\n /**\n * A logger can be sent for debugging purposes.\n */\n logger?: AzureLogger;\n}\n/**\n * Try to send the given request.\n *\n * When a response is received, returns a tuple of the response received and, if the response was received\n * inside a thrown RestError, the RestError that was thrown.\n *\n * Otherwise, if an error was thrown while sending the request that did not provide an underlying response, it\n * will be rethrown.\n */\nasync function trySendRequest(\n request: PipelineRequest,\n next: SendRequest,\n): Promise<[PipelineResponse, RestError | undefined]> {\n try {\n return [await next(request), undefined];\n } catch (e: any) {\n if (isRestError(e) && e.response) {\n return [e.response, e];\n } else {\n throw e;\n }\n }\n}\n/**\n * Default authorize request handler\n */\nasync function defaultAuthorizeRequest(options: AuthorizeRequestOptions): Promise {\n const { scopes, getAccessToken, request } = options;\n // Enable CAE true by default\n const getTokenOptions: GetTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n enableCae: true,\n };\n\n const accessToken = await getAccessToken(scopes, getTokenOptions);\n\n if (accessToken) {\n options.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n }\n}\n\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction isChallengeResponse(response: PipelineResponse): boolean {\n return response.status === 401 && response.headers.has(\"WWW-Authenticate\");\n}\n\n/**\n * Re-authorize the request for CAE challenge.\n * The response containing the challenge is `options.response`.\n * If this method returns true, the underlying request will be sent once again.\n */\nasync function authorizeRequestOnCaeChallenge(\n onChallengeOptions: AuthorizeRequestOnChallengeOptions,\n caeClaims: string,\n): Promise {\n const { scopes } = onChallengeOptions;\n\n const accessToken = await onChallengeOptions.getAccessToken(scopes, {\n enableCae: true,\n claims: caeClaims,\n });\n if (!accessToken) {\n return false;\n }\n\n onChallengeOptions.request.headers.set(\n \"Authorization\",\n `${accessToken.tokenType ?? \"Bearer\"} ${accessToken.token}`,\n );\n return true;\n}\n\n/**\n * A policy that can request a token from a TokenCredential implementation and\n * then apply it to the Authorization header of a request as a Bearer token.\n */\nexport function bearerTokenAuthenticationPolicy(\n options: BearerTokenAuthenticationPolicyOptions,\n): PipelinePolicy {\n const { credential, scopes, challengeCallbacks } = options;\n const logger = options.logger || coreLogger;\n const callbacks = {\n authorizeRequest:\n challengeCallbacks?.authorizeRequest?.bind(challengeCallbacks) ?? defaultAuthorizeRequest,\n authorizeRequestOnChallenge:\n challengeCallbacks?.authorizeRequestOnChallenge?.bind(challengeCallbacks),\n };\n\n // This function encapsulates the entire process of reliably retrieving the token\n // The options are left out of the public API until there's demand to configure this.\n // Remember to extend `BearerTokenAuthenticationPolicyOptions` with `TokenCyclerOptions`\n // in order to pass through the `options` object.\n const getAccessToken = credential\n ? createTokenCycler(credential /* , options */)\n : () => Promise.resolve(null);\n\n return {\n name: bearerTokenAuthenticationPolicyName,\n /**\n * If there's no challenge parameter:\n * - It will try to retrieve the token using the cache, or the credential's getToken.\n * - Then it will try the next policy with or without the retrieved token.\n *\n * It uses the challenge parameters to:\n * - Skip a first attempt to get the token from the credential if there's no cached token,\n * since it expects the token to be retrievable only after the challenge.\n * - Prepare the outgoing request if the `prepareRequest` method has been provided.\n * - Send an initial request to receive the challenge if it fails.\n * - Process a challenge if the response contains it.\n * - Retrieve a token with the challenge information, then re-send the request.\n */\n async sendRequest(request: PipelineRequest, next: SendRequest): Promise {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\n \"Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.\",\n );\n }\n\n await callbacks.authorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n });\n\n let response: PipelineResponse;\n let error: Error | undefined;\n let shouldSendRequest: boolean;\n [response, error] = await trySendRequest(request, next);\n\n if (isChallengeResponse(response)) {\n let claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\"));\n // Handle CAE by default when receive CAE claim\n if (claims) {\n let parsedClaim: string;\n // Return the response immediately if claims is not a valid base64 encoded string\n try {\n parsedClaim = atob(claims);\n } catch (e) {\n logger.warning(\n `The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`,\n );\n return response;\n }\n shouldSendRequest = await authorizeRequestOnCaeChallenge(\n {\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n },\n parsedClaim,\n );\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n } else if (callbacks.authorizeRequestOnChallenge) {\n // Handle custom challenges when client provides custom callback\n shouldSendRequest = await callbacks.authorizeRequestOnChallenge({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n response,\n getAccessToken,\n logger,\n });\n\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n\n // If we get another CAE Claim, we will handle it by default and return whatever value we receive for this\n if (isChallengeResponse(response)) {\n claims = getCaeChallengeClaims(response.headers.get(\"WWW-Authenticate\") as string);\n if (claims) {\n let parsedClaim: string;\n try {\n parsedClaim = atob(claims);\n } catch (e) {\n logger.warning(\n `The WWW-Authenticate header contains \"claims\" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`,\n );\n return response;\n }\n\n shouldSendRequest = await authorizeRequestOnCaeChallenge(\n {\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n response,\n request,\n getAccessToken,\n logger,\n },\n parsedClaim,\n );\n // Send updated request and handle response for RestError\n if (shouldSendRequest) {\n [response, error] = await trySendRequest(request, next);\n }\n }\n }\n }\n }\n\n if (error) {\n throw error;\n } else {\n return response;\n }\n },\n };\n}\n\n/**\n *\n * Interface to represent a parsed challenge.\n *\n * @internal\n */\ninterface AuthChallenge {\n scheme: string;\n params: Record;\n}\n\n/**\n * Converts: `Bearer a=\"b\", c=\"d\", Pop e=\"f\", g=\"h\"`.\n * Into: `[ { scheme: 'Bearer', params: { a: 'b', c: 'd' } }, { scheme: 'Pop', params: { e: 'f', g: 'h' } } ]`.\n *\n * @internal\n */\nexport function parseChallenges(challenges: string): AuthChallenge[] {\n // Challenge regex seperates the string to individual challenges with different schemes in the format `Scheme a=\"b\", c=d`\n // The challenge regex captures parameteres with either quotes values or unquoted values\n const challengeRegex = /(\\w+)\\s+((?:\\w+=(?:\"[^\"]*\"|[^,]*),?\\s*)+)/g;\n // Parameter regex captures the claims group removed from the scheme in the format `a=\"b\"` and `c=\"d\"`\n // CAE challenge always have quoted parameters. For more reference, https://learn.microsoft.com/entra/identity-platform/claims-challenge\n const paramRegex = /(\\w+)=\"([^\"]*)\"/g;\n\n const parsedChallenges: AuthChallenge[] = [];\n let match;\n\n // Iterate over each challenge match\n while ((match = challengeRegex.exec(challenges)) !== null) {\n const scheme = match[1];\n const paramsString = match[2];\n const params: Record = {};\n let paramMatch;\n\n // Iterate over each parameter match\n while ((paramMatch = paramRegex.exec(paramsString)) !== null) {\n params[paramMatch[1]] = paramMatch[2];\n }\n\n parsedChallenges.push({ scheme, params });\n }\n return parsedChallenges;\n}\n\n/**\n * Parse a pipeline response and look for a CAE challenge with \"Bearer\" scheme\n * Return the value in the header without parsing the challenge\n * @internal\n */\nfunction getCaeChallengeClaims(challenges: string | undefined): string | undefined {\n if (!challenges) {\n return;\n }\n // Find all challenges present in the header\n const parsedChallenges = parseChallenges(challenges);\n return parsedChallenges.find(\n (x) => x.scheme === \"Bearer\" && x.params.claims && x.params.error === \"insufficient_claims\",\n )?.params.claims;\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar isArray = require('isarray')\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nexports.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return ''\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/// \n\nexport function encodeUTF8(str: string): Uint8Array {\n const bytes = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n bytes[i] = str.charCodeAt(i);\n }\n return bytes;\n}\n\nexport function encodeBase64(value: ArrayBuffer): string {\n if (\"function\" !== typeof btoa) {\n throw new Error(\"Your browser environment is missing the global `btoa` function\");\n }\n\n let binary = \"\";\n const bytes = new Uint8Array(value);\n const len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n}\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport JSBI from \"jsbi\";\nimport { BytePrefix } from \"./prefix\";\n\nexport function writeNumberForBinaryEncodingJSBI(hash: number): Buffer {\n let payload = encodeNumberAsUInt64JSBI(hash);\n let outputStream = Buffer.from(BytePrefix.Number, \"hex\");\n const firstChunk = JSBI.asUintN(64, JSBI.signedRightShift(payload, JSBI.BigInt(56)));\n\n outputStream = Buffer.concat([outputStream, Buffer.from(firstChunk.toString(16), \"hex\")]);\n payload = JSBI.asUintN(64, JSBI.leftShift(JSBI.BigInt(payload), JSBI.BigInt(0x8)));\n\n let byteToWrite = JSBI.BigInt(0);\n let firstIteration = false;\n let shifted: JSBI;\n let padded: string;\n\n do {\n if (!firstIteration) {\n // we pad because after shifting because we will produce characters like \"f\" or similar,\n // which cannot be encoded as hex in a buffer because they are invalid hex\n // https://github.com/nodejs/node/issues/24491\n padded = byteToWrite.toString(16).padStart(2, \"0\");\n if (padded !== \"00\") {\n outputStream = Buffer.concat([outputStream, Buffer.from(padded, \"hex\")]);\n }\n } else {\n firstIteration = false;\n }\n\n shifted = JSBI.asUintN(64, JSBI.signedRightShift(payload, JSBI.BigInt(56)));\n byteToWrite = JSBI.asUintN(64, JSBI.bitwiseOr(shifted, JSBI.BigInt(0x01)));\n payload = JSBI.asUintN(64, JSBI.leftShift(payload, JSBI.BigInt(7)));\n } while (JSBI.notEqual(payload, JSBI.BigInt(0)));\n\n const lastChunk = JSBI.asUintN(64, JSBI.bitwiseAnd(byteToWrite, JSBI.BigInt(0xfe)));\n // we pad because after shifting because we will produce characters like \"f\" or similar,\n // which cannot be encoded as hex in a buffer because they are invalid hex\n // https://github.com/nodejs/node/issues/24491\n padded = lastChunk.toString(16).padStart(2, \"0\");\n if (padded !== \"00\") {\n outputStream = Buffer.concat([outputStream, Buffer.from(padded, \"hex\")]);\n }\n\n return outputStream;\n}\n\nfunction encodeNumberAsUInt64JSBI(value: number): JSBI {\n const rawValueBits = getRawBitsJSBI(value);\n const mask = JSBI.BigInt(0x8000000000000000);\n const returned = JSBI.greaterThan(mask, rawValueBits)\n ? JSBI.bitwiseXor(rawValueBits, mask)\n : JSBI.add(JSBI.bitwiseNot(rawValueBits), JSBI.BigInt(1));\n return returned;\n}\n\nexport function doubleToByteArrayJSBI(double: number): Buffer {\n const output: Buffer = Buffer.alloc(8);\n const lng = getRawBitsJSBI(double);\n for (let i = 0; i < 8; i++) {\n output[i] = JSBI.toNumber(\n JSBI.bitwiseAnd(\n JSBI.signedRightShift(lng, JSBI.multiply(JSBI.BigInt(i), JSBI.BigInt(8))),\n JSBI.BigInt(0xff),\n ),\n );\n }\n return output;\n}\n\nfunction getRawBitsJSBI(value: number): JSBI {\n const view = new DataView(new ArrayBuffer(8));\n view.setFloat64(0, value);\n return JSBI.BigInt(`0x${buf2hex(view.buffer)}`);\n}\n\nfunction buf2hex(buffer: ArrayBuffer): string {\n return Array.prototype.map\n .call(new Uint8Array(buffer), (x: number) => (\"00\" + x.toString(16)).slice(-2))\n .join(\"\");\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { log } from \"./log.js\";\n\n/**\n * A simple mechanism for enabling logging.\n * Intended to mimic the publicly available `debug` package.\n */\nexport interface Debug {\n /**\n * Creates a new logger with the given namespace.\n */\n (namespace: string): Debugger;\n /**\n * The default log method (defaults to console)\n */\n log: (...args: any[]) => void;\n /**\n * Enables a particular set of namespaces.\n * To enable multiple separate them with commas, e.g. \"info,debug\".\n * Supports wildcards, e.g. \"azure:*\"\n * Supports skip syntax, e.g. \"azure:*,-azure:storage:*\" will enable\n * everything under azure except for things under azure:storage.\n */\n enable: (namespaces: string) => void;\n /**\n * Checks if a particular namespace is enabled.\n */\n enabled: (namespace: string) => boolean;\n /**\n * Disables all logging, returns what was previously enabled.\n */\n disable: () => string;\n}\n\n/**\n * A log function that can be dynamically enabled and redirected.\n */\nexport interface Debugger {\n /**\n * Logs the given arguments to the `log` method.\n */\n (...args: any[]): void;\n /**\n * True if this logger is active and logging.\n */\n enabled: boolean;\n /**\n * Used to cleanup/remove this logger.\n */\n destroy: () => boolean;\n /**\n * The current log method. Can be overridden to redirect output.\n */\n log: (...args: any[]) => void;\n /**\n * The namespace of this logger.\n */\n namespace: string;\n /**\n * Extends this logger with a child namespace.\n * Namespaces are separated with a ':' character.\n */\n extend: (namespace: string) => Debugger;\n}\n\nconst debugEnvVariable =\n (typeof process !== \"undefined\" && process.env && process.env.DEBUG) || undefined;\n\nlet enabledString: string | undefined;\nlet enabledNamespaces: RegExp[] = [];\nlet skippedNamespaces: RegExp[] = [];\nconst debuggers: Debugger[] = [];\n\nif (debugEnvVariable) {\n enable(debugEnvVariable);\n}\n\nconst debugObj: Debug = Object.assign(\n (namespace: string): Debugger => {\n return createDebugger(namespace);\n },\n {\n enable,\n enabled,\n disable,\n log,\n },\n);\n\nfunction enable(namespaces: string): void {\n enabledString = namespaces;\n enabledNamespaces = [];\n skippedNamespaces = [];\n const wildcard = /\\*/g;\n const namespaceList = namespaces.split(\",\").map((ns) => ns.trim().replace(wildcard, \".*?\"));\n for (const ns of namespaceList) {\n if (ns.startsWith(\"-\")) {\n skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`));\n } else {\n enabledNamespaces.push(new RegExp(`^${ns}$`));\n }\n }\n for (const instance of debuggers) {\n instance.enabled = enabled(instance.namespace);\n }\n}\n\nfunction enabled(namespace: string): boolean {\n if (namespace.endsWith(\"*\")) {\n return true;\n }\n\n for (const skipped of skippedNamespaces) {\n if (skipped.test(namespace)) {\n return false;\n }\n }\n for (const enabledNamespace of enabledNamespaces) {\n if (enabledNamespace.test(namespace)) {\n return true;\n }\n }\n return false;\n}\n\nfunction disable(): string {\n const result = enabledString || \"\";\n enable(\"\");\n return result;\n}\n\nfunction createDebugger(namespace: string): Debugger {\n const newDebugger: Debugger = Object.assign(debug, {\n enabled: enabled(namespace),\n destroy,\n log: debugObj.log,\n namespace,\n extend,\n });\n\n function debug(...args: any[]): void {\n if (!newDebugger.enabled) {\n return;\n }\n if (args.length > 0) {\n args[0] = `${namespace} ${args[0]}`;\n }\n newDebugger.log(...args);\n }\n\n debuggers.push(newDebugger);\n\n return newDebugger;\n}\n\nfunction destroy(this: Debugger): boolean {\n const index = debuggers.indexOf(this);\n if (index >= 0) {\n debuggers.splice(index, 1);\n return true;\n }\n return false;\n}\n\nfunction extend(this: Debugger, namespace: string): Debugger {\n const newDebugger = createDebugger(`${this.namespace}:${namespace}`);\n newDebugger.log = this.log;\n return newDebugger;\n}\n\nexport default debugObj;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\nconst globalRef: any = typeof self === \"undefined\" ? window : self;\n\nif (!globalRef) {\n throw new Error(\"Could not find global\");\n}\n\nconst globalCrypto: Crypto = globalRef.crypto || globalRef.msCrypto;\n\nif (!globalCrypto || !globalCrypto.subtle) {\n throw new Error(\"Browser does not support cryptography functions\");\n}\n\nexport { globalCrypto };\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 += '';\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, '"');\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","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { encodeUTF8, encodeBase64 } from \"./encode\";\nimport atob from \"./atob\";\nimport { globalCrypto } from \"./globalCrypto\";\n\nexport async function hmac(key: string, message: string): Promise {\n const importParams: HmacImportParams = { name: \"HMAC\", hash: { name: \"SHA-256\" } };\n const encodedMessage = new Uint8Array(\n [...unescape(encodeURIComponent(message))].map((c) => c.charCodeAt(0)),\n );\n const encodedKey = encodeUTF8(atob(key));\n const cryptoKey = await globalCrypto.subtle.importKey(\"raw\", encodedKey, importParams, false, [\n \"sign\",\n ]);\n const signature = await globalCrypto.subtle.sign(importParams, cryptoKey, encodedMessage);\n\n return encodeBase64(signature);\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nlet safeatob: any;\n\n// base64 character set, plus padding character (=)\nconst b64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n// Regular expression to check formal correctness of base64 encoded strings\nconst b64re = /^(?:[A-Za-z\\d+/]{4})*?(?:[A-Za-z\\d+/]{2}(?:==)?|[A-Za-z\\d+/]{3}=?)?$/;\n\nif (\"function\" !== typeof atob) {\n // atob implementation for React Native\n safeatob = (str: string): string => {\n // atob can work with strings with whitespaces, even inside the encoded part,\n // but only \\t, \\n, \\f, \\r and ' ', which can be stripped.\n str = String(str).replace(/[\\t\\n\\f\\r ]+/g, \"\");\n if (!b64re.test(str)) {\n throw new TypeError(\n \"Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.\",\n );\n }\n\n // Adding the padding if missing, for simplicity\n str += \"==\".slice(2 - (str.length & 3));\n let bitmap;\n let result = \"\";\n let r1;\n let r2;\n let i = 0;\n for (; i < str.length; ) {\n bitmap =\n (b64.indexOf(str.charAt(i++)) << 18) |\n (b64.indexOf(str.charAt(i++)) << 12) |\n ((r1 = b64.indexOf(str.charAt(i++))) << 6) |\n (r2 = b64.indexOf(str.charAt(i++)));\n\n result +=\n r1 === 64\n ? String.fromCharCode((bitmap >> 16) & 255)\n : r2 === 64\n ? String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255)\n : String.fromCharCode((bitmap >> 16) & 255, (bitmap >> 8) & 255, bitmap & 255);\n }\n return result;\n };\n} else {\n safeatob = atob;\n}\n\nexport default safeatob;\n","/**\n * Expose `PriorityQueue`.\n */\nmodule.exports = PriorityQueue;\n\n/**\n * Initializes a new empty `PriorityQueue` with the given `comparator(a, b)`\n * function, uses `.DEFAULT_COMPARATOR()` when no function is provided.\n *\n * The comparator function must return a positive number when `a > b`, 0 when\n * `a == b` and a negative number when `a < b`.\n *\n * @param {Function}\n * @return {PriorityQueue}\n * @api public\n */\nfunction PriorityQueue(comparator) {\n this._comparator = comparator || PriorityQueue.DEFAULT_COMPARATOR;\n this._elements = [];\n}\n\n/**\n * Compares `a` and `b`, when `a > b` it returns a positive number, when\n * it returns 0 and when `a < b` it returns a negative number.\n *\n * @param {String|Number} a\n * @param {String|Number} b\n * @return {Number}\n * @api public\n */\nPriorityQueue.DEFAULT_COMPARATOR = function(a, b) {\n if (typeof a === 'number' && typeof b === 'number') {\n return a - b;\n } else {\n a = a.toString();\n b = b.toString();\n\n if (a == b) return 0;\n\n return (a > b) ? 1 : -1;\n }\n};\n\n/**\n * Returns whether the priority queue is empty or not.\n *\n * @return {Boolean}\n * @api public\n */\nPriorityQueue.prototype.isEmpty = function() {\n return this.size() === 0;\n};\n\n/**\n * Peeks at the top element of the priority queue.\n *\n * @return {Object}\n * @throws {Error} when the queue is empty.\n * @api public\n */\nPriorityQueue.prototype.peek = function() {\n if (this.isEmpty()) throw new Error('PriorityQueue is empty');\n\n return this._elements[0];\n};\n\n/**\n * Dequeues the top element of the priority queue.\n *\n * @return {Object}\n * @throws {Error} when the queue is empty.\n * @api public\n */\nPriorityQueue.prototype.deq = function() {\n var first = this.peek();\n var last = this._elements.pop();\n var size = this.size();\n\n if (size === 0) return first;\n\n this._elements[0] = last;\n var current = 0;\n\n while (current < size) {\n var largest = current;\n var left = (2 * current) + 1;\n var right = (2 * current) + 2;\n\n if (left < size && this._compare(left, largest) >= 0) {\n largest = left;\n }\n\n if (right < size && this._compare(right, largest) >= 0) {\n largest = right;\n }\n\n if (largest === current) break;\n\n this._swap(largest, current);\n current = largest;\n }\n\n return first;\n};\n\n/**\n * Enqueues the `element` at the priority queue and returns its new size.\n *\n * @param {Object} element\n * @return {Number}\n * @api public\n */\nPriorityQueue.prototype.enq = function(element) {\n var size = this._elements.push(element);\n var current = size - 1;\n\n while (current > 0) {\n var parent = Math.floor((current - 1) / 2);\n\n if (this._compare(current, parent) <= 0) break;\n\n this._swap(parent, current);\n current = parent;\n }\n\n return size;\n};\n\n/**\n * Returns the size of the priority queue.\n *\n * @return {Number}\n * @api public\n */\nPriorityQueue.prototype.size = function() {\n return this._elements.length;\n};\n\n/**\n * Iterates over queue elements\n *\n * @param {Function} fn\n */\nPriorityQueue.prototype.forEach = function(fn) {\n return this._elements.forEach(fn);\n};\n\n/**\n * Compares the values at position `a` and `b` in the priority queue using its\n * comparator function.\n *\n * @param {Number} a\n * @param {Number} b\n * @return {Number}\n * @api private\n */\nPriorityQueue.prototype._compare = function(a, b) {\n return this._comparator(this._elements[a], this._elements[b]);\n};\n\n/**\n * Swaps the values at position `a` and `b` in the priority queue.\n *\n * @param {Number} a\n * @param {Number} b\n * @api private\n */\nPriorityQueue.prototype._swap = function(a, b) {\n var aux = this._elements[a];\n this._elements[a] = this._elements[b];\n this._elements[b] = aux;\n};\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PrimitivePartitionKeyValue } from \"../../documents\";\nimport { doubleToByteArrayJSBI } from \"./encoding/number\";\nimport { BytePrefix } from \"./encoding/prefix\";\nimport MurmurHash from \"./murmurHash\";\n\nexport function hashV2PartitionKey(partitionKey: PrimitivePartitionKeyValue[]): string {\n const toHash: Buffer = Buffer.concat(partitionKey.map(prefixKeyByType));\n const hash = MurmurHash.x64.hash128(toHash);\n const reverseBuff: Buffer = reverse(Buffer.from(hash, \"hex\"));\n reverseBuff[0] &= 0x3f;\n return reverseBuff.toString(\"hex\").toUpperCase();\n}\n\nfunction prefixKeyByType(key: PrimitivePartitionKeyValue): Buffer {\n let bytes: Buffer;\n switch (typeof key) {\n case \"string\": {\n bytes = Buffer.concat([\n Buffer.from(BytePrefix.String, \"hex\"),\n Buffer.from(key),\n Buffer.from(BytePrefix.Infinity, \"hex\"),\n ]);\n return bytes;\n }\n case \"number\": {\n const numberBytes = doubleToByteArrayJSBI(key);\n bytes = Buffer.concat([Buffer.from(BytePrefix.Number, \"hex\"), numberBytes]);\n return bytes;\n }\n case \"boolean\": {\n const prefix = key ? BytePrefix.True : BytePrefix.False;\n return Buffer.from(prefix, \"hex\");\n }\n case \"object\": {\n if (key === null) {\n return Buffer.from(BytePrefix.Null, \"hex\");\n }\n return Buffer.from(BytePrefix.Undefined, \"hex\");\n }\n case \"undefined\": {\n return Buffer.from(BytePrefix.Undefined, \"hex\");\n }\n default:\n throw new Error(`Unexpected type: ${typeof key}`);\n }\n}\n\nexport function reverse(buff: Buffer): Buffer {\n const buffer = Buffer.allocUnsafe(buff.length);\n\n for (let i = 0, j = buff.length - 1; i <= j; ++i, --j) {\n buffer[i] = buff[j];\n buffer[j] = buff[i];\n }\n return buffer;\n}\n","// +----------------------------------------------------------------------+\n// | murmurHash3js.js v3.0.1 // https://github.com/pid/murmurHash3js\n// | A javascript implementation of MurmurHash3's x86 hashing algorithms. |\n// |----------------------------------------------------------------------|\n// | Copyright (c) 2012-2015 Karan Lyons |\n// | https://github.com/karanlyons/murmurHash3.js/blob/c1778f75792abef7bdd74bc85d2d4e1a3d25cfe9/murmurHash3.js |\n// | Freely distributable under the MIT license. |\n// +----------------------------------------------------------------------+\n\n// PRIVATE FUNCTIONS\n// -----------------\n\nfunction _x86Multiply(m: number, n: number) {\n //\n // Given two 32bit ints, returns the two multiplied together as a\n // 32bit int.\n //\n\n return (m & 0xffff) * n + ((((m >>> 16) * n) & 0xffff) << 16);\n}\n\nfunction _x86Rotl(m: number, n: number) {\n //\n // Given a 32bit int and an int representing a number of bit positions,\n // returns the 32bit int rotated left by that number of positions.\n //\n\n return (m << n) | (m >>> (32 - n));\n}\n\nfunction _x86Fmix(h: number) {\n //\n // Given a block, returns murmurHash3's final x86 mix of that block.\n //\n\n h ^= h >>> 16;\n h = _x86Multiply(h, 0x85ebca6b);\n h ^= h >>> 13;\n h = _x86Multiply(h, 0xc2b2ae35);\n h ^= h >>> 16;\n\n return h;\n}\n\nfunction _x64Add(m: number[], n: number[]) {\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // added together as a 64bit int (as an array of two 32bit ints).\n //\n\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\n const o = [0, 0, 0, 0];\n\n o[3] += m[3] + n[3];\n o[2] += o[3] >>> 16;\n o[3] &= 0xffff;\n\n o[2] += m[2] + n[2];\n o[1] += o[2] >>> 16;\n o[2] &= 0xffff;\n\n o[1] += m[1] + n[1];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[0] += m[0] + n[0];\n o[0] &= 0xffff;\n\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\n}\n\nfunction _x64Multiply(m: number[], n: number[]) {\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // multiplied together as a 64bit int (as an array of two 32bit ints).\n //\n\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\n const o = [0, 0, 0, 0];\n\n o[3] += m[3] * n[3];\n o[2] += o[3] >>> 16;\n o[3] &= 0xffff;\n\n o[2] += m[2] * n[3];\n o[1] += o[2] >>> 16;\n o[2] &= 0xffff;\n\n o[2] += m[3] * n[2];\n o[1] += o[2] >>> 16;\n o[2] &= 0xffff;\n\n o[1] += m[1] * n[3];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[1] += m[2] * n[2];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[1] += m[3] * n[1];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[0] += m[0] * n[3] + m[1] * n[2] + m[2] * n[1] + m[3] * n[0];\n o[0] &= 0xffff;\n\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\n}\n\nfunction _x64Rotl(m: number[], n: number) {\n //\n // Given a 64bit int (as an array of two 32bit ints) and an int\n // representing a number of bit positions, returns the 64bit int (as an\n // array of two 32bit ints) rotated left by that number of positions.\n //\n\n n %= 64;\n\n if (n === 32) {\n return [m[1], m[0]];\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), (m[1] << n) | (m[0] >>> (32 - n))];\n } else {\n n -= 32;\n return [(m[1] << n) | (m[0] >>> (32 - n)), (m[0] << n) | (m[1] >>> (32 - n))];\n }\n}\n\nfunction _x64LeftShift(m: number[], n: number) {\n //\n // Given a 64bit int (as an array of two 32bit ints) and an int\n // representing a number of bit positions, returns the 64bit int (as an\n // array of two 32bit ints) shifted left by that number of positions.\n //\n\n n %= 64;\n\n if (n === 0) {\n return m;\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), m[1] << n];\n } else {\n return [m[1] << (n - 32), 0];\n }\n}\n\nfunction _x64Xor(m: number[], n: number[]) {\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // xored together as a 64bit int (as an array of two 32bit ints).\n //\n\n return [m[0] ^ n[0], m[1] ^ n[1]];\n}\n\nfunction _x64Fmix(h: number[]) {\n //\n // Given a block, returns murmurHash3's final x64 mix of that block.\n // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the\n // only place where we need to right shift 64bit ints.)\n //\n\n h = _x64Xor(h, [0, h[0] >>> 1]);\n h = _x64Multiply(h, [0xff51afd7, 0xed558ccd]);\n h = _x64Xor(h, [0, h[0] >>> 1]);\n h = _x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53]);\n h = _x64Xor(h, [0, h[0] >>> 1]);\n\n return h;\n}\n\n// PUBLIC FUNCTIONS\n// ----------------\n\nfunction x86Hash32(bytes: Buffer, seed?: number) {\n //\n // Given a string and an optional seed as an int, returns a 32 bit hash\n // using the x86 flavor of MurmurHash3, as an unsigned int.\n //\n seed = seed || 0;\n\n const remainder = bytes.length % 4;\n const blocks = bytes.length - remainder;\n\n let h1 = seed;\n\n let k1 = 0;\n\n const c1 = 0xcc9e2d51;\n const c2 = 0x1b873593;\n let j = 0;\n\n for (let i = 0; i < blocks; i = i + 4) {\n k1 = bytes[i] | (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24);\n\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n\n h1 ^= k1;\n h1 = _x86Rotl(h1, 13);\n h1 = _x86Multiply(h1, 5) + 0xe6546b64;\n j = i + 4;\n }\n\n k1 = 0;\n\n switch (remainder) {\n case 3:\n k1 ^= bytes[j + 2] << 16;\n\n case 2:\n k1 ^= bytes[j + 1] << 8;\n\n case 1:\n k1 ^= bytes[j];\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n h1 ^= k1;\n }\n\n h1 ^= bytes.length;\n h1 = _x86Fmix(h1);\n\n return h1 >>> 0;\n}\n\nfunction x86Hash128(bytes: Buffer, seed?: number) {\n //\n // Given a string and an optional seed as an int, returns a 128 bit\n // hash using the x86 flavor of MurmurHash3, as an unsigned hex.\n //\n\n seed = seed || 0;\n const remainder = bytes.length % 16;\n const blocks = bytes.length - remainder;\n\n let h1 = seed;\n let h2 = seed;\n let h3 = seed;\n let h4 = seed;\n\n let k1 = 0;\n let k2 = 0;\n let k3 = 0;\n let k4 = 0;\n\n const c1 = 0x239b961b;\n const c2 = 0xab0e9789;\n const c3 = 0x38b34ae5;\n const c4 = 0xa1e38b93;\n let j = 0;\n\n for (let i = 0; i < blocks; i = i + 16) {\n k1 = bytes[i] | (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24);\n k2 = bytes[i + 4] | (bytes[i + 5] << 8) | (bytes[i + 6] << 16) | (bytes[i + 7] << 24);\n k3 = bytes[i + 8] | (bytes[i + 9] << 8) | (bytes[i + 10] << 16) | (bytes[i + 11] << 24);\n k4 = bytes[i + 12] | (bytes[i + 13] << 8) | (bytes[i + 14] << 16) | (bytes[i + 15] << 24);\n\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n h1 ^= k1;\n\n h1 = _x86Rotl(h1, 19);\n h1 += h2;\n h1 = _x86Multiply(h1, 5) + 0x561ccd1b;\n\n k2 = _x86Multiply(k2, c2);\n k2 = _x86Rotl(k2, 16);\n k2 = _x86Multiply(k2, c3);\n h2 ^= k2;\n\n h2 = _x86Rotl(h2, 17);\n h2 += h3;\n h2 = _x86Multiply(h2, 5) + 0x0bcaa747;\n\n k3 = _x86Multiply(k3, c3);\n k3 = _x86Rotl(k3, 17);\n k3 = _x86Multiply(k3, c4);\n h3 ^= k3;\n\n h3 = _x86Rotl(h3, 15);\n h3 += h4;\n h3 = _x86Multiply(h3, 5) + 0x96cd1c35;\n\n k4 = _x86Multiply(k4, c4);\n k4 = _x86Rotl(k4, 18);\n k4 = _x86Multiply(k4, c1);\n h4 ^= k4;\n\n h4 = _x86Rotl(h4, 13);\n h4 += h1;\n h4 = _x86Multiply(h4, 5) + 0x32ac3b17;\n j = i + 16;\n }\n\n k1 = 0;\n k2 = 0;\n k3 = 0;\n k4 = 0;\n\n switch (remainder) {\n case 15:\n k4 ^= bytes[j + 14] << 16;\n\n case 14:\n k4 ^= bytes[j + 13] << 8;\n\n case 13:\n k4 ^= bytes[j + 12];\n k4 = _x86Multiply(k4, c4);\n k4 = _x86Rotl(k4, 18);\n k4 = _x86Multiply(k4, c1);\n h4 ^= k4;\n\n case 12:\n k3 ^= bytes[j + 11] << 24;\n\n case 11:\n k3 ^= bytes[j + 10] << 16;\n\n case 10:\n k3 ^= bytes[j + 9] << 8;\n\n case 9:\n k3 ^= bytes[j + 8];\n k3 = _x86Multiply(k3, c3);\n k3 = _x86Rotl(k3, 17);\n k3 = _x86Multiply(k3, c4);\n h3 ^= k3;\n\n case 8:\n k2 ^= bytes[j + 7] << 24;\n\n case 7:\n k2 ^= bytes[j + 6] << 16;\n\n case 6:\n k2 ^= bytes[j + 5] << 8;\n\n case 5:\n k2 ^= bytes[j + 4];\n k2 = _x86Multiply(k2, c2);\n k2 = _x86Rotl(k2, 16);\n k2 = _x86Multiply(k2, c3);\n h2 ^= k2;\n\n case 4:\n k1 ^= bytes[j + 3] << 24;\n\n case 3:\n k1 ^= bytes[j + 2] << 16;\n\n case 2:\n k1 ^= bytes[j + 1] << 8;\n\n case 1:\n k1 ^= bytes[j];\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n h1 ^= k1;\n }\n\n h1 ^= bytes.length;\n h2 ^= bytes.length;\n h3 ^= bytes.length;\n h4 ^= bytes.length;\n\n h1 += h2;\n h1 += h3;\n h1 += h4;\n h2 += h1;\n h3 += h1;\n h4 += h1;\n\n h1 = _x86Fmix(h1);\n h2 = _x86Fmix(h2);\n h3 = _x86Fmix(h3);\n h4 = _x86Fmix(h4);\n\n h1 += h2;\n h1 += h3;\n h1 += h4;\n h2 += h1;\n h3 += h1;\n h4 += h1;\n\n return (\n (\"00000000\" + (h1 >>> 0).toString(16)).slice(-8) +\n (\"00000000\" + (h2 >>> 0).toString(16)).slice(-8) +\n (\"00000000\" + (h3 >>> 0).toString(16)).slice(-8) +\n (\"00000000\" + (h4 >>> 0).toString(16)).slice(-8)\n );\n}\n\nfunction x64Hash128(bytes: Buffer, seed?: number) {\n //\n // Given a string and an optional seed as an int, returns a 128 bit\n // hash using the x64 flavor of MurmurHash3, as an unsigned hex.\n //\n seed = seed || 0;\n\n const remainder = bytes.length % 16;\n const blocks = bytes.length - remainder;\n\n let h1 = [0, seed];\n let h2 = [0, seed];\n\n let k1 = [0, 0];\n let k2 = [0, 0];\n\n const c1 = [0x87c37b91, 0x114253d5];\n const c2 = [0x4cf5ad43, 0x2745937f];\n let j = 0;\n\n for (let i = 0; i < blocks; i = i + 16) {\n k1 = [\n bytes[i + 4] | (bytes[i + 5] << 8) | (bytes[i + 6] << 16) | (bytes[i + 7] << 24),\n bytes[i] | (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24),\n ];\n k2 = [\n bytes[i + 12] | (bytes[i + 13] << 8) | (bytes[i + 14] << 16) | (bytes[i + 15] << 24),\n bytes[i + 8] | (bytes[i + 9] << 8) | (bytes[i + 10] << 16) | (bytes[i + 11] << 24),\n ];\n\n k1 = _x64Multiply(k1, c1);\n k1 = _x64Rotl(k1, 31);\n k1 = _x64Multiply(k1, c2);\n h1 = _x64Xor(h1, k1);\n\n h1 = _x64Rotl(h1, 27);\n h1 = _x64Add(h1, h2);\n h1 = _x64Add(_x64Multiply(h1, [0, 5]), [0, 0x52dce729]);\n\n k2 = _x64Multiply(k2, c2);\n k2 = _x64Rotl(k2, 33);\n k2 = _x64Multiply(k2, c1);\n h2 = _x64Xor(h2, k2);\n\n h2 = _x64Rotl(h2, 31);\n h2 = _x64Add(h2, h1);\n h2 = _x64Add(_x64Multiply(h2, [0, 5]), [0, 0x38495ab5]);\n j = i + 16;\n }\n\n k1 = [0, 0];\n k2 = [0, 0];\n\n switch (remainder) {\n case 15:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[j + 14]], 48));\n\n case 14:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[j + 13]], 40));\n\n case 13:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[j + 12]], 32));\n\n case 12:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[j + 11]], 24));\n\n case 11:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[j + 10]], 16));\n\n case 10:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[j + 9]], 8));\n\n case 9:\n k2 = _x64Xor(k2, [0, bytes[j + 8]]);\n k2 = _x64Multiply(k2, c2);\n k2 = _x64Rotl(k2, 33);\n k2 = _x64Multiply(k2, c1);\n h2 = _x64Xor(h2, k2);\n\n case 8:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[j + 7]], 56));\n\n case 7:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[j + 6]], 48));\n\n case 6:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[j + 5]], 40));\n\n case 5:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[j + 4]], 32));\n\n case 4:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[j + 3]], 24));\n\n case 3:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[j + 2]], 16));\n\n case 2:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[j + 1]], 8));\n\n case 1:\n k1 = _x64Xor(k1, [0, bytes[j]]);\n k1 = _x64Multiply(k1, c1);\n k1 = _x64Rotl(k1, 31);\n k1 = _x64Multiply(k1, c2);\n h1 = _x64Xor(h1, k1);\n }\n\n h1 = _x64Xor(h1, [0, bytes.length]);\n h2 = _x64Xor(h2, [0, bytes.length]);\n\n h1 = _x64Add(h1, h2);\n h2 = _x64Add(h2, h1);\n\n h1 = _x64Fmix(h1);\n h2 = _x64Fmix(h2);\n\n h1 = _x64Add(h1, h2);\n h2 = _x64Add(h2, h1);\n\n // Here we reverse h1 and h2 in Cosmos\n // This is an implementation detail and not part of the public spec\n const h1Buff = Buffer.from(\n (\"00000000\" + (h1[0] >>> 0).toString(16)).slice(-8) +\n (\"00000000\" + (h1[1] >>> 0).toString(16)).slice(-8),\n \"hex\",\n );\n const h1Reversed = reverse(h1Buff).toString(\"hex\");\n const h2Buff = Buffer.from(\n (\"00000000\" + (h2[0] >>> 0).toString(16)).slice(-8) +\n (\"00000000\" + (h2[1] >>> 0).toString(16)).slice(-8),\n \"hex\",\n );\n const h2Reversed = reverse(h2Buff).toString(\"hex\");\n return h1Reversed + h2Reversed;\n}\n\nexport function reverse(buff: Buffer) {\n const buffer = Buffer.allocUnsafe(buff.length);\n\n for (let i = 0, j = buff.length - 1; i <= j; ++i, --j) {\n buffer[i] = buff[j];\n buffer[j] = buff[i];\n }\n return buffer;\n}\n\nexport default {\n version: \"3.0.0\",\n x86: {\n hash32: x86Hash32,\n hash128: x86Hash128,\n },\n x64: {\n hash128: x64Hash128,\n },\n inputValidation: true,\n};\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\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\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",";(function(global) {\n\n'use strict';\n\nvar nextTick = function (fn) { setTimeout(fn, 0); }\nif (typeof process != 'undefined' && process && typeof process.nextTick == 'function') {\n\t// node.js and the like\n\tnextTick = process.nextTick;\n}\n\nfunction semaphore(capacity) {\n\tvar semaphore = {\n\t\tcapacity: capacity || 1,\n\t\tcurrent: 0,\n\t\tqueue: [],\n\t\tfirstHere: false,\n\n\t\ttake: function() {\n\t\t\tif (semaphore.firstHere === false) {\n \t\t\tsemaphore.current++;\n \t\t\tsemaphore.firstHere = true;\n \t\t\tvar isFirst = 1;\n \t\t\t} else {\n \t\t\tvar isFirst = 0;\n \t\t\t}\n\t\t\tvar item = { n: 1 };\n\n\t\t\tif (typeof arguments[0] == 'function') {\n\t\t\t\titem.task = arguments[0];\n\t\t\t} else {\n\t\t\t\titem.n = arguments[0];\n\t\t\t}\n\n\t\t\tif (arguments.length >= 2) {\n\t\t\t\tif (typeof arguments[1] == 'function') item.task = arguments[1];\n\t\t\t\telse item.n = arguments[1];\n\t\t\t}\n\n\t\t\tvar task = item.task;\n\t\t\titem.task = function() { task(semaphore.leave); };\n\n\t\t\tif (semaphore.current + item.n - isFirst > semaphore.capacity) {\n \t\t\tif (isFirst === 1) {\n \t\t\t\tsemaphore.current--;\n \t\t\t\tsemaphore.firstHere = false;\n \t\t\t}\n\t\t\t\treturn semaphore.queue.push(item);\n\t\t\t}\n\n\t\t\tsemaphore.current += item.n - isFirst;\n\t\t\titem.task(semaphore.leave);\n \t\t\tif (isFirst === 1) semaphore.firstHere = false;\n\t\t},\n\n\t\tleave: function(n) {\n\t\t\tn = n || 1;\n\n\t\t\tsemaphore.current -= n;\n\n\t\t\tif (!semaphore.queue.length) {\n\t\t\t\tif (semaphore.current < 0) {\n\t\t\t\t\tthrow new Error('leave called too many times.');\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar item = semaphore.queue[0];\n\n\t\t\tif (item.n + semaphore.current > semaphore.capacity) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsemaphore.queue.shift();\n\t\t\tsemaphore.current += item.n;\n\n\t\t\tnextTick(item.task);\n\t\t},\n\n\t\tavailable: function(n) {\n\t\t\tn = n || 1;\n\t\t\treturn(semaphore.current + n <= semaphore.capacity);\n\t\t}\n\t};\n\n\treturn semaphore;\n};\n\nif (typeof exports === 'object') {\n // node export\n module.exports = semaphore;\n} else if (typeof define === 'function' && define.amd) {\n // amd export\n define(function () {\n return semaphore;\n });\n} else {\n // browser global\n global.semaphore = semaphore;\n}\n}(this));\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { SasTokenProperties } from \"../client/SasToken/SasTokenProperties\";\nimport { Constants, CosmosKeyType, SasTokenPermissionKind } from \"../common\";\nimport { encodeUTF8 } from \"./encode\";\nimport { hmac } from \"./hmac\";\n\n/**\n * Experimental internal only\n * Generates the payload representing the permission configuration for the sas token.\n */\n\nexport async function createAuthorizationSasToken(\n masterKey: string,\n sasTokenProperties: SasTokenProperties,\n): Promise {\n let resourcePrefixPath = \"\";\n if (\n typeof sasTokenProperties.databaseName === \"string\" &&\n sasTokenProperties.databaseName !== \"\"\n ) {\n resourcePrefixPath += `/${Constants.Path.DatabasesPathSegment}/${sasTokenProperties.databaseName}`;\n }\n\n if (\n typeof sasTokenProperties.containerName === \"string\" &&\n sasTokenProperties.containerName !== \"\"\n ) {\n if (sasTokenProperties.databaseName === \"\") {\n throw new Error(`illegalArgumentException : ${sasTokenProperties.databaseName} \\\n is an invalid database name`);\n }\n resourcePrefixPath += `/${Constants.Path.CollectionsPathSegment}/${sasTokenProperties.containerName}`;\n }\n\n if (\n typeof sasTokenProperties.resourceName === \"string\" &&\n sasTokenProperties.resourceName !== \"\"\n ) {\n if (sasTokenProperties.containerName === \"\") {\n throw new Error(`illegalArgumentException : ${sasTokenProperties.containerName} \\\n is an invalid container name`);\n }\n switch (sasTokenProperties.resourceKind) {\n case \"ITEM\":\n resourcePrefixPath += `${Constants.Path.Root}${Constants.Path.DocumentsPathSegment}`;\n break;\n case \"STORED_PROCEDURE\":\n resourcePrefixPath += `${Constants.Path.Root}${Constants.Path.StoredProceduresPathSegment}`;\n break;\n case \"USER_DEFINED_FUNCTION\":\n resourcePrefixPath += `${Constants.Path.Root}${Constants.Path.UserDefinedFunctionsPathSegment}`;\n break;\n case \"TRIGGER\":\n resourcePrefixPath += `${Constants.Path.Root}${Constants.Path.TriggersPathSegment}`;\n break;\n default:\n throw new Error(`illegalArgumentException : ${sasTokenProperties.resourceKind} \\\n is an invalid resource kind`);\n break;\n }\n resourcePrefixPath += `${Constants.Path.Root}${sasTokenProperties.resourceName}${Constants.Path.Root}`;\n }\n sasTokenProperties.resourcePath = resourcePrefixPath.toString();\n\n let partitionRanges = \"\";\n\n if (\n sasTokenProperties.partitionKeyValueRanges !== undefined &&\n sasTokenProperties.partitionKeyValueRanges.length > 0\n ) {\n if (\n typeof sasTokenProperties.resourceKind !== \"string\" &&\n sasTokenProperties.resourceKind !== \"ITEM\"\n ) {\n throw new Error(`illegalArgumentException : ${sasTokenProperties.resourceKind} \\\n is an invalid partition key value range`);\n }\n sasTokenProperties.partitionKeyValueRanges.forEach((range) => {\n partitionRanges += `${encodeUTF8(range)},`;\n });\n }\n\n if (sasTokenProperties.controlPlaneReaderScope === 0) {\n sasTokenProperties.controlPlaneReaderScope += SasTokenPermissionKind.ContainerReadAny;\n sasTokenProperties.controlPlaneWriterScope += SasTokenPermissionKind.ContainerReadAny;\n }\n\n if (\n sasTokenProperties.dataPlaneReaderScope === 0 &&\n sasTokenProperties.dataPlaneWriterScope === 0\n ) {\n sasTokenProperties.dataPlaneReaderScope = SasTokenPermissionKind.ContainerFullAccess;\n sasTokenProperties.dataPlaneWriterScope = SasTokenPermissionKind.ContainerFullAccess;\n }\n\n if (\n typeof sasTokenProperties.keyType !== \"number\" ||\n typeof sasTokenProperties.keyType === \"undefined\"\n ) {\n switch (sasTokenProperties.keyType) {\n case CosmosKeyType.PrimaryMaster:\n sasTokenProperties.keyType = 1;\n break;\n case CosmosKeyType.SecondaryMaster:\n sasTokenProperties.keyType = 2;\n break;\n case CosmosKeyType.PrimaryReadOnly:\n sasTokenProperties.keyType = 3;\n break;\n case CosmosKeyType.SecondaryReadOnly:\n sasTokenProperties.keyType = 4;\n break;\n default:\n throw new Error(`illegalArgumentException : ${sasTokenProperties.keyType} \\\n is an invalid key type`);\n break;\n }\n }\n\n const payload =\n sasTokenProperties.user +\n \"\\n\" +\n sasTokenProperties.userTag +\n \"\\n\" +\n sasTokenProperties.resourcePath +\n \"\\n\" +\n partitionRanges +\n \"\\n\" +\n utcsecondsSinceEpoch(sasTokenProperties.startTime).toString(16) +\n \"\\n\" +\n utcsecondsSinceEpoch(sasTokenProperties.expiryTime).toString(16) +\n \"\\n\" +\n sasTokenProperties.keyType +\n \"\\n\" +\n sasTokenProperties.controlPlaneReaderScope.toString(16) +\n \"\\n\" +\n sasTokenProperties.controlPlaneWriterScope.toString(16) +\n \"\\n\" +\n sasTokenProperties.dataPlaneReaderScope.toString(16) +\n \"\\n\" +\n sasTokenProperties.dataPlaneWriterScope.toString(16) +\n \"\\n\";\n\n const signedPayload = await hmac(masterKey, Buffer.from(payload).toString(\"base64\"));\n return \"type=sas&ver=1.0&sig=\" + signedPayload + \";\" + Buffer.from(payload).toString(\"base64\");\n}\n/**\n * @hidden\n */\n// TODO: utcMilllisecondsSinceEpoch\nexport function utcsecondsSinceEpoch(date: Date): number {\n return Math.round(date.getTime() / 1000);\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 {(thisArg: Map, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {(thisArg: Map, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {(thisArg: Map) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {Map | 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\n/** @type {import('.')} */\nmodule.exports = Object;\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\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\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\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('./functionApply')} */\nmodule.exports = Function.prototype.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","'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 ? { __proto__: 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' && typeof source !== 'function') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if (\n (options && (options.plainObjects || options.allowPrototypes))\n || !has.call(Object.prototype, source)\n ) {\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, defaultDecoder, 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 limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\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 j = 0; j < string.length; j += limit) {\n var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n var arr = [];\n\n for (var i = 0; i < segment.length; ++i) {\n var c = segment.charCodeAt(i);\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 arr[arr.length] = segment.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n arr[arr.length] = hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n + hexTable[0x80 | (c & 0x3F)];\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n out += arr.join('');\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","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nexport const DEFAULT_PARTITION_KEY_PATH = \"/_partitionKey\" as \"/_partitionKey\"; // eslint-disable-line @typescript-eslint/prefer-as-const\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @hidden\n */\nexport interface StatusCodesType {\n // Success\n Ok: 200;\n Created: 201;\n Accepted: 202;\n NoContent: 204;\n NotModified: 304;\n\n // Client error\n BadRequest: 400;\n Unauthorized: 401;\n Forbidden: 403;\n NotFound: 404;\n MethodNotAllowed: 405;\n RequestTimeout: 408;\n Conflict: 409;\n Gone: 410;\n PreconditionFailed: 412;\n RequestEntityTooLarge: 413;\n TooManyRequests: 429;\n RetryWith: 449;\n\n // Server Error\n InternalServerError: 500;\n ServiceUnavailable: 503;\n\n // System codes\n ENOTFOUND: \"ENOTFOUND\";\n\n // Operation pause and cancel. These are FAKE status codes for QOS logging purpose only.\n OperationPaused: 1200;\n OperationCancelled: 1201;\n}\n\n/**\n * @hidden\n */\nexport const StatusCodes: StatusCodesType = {\n // Success\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NoContent: 204,\n NotModified: 304,\n\n // Client error\n BadRequest: 400,\n Unauthorized: 401,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n PreconditionFailed: 412,\n RequestEntityTooLarge: 413,\n TooManyRequests: 429,\n RetryWith: 449,\n\n // Server Error\n InternalServerError: 500,\n ServiceUnavailable: 503,\n\n // System codes\n ENOTFOUND: \"ENOTFOUND\",\n\n // Operation pause and cancel. These are FAKE status codes for QOS logging purpose only.\n OperationPaused: 1200,\n OperationCancelled: 1201,\n};\n\n/**\n * @hidden\n */\nexport interface SubStatusCodesType {\n Unknown: 0;\n\n // 400: Bad Request Substatus\n CrossPartitionQueryNotServable: 1004;\n\n // 410: StatusCodeType_Gone: substatus\n PartitionKeyRangeGone: 1002;\n CompletingSplit: 1007;\n\n // 404: NotFound Substatus\n ReadSessionNotAvailable: 1002;\n\n // 403: Forbidden Substatus\n WriteForbidden: 3;\n DatabaseAccountNotFound: 1008;\n}\n\n/**\n * @hidden\n */\nexport const SubStatusCodes: SubStatusCodesType = {\n Unknown: 0,\n\n // 400: Bad Request Substatus\n CrossPartitionQueryNotServable: 1004,\n\n // 410: StatusCodeType_Gone: substatus\n PartitionKeyRangeGone: 1002,\n CompletingSplit: 1007,\n // 404: NotFound Substatus\n ReadSessionNotAvailable: 1002,\n\n // 403: Forbidden Substatus\n WriteForbidden: 3,\n DatabaseAccountNotFound: 1008,\n};\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { hmac } from \"./hmac\";\nimport type { HTTPMethod } from \"../common\";\nimport { ResourceType, Constants } from \"../common\";\n\nexport async function generateHeaders(\n masterKey: string,\n method: HTTPMethod,\n resourceType: ResourceType = ResourceType.none,\n resourceId: string = \"\",\n date = new Date(),\n): Promise<{\n [x: string]: string;\n}> {\n if (masterKey.startsWith(\"type=sas&\")) {\n return {\n [Constants.HttpHeaders.Authorization]: encodeURIComponent(masterKey),\n [Constants.HttpHeaders.XDate]: date.toUTCString(),\n };\n }\n const sig = await signature(masterKey, method, resourceType, resourceId, date);\n\n return {\n [Constants.HttpHeaders.Authorization]: sig,\n [Constants.HttpHeaders.XDate]: date.toUTCString(),\n };\n}\n\nasync function signature(\n masterKey: string,\n method: HTTPMethod,\n resourceType: ResourceType,\n resourceId: string = \"\",\n date = new Date(),\n): Promise {\n const type = \"master\";\n const version = \"1.0\";\n const text =\n method.toLowerCase() +\n \"\\n\" +\n resourceType.toLowerCase() +\n \"\\n\" +\n resourceId +\n \"\\n\" +\n date.toUTCString().toLowerCase() +\n \"\\n\" +\n \"\" +\n \"\\n\";\n\n const signed = await hmac(masterKey, text);\n\n return encodeURIComponent(\"type=\" + type + \"&ver=\" + version + \"&sig=\" + signed);\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { CosmosClientOptions } from \"../CosmosClientOptions\";\nimport type { ResourceType } from \"./constants\";\nimport { OperationType } from \"./constants\";\n\nconst trimLeftSlashes = new RegExp(\"^[/]+\");\nconst trimRightSlashes = new RegExp(\"[/]+$\");\nconst illegalResourceIdCharacters = new RegExp(\"[/\\\\\\\\?#]\");\nconst illegalItemResourceIdCharacters = new RegExp(\"[/\\\\\\\\#]\");\n\n/** @hidden */\nexport function jsonStringifyAndEscapeNonASCII(arg: unknown): string {\n // TODO: better way for this? Not sure.\n // escapes non-ASCII characters as \\uXXXX\n return JSON.stringify(arg).replace(/[\\u007F-\\uFFFF]/g, (m) => {\n return \"\\\\u\" + (\"0000\" + m.charCodeAt(0).toString(16)).slice(-4);\n });\n}\n\n/**\n * @hidden\n */\nexport function parseLink(resourcePath: string): {\n type: ResourceType;\n objectBody: {\n id: string;\n self: string;\n };\n} {\n if (resourcePath.length === 0) {\n /* for DatabaseAccount case, both type and objectBody will be undefined. */\n return {\n type: undefined,\n objectBody: undefined,\n };\n }\n\n if (resourcePath[resourcePath.length - 1] !== \"/\") {\n resourcePath = resourcePath + \"/\";\n }\n\n if (resourcePath[0] !== \"/\") {\n resourcePath = \"/\" + resourcePath;\n }\n\n /*\n The path will be in the form of /[resourceType]/[resourceId]/ ....\n /[resourceType]//[resourceType]/[resourceId]/ .... /[resourceType]/[resourceId]/\n or /[resourceType]/[resourceId]/ .... /[resourceType]/[resourceId]/[resourceType]/[resourceId]/ ....\n /[resourceType]/[resourceId]/\n The result of split will be in the form of\n [[[resourceType], [resourceId] ... ,[resourceType], [resourceId], \"\"]\n In the first case, to extract the resourceId it will the element before last ( at length -2 )\n and the type will be before it ( at length -3 )\n In the second case, to extract the resource type it will the element before last ( at length -2 )\n */\n const pathParts = resourcePath.split(\"/\");\n let id;\n let type: ResourceType;\n if (pathParts.length % 2 === 0) {\n // request in form /[resourceType]/[resourceId]/ .... /[resourceType]/[resourceId].\n id = pathParts[pathParts.length - 2];\n type = pathParts[pathParts.length - 3] as ResourceType;\n } else {\n // request in form /[resourceType]/[resourceId]/ .... /[resourceType]/.\n id = pathParts[pathParts.length - 3];\n type = pathParts[pathParts.length - 2] as ResourceType;\n }\n\n const result = {\n type,\n objectBody: {\n id,\n self: resourcePath,\n },\n };\n\n return result;\n}\n\n/**\n * @hidden\n */\nexport function isReadRequest(operationType: OperationType): boolean {\n return operationType === OperationType.Read || operationType === OperationType.Query;\n}\n\n/**\n * @hidden\n */\nexport function sleep(time: number): Promise {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve();\n }, time);\n });\n}\n\n/**\n * @hidden\n */\nexport function getContainerLink(link: string): string {\n return link.split(\"/\").slice(0, 4).join(\"/\");\n}\n\n/**\n * @hidden\n */\nexport function prepareURL(endpoint: string, path: string): string {\n return trimSlashes(endpoint) + path;\n}\n\n/**\n * @hidden\n */\nexport function trimSlashes(source: string): string {\n return source.replace(trimLeftSlashes, \"\").replace(trimRightSlashes, \"\");\n}\n\n/**\n * @hidden\n */\nexport function getHexaDigit(): string {\n return Math.floor(Math.random() * 16).toString(16);\n}\n\n/**\n * @hidden\n */\nexport function parsePath(path: string): string[] {\n const pathParts = [];\n let currentIndex = 0;\n\n const throwError = (): never => {\n throw new Error(\"Path \" + path + \" is invalid at index \" + currentIndex);\n };\n\n const getEscapedToken = (): string => {\n const quote = path[currentIndex];\n let newIndex = ++currentIndex;\n\n for (;;) {\n newIndex = path.indexOf(quote, newIndex);\n if (newIndex === -1) {\n throwError();\n }\n\n if (path[newIndex - 1] !== \"\\\\\") {\n break;\n }\n\n ++newIndex;\n }\n\n const token = path.substr(currentIndex, newIndex - currentIndex);\n currentIndex = newIndex + 1;\n return token;\n };\n\n const getToken = (): string => {\n const newIndex = path.indexOf(\"/\", currentIndex);\n let token = null;\n if (newIndex === -1) {\n token = path.substr(currentIndex);\n currentIndex = path.length;\n } else {\n token = path.substr(currentIndex, newIndex - currentIndex);\n currentIndex = newIndex;\n }\n\n token = token.trim();\n return token;\n };\n\n while (currentIndex < path.length) {\n if (path[currentIndex] !== \"/\") {\n throwError();\n }\n\n if (++currentIndex === path.length) {\n break;\n }\n\n if (path[currentIndex] === '\"' || path[currentIndex] === \"'\") {\n pathParts.push(getEscapedToken());\n } else {\n pathParts.push(getToken());\n }\n }\n\n return pathParts;\n}\n\n/**\n * @hidden\n */\nexport function isResourceValid(resource: { id?: string }, err: { message?: string }): boolean {\n // TODO: fix strictness issues so that caller contexts respects the types of the functions\n if (resource.id) {\n if (typeof resource.id !== \"string\") {\n err.message = \"Id must be a string.\";\n return false;\n }\n\n if (\n resource.id.indexOf(\"/\") !== -1 ||\n resource.id.indexOf(\"\\\\\") !== -1 ||\n resource.id.indexOf(\"?\") !== -1 ||\n resource.id.indexOf(\"#\") !== -1\n ) {\n err.message = \"Id contains illegal chars.\";\n return false;\n }\n\n if (resource.id[resource.id.length - 1] === \" \") {\n err.message = \"Id ends with a space.\";\n return false;\n }\n }\n return true;\n}\n\n/**\n * @hidden\n */\nexport function isItemResourceValid(resource: { id?: string }, err: { message?: string }): boolean {\n // TODO: fix strictness issues so that caller contexts respects the types of the functions\n if (resource.id) {\n if (typeof resource.id !== \"string\") {\n err.message = \"Id must be a string.\";\n return false;\n }\n\n if (\n resource.id.indexOf(\"/\") !== -1 ||\n resource.id.indexOf(\"\\\\\") !== -1 ||\n resource.id.indexOf(\"#\") !== -1\n ) {\n err.message = \"Id contains illegal chars.\";\n return false;\n }\n }\n return true;\n}\n\n/** @hidden */\nexport function getIdFromLink(resourceLink: string): string {\n resourceLink = trimSlashes(resourceLink);\n return resourceLink;\n}\n\n/** @hidden */\nexport function getPathFromLink(resourceLink: string, resourceType?: string): string {\n resourceLink = trimSlashes(resourceLink);\n if (resourceType) {\n return \"/\" + encodeURI(resourceLink) + \"/\" + resourceType;\n } else {\n return \"/\" + encodeURI(resourceLink);\n }\n}\n\n/**\n * @hidden\n */\nexport function isStringNullOrEmpty(inputString: string): boolean {\n // checks whether string is null, undefined, empty or only contains space\n return !inputString || /^\\s*$/.test(inputString);\n}\n\n/**\n * @hidden\n */\nexport function trimSlashFromLeftAndRight(inputString: string): string {\n if (typeof inputString !== \"string\") {\n throw new Error(\"invalid input: input is not string\");\n }\n\n return inputString.replace(trimLeftSlashes, \"\").replace(trimRightSlashes, \"\");\n}\n\n/**\n * @hidden\n */\nexport function validateResourceId(resourceId: string): boolean {\n // if resourceId is not a string or is empty throw an error\n if (typeof resourceId !== \"string\" || isStringNullOrEmpty(resourceId)) {\n throw new Error(\"Resource ID must be a string and cannot be undefined, null or empty\");\n }\n\n // if resource id contains illegal characters throw an error\n if (illegalResourceIdCharacters.test(resourceId)) {\n throw new Error(\"Illegal characters ['/', '\\\\', '#', '?'] cannot be used in Resource ID\");\n }\n\n return true;\n}\n\n/**\n * @hidden\n */\nexport function validateItemResourceId(resourceId: string): boolean {\n // if resourceId is not a string or is empty throw an error\n if (typeof resourceId !== \"string\" || isStringNullOrEmpty(resourceId)) {\n throw new Error(\"Resource ID must be a string and cannot be undefined, null or empty\");\n }\n\n // if resource id contains illegal characters throw an error\n if (illegalItemResourceIdCharacters.test(resourceId)) {\n throw new Error(\"Illegal characters ['/', '\\\\', '#'] cannot be used in Resource ID\");\n }\n\n return true;\n}\n\n/**\n * @hidden\n */\nexport function getResourceIdFromPath(resourcePath: string): string {\n if (!resourcePath || typeof resourcePath !== \"string\") {\n return null;\n }\n\n const trimmedPath = trimSlashFromLeftAndRight(resourcePath);\n const pathSegments = trimmedPath.split(\"/\");\n\n // number of segments of a path must always be even\n if (pathSegments.length % 2 !== 0) {\n return null;\n }\n\n return pathSegments[pathSegments.length - 1];\n}\n\n/**\n * @hidden\n */\ninterface ConnectionObject {\n AccountEndpoint: string;\n AccountKey: string;\n}\n\n/**\n * @hidden\n */\nexport function parseConnectionString(connectionString: string): CosmosClientOptions {\n const keyValueStrings = connectionString.split(\";\");\n const { AccountEndpoint, AccountKey } = keyValueStrings.reduce(\n (connectionObject, keyValueString: string) => {\n const [key, ...value] = keyValueString.split(\"=\");\n (connectionObject as any)[key] = value.join(\"=\");\n return connectionObject;\n },\n {} as ConnectionObject,\n );\n if (!AccountEndpoint || !AccountKey) {\n throw new Error(\"Could not parse the provided connection string\");\n }\n return {\n endpoint: AccountEndpoint,\n key: AccountKey,\n };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { generateHeaders } from \"./utils/headers\";\nimport type { HTTPMethod } from \"./common\";\nimport {\n Constants,\n getResourceIdFromPath,\n ResourceType,\n trimSlashFromLeftAndRight,\n} from \"./common\";\nimport type { CosmosClientOptions } from \"./CosmosClientOptions\";\nimport type { CosmosHeaders } from \"./queryExecutionContext\";\n\n/** @hidden */\nexport interface RequestInfo {\n verb: HTTPMethod;\n path: string;\n resourceId: string;\n resourceType: ResourceType;\n headers: CosmosHeaders;\n}\n\nexport type TokenProvider = (requestInfo: RequestInfo) => Promise;\n\n/**\n * @hidden\n */\nexport async function setAuthorizationHeader(\n clientOptions: CosmosClientOptions,\n verb: HTTPMethod,\n path: string,\n resourceId: string,\n resourceType: ResourceType,\n headers: CosmosHeaders,\n): Promise {\n if (clientOptions.permissionFeed) {\n clientOptions.resourceTokens = {};\n for (const permission of clientOptions.permissionFeed) {\n const id = getResourceIdFromPath(permission.resource);\n if (!id) {\n throw new Error(`authorization error: ${id} \\\n is an invalid resourceId in permissionFeed`);\n }\n\n clientOptions.resourceTokens[id] = (permission as any)._token; // TODO: any\n }\n }\n\n if (clientOptions.key) {\n await setAuthorizationTokenHeaderUsingMasterKey(\n verb,\n resourceId,\n resourceType,\n headers,\n clientOptions.key,\n );\n } else if (clientOptions.resourceTokens) {\n headers[Constants.HttpHeaders.Authorization] = encodeURIComponent(\n getAuthorizationTokenUsingResourceTokens(clientOptions.resourceTokens, path, resourceId),\n );\n } else if (clientOptions.tokenProvider) {\n headers[Constants.HttpHeaders.Authorization] = encodeURIComponent(\n await clientOptions.tokenProvider({ verb, path, resourceId, resourceType, headers }),\n );\n }\n}\n\n/**\n * The default function for setting header token using the masterKey\n * @hidden\n */\nexport async function setAuthorizationTokenHeaderUsingMasterKey(\n verb: HTTPMethod,\n resourceId: string,\n resourceType: ResourceType,\n headers: CosmosHeaders,\n masterKey: string,\n): Promise {\n // TODO This should live in cosmos-sign\n if (resourceType === ResourceType.offer) {\n resourceId = resourceId && resourceId.toLowerCase();\n }\n headers = Object.assign(\n headers,\n await generateHeaders(masterKey, verb, resourceType, resourceId),\n );\n}\n\n/**\n * @hidden\n */\n// TODO: Resource tokens\nexport function getAuthorizationTokenUsingResourceTokens(\n resourceTokens: { [resourceId: string]: string },\n path: string,\n resourceId: string,\n): string {\n if (resourceTokens && Object.keys(resourceTokens).length > 0) {\n // For database account access(through getDatabaseAccount API), path and resourceId are \"\",\n // so in this case we return the first token to be used for creating the auth header as the\n // service will accept any token in this case\n if (!path && !resourceId) {\n return resourceTokens[Object.keys(resourceTokens)[0]];\n }\n\n // If we have exact resource token for the path use it\n if (resourceId && resourceTokens[resourceId]) {\n return resourceTokens[resourceId];\n }\n\n // minimum valid path /dbs\n if (!path || path.length < 4) {\n // TODO: This should throw an error\n return null;\n }\n\n path = trimSlashFromLeftAndRight(path);\n const pathSegments = (path && path.split(\"/\")) || [];\n\n // Item path\n if (pathSegments.length === 6) {\n // Look for a container token matching the item path\n const containerPath = pathSegments.slice(0, 4).map(decodeURIComponent).join(\"/\");\n if (resourceTokens[containerPath]) {\n return resourceTokens[containerPath];\n }\n }\n\n // TODO remove in v4: This is legacy behavior that lets someone use a resource token pointing ONLY at an ID\n // It was used when _rid was exposed by the SDK, but now that we are using user provided ids it is not needed\n // However removing it now would be a breaking change\n // if it's an incomplete path like /dbs/db1/colls/, start from the parent resource\n let index = pathSegments.length % 2 === 0 ? pathSegments.length - 1 : pathSegments.length - 2;\n for (; index > 0; index -= 2) {\n const id = decodeURI(pathSegments[index]);\n if (resourceTokens[id]) {\n return resourceTokens[id];\n }\n }\n }\n\n // TODO: This should throw an error\n return null;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n NonePartitionKeyType,\n NullPartitionKeyType,\n PartitionKey,\n PrimitivePartitionKeyValue,\n} from \"./PartitionKey\";\n\n/**\n * @hidden\n * Internal Representation Of Partition Key. TODO: Make sure {@link ClientContext} working with only {@link PartitionKeyInternal}\n */\nexport type PartitionKeyInternal = PrimitivePartitionKeyValue[];\n/**\n * @hidden\n * None PartitionKey Literal\n */\nexport const NonePartitionKeyLiteral: NonePartitionKeyType = {};\n/**\n * @hidden\n * Null PartitionKey Literal\n */\nexport const NullPartitionKeyLiteral: NullPartitionKeyType = null;\n/**\n * @hidden\n * Maps PartitionKey to InternalPartitionKey.\n * @param partitionKey - PartitonKey to be converted.\n * @returns PartitionKeyInternal\n */\nexport function convertToInternalPartitionKey(partitionKey: PartitionKey): PartitionKeyInternal {\n if (Array.isArray(partitionKey)) {\n return partitionKey.map((key) => (key === undefined ? NonePartitionKeyLiteral : key));\n } else return [partitionKey];\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal\";\nimport type { PartitionKeyDefinition } from \"../documents\";\nimport type { Container } from \"./Container\";\n\nexport async function readPartitionKeyDefinition(\n diagnosticNode: DiagnosticNodeInternal,\n container: Container,\n): Promise {\n const partitionKeyDefinition = await container.readPartitionKeyDefinition(diagnosticNode);\n return partitionKeyDefinition.resource;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { AzureLogger } from \"@azure/logger\";\nimport { createClientLogger } from \"@azure/logger\";\nimport { parsePath } from \"./common\";\nimport type {\n PartitionKey,\n PartitionKeyDefinition,\n PartitionKeyInternal,\n PrimitivePartitionKeyValue,\n} from \"./documents\";\nimport {\n convertToInternalPartitionKey,\n NonePartitionKeyLiteral,\n NullPartitionKeyLiteral,\n} from \"./documents\";\nimport { DEFAULT_PARTITION_KEY_PATH } from \"./common/partitionKeys\";\nimport type { Container } from \"./client\";\nimport { readPartitionKeyDefinition } from \"./client/ClientUtils\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal\";\n\nconst logger: AzureLogger = createClientLogger(\"extractPartitionKey\");\n\n/**\n * Function to extract PartitionKey based on {@link PartitionKeyDefinition}\n * from an object.\n * Retuns\n * 1. PartitionKeyInternal[] if extraction is successful.\n * 2. undefined if either {@link partitionKeyDefinition} is not well formed\n * or an unsupported partitionkey type is encountered.\n * @hidden\n */\nexport function extractPartitionKeys(\n document: unknown,\n partitionKeyDefinition?: PartitionKeyDefinition,\n): PartitionKeyInternal | undefined {\n if (\n partitionKeyDefinition &&\n partitionKeyDefinition.paths &&\n partitionKeyDefinition.paths.length > 0\n ) {\n if (partitionKeyDefinition.systemKey === true) {\n return [];\n }\n\n if (\n partitionKeyDefinition.paths.length === 1 &&\n partitionKeyDefinition.paths[0] === DEFAULT_PARTITION_KEY_PATH\n ) {\n return [extractPartitionKey(DEFAULT_PARTITION_KEY_PATH, document)];\n }\n\n const partitionKeys: PrimitivePartitionKeyValue[] = [];\n partitionKeyDefinition.paths.forEach((path: string) => {\n const obj = extractPartitionKey(path, document);\n if (obj === undefined) {\n logger.warning(\"Unsupported PartitionKey found.\");\n return undefined;\n }\n partitionKeys.push(obj);\n });\n return partitionKeys;\n }\n logger.error(\"Unexpected Partition Key Definition Found.\");\n return undefined;\n}\n\nfunction extractPartitionKey(path: string, obj: unknown): any {\n const pathParts: string[] = parsePath(path);\n for (const part of pathParts) {\n if (typeof obj === \"object\" && obj !== null && part in obj) {\n obj = (obj as Record)[part];\n } else {\n obj = undefined;\n break;\n }\n }\n if (typeof obj === \"string\" || typeof obj === \"number\" || typeof obj === \"boolean\") {\n return obj;\n } else if (obj === NullPartitionKeyLiteral) {\n return NullPartitionKeyLiteral;\n } else if (obj === undefined || JSON.stringify(obj) === JSON.stringify(NonePartitionKeyLiteral)) {\n return NonePartitionKeyLiteral;\n }\n return undefined;\n}\n\n/**\n * @hidden\n */\nexport function undefinedPartitionKey(\n partitionKeyDefinition: PartitionKeyDefinition,\n): PartitionKeyInternal {\n if (partitionKeyDefinition?.systemKey) {\n return [];\n } else {\n return partitionKeyDefinition?.paths.map(() => NonePartitionKeyLiteral);\n }\n}\n\n/**\n * @hidden\n */\nexport async function setPartitionKeyIfUndefined(\n diagnosticNode: DiagnosticNodeInternal,\n container: Container,\n partitionKey: PartitionKey,\n): Promise {\n if (partitionKey === undefined) {\n const partitionKeyDefinition = await readPartitionKeyDefinition(diagnosticNode, container);\n partitionKey = undefinedPartitionKey(partitionKeyDefinition);\n }\n return convertToInternalPartitionKey(partitionKey);\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n NonePartitionKeyType,\n NullPartitionKeyType,\n PrimitivePartitionKeyValue,\n} from \"../documents\";\nimport { NonePartitionKeyLiteral, NullPartitionKeyLiteral } from \"../documents\";\n\n/**\n * A type which could be any type but undefined\n */\nexport type NonUndefinable = T extends undefined ? never : T;\n\n/**\n * Utility function to avoid writing boilder plate code while checking for\n * undefined values. It throws Error if the input value is undefined.\n * @param value - Value which is potentially undefined.\n * @param msg - Error Message to throw if value is undefined.\n * @returns\n */\nexport function assertNotUndefined(value: T, msg?: string): NonUndefinable {\n if (value !== undefined) {\n return value as NonUndefinable;\n }\n throw new Error(msg || \"Unexpected 'undefined' value encountered\");\n}\n\n/**\n * Check for value being PrimitivePartitionKeyValue.\n * @internal\n */\nexport function isPrimitivePartitionKeyValue(value: unknown): value is PrimitivePartitionKeyValue {\n return (\n isWellDefinedPartitionKeyValue(value) ||\n isNonePartitionKeyValue(value) ||\n isNullPartitionKeyValue(value)\n );\n}\n\n/**\n * Check for value being string, number or boolean.\n * @internal\n */\nexport function isWellDefinedPartitionKeyValue(value: unknown): value is string | number | boolean {\n return typeof value === \"string\" || typeof value === \"boolean\" || typeof value === \"number\";\n}\n\n/**\n * Check for value being NonePartitionKeyType.\n * @internal\n */\nexport function isNonePartitionKeyValue(value: unknown): value is NonePartitionKeyType {\n return value !== undefined && JSON.stringify(value) === JSON.stringify(NonePartitionKeyLiteral);\n}\n\n/**\n * Check for value being NullPartitionKeyType.\n * @internal\n */\nexport function isNullPartitionKeyValue(value: unknown): value is NullPartitionKeyType {\n return value === NullPartitionKeyLiteral;\n}\n/**\n * Verify validity of partition key.\n * @internal\n */\nexport function isPartitionKey(partitionKey: unknown): boolean {\n return isPrimitivePartitionKeyValue(partitionKey) || Array.isArray(partitionKey);\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { AzureLogger } from \"@azure/logger\";\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The \\@azure/logger configuration for this package.\n */\nexport const defaultLogger: AzureLogger = createClientLogger(\"cosmosdb\");\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nexport enum ChangeFeedMode {\n LatestVersion = \"Incremental Feed\",\n AllVersionsAndDeletes = \"Full-Fidelity Feed\",\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { setAuthorizationHeader } from \"../auth\";\nimport { Constants, HTTPMethod, jsonStringifyAndEscapeNonASCII, ResourceType } from \"../common\";\nimport type { CosmosClientOptions } from \"../CosmosClientOptions\";\nimport type { PartitionKeyInternal } from \"../documents\";\nimport type { CosmosHeaders } from \"../queryExecutionContext\";\nimport type { FeedOptions, RequestOptions } from \"./index\";\nimport { defaultLogger } from \"../common/logger\";\nimport { ChangeFeedMode } from \"../client/ChangeFeed\";\n// ----------------------------------------------------------------------------\n// Utility methods\n//\n\n/** @hidden */\nfunction javaScriptFriendlyJSONStringify(s: unknown): string {\n // two line terminators (Line separator and Paragraph separator) are not needed to be escaped in JSON\n // but are needed to be escaped in JavaScript.\n return JSON.stringify(s)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\");\n}\n\n/** @hidden */\nexport function bodyFromData(data: Buffer | string | Record): string {\n if (typeof data === \"object\") {\n return javaScriptFriendlyJSONStringify(data);\n }\n return data;\n}\n\n/**\n * @hidden\n */\ninterface GetHeadersOptions {\n clientOptions: CosmosClientOptions;\n defaultHeaders: CosmosHeaders;\n verb: HTTPMethod;\n path: string;\n resourceId: string;\n resourceType: ResourceType;\n options: RequestOptions & FeedOptions;\n partitionKeyRangeId?: string;\n useMultipleWriteLocations?: boolean;\n partitionKey?: PartitionKeyInternal;\n}\n\nconst JsonContentType = \"application/json\";\n\n/**\n * @hidden\n */\nexport async function getHeaders({\n clientOptions,\n defaultHeaders,\n verb,\n path,\n resourceId,\n resourceType,\n options = {},\n partitionKeyRangeId,\n useMultipleWriteLocations,\n partitionKey,\n}: GetHeadersOptions): Promise {\n const headers: CosmosHeaders = {\n [Constants.HttpHeaders.ResponseContinuationTokenLimitInKB]: 1,\n [Constants.HttpHeaders.EnableCrossPartitionQuery]: true,\n ...defaultHeaders,\n };\n\n if (useMultipleWriteLocations) {\n headers[Constants.HttpHeaders.ALLOW_MULTIPLE_WRITES] = true;\n }\n\n if (options.continuationTokenLimitInKB) {\n headers[Constants.HttpHeaders.ResponseContinuationTokenLimitInKB] =\n options.continuationTokenLimitInKB;\n }\n if (options.continuationToken) {\n headers[Constants.HttpHeaders.Continuation] = options.continuationToken;\n } else if (options.continuation) {\n headers[Constants.HttpHeaders.Continuation] = options.continuation;\n }\n\n if (options.preTriggerInclude) {\n headers[Constants.HttpHeaders.PreTriggerInclude] =\n options.preTriggerInclude.constructor === Array\n ? (options.preTriggerInclude as string[]).join(\",\")\n : (options.preTriggerInclude as string);\n }\n\n if (options.postTriggerInclude) {\n headers[Constants.HttpHeaders.PostTriggerInclude] =\n options.postTriggerInclude.constructor === Array\n ? (options.postTriggerInclude as string[]).join(\",\")\n : (options.postTriggerInclude as string);\n }\n\n if (options.offerType) {\n headers[Constants.HttpHeaders.OfferType] = options.offerType;\n }\n\n if (options.offerThroughput) {\n headers[Constants.HttpHeaders.OfferThroughput] = options.offerThroughput;\n }\n\n if (options.maxItemCount) {\n headers[Constants.HttpHeaders.PageSize] = options.maxItemCount;\n }\n\n if (options.accessCondition) {\n if (options.accessCondition.type === \"IfMatch\") {\n headers[Constants.HttpHeaders.IfMatch] = options.accessCondition.condition;\n } else {\n headers[Constants.HttpHeaders.IfNoneMatch] = options.accessCondition.condition;\n }\n }\n\n if (options.useAllVersionsAndDeletesFeed) {\n // headers required for reading feed in allVersionsAndDeletes mode\n headers[Constants.HttpHeaders.A_IM] = ChangeFeedMode.AllVersionsAndDeletes;\n headers[Constants.HttpHeaders.ChangeFeedWireFormatVersion] =\n Constants.AllVersionsAndDeletesChangeFeedWireFormatVersion;\n }\n\n if (options.useIncrementalFeed || options.useLatestVersionFeed) {\n headers[Constants.HttpHeaders.A_IM] = ChangeFeedMode.LatestVersion;\n }\n\n if (options.indexingDirective) {\n headers[Constants.HttpHeaders.IndexingDirective] = options.indexingDirective;\n }\n\n if (options.consistencyLevel) {\n headers[Constants.HttpHeaders.ConsistencyLevel] = options.consistencyLevel;\n }\n\n if (options.priorityLevel) {\n headers[Constants.HttpHeaders.PriorityLevel] = options.priorityLevel;\n }\n\n if (options.maxIntegratedCacheStalenessInMs && resourceType === ResourceType.item) {\n if (typeof options.maxIntegratedCacheStalenessInMs === \"number\") {\n headers[Constants.HttpHeaders.DedicatedGatewayPerRequestCacheStaleness] =\n options.maxIntegratedCacheStalenessInMs.toString();\n } else {\n defaultLogger.error(\n `RangeError: maxIntegratedCacheStalenessInMs \"${options.maxIntegratedCacheStalenessInMs}\" is not a valid parameter.`,\n );\n headers[Constants.HttpHeaders.DedicatedGatewayPerRequestCacheStaleness] = \"null\";\n }\n }\n\n if (options.bypassIntegratedCache) {\n headers[Constants.HttpHeaders.DedicatedGatewayPerRequestBypassCache] =\n options.bypassIntegratedCache.toString();\n }\n\n if (options.resourceTokenExpirySeconds) {\n headers[Constants.HttpHeaders.ResourceTokenExpiry] = options.resourceTokenExpirySeconds;\n }\n\n if (options.sessionToken) {\n headers[Constants.HttpHeaders.SessionToken] = options.sessionToken;\n }\n\n if (options.enableScanInQuery) {\n headers[Constants.HttpHeaders.EnableScanInQuery] = options.enableScanInQuery;\n }\n\n if (options.populateQuotaInfo) {\n headers[Constants.HttpHeaders.PopulateQuotaInfo] = options.populateQuotaInfo;\n }\n\n if (options.populateQueryMetrics) {\n headers[Constants.HttpHeaders.PopulateQueryMetrics] = options.populateQueryMetrics;\n }\n\n if (options.maxDegreeOfParallelism !== undefined) {\n headers[Constants.HttpHeaders.ParallelizeCrossPartitionQuery] = true;\n }\n\n if (options.populateQuotaInfo) {\n headers[Constants.HttpHeaders.PopulateQuotaInfo] = true;\n }\n\n if (partitionKey !== undefined && !headers[Constants.HttpHeaders.PartitionKey]) {\n headers[Constants.HttpHeaders.PartitionKey] = jsonStringifyAndEscapeNonASCII(partitionKey);\n }\n\n if (clientOptions.key || clientOptions.tokenProvider) {\n headers[Constants.HttpHeaders.XDate] = new Date().toUTCString();\n }\n\n if (verb === HTTPMethod.post || verb === HTTPMethod.put) {\n if (!headers[Constants.HttpHeaders.ContentType]) {\n headers[Constants.HttpHeaders.ContentType] = JsonContentType;\n }\n }\n\n if (!headers[Constants.HttpHeaders.Accept]) {\n headers[Constants.HttpHeaders.Accept] = JsonContentType;\n }\n\n if (partitionKeyRangeId !== undefined) {\n headers[Constants.HttpHeaders.PartitionKeyRangeID] = partitionKeyRangeId;\n }\n\n if (options.enableScriptLogging) {\n headers[Constants.HttpHeaders.EnableScriptLogging] = options.enableScriptLogging;\n }\n\n if (options.disableRUPerMinuteUsage) {\n headers[Constants.HttpHeaders.DisableRUPerMinuteUsage] = true;\n }\n\n if (options.populateIndexMetrics) {\n headers[Constants.HttpHeaders.PopulateIndexMetrics] = options.populateIndexMetrics;\n }\n\n if (\n clientOptions.key ||\n clientOptions.resourceTokens ||\n clientOptions.tokenProvider ||\n clientOptions.permissionFeed\n ) {\n await setAuthorizationHeader(clientOptions, verb, path, resourceId, resourceType, headers);\n }\n return headers;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { JSONObject } from \"../queryExecutionContext\";\nimport { extractPartitionKeys, undefinedPartitionKey } from \"../extractPartitionKey\";\nimport type { CosmosDiagnostics, RequestOptions } from \"..\";\nimport type {\n PartitionKey,\n PartitionKeyDefinition,\n PrimitivePartitionKeyValue,\n} from \"../documents\";\nimport { NonePartitionKeyLiteral, convertToInternalPartitionKey } from \"../documents\";\nimport type { PatchRequestBody } from \"./patch\";\nimport { assertNotUndefined } from \"./typeChecks\";\nimport { bodyFromData } from \"../request/request\";\nimport { Constants } from \"../common/constants\";\nimport { randomUUID } from \"@azure/core-util\";\n\nexport type Operation =\n | CreateOperation\n | UpsertOperation\n | ReadOperation\n | DeleteOperation\n | ReplaceOperation\n | BulkPatchOperation;\n\nexport interface Batch {\n min: string;\n max: string;\n rangeId: string;\n indexes: number[];\n operations: Operation[];\n}\n\nexport type BulkOperationResponse = OperationResponse[] & { diagnostics: CosmosDiagnostics };\n\nexport interface OperationResponse {\n statusCode: number;\n requestCharge: number;\n eTag?: string;\n resourceBody?: JSONObject;\n}\n\n/**\n * Options object used to modify bulk execution.\n * continueOnError (Default value: false) - Continues bulk execution when an operation fails ** NOTE THIS WILL DEFAULT TO TRUE IN the 4.0 RELEASE\n */\nexport interface BulkOptions {\n continueOnError?: boolean;\n}\n\nexport function isKeyInRange(min: string, max: string, key: string): boolean {\n const isAfterMinInclusive = key.localeCompare(min) >= 0;\n const isBeforeMax = key.localeCompare(max) < 0;\n return isAfterMinInclusive && isBeforeMax;\n}\n\nexport interface OperationBase {\n partitionKey?: string;\n ifMatch?: string;\n ifNoneMatch?: string;\n}\n\nexport const BulkOperationType = {\n Create: \"Create\",\n Upsert: \"Upsert\",\n Read: \"Read\",\n Delete: \"Delete\",\n Replace: \"Replace\",\n Patch: \"Patch\",\n} as const;\n\nexport type OperationInput =\n | CreateOperationInput\n | UpsertOperationInput\n | ReadOperationInput\n | DeleteOperationInput\n | ReplaceOperationInput\n | PatchOperationInput;\n\nexport interface CreateOperationInput {\n partitionKey?: PartitionKey;\n ifMatch?: string;\n ifNoneMatch?: string;\n operationType: typeof BulkOperationType.Create;\n resourceBody: JSONObject;\n}\n\nexport interface UpsertOperationInput {\n partitionKey?: PartitionKey;\n ifMatch?: string;\n ifNoneMatch?: string;\n operationType: typeof BulkOperationType.Upsert;\n resourceBody: JSONObject;\n}\n\nexport interface ReadOperationInput {\n partitionKey?: PartitionKey;\n operationType: typeof BulkOperationType.Read;\n id: string;\n}\n\nexport interface DeleteOperationInput {\n partitionKey?: PartitionKey;\n operationType: typeof BulkOperationType.Delete;\n id: string;\n}\n\nexport interface ReplaceOperationInput {\n partitionKey?: PartitionKey;\n ifMatch?: string;\n ifNoneMatch?: string;\n operationType: typeof BulkOperationType.Replace;\n resourceBody: JSONObject;\n id: string;\n}\n\nexport interface PatchOperationInput {\n partitionKey?: PartitionKey;\n ifMatch?: string;\n ifNoneMatch?: string;\n operationType: typeof BulkOperationType.Patch;\n resourceBody: PatchRequestBody;\n id: string;\n}\n\nexport type OperationWithItem = OperationBase & {\n resourceBody: JSONObject;\n};\n\nexport type CreateOperation = OperationWithItem & {\n operationType: typeof BulkOperationType.Create;\n};\n\nexport type UpsertOperation = OperationWithItem & {\n operationType: typeof BulkOperationType.Upsert;\n};\n\nexport type ReadOperation = OperationBase & {\n operationType: typeof BulkOperationType.Read;\n id: string;\n};\n\nexport type DeleteOperation = OperationBase & {\n operationType: typeof BulkOperationType.Delete;\n id: string;\n};\n\nexport type ReplaceOperation = OperationWithItem & {\n operationType: typeof BulkOperationType.Replace;\n id: string;\n};\n\nexport type BulkPatchOperation = OperationBase & {\n operationType: typeof BulkOperationType.Patch;\n id: string;\n};\n\nexport function hasResource(\n operation: Operation,\n): operation is CreateOperation | UpsertOperation | ReplaceOperation {\n return (\n operation.operationType !== \"Patch\" &&\n (operation as OperationWithItem).resourceBody !== undefined\n );\n}\n/**\n * Maps OperationInput to Operation by\n * - generating Ids if needed.\n * - choosing partitionKey which can be used to choose which batch this\n * operation should be part of. The order is -\n * 1. If the operationInput itself has partitionKey field set it is used.\n * 2. Other wise for create/replace/upsert it is extracted from resource body.\n * 3. For read/delete/patch type operations undefined partitionKey is used.\n * - Here one nuance is that, the partitionKey field inside Operation needs to\n * be serialized as a JSON string.\n * @param operationInput - OperationInput\n * @param definition - PartitionKeyDefinition\n * @param options - RequestOptions\n * @returns\n */\nexport function prepareOperations(\n operationInput: OperationInput,\n definition: PartitionKeyDefinition,\n options: RequestOptions = {},\n): {\n operation: Operation;\n partitionKey: PrimitivePartitionKeyValue[];\n} {\n populateIdsIfNeeded(operationInput, options);\n\n let partitionKey: PrimitivePartitionKeyValue[];\n if (Object.prototype.hasOwnProperty.call(operationInput, \"partitionKey\")) {\n if (operationInput.partitionKey === undefined) {\n partitionKey = definition.paths.map(() => NonePartitionKeyLiteral);\n } else {\n partitionKey = convertToInternalPartitionKey(operationInput.partitionKey);\n }\n } else {\n switch (operationInput.operationType) {\n case BulkOperationType.Create:\n case BulkOperationType.Replace:\n case BulkOperationType.Upsert:\n partitionKey = assertNotUndefined(\n extractPartitionKeys(operationInput.resourceBody, definition),\n \"Unexpected undefined Partition Key Found.\",\n );\n break;\n case BulkOperationType.Read:\n case BulkOperationType.Delete:\n case BulkOperationType.Patch:\n partitionKey = undefinedPartitionKey(definition);\n break;\n }\n }\n return {\n operation: { ...operationInput, partitionKey: JSON.stringify(partitionKey) } as Operation,\n partitionKey,\n };\n}\n\n/**\n * For operations requiring Id genrate random uuids.\n * @param operationInput - OperationInput to be checked.\n * @param options - RequestOptions\n */\nfunction populateIdsIfNeeded(operationInput: OperationInput, options: RequestOptions) {\n if (\n operationInput.operationType === BulkOperationType.Create ||\n operationInput.operationType === BulkOperationType.Upsert\n ) {\n if (\n (operationInput.resourceBody.id === undefined || operationInput.resourceBody.id === \"\") &&\n !options.disableAutomaticIdGeneration\n ) {\n operationInput.resourceBody.id = randomUUID();\n }\n }\n}\n\n/**\n * Splits a batch into array of batches based on cumulative size of its operations by making sure\n * cumulative size of an individual batch is not larger than {@link Constants.DefaultMaxBulkRequestBodySizeInBytes}.\n * If a single operation itself is larger than {@link Constants.DefaultMaxBulkRequestBodySizeInBytes}, that\n * operation would be moved into a batch containing only that operation.\n * @param originalBatch - A batch of operations needed to be checked.\n * @returns\n * @hidden\n */\nexport function splitBatchBasedOnBodySize(originalBatch: Batch): Batch[] {\n if (originalBatch?.operations === undefined || originalBatch.operations.length < 1) return [];\n let currentBatchSize = calculateObjectSizeInBytes(originalBatch.operations[0]);\n let currentBatch: Batch = {\n ...originalBatch,\n operations: [originalBatch.operations[0]],\n indexes: [originalBatch.indexes[0]],\n };\n const processedBatches: Batch[] = [];\n processedBatches.push(currentBatch);\n\n for (let index = 1; index < originalBatch.operations.length; index++) {\n const operation = originalBatch.operations[index];\n const currentOpSize = calculateObjectSizeInBytes(operation);\n if (currentBatchSize + currentOpSize > Constants.DefaultMaxBulkRequestBodySizeInBytes) {\n currentBatch = {\n ...originalBatch,\n operations: [],\n indexes: [],\n };\n processedBatches.push(currentBatch);\n currentBatchSize = 0;\n }\n currentBatch.operations.push(operation);\n currentBatch.indexes.push(originalBatch.indexes[index]);\n currentBatchSize += currentOpSize;\n }\n return processedBatches;\n}\n\n/**\n * Calculates size of an JSON object in bytes with utf-8 encoding.\n * @hidden\n */\nexport function calculateObjectSizeInBytes(obj: unknown): number {\n return new TextEncoder().encode(bodyFromData(obj as any)).length;\n}\n\nexport function decorateBatchOperation(\n operation: OperationInput,\n options: RequestOptions = {},\n): Operation {\n if (\n operation.operationType === BulkOperationType.Create ||\n operation.operationType === BulkOperationType.Upsert\n ) {\n if (\n (operation.resourceBody.id === undefined || operation.resourceBody.id === \"\") &&\n !options.disableAutomaticIdGeneration\n ) {\n operation.resourceBody.id = randomUUID();\n }\n }\n return operation as Operation;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport type PatchOperation = ExistingKeyOperation | RemoveOperation;\n\nexport const PatchOperationType = {\n add: \"add\",\n replace: \"replace\",\n remove: \"remove\",\n set: \"set\",\n incr: \"incr\",\n} as const;\n\nexport type ExistingKeyOperation = {\n op: keyof typeof PatchOperationType;\n value: any;\n path: string;\n};\n\nexport type RemoveOperation = {\n op: \"remove\";\n path: string;\n};\n\nexport type PatchRequestBody =\n | {\n operations: PatchOperation[];\n condition?: string;\n }\n | PatchOperation[];\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/** Determines the connection behavior of the CosmosClient. Note, we currently only support Gateway Mode. */\nexport enum ConnectionMode {\n /** Gateway mode talks to an intermediate gateway which handles the direct communication with your individual partitions. */\n Gateway = 0,\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Represents the consistency levels supported for Azure Cosmos DB client operations.
\n * The requested ConsistencyLevel must match or be weaker than that provisioned for the database account.\n * Consistency levels.\n *\n * Consistency levels by order of strength are Strong, BoundedStaleness, Session, Consistent Prefix, and Eventual.\n *\n * See https://aka.ms/cosmos-consistency for more detailed documentation on Consistency Levels.\n */\nexport enum ConsistencyLevel {\n /**\n * Strong Consistency guarantees that read operations always return the value that was last written.\n */\n Strong = \"Strong\",\n /**\n * Bounded Staleness guarantees that reads are not too out-of-date.\n * This can be configured based on number of operations (MaxStalenessPrefix) or time (MaxStalenessIntervalInSeconds).\n */\n BoundedStaleness = \"BoundedStaleness\",\n /**\n * Session Consistency guarantees monotonic reads (you never read old data, then new, then old again),\n * monotonic writes (writes are ordered) and read your writes (your writes are immediately visible to your reads)\n * within any single session.\n */\n Session = \"Session\",\n /**\n * Eventual Consistency guarantees that reads will return a subset of writes.\n * All writes will be eventually be available for reads.\n */\n Eventual = \"Eventual\",\n /**\n * ConsistentPrefix Consistency guarantees that reads will return some prefix of all writes with no gaps.\n * All writes will be eventually be available for reads.\n */\n ConsistentPrefix = \"ConsistentPrefix\",\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/** Defines a target data type of an index path specification in the Azure Cosmos DB service. */\nexport enum DataType {\n /** Represents a numeric data type. */\n Number = \"Number\",\n /** Represents a string data type. */\n String = \"String\",\n /** Represents a point data type. */\n Point = \"Point\",\n /** Represents a line string data type. */\n LineString = \"LineString\",\n /** Represents a polygon data type. */\n Polygon = \"Polygon\",\n /** Represents a multi-polygon data type. */\n MultiPolygon = \"MultiPolygon\",\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Specifies the supported indexing modes.\n */\nexport enum IndexingMode {\n /**\n * Index is updated synchronously with a create or update operation.\n *\n * With consistent indexing, query behavior is the same as the default consistency level for the container.\n * The index is always kept up to date with the data.\n */\n consistent = \"consistent\",\n /**\n * Index is updated asynchronously with respect to a create or update operation.\n *\n * With lazy indexing, queries are eventually consistent. The index is updated when the container is idle.\n */\n lazy = \"lazy\",\n /** No Index is provided. */\n none = \"none\",\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DataType, IndexingMode, IndexKind } from \"./index\";\n\nexport interface IndexingPolicy {\n /** The indexing mode (consistent or lazy) {@link IndexingMode}. */\n indexingMode?: keyof typeof IndexingMode;\n automatic?: boolean;\n /** An array of {@link IncludedPath} represents the paths to be included for indexing. */\n includedPaths?: IndexedPath[];\n /** An array of {@link IncludedPath} represents the paths to be excluded for indexing. */\n excludedPaths?: IndexedPath[];\n spatialIndexes?: SpatialIndex[];\n /** An array of {@link VectorIndex} represents the vector index paths to be included for indexing. */\n vectorIndexes?: VectorIndex[];\n /** An array of {@link CompositeIndexes} representing composite indexes to be included. */\n compositeIndexes?: CompositePath[][];\n /** An array of {@link FullTextIndex} representing full text indexes to be included. */\n fullTextIndexes?: FullTextIndex[];\n}\n\n/* The target data type of a spatial path */\nexport enum SpatialType {\n LineString = \"LineString\",\n MultiPolygon = \"MultiPolygon\",\n Point = \"Point\",\n Polygon = \"Polygon\",\n}\n\nexport interface SpatialIndex {\n /* Path in JSON document to index */\n path: string;\n types: SpatialType[];\n /* Bounding box for geometry spatial path */\n boundingBox: {\n /* X-coordinate of the lower-left corner of the bounding box. */\n xmin: number;\n /* Y-coordinate of the lower-left corner of the bounding box. */\n ymin: number;\n /* X-coordinate of the upper-right corner of the bounding box. */\n xmax: number;\n /* Y-coordinate of the upper-right corner of the bounding box. */\n ymax: number;\n };\n}\n\nexport interface IndexedPath {\n path: string;\n indexes?: Index[];\n}\n\nexport interface Index {\n kind: keyof typeof IndexKind;\n dataType: keyof typeof DataType;\n precision?: number;\n}\n/**\n * Represents a vector index in the Azure Cosmos DB service.\n * A vector index is used to index vector fields in the documents.\n */\n\nexport interface VectorIndex {\n /**\n * The path to the vector field in the document.\n * for example, path: \"/path/to/vector\".\n */\n path: string;\n /**\n * The index type of the vector.\n * Currently, flat, diskANN, and quantizedFlat are supported.\n */\n type: VectorIndexType;\n /**\n * The number of bytes used in product quantization of the vectors.\n * This is an optional parameter and applies to index types DiskANN and quantizedFlat.\n * The allowed range for this parameter is between 1 and min(Dimensions, 512).\n */\n quantizationByteSize?: number;\n /**\n * The list of string containing the shard keys used for partitioning the vector indexes.\n * This is an optional parameter and applies to index types DiskANN and quantizedFlat.\n */\n vectorIndexShardKey?: string[];\n /**\n * The size of the candidate list of approximate neighbors stored while building\n * the diskANN index as part of the optimization processes.\n * This is an optional parameter and applies to index type DiskANN only.\n * The allowed range is between 25 and 500.\n */\n indexingSearchListSize?: number;\n}\n\n/**\n * Represents the index type of the vector.\n */\nexport enum VectorIndexType {\n /**\n * Represents flat index type.\n */\n Flat = \"flat\",\n /**\n * Represents diskANN index type.\n */\n DiskANN = \"diskANN\",\n /**\n * Represents quantizedFlat index type.\n */\n QuantizedFlat = \"quantizedFlat\",\n}\n\n/**\n * Represents a composite path in the indexing policy.\n */\nexport interface CompositePath {\n /** The path in the JSON document to include in the composite index. */\n path: string;\n /** The order of the composite index, either \"ascending\" or \"descending\". */\n order: \"ascending\" | \"descending\";\n}\n\n/**\n * Represents a full text index in the indexing policy.\n */\nexport interface FullTextIndex {\n /** The path in the JSON document to index. */\n path: string;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport enum GeospatialType {\n /** Represents data in round-earth coordinate system. */\n Geography = \"Geography\",\n /** Represents data in Eucledian(flat) coordinate system. */\n Geometry = \"Geometry\",\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Specifies the supported Index types.\n */\nexport enum IndexKind {\n /**\n * This is supplied for a path which requires sorting.\n */\n Range = \"Range\",\n /**\n * This is supplied for a path which requires geospatial indexing.\n */\n Spatial = \"Spatial\",\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Type of PartitionKey i.e. Hash, MultiHash\n */\nexport enum PartitionKeyKind {\n Hash = \"Hash\",\n MultiHash = \"MultiHash\",\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * PartitionKey Definition Version\n */\nexport enum PartitionKeyDefinitionVersion {\n V1 = 1,\n V2 = 2,\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Enum for permission mode values.\n */\nexport enum PermissionMode {\n /** Permission not valid. */\n None = \"none\",\n /** Permission applicable for read operations only. */\n Read = \"read\",\n /** Permission applicable for all operations. */\n All = \"all\",\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Represents Priority Level associated with each Azure Cosmos DB client requests.
\n * The Low priority requests are always throttled before any High priority requests.\n *\n * By default all requests are considered as High priority requests.\n *\n * See https://aka.ms/CosmosDB/PriorityBasedExecution for more detailed documentation on Priority based throttling.\n */\nexport enum PriorityLevel {\n /**\n * High Priority requests are throttled after Low priority requests.\n */\n High = \"High\",\n /**\n * Low Priority requests are throttled before High priority requests.\n */\n Low = \"Low\",\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Enum for trigger operation values.\n * specifies the operations on which a trigger should be executed.\n */\nexport enum TriggerOperation {\n /** All operations. */\n All = \"all\",\n /** Create operations only. */\n Create = \"create\",\n /** Update operations only. */\n Update = \"update\",\n /** Delete operations only. */\n Delete = \"delete\",\n /** Replace operations only. */\n Replace = \"replace\",\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Enum for trigger type values.\n * Specifies the type of the trigger.\n */\nexport enum TriggerType {\n /** Trigger should be executed before the associated operation(s). */\n Pre = \"pre\",\n /** Trigger should be executed after the associated operation(s). */\n Post = \"post\",\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Enum for udf type values.\n * Specifies the types of user defined functions.\n */\nexport enum UserDefinedFunctionType {\n /** The User Defined Function is written in JavaScript. This is currently the only option. */\n Javascript = \"Javascript\",\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Represents the policy configuration for vector embeddings in the Azure Cosmos DB service.\n */\nexport interface VectorEmbeddingPolicy {\n /**\n * The vector embeddings to be configured.\n */\n vectorEmbeddings: VectorEmbedding[];\n}\n/**\n * Represents a vector embedding.\n * A vector embedding is used to define a vector field in the documents.\n */\nexport interface VectorEmbedding {\n /**\n * The path to the vector field in the document.\n */\n path: string;\n /**\n * The number of dimensions in the vector.\n */\n dimensions: number;\n /**\n * The data type of the vector.\n */\n dataType: VectorEmbeddingDataType;\n /**\n * The distance function to use for distance calculation in between vectors.\n */\n distanceFunction: VectorEmbeddingDistanceFunction;\n}\n\n/**\n * Represents the data type of the vector.\n */\nexport enum VectorEmbeddingDataType {\n /**\n * 32-bit floating point number.\n */\n Float32 = \"float32\",\n /**\n * 8-bit unsigned integer.\n */\n UInt8 = \"uint8\",\n /**\n * 8-bit signed integer.\n */\n Int8 = \"int8\",\n}\n/**\n * Represents the distance function to use for distance calculation in between vectors.\n */\nexport enum VectorEmbeddingDistanceFunction {\n /**\n * Represents euclidean distance function.\n */\n Euclidean = \"euclidean\",\n /**\n * Represents cosine distance function.\n */\n Cosine = \"cosine\",\n /**\n * Represents dot product distance function.\n */\n DotProduct = \"dotproduct\",\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Constants } from \"../common\";\nimport type { CosmosHeaders } from \"../queryExecutionContext\";\nimport { ConsistencyLevel } from \"./ConsistencyLevel\";\n\n/**\n * Represents a DatabaseAccount in the Azure Cosmos DB database service.\n */\nexport class DatabaseAccount {\n /** The list of writable locations for a geo-replicated database account. */\n public readonly writableLocations: Location[] = [];\n /** The list of readable locations for a geo-replicated database account. */\n public readonly readableLocations: Location[] = [];\n /**\n * The self-link for Databases in the databaseAccount.\n * @deprecated Use `databasesLink`\n */\n public get DatabasesLink(): string {\n return this.databasesLink;\n }\n /** The self-link for Databases in the databaseAccount. */\n public readonly databasesLink: string;\n /**\n * The self-link for Media in the databaseAccount.\n * @deprecated Use `mediaLink`\n */\n public get MediaLink(): string {\n return this.mediaLink;\n }\n /** The self-link for Media in the databaseAccount. */\n public readonly mediaLink: string;\n /**\n * Attachment content (media) storage quota in MBs ( Retrieved from gateway ).\n * @deprecated use `maxMediaStorageUsageInMB`\n */\n public get MaxMediaStorageUsageInMB(): number {\n return this.maxMediaStorageUsageInMB;\n }\n /** Attachment content (media) storage quota in MBs ( Retrieved from gateway ). */\n public readonly maxMediaStorageUsageInMB: number;\n /**\n * Current attachment content (media) usage in MBs (Retrieved from gateway )\n *\n * Value is returned from cached information updated periodically and is not guaranteed\n * to be real time.\n *\n * @deprecated use `currentMediaStorageUsageInMB`\n */\n public get CurrentMediaStorageUsageInMB(): number {\n return this.currentMediaStorageUsageInMB;\n }\n /**\n * Current attachment content (media) usage in MBs (Retrieved from gateway )\n *\n * Value is returned from cached information updated periodically and is not guaranteed\n * to be real time.\n */\n public readonly currentMediaStorageUsageInMB: number;\n /**\n * Gets the UserConsistencyPolicy settings.\n * @deprecated use `consistencyPolicy`\n */\n public get ConsistencyPolicy(): ConsistencyLevel {\n return this.consistencyPolicy;\n }\n /** Gets the UserConsistencyPolicy settings. */\n public readonly consistencyPolicy: ConsistencyLevel;\n public readonly enableMultipleWritableLocations: boolean;\n\n // TODO: body - any\n public constructor(body: { [key: string]: any }, headers: CosmosHeaders) {\n this.databasesLink = \"/dbs/\";\n this.mediaLink = \"/media/\";\n this.maxMediaStorageUsageInMB = headers[Constants.HttpHeaders.MaxMediaStorageUsageInMB];\n this.currentMediaStorageUsageInMB = headers[Constants.HttpHeaders.CurrentMediaStorageUsageInMB];\n this.consistencyPolicy = body.userConsistencyPolicy\n ? (body.userConsistencyPolicy.defaultConsistencyLevel as ConsistencyLevel)\n : ConsistencyLevel.Session;\n if (body[Constants.WritableLocations] && body.id !== \"localhost\") {\n this.writableLocations = body[Constants.WritableLocations] as Location[];\n }\n if (body[Constants.ReadableLocations] && body.id !== \"localhost\") {\n this.readableLocations = body[Constants.ReadableLocations] as Location[];\n }\n if (body[Constants.ENABLE_MULTIPLE_WRITABLE_LOCATIONS]) {\n this.enableMultipleWritableLocations =\n body[Constants.ENABLE_MULTIPLE_WRITABLE_LOCATIONS] === true ||\n body[Constants.ENABLE_MULTIPLE_WRITABLE_LOCATIONS] === \"true\";\n }\n }\n}\n\n/**\n * Used to specify the locations that are available, read is index 1 and write is index 0.\n */\nexport interface Location {\n name: string;\n databaseAccountEndpoint: string;\n unavailable?: boolean;\n lastUnavailabilityTimestampInMs?: number;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { NonePartitionKeyLiteral, NullPartitionKeyLiteral } from \"./PartitionKeyInternal\";\n\n/**\n * PartitionKey of a container.\n * @remarks\n * - PartitionKeyDefinition is no longer part of PartitionKey. So please use PartitionKeyDefinition\n * type directly where appropriate.\n */\nexport type PartitionKey = PrimitivePartitionKeyValue | PrimitivePartitionKeyValue[];\n\n/**\n * A primitive Partition Key value.\n */\nexport type PrimitivePartitionKeyValue =\n | string\n | number\n | boolean\n | NullPartitionKeyType\n | NonePartitionKeyType;\n\n/**\n * The returned object represents a partition key value that allows creating and accessing items\n * with a null value for the partition key.\n */\nexport type NullPartitionKeyType = null;\n\n/**\n * The returned object represents a partition key value that allows creating and accessing items\n * without a value for partition key\n */\nexport type NonePartitionKeyType = {\n [K in any]: never;\n};\n\n/**\n * Builder class for building PartitionKey.\n */\nexport class PartitionKeyBuilder {\n readonly values: PrimitivePartitionKeyValue[] = [];\n public addValue(value: string | boolean | number): PartitionKeyBuilder {\n this.values.push(value);\n return this;\n }\n public addNullValue(): PartitionKeyBuilder {\n this.values.push(NullPartitionKeyLiteral);\n return this;\n }\n public addNoneValue(): PartitionKeyBuilder {\n this.values.push(NonePartitionKeyLiteral);\n return this;\n }\n public build(): PartitionKey {\n return [...this.values];\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { CosmosDiagnostics, CosmosHeaders } from \"../index\";\n\nexport interface ErrorBody {\n code: string;\n message: string;\n /**\n * @hidden\n */\n additionalErrorInfo?: PartitionedQueryExecutionInfo;\n}\n\n/**\n * @hidden\n */\nexport interface PartitionedQueryExecutionInfo {\n partitionedQueryExecutionInfoVersion: number;\n queryInfo?: QueryInfo;\n /**\n * Represents hybrid query information.\n */\n hybridSearchQueryInfo?: HybridSearchQueryInfo;\n queryRanges: QueryRange[];\n}\n\n/**\n * @hidden\n */\nexport interface QueryRange {\n min: string;\n max: string;\n isMinInclusive: boolean;\n isMaxInclusive: boolean;\n}\n\n/**\n * @hidden\n */\nexport interface QueryInfo {\n top?: any;\n orderBy?: any[];\n orderByExpressions?: any[];\n offset?: number;\n limit?: number;\n aggregates?: AggregateType[];\n groupByExpressions?: GroupByExpressions;\n groupByAliasToAggregateType: GroupByAliasToAggregateType;\n rewrittenQuery?: any;\n distinctType: string;\n hasSelectValue: boolean;\n /**\n * determines whether the query is of non streaming orderby type.\n */\n hasNonStreamingOrderBy: boolean;\n}\n\n/**\n * @hidden\n * Represents the hybrid search query information\n */\nexport interface HybridSearchQueryInfo {\n /**\n * The query to be used for fetching global statistics\n */\n globalStatisticsQuery: string;\n /**\n * Query information for the subsequent queries\n */\n componentQueryInfos: QueryInfo[];\n /**\n * The number of results in the final result set\n */\n take: number;\n /**\n * The number of results to skip in the final result set\n */\n skip: number;\n /**\n * Whether the query requires global statistics\n */\n requiresGlobalStatistics: boolean;\n}\n\nexport type GroupByExpressions = string[];\n\nexport type AggregateType = \"Average\" | \"Count\" | \"Max\" | \"Min\" | \"Sum\" | \"MakeSet\" | \"MakeList\";\n\nexport interface GroupByAliasToAggregateType {\n [key: string]: AggregateType;\n}\n\nexport class ErrorResponse extends Error {\n code?: number | string;\n substatus?: number;\n body?: ErrorBody;\n headers?: CosmosHeaders;\n activityId?: string;\n retryAfterInMs?: number;\n retryAfterInMilliseconds?: number;\n [key: string]: any;\n diagnostics?: CosmosDiagnostics;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { CosmosDiagnostics } from \"../CosmosDiagnostics\";\nimport { Constants } from \"../common\";\nimport type { CosmosHeaders } from \"../queryExecutionContext/CosmosHeaders\";\nimport type { StatusCode, SubStatusCode } from \"./StatusCodes\";\n\nexport class ResourceResponse {\n constructor(\n public readonly resource: TResource | undefined,\n public readonly headers: CosmosHeaders,\n public readonly statusCode: StatusCode,\n public readonly diagnostics: CosmosDiagnostics,\n public readonly substatus?: SubStatusCode,\n ) {}\n public get requestCharge(): number {\n return Number(this.headers[Constants.HttpHeaders.RequestCharge]) || 0;\n }\n public get activityId(): string {\n return this.headers[Constants.HttpHeaders.ActivityId] as string;\n }\n public get etag(): string {\n return this.headers[Constants.HttpHeaders.ETag] as string;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport class ClientSideMetrics {\n constructor(public readonly requestCharge: number) {}\n\n /**\n * Adds one or more ClientSideMetrics to a copy of this instance and returns the result.\n */\n public add(...clientSideMetricsArray: ClientSideMetrics[]): ClientSideMetrics {\n let requestCharge = this.requestCharge;\n for (const clientSideMetrics of clientSideMetricsArray) {\n if (clientSideMetrics == null) {\n throw new Error(\"clientSideMetrics has null or undefined item(s)\");\n }\n\n requestCharge += clientSideMetrics.requestCharge;\n }\n\n return new ClientSideMetrics(requestCharge);\n }\n\n public static readonly zero = new ClientSideMetrics(0);\n\n public static createFromArray(...clientSideMetricsArray: ClientSideMetrics[]): ClientSideMetrics {\n if (clientSideMetricsArray == null) {\n throw new Error(\"clientSideMetricsArray is null or undefined item(s)\");\n }\n\n return this.zero.add(...clientSideMetricsArray);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nexport default {\n // QueryMetrics\n RetrievedDocumentCount: \"retrievedDocumentCount\",\n RetrievedDocumentSize: \"retrievedDocumentSize\",\n OutputDocumentCount: \"outputDocumentCount\",\n OutputDocumentSize: \"outputDocumentSize\",\n IndexHitRatio: \"indexUtilizationRatio\",\n IndexHitDocumentCount: \"indexHitDocumentCount\",\n TotalQueryExecutionTimeInMs: \"totalExecutionTimeInMs\",\n\n // QueryPreparationTimes\n QueryCompileTimeInMs: \"queryCompileTimeInMs\",\n LogicalPlanBuildTimeInMs: \"queryLogicalPlanBuildTimeInMs\",\n PhysicalPlanBuildTimeInMs: \"queryPhysicalPlanBuildTimeInMs\",\n QueryOptimizationTimeInMs: \"queryOptimizationTimeInMs\",\n\n // QueryTimes\n IndexLookupTimeInMs: \"indexLookupTimeInMs\",\n DocumentLoadTimeInMs: \"documentLoadTimeInMs\",\n VMExecutionTimeInMs: \"VMExecutionTimeInMs\",\n DocumentWriteTimeInMs: \"writeOutputTimeInMs\",\n\n // RuntimeExecutionTimes\n QueryEngineTimes: \"queryEngineTimes\",\n SystemFunctionExecuteTimeInMs: \"systemFunctionExecuteTimeInMs\",\n UserDefinedFunctionExecutionTimeInMs: \"userFunctionExecuteTimeInMs\",\n\n // QueryMetrics Text\n RetrievedDocumentCountText: \"Retrieved Document Count\",\n RetrievedDocumentSizeText: \"Retrieved Document Size\",\n OutputDocumentCountText: \"Output Document Count\",\n OutputDocumentSizeText: \"Output Document Size\",\n IndexUtilizationText: \"Index Utilization\",\n TotalQueryExecutionTimeText: \"Total Query Execution Time\",\n\n // QueryPreparationTimes Text\n QueryPreparationTimesText: \"Query Preparation Times\",\n QueryCompileTimeText: \"Query Compilation Time\",\n LogicalPlanBuildTimeText: \"Logical Plan Build Time\",\n PhysicalPlanBuildTimeText: \"Physical Plan Build Time\",\n QueryOptimizationTimeText: \"Query Optimization Time\",\n\n // QueryTimes Text\n QueryEngineTimesText: \"Query Engine Times\",\n IndexLookupTimeText: \"Index Lookup Time\",\n DocumentLoadTimeText: \"Document Load Time\",\n WriteOutputTimeText: \"Document Write Time\",\n\n // RuntimeExecutionTimes Text\n RuntimeExecutionTimesText: \"Runtime Execution Times\",\n TotalExecutionTimeText: \"Query Engine Execution Time\",\n SystemFunctionExecuteTimeText: \"System Function Execution Time\",\n UserDefinedFunctionExecutionTimeText: \"User-defined Function Execution Time\",\n\n // ClientSideQueryMetrics Text\n ClientSideQueryMetricsText: \"Client Side Metrics\",\n RetriesText: \"Retry Count\",\n RequestChargeText: \"Request Charge\",\n FetchExecutionRangesText: \"Partition Execution Timeline\",\n SchedulingMetricsText: \"Scheduling Metrics\",\n};\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// Ported this implementation to javascript:\n// https://referencesource.microsoft.com/#mscorlib/system/timespan.cs,83e476c1ae112117\n/** @hidden */\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nconst ticksPerMillisecond = 10000;\n/** @hidden */\nconst millisecondsPerTick = 1.0 / ticksPerMillisecond;\n\n/** @hidden */\nconst ticksPerSecond = ticksPerMillisecond * 1000; // 10,000,000\n/** @hidden */\nconst secondsPerTick = 1.0 / ticksPerSecond; // 0.0001\n\n/** @hidden */\nconst ticksPerMinute = ticksPerSecond * 60; // 600,000,000\n/** @hidden */\nconst minutesPerTick = 1.0 / ticksPerMinute; // 1.6666666666667e-9\n\n/** @hidden */\nconst ticksPerHour = ticksPerMinute * 60; // 36,000,000,000\n/** @hidden */\nconst hoursPerTick = 1.0 / ticksPerHour; // 2.77777777777777778e-11\n\n/** @hidden */\nconst ticksPerDay = ticksPerHour * 24; // 864,000,000,000\n/** @hidden */\nconst daysPerTick = 1.0 / ticksPerDay; // 1.1574074074074074074e-12\n\n/** @hidden */\nconst millisPerSecond = 1000;\n/** @hidden */\nconst millisPerMinute = millisPerSecond * 60; // 60,000\n/** @hidden */\nconst millisPerHour = millisPerMinute * 60; // 3,600,000\n/** @hidden */\nconst millisPerDay = millisPerHour * 24; // 86,400,000\n\n/** @hidden */\nconst maxMilliSeconds = Number.MAX_SAFE_INTEGER / ticksPerMillisecond;\n/** @hidden */\nconst minMilliSeconds = Number.MIN_SAFE_INTEGER / ticksPerMillisecond;\n\n/**\n * Represents a time interval.\n *\n * @param days - Number of days.\n * @param hours - Number of hours.\n * @param minutes - Number of minutes.\n * @param seconds - Number of seconds.\n * @param milliseconds - Number of milliseconds.\n * @hidden\n */\nexport class TimeSpan {\n protected _ticks: number;\n constructor(days: number, hours: number, minutes: number, seconds: number, milliseconds: number) {\n // Constructor\n if (!Number.isInteger(days)) {\n throw new Error(\"days is not an integer\");\n }\n\n if (!Number.isInteger(hours)) {\n throw new Error(\"hours is not an integer\");\n }\n\n if (!Number.isInteger(minutes)) {\n throw new Error(\"minutes is not an integer\");\n }\n\n if (!Number.isInteger(seconds)) {\n throw new Error(\"seconds is not an integer\");\n }\n\n if (!Number.isInteger(milliseconds)) {\n throw new Error(\"milliseconds is not an integer\");\n }\n\n const totalMilliSeconds =\n (days * 3600 * 24 + hours * 3600 + minutes * 60 + seconds) * 1000 + milliseconds;\n if (totalMilliSeconds > maxMilliSeconds || totalMilliSeconds < minMilliSeconds) {\n throw new Error(\"Total number of milliseconds was either too large or too small\");\n }\n\n this._ticks = totalMilliSeconds * ticksPerMillisecond;\n }\n\n /**\n * Returns a new TimeSpan object whose value is the sum of the specified TimeSpan object and this instance.\n * @param ts - The time interval to add.\n */\n public add(ts: TimeSpan): TimeSpan {\n if (TimeSpan.additionDoesOverflow(this._ticks, ts._ticks)) {\n throw new Error(\"Adding the two timestamps causes an overflow.\");\n }\n\n const results = this._ticks + ts._ticks;\n return TimeSpan.fromTicks(results);\n }\n\n /**\n * Returns a new TimeSpan object whose value is the difference of the specified TimeSpan object and this instance.\n * @param ts - The time interval to subtract.\n */\n public subtract(ts: TimeSpan): TimeSpan {\n if (TimeSpan.subtractionDoesUnderflow(this._ticks, ts._ticks)) {\n throw new Error(\"Subtracting the two timestamps causes an underflow.\");\n }\n\n const results = this._ticks - ts._ticks;\n return TimeSpan.fromTicks(results);\n }\n\n /**\n * Compares this instance to a specified object and returns an integer that indicates whether this\n * instance is shorter than, equal to, or longer than the specified object.\n * @param value - The time interval to add.\n */\n public compareTo(value: TimeSpan): 1 | -1 | 0 {\n if (value == null) {\n return 1;\n }\n\n if (!TimeSpan.isTimeSpan(value)) {\n throw new Error(\"Argument must be a TimeSpan object\");\n }\n\n return TimeSpan.compare(this, value);\n }\n\n /**\n * Returns a new TimeSpan object whose value is the absolute value of the current TimeSpan object.\n */\n public duration(): TimeSpan {\n return TimeSpan.fromTicks(this._ticks >= 0 ? this._ticks : -this._ticks);\n }\n\n /**\n * Returns a value indicating whether this instance is equal to a specified object.\n * @param value - The time interval to check for equality.\n */\n public equals(value: TimeSpan): boolean {\n if (TimeSpan.isTimeSpan(value)) {\n return this._ticks === value._ticks;\n }\n\n return false;\n }\n\n /**\n * Returns a new TimeSpan object whose value is the negated value of this instance.\n * @param value - The time interval to check for equality.\n */\n public negate(): TimeSpan {\n return TimeSpan.fromTicks(-this._ticks);\n }\n\n public days(): number {\n return Math.floor(this._ticks / ticksPerDay);\n }\n\n public hours(): number {\n return Math.floor(this._ticks / ticksPerHour);\n }\n\n public milliseconds(): number {\n return Math.floor(this._ticks / ticksPerMillisecond);\n }\n\n public seconds(): number {\n return Math.floor(this._ticks / ticksPerSecond);\n }\n\n public ticks(): number {\n return this._ticks;\n }\n\n public totalDays(): number {\n return this._ticks * daysPerTick;\n }\n public totalHours(): number {\n return this._ticks * hoursPerTick;\n }\n\n public totalMilliseconds(): number {\n return this._ticks * millisecondsPerTick;\n }\n\n public totalMinutes(): number {\n return this._ticks * minutesPerTick;\n }\n\n public totalSeconds(): number {\n return this._ticks * secondsPerTick;\n }\n\n public static fromTicks(value: number): TimeSpan {\n const timeSpan = new TimeSpan(0, 0, 0, 0, 0);\n timeSpan._ticks = value;\n return timeSpan;\n }\n\n public static readonly zero = new TimeSpan(0, 0, 0, 0, 0);\n public static readonly maxValue = TimeSpan.fromTicks(Number.MAX_SAFE_INTEGER);\n public static readonly minValue = TimeSpan.fromTicks(Number.MIN_SAFE_INTEGER);\n\n public static isTimeSpan(timespan: TimeSpan): number {\n return timespan._ticks;\n }\n\n public static additionDoesOverflow(a: number, b: number): boolean {\n const c = a + b;\n return a !== c - b || b !== c - a;\n }\n\n public static subtractionDoesUnderflow(a: number, b: number): boolean {\n const c = a - b;\n return a !== c + b || b !== a - c;\n }\n\n public static compare(t1: TimeSpan, t2: TimeSpan): 1 | 0 | -1 {\n if (t1._ticks > t2._ticks) {\n return 1;\n }\n if (t1._ticks < t2._ticks) {\n return -1;\n }\n return 0;\n }\n\n public static interval(value: number, scale: number): TimeSpan {\n if (isNaN(value)) {\n throw new Error(\"value must be a number\");\n }\n\n const milliseconds = value * scale;\n if (milliseconds > maxMilliSeconds || milliseconds < minMilliSeconds) {\n throw new Error(\"timespan too long\");\n }\n\n return TimeSpan.fromTicks(Math.floor(milliseconds * ticksPerMillisecond));\n }\n\n public static fromMilliseconds(value: number): TimeSpan {\n return TimeSpan.interval(value, 1);\n }\n\n public static fromSeconds(value: number): TimeSpan {\n return TimeSpan.interval(value, millisPerSecond);\n }\n\n public static fromMinutes(value: number): TimeSpan {\n return TimeSpan.interval(value, millisPerMinute);\n }\n\n public static fromHours(value: number): TimeSpan {\n return TimeSpan.interval(value, millisPerHour);\n }\n\n public static fromDays(value: number): TimeSpan {\n return TimeSpan.interval(value, millisPerDay);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { TimeSpan } from \"./timeSpan\";\n\n/**\n * @hidden\n */\nexport function parseDelimitedString(delimitedString: string): {\n [key: string]: any;\n} {\n if (delimitedString == null) {\n throw new Error(\"delimitedString is null or undefined\");\n }\n\n const metrics: { [key: string]: any } = {};\n\n const headerAttributes = delimitedString.split(\";\");\n for (const attribute of headerAttributes) {\n const attributeKeyValue = attribute.split(\"=\");\n\n if (attributeKeyValue.length !== 2) {\n throw new Error(\"recieved a malformed delimited string\");\n }\n\n const attributeKey = attributeKeyValue[0];\n const attributeValue = parseFloat(attributeKeyValue[1]);\n\n metrics[attributeKey] = attributeValue;\n }\n\n return metrics;\n}\n\n/**\n * @hidden\n */\nexport function timeSpanFromMetrics(\n metrics: { [key: string]: any } /* TODO: any */,\n key: string,\n): TimeSpan {\n if (key in metrics) {\n return TimeSpan.fromMilliseconds(metrics[key]);\n }\n\n return TimeSpan.zero;\n}\n\n/**\n * @hidden\n */\nexport function isNumeric(input: unknown): boolean {\n return !isNaN(parseFloat(input as string)) && isFinite(input as number);\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport QueryMetricsConstants from \"./queryMetricsConstants\";\nimport { parseDelimitedString, timeSpanFromMetrics } from \"./queryMetricsUtils\";\nimport { TimeSpan } from \"./timeSpan\";\n\nexport class QueryPreparationTimes {\n constructor(\n public readonly queryCompilationTime: TimeSpan,\n public readonly logicalPlanBuildTime: TimeSpan,\n public readonly physicalPlanBuildTime: TimeSpan,\n public readonly queryOptimizationTime: TimeSpan,\n ) {}\n\n /**\n * returns a new QueryPreparationTimes instance that is the addition of this and the arguments.\n */\n public add(...queryPreparationTimesArray: QueryPreparationTimes[]): QueryPreparationTimes {\n let queryCompilationTime = this.queryCompilationTime;\n let logicalPlanBuildTime = this.logicalPlanBuildTime;\n let physicalPlanBuildTime = this.physicalPlanBuildTime;\n let queryOptimizationTime = this.queryOptimizationTime;\n\n for (const queryPreparationTimes of queryPreparationTimesArray) {\n if (queryPreparationTimes == null) {\n throw new Error(\"queryPreparationTimesArray has null or undefined item(s)\");\n }\n\n queryCompilationTime = queryCompilationTime.add(queryPreparationTimes.queryCompilationTime);\n logicalPlanBuildTime = logicalPlanBuildTime.add(queryPreparationTimes.logicalPlanBuildTime);\n physicalPlanBuildTime = physicalPlanBuildTime.add(\n queryPreparationTimes.physicalPlanBuildTime,\n );\n queryOptimizationTime = queryOptimizationTime.add(\n queryPreparationTimes.queryOptimizationTime,\n );\n }\n\n return new QueryPreparationTimes(\n queryCompilationTime,\n logicalPlanBuildTime,\n physicalPlanBuildTime,\n queryOptimizationTime,\n );\n }\n\n /**\n * Output the QueryPreparationTimes as a delimited string.\n */\n public toDelimitedString(): string {\n return (\n `${\n QueryMetricsConstants.QueryCompileTimeInMs\n }=${this.queryCompilationTime.totalMilliseconds()};` +\n `${\n QueryMetricsConstants.LogicalPlanBuildTimeInMs\n }=${this.logicalPlanBuildTime.totalMilliseconds()};` +\n `${\n QueryMetricsConstants.PhysicalPlanBuildTimeInMs\n }=${this.physicalPlanBuildTime.totalMilliseconds()};` +\n `${\n QueryMetricsConstants.QueryOptimizationTimeInMs\n }=${this.queryOptimizationTime.totalMilliseconds()}`\n );\n }\n\n public static readonly zero = new QueryPreparationTimes(\n TimeSpan.zero,\n TimeSpan.zero,\n TimeSpan.zero,\n TimeSpan.zero,\n );\n\n /**\n * Returns a new instance of the QueryPreparationTimes class that is the\n * aggregation of an array of QueryPreparationTimes.\n */\n public static createFromArray(\n queryPreparationTimesArray: QueryPreparationTimes[],\n ): QueryPreparationTimes {\n if (queryPreparationTimesArray == null) {\n throw new Error(\"queryPreparationTimesArray is null or undefined item(s)\");\n }\n\n return QueryPreparationTimes.zero.add(...queryPreparationTimesArray);\n }\n\n /**\n * Returns a new instance of the QueryPreparationTimes class this is deserialized from a delimited string.\n */\n public static createFromDelimitedString(delimitedString: string): QueryPreparationTimes {\n const metrics = parseDelimitedString(delimitedString);\n\n return new QueryPreparationTimes(\n timeSpanFromMetrics(metrics, QueryMetricsConstants.QueryCompileTimeInMs),\n timeSpanFromMetrics(metrics, QueryMetricsConstants.LogicalPlanBuildTimeInMs),\n timeSpanFromMetrics(metrics, QueryMetricsConstants.PhysicalPlanBuildTimeInMs),\n timeSpanFromMetrics(metrics, QueryMetricsConstants.QueryOptimizationTimeInMs),\n );\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport QueryMetricsConstants from \"./queryMetricsConstants\";\nimport { parseDelimitedString, timeSpanFromMetrics } from \"./queryMetricsUtils\";\nimport { TimeSpan } from \"./timeSpan\";\n\nexport class RuntimeExecutionTimes {\n constructor(\n public readonly queryEngineExecutionTime: TimeSpan,\n public readonly systemFunctionExecutionTime: TimeSpan,\n public readonly userDefinedFunctionExecutionTime: TimeSpan,\n ) {}\n\n /**\n * returns a new RuntimeExecutionTimes instance that is the addition of this and the arguments.\n */\n public add(...runtimeExecutionTimesArray: RuntimeExecutionTimes[]): RuntimeExecutionTimes {\n let queryEngineExecutionTime = this.queryEngineExecutionTime;\n let systemFunctionExecutionTime = this.systemFunctionExecutionTime;\n let userDefinedFunctionExecutionTime = this.userDefinedFunctionExecutionTime;\n\n for (const runtimeExecutionTimes of runtimeExecutionTimesArray) {\n if (runtimeExecutionTimes == null) {\n throw new Error(\"runtimeExecutionTimes has null or undefined item(s)\");\n }\n\n queryEngineExecutionTime = queryEngineExecutionTime.add(\n runtimeExecutionTimes.queryEngineExecutionTime,\n );\n systemFunctionExecutionTime = systemFunctionExecutionTime.add(\n runtimeExecutionTimes.systemFunctionExecutionTime,\n );\n userDefinedFunctionExecutionTime = userDefinedFunctionExecutionTime.add(\n runtimeExecutionTimes.userDefinedFunctionExecutionTime,\n );\n }\n\n return new RuntimeExecutionTimes(\n queryEngineExecutionTime,\n systemFunctionExecutionTime,\n userDefinedFunctionExecutionTime,\n );\n }\n\n /**\n * Output the RuntimeExecutionTimes as a delimited string.\n */\n public toDelimitedString(): string {\n return (\n `${\n QueryMetricsConstants.SystemFunctionExecuteTimeInMs\n }=${this.systemFunctionExecutionTime.totalMilliseconds()};` +\n `${\n QueryMetricsConstants.UserDefinedFunctionExecutionTimeInMs\n }=${this.userDefinedFunctionExecutionTime.totalMilliseconds()}`\n );\n }\n\n public static readonly zero = new RuntimeExecutionTimes(\n TimeSpan.zero,\n TimeSpan.zero,\n TimeSpan.zero,\n );\n\n /**\n * Returns a new instance of the RuntimeExecutionTimes class that is\n * the aggregation of an array of RuntimeExecutionTimes.\n */\n public static createFromArray(\n runtimeExecutionTimesArray: RuntimeExecutionTimes[],\n ): RuntimeExecutionTimes {\n if (runtimeExecutionTimesArray == null) {\n throw new Error(\"runtimeExecutionTimesArray is null or undefined item(s)\");\n }\n\n return RuntimeExecutionTimes.zero.add(...runtimeExecutionTimesArray);\n }\n\n /**\n * Returns a new instance of the RuntimeExecutionTimes class this is deserialized from a delimited string.\n */\n public static createFromDelimitedString(delimitedString: string): RuntimeExecutionTimes {\n const metrics = parseDelimitedString(delimitedString);\n\n const vmExecutionTime = timeSpanFromMetrics(metrics, QueryMetricsConstants.VMExecutionTimeInMs);\n const indexLookupTime = timeSpanFromMetrics(metrics, QueryMetricsConstants.IndexLookupTimeInMs);\n const documentLoadTime = timeSpanFromMetrics(\n metrics,\n QueryMetricsConstants.DocumentLoadTimeInMs,\n );\n const documentWriteTime = timeSpanFromMetrics(\n metrics,\n QueryMetricsConstants.DocumentWriteTimeInMs,\n );\n\n let queryEngineExecutionTime = TimeSpan.zero;\n queryEngineExecutionTime = queryEngineExecutionTime.add(vmExecutionTime);\n queryEngineExecutionTime = queryEngineExecutionTime.subtract(indexLookupTime);\n queryEngineExecutionTime = queryEngineExecutionTime.subtract(documentLoadTime);\n queryEngineExecutionTime = queryEngineExecutionTime.subtract(documentWriteTime);\n return new RuntimeExecutionTimes(\n queryEngineExecutionTime,\n timeSpanFromMetrics(metrics, QueryMetricsConstants.SystemFunctionExecuteTimeInMs),\n timeSpanFromMetrics(metrics, QueryMetricsConstants.UserDefinedFunctionExecutionTimeInMs),\n );\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { ClientSideMetrics } from \"./clientSideMetrics\";\nimport QueryMetricsConstants from \"./queryMetricsConstants\";\nimport { parseDelimitedString, timeSpanFromMetrics } from \"./queryMetricsUtils\";\nimport { QueryPreparationTimes } from \"./queryPreparationTime\";\nimport { RuntimeExecutionTimes } from \"./runtimeExecutionTimes\";\nimport { TimeSpan } from \"./timeSpan\";\n\nexport class QueryMetrics {\n constructor(\n public readonly retrievedDocumentCount: number,\n public readonly retrievedDocumentSize: number,\n public readonly outputDocumentCount: number,\n public readonly outputDocumentSize: number,\n public readonly indexHitDocumentCount: number,\n public readonly totalQueryExecutionTime: TimeSpan,\n public readonly queryPreparationTimes: QueryPreparationTimes,\n public readonly indexLookupTime: TimeSpan,\n public readonly documentLoadTime: TimeSpan,\n public readonly vmExecutionTime: TimeSpan,\n public readonly runtimeExecutionTimes: RuntimeExecutionTimes,\n public readonly documentWriteTime: TimeSpan,\n public readonly clientSideMetrics: ClientSideMetrics,\n ) {}\n\n /**\n * Gets the IndexHitRatio\n * @hidden\n */\n public get indexHitRatio(): number {\n return this.retrievedDocumentCount === 0\n ? 1\n : this.indexHitDocumentCount / this.retrievedDocumentCount;\n }\n\n /**\n * returns a new QueryMetrics instance that is the addition of this and the arguments.\n */\n public add(queryMetricsArray: QueryMetrics[]): QueryMetrics {\n let retrievedDocumentCount = 0;\n let retrievedDocumentSize = 0;\n let outputDocumentCount = 0;\n let outputDocumentSize = 0;\n let indexHitDocumentCount = 0;\n let totalQueryExecutionTime = TimeSpan.zero;\n const queryPreparationTimesArray = [];\n let indexLookupTime = TimeSpan.zero;\n let documentLoadTime = TimeSpan.zero;\n let vmExecutionTime = TimeSpan.zero;\n const runtimeExecutionTimesArray = [];\n let documentWriteTime = TimeSpan.zero;\n const clientSideQueryMetricsArray = [];\n\n queryMetricsArray.push(this);\n\n for (const queryMetrics of queryMetricsArray) {\n if (queryMetrics) {\n retrievedDocumentCount += queryMetrics.retrievedDocumentCount;\n retrievedDocumentSize += queryMetrics.retrievedDocumentSize;\n outputDocumentCount += queryMetrics.outputDocumentCount;\n outputDocumentSize += queryMetrics.outputDocumentSize;\n indexHitDocumentCount += queryMetrics.indexHitDocumentCount;\n totalQueryExecutionTime = totalQueryExecutionTime.add(queryMetrics.totalQueryExecutionTime);\n queryPreparationTimesArray.push(queryMetrics.queryPreparationTimes);\n indexLookupTime = indexLookupTime.add(queryMetrics.indexLookupTime);\n documentLoadTime = documentLoadTime.add(queryMetrics.documentLoadTime);\n vmExecutionTime = vmExecutionTime.add(queryMetrics.vmExecutionTime);\n runtimeExecutionTimesArray.push(queryMetrics.runtimeExecutionTimes);\n documentWriteTime = documentWriteTime.add(queryMetrics.documentWriteTime);\n clientSideQueryMetricsArray.push(queryMetrics.clientSideMetrics);\n }\n }\n\n return new QueryMetrics(\n retrievedDocumentCount,\n retrievedDocumentSize,\n outputDocumentCount,\n outputDocumentSize,\n indexHitDocumentCount,\n totalQueryExecutionTime,\n QueryPreparationTimes.createFromArray(queryPreparationTimesArray),\n indexLookupTime,\n documentLoadTime,\n vmExecutionTime,\n RuntimeExecutionTimes.createFromArray(runtimeExecutionTimesArray),\n documentWriteTime,\n ClientSideMetrics.createFromArray(...clientSideQueryMetricsArray),\n );\n }\n\n /**\n * Output the QueryMetrics as a delimited string.\n * @hidden\n */\n public toDelimitedString(): string {\n return (\n QueryMetricsConstants.RetrievedDocumentCount +\n \"=\" +\n this.retrievedDocumentCount +\n \";\" +\n QueryMetricsConstants.RetrievedDocumentSize +\n \"=\" +\n this.retrievedDocumentSize +\n \";\" +\n QueryMetricsConstants.OutputDocumentCount +\n \"=\" +\n this.outputDocumentCount +\n \";\" +\n QueryMetricsConstants.OutputDocumentSize +\n \"=\" +\n this.outputDocumentSize +\n \";\" +\n QueryMetricsConstants.IndexHitRatio +\n \"=\" +\n this.indexHitRatio +\n \";\" +\n QueryMetricsConstants.TotalQueryExecutionTimeInMs +\n \"=\" +\n this.totalQueryExecutionTime.totalMilliseconds() +\n \";\" +\n this.queryPreparationTimes.toDelimitedString() +\n \";\" +\n QueryMetricsConstants.IndexLookupTimeInMs +\n \"=\" +\n this.indexLookupTime.totalMilliseconds() +\n \";\" +\n QueryMetricsConstants.DocumentLoadTimeInMs +\n \"=\" +\n this.documentLoadTime.totalMilliseconds() +\n \";\" +\n QueryMetricsConstants.VMExecutionTimeInMs +\n \"=\" +\n this.vmExecutionTime.totalMilliseconds() +\n \";\" +\n this.runtimeExecutionTimes.toDelimitedString() +\n \";\" +\n QueryMetricsConstants.DocumentWriteTimeInMs +\n \"=\" +\n this.documentWriteTime.totalMilliseconds()\n );\n }\n\n public static readonly zero = new QueryMetrics(\n 0,\n 0,\n 0,\n 0,\n 0,\n TimeSpan.zero,\n QueryPreparationTimes.zero,\n TimeSpan.zero,\n TimeSpan.zero,\n TimeSpan.zero,\n RuntimeExecutionTimes.zero,\n TimeSpan.zero,\n ClientSideMetrics.zero,\n );\n\n /**\n * Returns a new instance of the QueryMetrics class that is the aggregation of an array of query metrics.\n */\n public static createFromArray(queryMetricsArray: QueryMetrics[]): QueryMetrics {\n if (!queryMetricsArray) {\n throw new Error(\"queryMetricsArray is null or undefined item(s)\");\n }\n\n return QueryMetrics.zero.add(queryMetricsArray);\n }\n\n /**\n * Returns a new instance of the QueryMetrics class this is deserialized from a delimited string.\n */\n public static createFromDelimitedString(\n delimitedString: string,\n clientSideMetrics?: ClientSideMetrics,\n ): QueryMetrics {\n const metrics = parseDelimitedString(delimitedString);\n\n const indexHitRatio = metrics[QueryMetricsConstants.IndexHitRatio] || 0;\n const retrievedDocumentCount = metrics[QueryMetricsConstants.RetrievedDocumentCount] || 0;\n const indexHitCount = indexHitRatio * retrievedDocumentCount;\n const outputDocumentCount = metrics[QueryMetricsConstants.OutputDocumentCount] || 0;\n const outputDocumentSize = metrics[QueryMetricsConstants.OutputDocumentSize] || 0;\n const retrievedDocumentSize = metrics[QueryMetricsConstants.RetrievedDocumentSize] || 0;\n const totalQueryExecutionTime = timeSpanFromMetrics(\n metrics,\n QueryMetricsConstants.TotalQueryExecutionTimeInMs,\n );\n return new QueryMetrics(\n retrievedDocumentCount,\n retrievedDocumentSize,\n outputDocumentCount,\n outputDocumentSize,\n indexHitCount,\n totalQueryExecutionTime,\n QueryPreparationTimes.createFromDelimitedString(delimitedString),\n timeSpanFromMetrics(metrics, QueryMetricsConstants.IndexLookupTimeInMs),\n timeSpanFromMetrics(metrics, QueryMetricsConstants.DocumentLoadTimeInMs),\n timeSpanFromMetrics(metrics, QueryMetricsConstants.VMExecutionTimeInMs),\n RuntimeExecutionTimes.createFromDelimitedString(delimitedString),\n timeSpanFromMetrics(metrics, QueryMetricsConstants.DocumentWriteTimeInMs),\n clientSideMetrics || ClientSideMetrics.zero,\n );\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Constants } from \"../common\";\nimport { QueryMetrics } from \"../queryMetrics/queryMetrics\";\n\nexport interface CosmosHeaders {\n [key: string]: any;\n}\n\n/** @hidden */\n// TODO: docs\nexport function getRequestChargeIfAny(headers: CosmosHeaders | number): number {\n if (typeof headers === \"number\") {\n return headers;\n } else if (typeof headers === \"string\") {\n return parseFloat(headers);\n }\n\n if (headers) {\n const rc = headers[Constants.HttpHeaders.RequestCharge];\n if (rc) {\n return parseFloat(rc as string);\n } else {\n return 0;\n }\n } else {\n return 0;\n }\n}\n\n/**\n * @hidden\n */\nexport function getInitialHeader(): CosmosHeaders {\n const headers: CosmosHeaders = {};\n headers[Constants.HttpHeaders.RequestCharge] = 0;\n headers[Constants.HttpHeaders.QueryMetrics] = {};\n return headers;\n}\n\n/**\n * @hidden\n */\n// TODO: The name of this method isn't very accurate to what it does\nexport function mergeHeaders(headers: CosmosHeaders, toBeMergedHeaders: CosmosHeaders): void {\n if (headers[Constants.HttpHeaders.RequestCharge] === undefined) {\n headers[Constants.HttpHeaders.RequestCharge] = 0;\n }\n\n if (headers[Constants.HttpHeaders.QueryMetrics] === undefined) {\n headers[Constants.HttpHeaders.QueryMetrics] = QueryMetrics.zero;\n }\n\n if (!toBeMergedHeaders) {\n return;\n }\n\n headers[Constants.HttpHeaders.RequestCharge] += getRequestChargeIfAny(toBeMergedHeaders);\n if (toBeMergedHeaders[Constants.HttpHeaders.IsRUPerMinuteUsed]) {\n headers[Constants.HttpHeaders.IsRUPerMinuteUsed] =\n toBeMergedHeaders[Constants.HttpHeaders.IsRUPerMinuteUsed];\n }\n\n if (Constants.HttpHeaders.QueryMetrics in toBeMergedHeaders) {\n const headerQueryMetrics = headers[Constants.HttpHeaders.QueryMetrics];\n const toBeMergedHeaderQueryMetrics = toBeMergedHeaders[Constants.HttpHeaders.QueryMetrics];\n\n for (const partitionId in toBeMergedHeaderQueryMetrics) {\n if (headerQueryMetrics[partitionId]) {\n const combinedQueryMetrics = headerQueryMetrics[partitionId].add([\n toBeMergedHeaderQueryMetrics[partitionId],\n ]);\n headerQueryMetrics[partitionId] = combinedQueryMetrics;\n } else {\n headerQueryMetrics[partitionId] = toBeMergedHeaderQueryMetrics[partitionId];\n }\n }\n }\n\n if (Constants.HttpHeaders.IndexUtilization in toBeMergedHeaders) {\n headers[Constants.HttpHeaders.IndexUtilization] =\n toBeMergedHeaders[Constants.HttpHeaders.IndexUtilization];\n }\n\n if (Constants.HttpHeaders.CorrelatedActivityId in toBeMergedHeaders) {\n headers[Constants.HttpHeaders.CorrelatedActivityId] =\n toBeMergedHeaders[Constants.HttpHeaders.CorrelatedActivityId];\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport default {\n IndexUtilizationInfo: \"Index Utilization Information\",\n UtilizedSingleIndexes: \"Utilized Single Indexes\",\n PotentialSingleIndexes: \"Potential Single Indexes\",\n UtilizedCompositeIndexes: \"Utilized Composite Indexes\",\n PotentialCompositeIndexes: \"Potential Composite Indexes\",\n IndexExpression: \"Index Spec\",\n IndexImpactScore: \"Index Impact Score\",\n IndexUtilizationSeparator: \"---\",\n};\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport Constants from \"./Constants\";\nimport type { CompositeIndexUtilizationEntity } from \"./CompositeIndexUtilizationEntity\";\nimport type { IndexUtilizationInfo } from \"./IndexUtilizationInfo\";\nimport type { SingleIndexUtilizationEntity } from \"./SingleIndexUtilizationEntity\";\n\nexport class IndexMetricWriter {\n public writeIndexMetrics(indexUtilizationInfo: IndexUtilizationInfo): string {\n let result = \"\";\n result = this.writeBeforeIndexUtilizationInfo(result);\n result = this.writeIndexUtilizationInfo(result, indexUtilizationInfo);\n result = this.writeAfterIndexUtilizationInfo(result);\n return result;\n }\n\n protected writeBeforeIndexUtilizationInfo(result: string): string {\n result = this.appendNewlineToResult(result);\n result = this.appendHeaderToResult(result, Constants.IndexUtilizationInfo, 0);\n return result;\n }\n\n protected writeIndexUtilizationInfo(\n result: string,\n indexUtilizationInfo: IndexUtilizationInfo,\n ): string {\n result = this.appendHeaderToResult(result, Constants.UtilizedSingleIndexes, 1);\n\n for (const indexUtilizationEntity of indexUtilizationInfo.UtilizedSingleIndexes) {\n result = this.writeSingleIndexUtilizationEntity(result, indexUtilizationEntity);\n }\n result = this.appendHeaderToResult(result, Constants.PotentialSingleIndexes, 1);\n\n for (const indexUtilizationEntity of indexUtilizationInfo.PotentialSingleIndexes) {\n result = this.writeSingleIndexUtilizationEntity(result, indexUtilizationEntity);\n }\n\n result = this.appendHeaderToResult(result, Constants.UtilizedCompositeIndexes, 1);\n\n for (const indexUtilizationEntity of indexUtilizationInfo.UtilizedCompositeIndexes) {\n result = this.writeCompositeIndexUtilizationEntity(result, indexUtilizationEntity);\n }\n\n result = this.appendHeaderToResult(result, Constants.PotentialCompositeIndexes, 1);\n\n for (const indexUtilizationEntity of indexUtilizationInfo.PotentialCompositeIndexes) {\n result = this.writeCompositeIndexUtilizationEntity(result, indexUtilizationEntity);\n }\n return result;\n }\n\n protected writeAfterIndexUtilizationInfo(result: string): string {\n return result;\n }\n\n private writeSingleIndexUtilizationEntity(\n result: string,\n indexUtilizationEntity: SingleIndexUtilizationEntity,\n ): string {\n result = this.appendHeaderToResult(\n result,\n `${Constants.IndexExpression}: ${indexUtilizationEntity.IndexSpec}`,\n 2,\n );\n result = this.appendHeaderToResult(\n result,\n `${Constants.IndexImpactScore}: ${indexUtilizationEntity.IndexImpactScore}`,\n 2,\n );\n result = this.appendHeaderToResult(result, Constants.IndexUtilizationSeparator, 2);\n return result;\n }\n\n private writeCompositeIndexUtilizationEntity(\n result: string,\n indexUtilizationEntity: CompositeIndexUtilizationEntity,\n ): string {\n result = this.appendHeaderToResult(\n result,\n `${Constants.IndexExpression}: ${indexUtilizationEntity.IndexSpecs.join(\", \")}`,\n 2,\n );\n result = this.appendHeaderToResult(\n result,\n `${Constants.IndexImpactScore}: ${indexUtilizationEntity.IndexImpactScore}`,\n 2,\n );\n result = this.appendHeaderToResult(result, Constants.IndexUtilizationSeparator, 2);\n return result;\n }\n\n private appendNewlineToResult(result: string): string {\n return this.appendHeaderToResult(result, \"\", 0);\n }\n\n private appendHeaderToResult(result: string, headerTitle: string, indentLevel: number): string {\n const Indent = \" \";\n const header = `${Indent.repeat(indentLevel)}${headerTitle}\\n`;\n result += header;\n return result;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Constants } from \"../common\";\nimport type { CosmosHeaders } from \"../queryExecutionContext/headerUtils\";\nimport { getRequestChargeIfAny } from \"../queryExecutionContext/headerUtils\";\nimport { IndexMetricWriter, IndexUtilizationInfo } from \"../indexMetrics\";\nimport type { CosmosDiagnostics } from \"../CosmosDiagnostics\";\n\nexport class FeedResponse {\n constructor(\n public readonly resources: TResource[],\n private readonly headers: CosmosHeaders,\n public readonly hasMoreResults: boolean,\n public readonly diagnostics: CosmosDiagnostics,\n ) {}\n\n public get continuation(): string {\n return this.continuationToken;\n }\n public get continuationToken(): string {\n return this.headers[Constants.HttpHeaders.Continuation];\n }\n public get queryMetrics(): string {\n return this.headers[Constants.HttpHeaders.QueryMetrics];\n }\n public get requestCharge(): number {\n return getRequestChargeIfAny(this.headers);\n }\n public get activityId(): string {\n return this.headers[Constants.HttpHeaders.ActivityId];\n }\n public get correlatedActivityId(): string {\n return this.headers[Constants.HttpHeaders.CorrelatedActivityId];\n }\n public get indexMetrics(): string {\n const writer = new IndexMetricWriter();\n const indexUtilizationInfo = IndexUtilizationInfo.createFromString(\n this.headers[Constants.HttpHeaders.IndexUtilization],\n true,\n );\n return writer.writeIndexMetrics(indexUtilizationInfo);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * @hidden\n */\nexport const TimeoutErrorCode = \"TimeoutError\";\n\nexport class TimeoutError extends Error {\n public readonly code: string = TimeoutErrorCode;\n constructor(message: string = \"Timeout Error\") {\n super(message);\n this.name = TimeoutErrorCode;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * @hidden\n * Utility function to get currentTime in UTC milliseconds.\n * @returns\n */\n\nexport function getCurrentTimestampInMs(): number {\n return Date.now();\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n ClientSideRequestStatistics,\n FailedRequestAttemptDiagnostic,\n GatewayStatistics,\n MetadataLookUpDiagnostic,\n MetadataLookUpType,\n} from \"../CosmosDiagnostics\";\nimport { getCurrentTimestampInMs } from \"../utils/time\";\n\n/**\n * @hidden\n * Internal class to hold CosmosDiagnostic aggregate information all through the lifecycle of a request.\n * This object gathers diagnostic information throughout Client operation which may span across multiple\n * Server call, retries etc.\n * Functions - recordFailedAttempt, recordMetaDataQuery, recordEndpointContactEvent are used to ingest\n * data into the context. At the end of operation, getDiagnostics() is used to\n * get final CosmosDiagnostic object.\n */\nexport class CosmosDiagnosticContext {\n private requestStartTimeUTCinMs: number;\n private failedAttempts: FailedRequestAttemptDiagnostic[] = [];\n private metadataLookups: MetadataLookUpDiagnostic[] = [];\n private gaterwayStatistics: GatewayStatistics[] = [];\n public locationEndpointsContacted: Set = new Set();\n\n public constructor() {\n this.requestStartTimeUTCinMs = getCurrentTimestampInMs();\n }\n\n public recordFailedAttempt(\n gaterwayStatistics: GatewayStatistics,\n retryAttemptNumber: number,\n ): void {\n const attempt: FailedRequestAttemptDiagnostic = {\n attemptNumber: retryAttemptNumber,\n startTimeUTCInMs: gaterwayStatistics.startTimeUTCInMs,\n durationInMs: gaterwayStatistics.durationInMs,\n statusCode: gaterwayStatistics.statusCode,\n substatusCode: gaterwayStatistics.subStatusCode,\n requestPayloadLengthInBytes: gaterwayStatistics.requestPayloadLengthInBytes,\n responsePayloadLengthInBytes: gaterwayStatistics.responsePayloadLengthInBytes,\n activityId: gaterwayStatistics.activityId,\n operationType: gaterwayStatistics.operationType,\n resourceType: gaterwayStatistics.resourceType,\n };\n this.failedAttempts.push(attempt);\n }\n\n public recordNetworkCall(gaterwayStatistics: GatewayStatistics): void {\n this.gaterwayStatistics.push(gaterwayStatistics);\n }\n\n /**\n * Merge given DiagnosticContext to current node's DiagnosticContext, Treating GatewayRequests of\n * given DiagnosticContext, as metadata requests.\n */\n public mergeDiagnostics(\n childDiagnostics: CosmosDiagnosticContext,\n metadataType: MetadataLookUpType,\n ): void {\n // Copy Location endpoints contacted.\n childDiagnostics.locationEndpointsContacted.forEach((endpoint) =>\n this.locationEndpointsContacted.add(endpoint),\n );\n\n // Copy child nodes's GatewayStatistics to parent's metadata lookups.\n childDiagnostics.gaterwayStatistics.forEach((gateway) =>\n this.metadataLookups.push({\n activityId: gateway.activityId,\n requestPayloadLengthInBytes: gateway.requestPayloadLengthInBytes,\n responsePayloadLengthInBytes: gateway.responsePayloadLengthInBytes,\n startTimeUTCInMs: gateway.startTimeUTCInMs,\n operationType: gateway.operationType,\n resourceType: gateway.resourceType,\n durationInMs: gateway.durationInMs,\n metaDataType: metadataType,\n }),\n );\n\n // Copy child nodes's metadata lookups to parent's metadata lookups.\n childDiagnostics.metadataLookups.forEach((lookup) => this.metadataLookups.push(lookup));\n\n // Copy child nodes's failed attempts to parent's failed attempts.\n childDiagnostics.failedAttempts.forEach((lookup) => this.failedAttempts.push(lookup));\n }\n\n public getClientSideStats(\n endTimeUTCInMs: number = getCurrentTimestampInMs(),\n ): ClientSideRequestStatistics {\n return {\n requestStartTimeUTCInMs: this.requestStartTimeUTCinMs,\n requestDurationInMs: endTimeUTCInMs - this.requestStartTimeUTCinMs,\n totalRequestPayloadLengthInBytes: this.getTotalRequestPayloadLength(),\n totalResponsePayloadLengthInBytes: this.getTotalResponsePayloadLength(),\n locationEndpointsContacted: [...this.locationEndpointsContacted.values()],\n metadataDiagnostics: {\n metadataLookups: [...this.metadataLookups],\n },\n retryDiagnostics: {\n failedAttempts: [...this.failedAttempts],\n },\n gatewayStatistics: this.gaterwayStatistics,\n };\n }\n\n public getTotalRequestPayloadLength(): number {\n let totalRequestPayloadLength = 0;\n this.gaterwayStatistics.forEach(\n (req) => (totalRequestPayloadLength += req.requestPayloadLengthInBytes),\n );\n this.metadataLookups.forEach(\n (req) => (totalRequestPayloadLength += req.requestPayloadLengthInBytes),\n );\n this.failedAttempts.forEach(\n (req) => (totalRequestPayloadLength += req.requestPayloadLengthInBytes),\n );\n return totalRequestPayloadLength;\n }\n\n public getTotalResponsePayloadLength(): number {\n let totalResponsePayloadLength = 0;\n this.gaterwayStatistics.forEach(\n (req) => (totalResponsePayloadLength += req.responsePayloadLengthInBytes),\n );\n this.metadataLookups.forEach(\n (req) => (totalResponsePayloadLength += req.responsePayloadLengthInBytes),\n );\n this.failedAttempts.forEach(\n (req) => (totalResponsePayloadLength += req.responsePayloadLengthInBytes),\n );\n return totalResponsePayloadLength;\n }\n\n public recordEndpointResolution(location: string): void {\n this.locationEndpointsContacted.add(location);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { OperationType, ResourceType } from \"./common\";\nimport type { CosmosDbDiagnosticLevel } from \"./diagnostics/CosmosDbDiagnosticLevel\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal\";\nimport type { ConsistencyLevel } from \"./documents\";\n\n/**\n * * This is a Cosmos Diagnostic type that holds collected diagnostic information during a client operations. ie. Item.read(), Container.create().\n * It has three members -\n * 1. `clientSideRequestStatistics` member contains aggregate diagnostic information, including -\n * - metadata lookups. Here all the server requests, apart from the final intended resource are considered as metadata calls.\n * i.e. for item.read(id), if the client makes server call to discover endpoints it would be considered as metadata call.\n * - retries\n * - endpoints contacted.\n * - request, response payload stats.\n * - gatewayStatistics - Information corresponding to main operation. For example during Item.read(), the client might perform many operations\n * i.e. metadata lookup etc, but gatewayStatistics represents the diagnostics information for actual read operation.\n *\n * 2. diagnosticNode - Is a tree like structure which captures detailed diagnostic information. By default it is disabled, and is intended to be\n * used only for debugging on non production environments. The kind of details captured in diagnosticNode is controlled by `CosmosDbDiagnosticLevel`.\n * - CosmosDbDiagnosticLevel.info - Is default value. In this level only clientSideRequestStatistics are captured. Is is meant for production environments.\n * - CosmosDbDiagnosticLevel.debug - Captures diagnosticNode and clientConfig. No request and response payloads are captured. Is not meant to be used\n * in production environment.\n * - CosmosDbDiagnosticLevel.debug-unsafe - In addition to data captured in CosmosDbDiagnosticLevel.debug, also captures request and response payloads.\n * Is not meant to be used in production environment.\n * 3. clientConfig - Captures information related to how client was configured during initialization.\n */\nexport class CosmosDiagnostics {\n public readonly clientSideRequestStatistics: ClientSideRequestStatistics;\n public readonly diagnosticNode: DiagnosticNode;\n public readonly clientConfig?: ClientConfigDiagnostic;\n /**\n * @internal\n */\n constructor(\n clientSideRequestStatistics: ClientSideRequestStatistics,\n diagnosticNode?: DiagnosticNode,\n clientConfig?: ClientConfigDiagnostic,\n ) {\n this.clientSideRequestStatistics = clientSideRequestStatistics;\n this.diagnosticNode = diagnosticNode;\n this.clientConfig = clientConfig;\n }\n}\n\n/**\n * This type holds information related to initialization of `CosmosClient`\n */\nexport type ClientConfigDiagnostic = {\n /**\n * End point configured during client initialization.\n */\n endpoint: string;\n /**\n * True if `resourceTokens` was supplied during client initialization.\n */\n resourceTokensConfigured: boolean;\n /**\n * True if `tokenProvider` was supplied during client initialization.\n */\n tokenProviderConfigured: boolean;\n /**\n * True if `aadCredentials` was supplied during client initialization.\n */\n aadCredentialsConfigured: boolean;\n /**\n * True if `connectionPolicy` was supplied during client initialization.\n */\n connectionPolicyConfigured: boolean;\n /**\n * `consistencyLevel` supplied during client initialization.\n */\n consistencyLevel?: keyof typeof ConsistencyLevel;\n /**\n * `defaultHeaders` supplied during client initialization.\n */\n defaultHeaders?: { [key: string]: any };\n /**\n * True if `connectionPolicy` were supplied during client initialization.\n */\n agentConfigured: boolean;\n /**\n * `userAgentSuffix` supplied during client initialization.\n */\n userAgentSuffix: string;\n /**\n * `diagnosticLevel` supplied during client initialization.\n */\n diagnosticLevel?: CosmosDbDiagnosticLevel;\n /**\n * True if `plugins` were supplied during client initialization.\n */\n pluginsConfigured: boolean;\n /**\n * SDK version\n */\n sDKVersion: string;\n};\n\n/**\n * This type contains diagnostic information regarding all metadata request to server during an CosmosDB client operation.\n */\nexport type MetadataLookUpDiagnostics = {\n metadataLookups: MetadataLookUpDiagnostic[];\n};\n\n/**\n * This type captures diagnostic information regarding retries attempt during an CosmosDB client operation.\n */\nexport type RetryDiagnostics = {\n failedAttempts: FailedRequestAttemptDiagnostic[];\n};\n\nexport type GatewayStatistics = {\n /**\n * This is the activityId for request, made to server for fetching the requested resource. (As opposed to other potential meta data requests)\n */\n activityId?: string;\n /*\n * The correlated activity ID is added in the header of every request made to the backend for a query. This aids in troubleshooting by linking all\n * requests associated with a particular query.\n */\n correlatedActivityId?: string;\n startTimeUTCInMs: number;\n durationInMs: number;\n operationType?: OperationType;\n resourceType?: ResourceType;\n statusCode?: number;\n subStatusCode?: number;\n requestCharge?: number;\n requestPayloadLengthInBytes: number;\n responsePayloadLengthInBytes: number;\n};\n\n/**\n * This type contains diagnostic information regarding a single metadata request to server.\n */\nexport interface MetadataLookUpDiagnostic {\n activityId: string;\n startTimeUTCInMs: number;\n durationInMs: number;\n operationType?: OperationType;\n resourceType?: ResourceType;\n metaDataType: MetadataLookUpType;\n requestPayloadLengthInBytes: number;\n responsePayloadLengthInBytes: number;\n}\n\n/**\n * This type captures diagnostic information regarding a failed request to server api.\n */\nexport interface FailedRequestAttemptDiagnostic {\n attemptNumber: number;\n activityId: string;\n startTimeUTCInMs: number;\n durationInMs: number;\n operationType?: OperationType;\n resourceType?: ResourceType;\n statusCode: number;\n substatusCode?: number;\n requestPayloadLengthInBytes: number;\n responsePayloadLengthInBytes: number;\n}\n\n/**\n * This is enum for Type of Metadata lookups possible.\n */\nexport enum MetadataLookUpType {\n PartitionKeyRangeLookUp = \"PARTITION_KEY_RANGE_LOOK_UP\",\n DatabaseAccountLookUp = \"DATABASE_ACCOUNT_LOOK_UP\",\n QueryPlanLookUp = \"QUERY_PLAN_LOOK_UP\",\n DatabaseLookUp = \"DATABASE_LOOK_UP\",\n ContainerLookUp = \"CONTAINER_LOOK_UP\",\n}\n\n/**\n * This is a collection type for all client side diagnostic information.\n */\nexport type ClientSideRequestStatistics = {\n /**\n * This is the UTC timestamp for start of client operation.\n */\n requestStartTimeUTCInMs: number;\n /**\n * This is the duration in milli seconds taken by client operation.\n */\n requestDurationInMs: number;\n /**\n * This is the list of Location Endpoints contacted during the client operation.\n */\n locationEndpointsContacted: string[];\n /**\n * This field captures diagnostic information for retries happened during client operation.\n */\n retryDiagnostics: RetryDiagnostics;\n /**\n * This field captures diagnostic information for meta data lookups happened during client operation.\n */\n metadataDiagnostics: MetadataLookUpDiagnostics;\n /**\n * These are the statistics for main point look operation.\n */\n gatewayStatistics: GatewayStatistics[];\n /**\n * This is the cumulated Request Payload Length n bytes, this includes metadata calls along with the main operation.\n */\n totalRequestPayloadLengthInBytes: number;\n /**\n * This is the cumulated Response Payload Length n bytes, this includes metadata calls along with the main operation.\n */\n totalResponsePayloadLengthInBytes: number;\n};\n\nexport function getRootNode(node: DiagnosticNodeInternal): DiagnosticNodeInternal {\n if (node.parent) return getRootNode(node.parent);\n else return node;\n}\n\n/**\n * Represents a tree like structure, for capturing diagnostic information.\n */\nexport interface DiagnosticNode {\n id: string;\n nodeType: string;\n children: DiagnosticNode[];\n data: { [key: string]: any };\n startTimeUTCInMs: number;\n durationInMs: number;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Cosmos DB Diagnostic Level\n */\nexport enum CosmosDbDiagnosticLevel {\n info = \"info\",\n debug = \"debug\",\n debugUnsafe = \"debug-unsafe\",\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CosmosDbDiagnosticLevel } from \"./CosmosDbDiagnosticLevel\";\n\n/**\n * @hidden\n */\nexport const CosmosDbDiagnosticLevelOrder = [\n CosmosDbDiagnosticLevel.info,\n CosmosDbDiagnosticLevel.debug,\n CosmosDbDiagnosticLevel.debugUnsafe,\n];\n\n/**\n * @hidden\n */\nexport function allowTracing(\n levelToCheck: CosmosDbDiagnosticLevel,\n clientDiagnosticLevel: CosmosDbDiagnosticLevel,\n): boolean {\n const indexOfDiagnosticLevelToCheck = CosmosDbDiagnosticLevelOrder.indexOf(levelToCheck);\n const indexOfClientDiagnosticLevel = CosmosDbDiagnosticLevelOrder.indexOf(clientDiagnosticLevel);\n if (indexOfDiagnosticLevelToCheck === -1 || indexOfClientDiagnosticLevel === -1) {\n return false;\n }\n return indexOfDiagnosticLevelToCheck <= indexOfClientDiagnosticLevel;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CosmosDiagnosticContext } from \"./CosmosDiagnosticsContext\";\nimport type { RequestContext } from \"../request\";\nimport type {\n DiagnosticNode,\n MetadataLookUpType,\n ClientConfigDiagnostic,\n} from \"../CosmosDiagnostics\";\nimport { CosmosDiagnostics, getRootNode } from \"../CosmosDiagnostics\";\nimport { getCurrentTimestampInMs } from \"../utils/time\";\nimport { CosmosDbDiagnosticLevel } from \"./CosmosDbDiagnosticLevel\";\nimport type { CosmosHeaders } from \"../queryExecutionContext/CosmosHeaders\";\nimport type { HttpHeaders, PipelineResponse } from \"@azure/core-rest-pipeline\";\nimport type { OperationType, ResourceType } from \"../common\";\nimport { Constants, prepareURL } from \"../common\";\nimport { allowTracing } from \"./diagnosticLevelComparator\";\nimport { randomUUID } from \"@azure/core-util\";\n\n/**\n * @hidden\n * This is Internal Representation for DiagnosticNode. It contains useful helper functions to collect\n * diagnostic information throughout the lifetime of Diagnostic session.\n * The functions toDiagnosticNode() & toDiagnostic() are given to convert it to public facing counterpart.\n */\nexport class DiagnosticNodeInternal implements DiagnosticNode {\n public id: string;\n public nodeType: DiagnosticNodeType;\n public parent: DiagnosticNodeInternal;\n public children: DiagnosticNodeInternal[];\n public data: Partial;\n public startTimeUTCInMs: number;\n public durationInMs: number;\n public diagnosticLevel: CosmosDbDiagnosticLevel;\n private diagnosticCtx: CosmosDiagnosticContext;\n\n /**\n * @internal\n */\n constructor(\n diagnosticLevel: CosmosDbDiagnosticLevel,\n type: DiagnosticNodeType,\n parent: DiagnosticNodeInternal,\n data: Partial = {},\n startTimeUTCInMs: number = getCurrentTimestampInMs(),\n ctx: CosmosDiagnosticContext = new CosmosDiagnosticContext(),\n ) {\n this.id = randomUUID();\n this.nodeType = type;\n this.startTimeUTCInMs = startTimeUTCInMs;\n this.data = data;\n this.children = [];\n this.durationInMs = 0;\n this.parent = parent;\n this.diagnosticCtx = ctx;\n this.diagnosticLevel = diagnosticLevel;\n }\n\n /**\n * @internal\n */\n private addLog(msg: string): void {\n if (!this.data.log) {\n this.data.log = [];\n }\n this.data.log.push(msg);\n }\n\n /**\n * @internal\n */\n private sanitizeHeaders(headers?: CosmosHeaders | HttpHeaders): CosmosHeaders | HttpHeaders {\n return headers;\n }\n\n /**\n * Updated durationInMs for node, based on endTimeUTCInMs provided.\n * @internal\n */\n public updateTimestamp(endTimeUTCInMs: number = getCurrentTimestampInMs()): void {\n this.durationInMs = endTimeUTCInMs - this.startTimeUTCInMs;\n }\n\n /**\n * @internal\n */\n public recordSuccessfulNetworkCall(\n startTimeUTCInMs: number,\n requestContext: RequestContext,\n pipelineResponse: PipelineResponse,\n substatus: number,\n url: string,\n ): void {\n const responseHeaders = pipelineResponse.headers.toJSON();\n const gatewayRequest = {\n activityId: responseHeaders[Constants.HttpHeaders.ActivityId],\n correlateActivityId: requestContext.headers[Constants.HttpHeaders.CorrelatedActivityId],\n startTimeUTCInMs,\n durationInMs: getCurrentTimestampInMs() - startTimeUTCInMs,\n statusCode: pipelineResponse.status,\n subStatusCode: substatus,\n requestPayloadLengthInBytes: calculateRequestPayloadLength(requestContext),\n responsePayloadLengthInBytes: calculateResponsePayloadLength(pipelineResponse),\n operationType: requestContext.operationType,\n resourceType: requestContext.resourceType,\n partitionKeyRangeId: requestContext.partitionKeyRangeId,\n };\n let requestData: any = {\n OperationType: gatewayRequest.operationType,\n resourceType: gatewayRequest.resourceType,\n requestPayloadLengthInBytes: gatewayRequest.requestPayloadLengthInBytes,\n };\n\n if (allowTracing(CosmosDbDiagnosticLevel.debugUnsafe, this.diagnosticLevel)) {\n requestData = {\n ...requestData,\n headers: this.sanitizeHeaders(requestContext.headers),\n requestBody: requestContext.body,\n responseBody: pipelineResponse.bodyAsText,\n url: url,\n };\n }\n this.addData({\n requestPayloadLengthInBytes: gatewayRequest.requestPayloadLengthInBytes,\n responsePayloadLengthInBytes: gatewayRequest.responsePayloadLengthInBytes,\n startTimeUTCInMs: gatewayRequest.startTimeUTCInMs,\n durationInMs: gatewayRequest.durationInMs,\n requestData,\n });\n this.diagnosticCtx.recordNetworkCall(gatewayRequest);\n }\n\n /**\n * @internal\n */\n public recordFailedNetworkCall(\n startTimeUTCInMs: number,\n requestContext: RequestContext,\n retryAttemptNumber: number,\n statusCode: number,\n substatusCode: number,\n responseHeaders: CosmosHeaders,\n ): void {\n this.addData({ failedAttempty: true });\n const requestPayloadLengthInBytes = calculateRequestPayloadLength(requestContext);\n this.diagnosticCtx.recordFailedAttempt(\n {\n activityId: responseHeaders[Constants.HttpHeaders.ActivityId] as string,\n correlatedActivityId: requestContext.headers[\n Constants.HttpHeaders.CorrelatedActivityId\n ] as string,\n startTimeUTCInMs,\n durationInMs: getCurrentTimestampInMs() - startTimeUTCInMs,\n statusCode,\n subStatusCode: substatusCode,\n requestPayloadLengthInBytes,\n responsePayloadLengthInBytes: 0,\n operationType: requestContext.operationType,\n resourceType: requestContext.resourceType,\n },\n retryAttemptNumber,\n );\n let requestData: any = {\n OperationType: requestContext.operationType,\n resourceType: requestContext.resourceType,\n requestPayloadLengthInBytes,\n };\n if (allowTracing(CosmosDbDiagnosticLevel.debugUnsafe, this.diagnosticLevel)) {\n requestData = {\n ...requestData,\n headers: this.sanitizeHeaders(requestContext.headers),\n requestBody: requestContext.body,\n url: prepareURL(requestContext.endpoint, requestContext.path),\n };\n }\n this.addData({\n failedAttempty: true,\n requestData,\n });\n }\n\n /**\n * @internal\n */\n public recordEndpointResolution(location: string): void {\n this.addData({ selectedLocation: location });\n this.diagnosticCtx.recordEndpointResolution(location);\n }\n\n /**\n * @internal\n */\n public addData(\n data: Partial,\n msg?: string,\n level: CosmosDbDiagnosticLevel = this.diagnosticLevel,\n ): void {\n if (level !== CosmosDbDiagnosticLevel.info) {\n this.data = { ...this.data, ...data };\n if (msg) {\n this.addLog(msg);\n }\n }\n }\n\n /**\n * Merge given DiagnosticNodeInternal's context to current node's DiagnosticContext, Treating GatewayRequests of\n * given DiagnosticContext, as metadata requests. Given DiagnosticNodeInternal becomes a child of this node.\n * @internal\n */\n public addChildNode(\n child: DiagnosticNodeInternal,\n level: CosmosDbDiagnosticLevel,\n metadataType?: MetadataLookUpType,\n ): DiagnosticNodeInternal {\n this.diagnosticCtx.mergeDiagnostics(child.diagnosticCtx, metadataType);\n if (allowTracing(level, this.diagnosticLevel)) {\n child.parent = this;\n this.children.push(child);\n }\n return child;\n }\n\n /**\n * @internal\n */\n public initializeChildNode(\n type: DiagnosticNodeType,\n level: CosmosDbDiagnosticLevel,\n data: Partial = {},\n ): DiagnosticNodeInternal {\n if (allowTracing(level, this.diagnosticLevel)) {\n const child = new DiagnosticNodeInternal(\n this.diagnosticLevel,\n type,\n this,\n data,\n getCurrentTimestampInMs(),\n this.diagnosticCtx,\n );\n this.children.push(child);\n return child;\n } else {\n return this;\n }\n }\n\n /**\n * @internal\n */\n public recordQueryResult(resources: unknown, level: CosmosDbDiagnosticLevel): void {\n if (allowTracing(level, this.diagnosticLevel)) {\n const previousCount = this.data.queryRecordsRead ?? 0;\n if (Array.isArray(resources)) {\n this.data.queryRecordsRead = previousCount + resources.length;\n }\n }\n }\n\n /**\n * Convert DiagnosticNodeInternal (internal representation) to DiagnosticNode (public, sanitized representation)\n * @internal\n */\n public toDiagnosticNode(): DiagnosticNode {\n return {\n id: this.id,\n nodeType: this.nodeType,\n children: this.children.map((child) => child.toDiagnosticNode()),\n data: this.data,\n startTimeUTCInMs: this.startTimeUTCInMs,\n durationInMs: this.durationInMs,\n };\n }\n\n /**\n * Convert to CosmosDiagnostics\n * @internal\n */\n public toDiagnostic(clientConfigDiagnostic: ClientConfigDiagnostic): CosmosDiagnostics {\n const rootNode = getRootNode(this);\n const diagnostiNode = allowTracing(CosmosDbDiagnosticLevel.debug, this.diagnosticLevel)\n ? rootNode.toDiagnosticNode()\n : undefined;\n const clientConfig = allowTracing(CosmosDbDiagnosticLevel.debug, this.diagnosticLevel)\n ? clientConfigDiagnostic\n : undefined;\n const cosmosDiagnostic = new CosmosDiagnostics(\n this.diagnosticCtx.getClientSideStats(),\n diagnostiNode,\n clientConfig,\n );\n return cosmosDiagnostic;\n }\n}\n\n/**\n * @hidden\n */\nexport type DiagnosticDataValue = {\n selectedLocation: string;\n activityId: string;\n requestAttempNumber: number;\n requestPayloadLengthInBytes: number;\n responsePayloadLengthInBytes: number;\n responseStatus: number;\n readFromCache: boolean;\n operationType: OperationType;\n metadatOperationType: MetadataLookUpType;\n resourceType: ResourceType;\n failedAttempty: boolean;\n successfulRetryPolicy: string;\n partitionKeyRangeId: string;\n stateful: boolean;\n queryRecordsRead: number;\n queryMethodIdentifier: string;\n log: string[];\n failure: boolean;\n startTimeUTCInMs: number;\n durationInMs: number;\n requestData: Partial<{\n requestPayloadLengthInBytes: number;\n responsePayloadLengthInBytes: number;\n operationType: OperationType;\n resourceType: ResourceType;\n headers: CosmosHeaders;\n requestBody: any;\n responseBody: any;\n url: string;\n }>;\n};\n\n/**\n * @hidden\n */\nexport enum DiagnosticNodeType {\n CLIENT_REQUEST_NODE = \"CLIENT_REQUEST_NODE\", // Top most node representing client operations.\n METADATA_REQUEST_NODE = \"METADATA_REQUEST_NODE\", // Node representing a metadata request.\n HTTP_REQUEST = \"HTTP_REQUEST\", // Node representing REST call to backend services.\n BATCH_REQUEST = \"BATCH_REQUEST\", // Node representing batch request.\n PARALLEL_QUERY_NODE = \"PARALLEL_QUERY_NODE\", // Node representing parallel query execution.\n DEFAULT_QUERY_NODE = \"DEFAULT_QUERY_NODE\", // Node representing default query execution.\n QUERY_REPAIR_NODE = \"QUERY_REPAIR_NODE\", // Node representing query repair.\n BACKGROUND_REFRESH_THREAD = \"BACKGROUND_REFRESH_THREAD\", // Node representing background refresh.\n REQUEST_ATTEMPTS = \"REQUEST_ATTEMPTS\", // Node representing request attempts.\n}\n\nfunction calculateResponsePayloadLength(response: PipelineResponse) {\n return response?.bodyAsText?.length || 0;\n}\n\nfunction calculateRequestPayloadLength(requestContext: RequestContext) {\n return requestContext.body ? requestContext.body.length : 0;\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { MetadataLookUpType } from \"../CosmosDiagnostics\";\nimport { CosmosDiagnostics } from \"../CosmosDiagnostics\";\nimport type { DiagnosticDataValue } from \"../diagnostics/DiagnosticNodeInternal\";\nimport { DiagnosticNodeInternal, DiagnosticNodeType } from \"../diagnostics/DiagnosticNodeInternal\";\nimport type { ClientContext } from \"../ClientContext\";\nimport { getCurrentTimestampInMs } from \"./time\";\nimport { CosmosDbDiagnosticLevel } from \"../diagnostics/CosmosDbDiagnosticLevel\";\nimport { randomUUID } from \"@azure/core-util\";\n\n/**\n * @hidden\n * Utility function to create an Empty CosmosDiagnostic object.\n */\nexport function getEmptyCosmosDiagnostics(): CosmosDiagnostics {\n return new CosmosDiagnostics(\n {\n requestDurationInMs: 0,\n requestStartTimeUTCInMs: getCurrentTimestampInMs(),\n totalRequestPayloadLengthInBytes: 0,\n totalResponsePayloadLengthInBytes: 0,\n locationEndpointsContacted: [],\n retryDiagnostics: {\n failedAttempts: [],\n },\n metadataDiagnostics: {\n metadataLookups: [],\n },\n gatewayStatistics: [],\n },\n {\n id: randomUUID(),\n nodeType: DiagnosticNodeType.CLIENT_REQUEST_NODE,\n children: [],\n data: {},\n startTimeUTCInMs: getCurrentTimestampInMs(),\n durationInMs: 0,\n },\n );\n}\n\n/**\n * @hidden\n */\nexport type ExtractPromise = T extends Promise ? U : never;\n\n/**\n * A supporting utility wrapper function, to be used inside a diagnostic session started\n * by `withDiagnostics` function.\n * Created a Diagnostic node and add it as a child to existing diagnostic session.\n * @hidden\n */\nexport async function addDignosticChild<\n Callback extends (node: DiagnosticNodeInternal) => Promise,\n>(\n callback: Callback,\n node: DiagnosticNodeInternal,\n type: DiagnosticNodeType,\n data: Partial = {},\n): Promise>> {\n const childNode = node.initializeChildNode(type, CosmosDbDiagnosticLevel.debug, data);\n try {\n const response = await callback(childNode);\n childNode.updateTimestamp();\n return response;\n } catch (e: any) {\n childNode.addData({\n failure: true,\n });\n childNode.updateTimestamp();\n throw e;\n }\n}\n\n/**\n * A supporting utility wrapper function, to be used inside a diagnostic session started\n * by `withDiagnostics` function.\n * Treats requests originating in provided `callback` as metadata calls.\n * To realize this, starts a temporary diagnostic session, after execution of callback is\n * finished. Merges this temporary diagnostic session to the original diagnostic session\n * represented by the input parameter `node`.\n * @hidden\n */\nexport async function withMetadataDiagnostics<\n Callback extends (node: DiagnosticNodeInternal) => Promise,\n>(\n callback: Callback,\n node: DiagnosticNodeInternal,\n type: MetadataLookUpType,\n): Promise>> {\n const diagnosticNodeForMetadataCall = new DiagnosticNodeInternal(\n node.diagnosticLevel,\n DiagnosticNodeType.METADATA_REQUEST_NODE,\n null,\n );\n try {\n const response: any = await callback(diagnosticNodeForMetadataCall);\n node.addChildNode(diagnosticNodeForMetadataCall, CosmosDbDiagnosticLevel.debug, type);\n return response;\n } catch (e) {\n node.addChildNode(diagnosticNodeForMetadataCall, CosmosDbDiagnosticLevel.debug, type);\n throw e;\n }\n}\n\n/**\n * Utility wrapper function to managed lifecycle of a Diagnostic session.\n * Meant to be used at the root of the client operation. i.e. item.read(),\n * queryIterator.fetchAll().\n *\n * This utility starts a new diagnostic session. So using it any where else\n * other than start of operation, will result is different diagnostic sessions.\n *\n * Workings :\n * 1. Takes a callback function as input.\n * 2. Creates a new instance of DiagnosticNodeInternal, which can be though as starting\n * a new diagnostic session.\n * 3. Executes the callback function.\n * 4. If execution was successful. Converts DiagnosticNodeInternal to CosmosDiagnostics\n * and injects it to the response object and returns this object.\n * 5. If execution threw an exception. Sill converts DiagnosticNodeInternal to CosmosDiagnostics\n * and injects it to the Error object, and rethrows the Error object.\n *\n * @hidden\n */\nexport async function withDiagnostics<\n Callback extends (node: DiagnosticNodeInternal) => Promise,\n>(\n callback: Callback,\n clientContext: ClientContext,\n type: DiagnosticNodeType = DiagnosticNodeType.CLIENT_REQUEST_NODE,\n): Promise>> {\n const diagnosticNode = new DiagnosticNodeInternal(clientContext.diagnosticLevel, type, null);\n try {\n const response: any = await callback(diagnosticNode);\n diagnosticNode.updateTimestamp();\n const diagnostics = diagnosticNode.toDiagnostic(clientContext.getClientConfig());\n if (typeof response === \"object\" && response !== null) {\n (response as any).diagnostics = diagnostics;\n }\n clientContext.recordDiagnostics(diagnostics);\n return response;\n } catch (e: any) {\n diagnosticNode.updateTimestamp();\n diagnosticNode.addData({\n failure: true,\n });\n const diagnostics = diagnosticNode.toDiagnostic(clientContext.getClientConfig());\n e.diagnostics = diagnostics;\n clientContext.recordDiagnostics(diagnostics);\n throw e;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { AzureLogger } from \"@azure/logger\";\nimport { createClientLogger } from \"@azure/logger\";\nimport { Constants } from \"../common\";\nimport { ClientSideMetrics, QueryMetrics } from \"../queryMetrics\";\nimport type { FeedOptions, Response } from \"../request\";\nimport { getInitialHeader } from \"./headerUtils\";\nimport type { ExecutionContext } from \"./index\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal\";\nimport { DiagnosticNodeType } from \"../diagnostics/DiagnosticNodeInternal\";\nimport { addDignosticChild } from \"../utils/diagnostics\";\nimport { CosmosDbDiagnosticLevel } from \"../diagnostics/CosmosDbDiagnosticLevel\";\n\nconst logger: AzureLogger = createClientLogger(\"ClientContext\");\n/** @hidden */\nexport type FetchFunctionCallback = (\n diagnosticNode: DiagnosticNodeInternal,\n options: FeedOptions,\n correlatedActivityId: string,\n) => Promise>;\n\n/** @hidden */\nenum STATES {\n start = \"start\",\n inProgress = \"inProgress\",\n ended = \"ended\",\n}\n\n/** @hidden */\nexport class DefaultQueryExecutionContext implements ExecutionContext {\n private static readonly STATES = STATES;\n private resources: any[]; // TODO: any resources\n private currentIndex: number;\n private currentPartitionIndex: number;\n private fetchFunctions: FetchFunctionCallback[];\n private options: FeedOptions; // TODO: any options\n public continuationToken: string; // TODO: any continuation\n public get continuation(): string {\n return this.continuationToken;\n }\n private state: STATES;\n private nextFetchFunction: Promise>;\n private correlatedActivityId: string;\n /**\n * Provides the basic Query Execution Context.\n * This wraps the internal logic query execution using provided fetch functions\n *\n * @param clientContext - Is used to read the partitionKeyRanges for split proofing\n * @param query - A SQL query.\n * @param options - Represents the feed options.\n * @param fetchFunctions - A function to retrieve each page of data.\n * An array of functions may be used to query more than one partition.\n * @hidden\n */\n constructor(\n options: FeedOptions,\n fetchFunctions: FetchFunctionCallback | FetchFunctionCallback[],\n correlatedActivityId: string,\n ) {\n this.resources = [];\n this.currentIndex = 0;\n this.currentPartitionIndex = 0;\n this.fetchFunctions = Array.isArray(fetchFunctions) ? fetchFunctions : [fetchFunctions];\n this.options = options || {};\n this.continuationToken = this.options.continuationToken || this.options.continuation || null;\n this.state = DefaultQueryExecutionContext.STATES.start;\n this.correlatedActivityId = correlatedActivityId;\n }\n\n /**\n * Execute a provided callback on the next element in the execution context.\n */\n public async nextItem(diagnosticNode: DiagnosticNodeInternal): Promise> {\n ++this.currentIndex;\n const response = await this.current(diagnosticNode);\n return response;\n }\n\n /**\n * Retrieve the current element on the execution context.\n */\n public async current(diagnosticNode: DiagnosticNodeInternal): Promise> {\n if (this.currentIndex < this.resources.length) {\n return {\n result: this.resources[this.currentIndex],\n headers: getInitialHeader(),\n };\n }\n\n if (this._canFetchMore()) {\n const { result: resources, headers } = await this.fetchMore(diagnosticNode);\n this.resources = resources;\n if (this.resources.length === 0) {\n if (!this.continuationToken && this.currentPartitionIndex >= this.fetchFunctions.length) {\n this.state = DefaultQueryExecutionContext.STATES.ended;\n return { result: undefined, headers };\n } else {\n return this.current(diagnosticNode);\n }\n }\n return { result: this.resources[this.currentIndex], headers };\n } else {\n this.state = DefaultQueryExecutionContext.STATES.ended;\n return {\n result: undefined,\n headers: getInitialHeader(),\n };\n }\n }\n\n /**\n * Determine if there are still remaining resources to processs based on\n * the value of the continuation token or the elements remaining on the current batch in the execution context.\n *\n * @returns true if there is other elements to process in the DefaultQueryExecutionContext.\n */\n public hasMoreResults(): boolean {\n return (\n this.state === DefaultQueryExecutionContext.STATES.start ||\n this.continuationToken !== undefined ||\n this.currentIndex < this.resources.length - 1 ||\n this.currentPartitionIndex < this.fetchFunctions.length\n );\n }\n\n /**\n * Fetches the next batch of the feed and pass them as an array to a callback\n */\n public async fetchMore(diagnosticNode: DiagnosticNodeInternal): Promise> {\n return addDignosticChild(\n async (childDiagnosticNode: DiagnosticNodeInternal) => {\n if (this.currentPartitionIndex >= this.fetchFunctions.length) {\n return {\n headers: getInitialHeader(),\n result: undefined,\n };\n }\n\n // Keep to the original continuation and to restore the value after fetchFunction call\n const originalContinuation = this.options.continuationToken || this.options.continuation;\n this.options.continuationToken = this.continuationToken;\n\n // Return undefined if there is no more results\n if (this.currentPartitionIndex >= this.fetchFunctions.length) {\n return {\n headers: getInitialHeader(),\n result: undefined,\n };\n }\n\n let resources;\n let responseHeaders;\n try {\n let p: Promise>;\n if (this.nextFetchFunction !== undefined) {\n logger.verbose(\"using prefetch\");\n p = this.nextFetchFunction;\n this.nextFetchFunction = undefined;\n } else {\n logger.verbose(\"using fresh fetch\");\n p = this.fetchFunctions[this.currentPartitionIndex](\n childDiagnosticNode,\n this.options,\n this.correlatedActivityId,\n );\n }\n const response = await p;\n resources = response.result;\n childDiagnosticNode.recordQueryResult(resources, CosmosDbDiagnosticLevel.debugUnsafe);\n responseHeaders = response.headers;\n this.continuationToken = responseHeaders[Constants.HttpHeaders.Continuation];\n if (!this.continuationToken) {\n ++this.currentPartitionIndex;\n }\n\n if (this.options && this.options.bufferItems === true) {\n const fetchFunction = this.fetchFunctions[this.currentPartitionIndex];\n this.nextFetchFunction = fetchFunction\n ? fetchFunction(\n childDiagnosticNode,\n {\n ...this.options,\n continuationToken: this.continuationToken,\n },\n this.correlatedActivityId,\n )\n : undefined;\n }\n } catch (err: any) {\n this.state = DefaultQueryExecutionContext.STATES.ended;\n // return callback(err, undefined, responseHeaders);\n // TODO: Error and data being returned is an antipattern, this might broken\n throw err;\n }\n\n this.state = DefaultQueryExecutionContext.STATES.inProgress;\n this.currentIndex = 0;\n this.options.continuationToken = originalContinuation;\n this.options.continuation = originalContinuation;\n\n // deserializing query metrics so that we aren't working with delimited strings in the rest of the code base\n if (Constants.HttpHeaders.QueryMetrics in responseHeaders) {\n const delimitedString = responseHeaders[Constants.HttpHeaders.QueryMetrics];\n let queryMetrics = QueryMetrics.createFromDelimitedString(delimitedString);\n\n // Add the request charge to the query metrics so that we can have per partition request charge.\n if (Constants.HttpHeaders.RequestCharge in responseHeaders) {\n const requestCharge = Number(responseHeaders[Constants.HttpHeaders.RequestCharge]) || 0;\n queryMetrics = new QueryMetrics(\n queryMetrics.retrievedDocumentCount,\n queryMetrics.retrievedDocumentSize,\n queryMetrics.outputDocumentCount,\n queryMetrics.outputDocumentSize,\n queryMetrics.indexHitDocumentCount,\n queryMetrics.totalQueryExecutionTime,\n queryMetrics.queryPreparationTimes,\n queryMetrics.indexLookupTime,\n queryMetrics.documentLoadTime,\n queryMetrics.vmExecutionTime,\n queryMetrics.runtimeExecutionTimes,\n queryMetrics.documentWriteTime,\n new ClientSideMetrics(requestCharge),\n );\n }\n\n // Wraping query metrics in a object where the key is '0' just so single partition\n // and partition queries have the same response schema\n responseHeaders[Constants.HttpHeaders.QueryMetrics] = {};\n responseHeaders[Constants.HttpHeaders.QueryMetrics][\"0\"] = queryMetrics;\n }\n\n return { result: resources, headers: responseHeaders };\n },\n diagnosticNode,\n DiagnosticNodeType.DEFAULT_QUERY_NODE,\n {\n queryMethodIdentifier: \"fetchMore\",\n },\n );\n }\n\n private _canFetchMore(): boolean {\n const res =\n this.state === DefaultQueryExecutionContext.STATES.start ||\n (this.continuationToken && this.state === DefaultQueryExecutionContext.STATES.inProgress) ||\n (this.currentPartitionIndex < this.fetchFunctions.length &&\n this.state === DefaultQueryExecutionContext.STATES.inProgress);\n return res;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport type { Response } from \"../../request\";\nimport type { ExecutionContext } from \"../ExecutionContext\";\nimport { getInitialHeader, mergeHeaders } from \"../headerUtils\";\n\n/** @hidden */\nexport class OffsetLimitEndpointComponent implements ExecutionContext {\n constructor(\n private executionContext: ExecutionContext,\n private offset: number,\n private limit: number,\n ) {}\n\n public async nextItem(diagnosticNode: DiagnosticNodeInternal): Promise> {\n const aggregateHeaders = getInitialHeader();\n while (this.offset > 0) {\n // Grab next item but ignore the result. We only need the headers\n const { headers } = await this.executionContext.nextItem(diagnosticNode);\n this.offset--;\n mergeHeaders(aggregateHeaders, headers);\n }\n if (this.limit > 0) {\n const { result, headers } = await this.executionContext.nextItem(diagnosticNode);\n this.limit--;\n mergeHeaders(aggregateHeaders, headers);\n return { result, headers: aggregateHeaders };\n }\n // If both limit and offset are 0, return nothing\n return {\n result: undefined,\n headers: getInitialHeader(),\n };\n }\n\n public hasMoreResults(): boolean {\n return (this.offset > 0 || this.limit > 0) && this.executionContext.hasMoreResults();\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport type { Response } from \"../../request\";\nimport type { ExecutionContext } from \"../ExecutionContext\";\n\n/** @hidden */\nexport class OrderByEndpointComponent implements ExecutionContext {\n /**\n * Represents an endpoint in handling an order by query. For each processed orderby\n * result it returns 'payload' item of the result\n *\n * @param executionContext - Underlying Execution Context\n * @hidden\n */\n constructor(\n private executionContext: ExecutionContext,\n private emitRawOrderByPayload: boolean = false,\n ) {}\n /**\n * Execute a provided function on the next element in the OrderByEndpointComponent.\n */\n public async nextItem(diagnosticNode: DiagnosticNodeInternal): Promise> {\n const { result: item, headers } = await this.executionContext.nextItem(diagnosticNode);\n if (this.emitRawOrderByPayload) {\n return {\n result: item !== undefined ? item : undefined,\n headers,\n };\n } else {\n return {\n result: item !== undefined ? item.payload : undefined,\n headers,\n };\n }\n }\n\n /**\n * Determine if there are still remaining resources to processs.\n * @returns true if there is other elements to process in the OrderByEndpointComponent.\n */\n public hasMoreResults(): boolean {\n return this.executionContext.hasMoreResults();\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { encodeUTF8 } from \"./encode\";\nimport { globalCrypto } from \"./globalCrypto\";\n\nexport async function digest(str: string): Promise {\n const data = encodeUTF8(str);\n const hash = await globalCrypto.subtle.digest(\"SHA-256\", data);\n return bufferToHex(hash);\n}\n\nfunction bufferToHex(buffer: ArrayBuffer): string {\n return Array.prototype.map\n .call(new Uint8Array(buffer), (item: number) => (\"00\" + item.toString(16)).slice(-2))\n .join(\"\");\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { digest } from \"./digest\";\nimport stableStringify from \"fast-json-stable-stringify\";\n\nexport async function hashObject(object: unknown): Promise {\n const stringifiedObject = stableStringify(object);\n return digest(stringifiedObject);\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { Response } from \"../../request\";\nimport type { ExecutionContext } from \"../ExecutionContext\";\nimport { hashObject } from \"../../utils/hashObject\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\n\n/** @hidden */\nexport class OrderedDistinctEndpointComponent implements ExecutionContext {\n private hashedLastResult: string;\n constructor(private executionContext: ExecutionContext) {}\n\n public async nextItem(diagnosticNode: DiagnosticNodeInternal): Promise> {\n const { headers, result } = await this.executionContext.nextItem(diagnosticNode);\n if (result) {\n const hashedResult = await hashObject(result);\n if (hashedResult === this.hashedLastResult) {\n return { result: undefined, headers };\n }\n this.hashedLastResult = hashedResult;\n }\n return { result, headers };\n }\n\n public hasMoreResults(): boolean {\n return this.executionContext.hasMoreResults();\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { Response } from \"../../request\";\nimport type { ExecutionContext } from \"../ExecutionContext\";\nimport { hashObject } from \"../../utils/hashObject\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\n\n/** @hidden */\nexport class UnorderedDistinctEndpointComponent implements ExecutionContext {\n private hashedResults: Set;\n constructor(private executionContext: ExecutionContext) {\n this.hashedResults = new Set();\n }\n\n public async nextItem(diagnosticNode: DiagnosticNodeInternal): Promise> {\n const { headers, result } = await this.executionContext.nextItem(diagnosticNode);\n if (result) {\n const hashedResult = await hashObject(result);\n if (this.hashedResults.has(hashedResult)) {\n return { result: undefined, headers };\n }\n this.hashedResults.add(hashedResult);\n }\n return { result, headers };\n }\n\n public hasMoreResults(): boolean {\n return this.executionContext.hasMoreResults();\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { Aggregator } from \"./Aggregator\";\n\n/** @hidden */\nexport interface AverageAggregateResult {\n sum: number;\n count: number;\n}\n\n/** @hidden */\nexport class AverageAggregator implements Aggregator {\n public sum: number;\n public count: number;\n /**\n * Add the provided item to aggregation result.\n */\n public aggregate(other: AverageAggregateResult): void {\n if (other == null || other.sum == null) {\n return;\n }\n if (this.sum == null) {\n this.sum = 0.0;\n this.count = 0;\n }\n this.sum += other.sum;\n this.count += other.count;\n }\n\n /**\n * Get the aggregation result.\n */\n public getResult(): number {\n if (this.sum == null || this.count <= 0) {\n return undefined;\n }\n return this.sum / this.count;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { Aggregator } from \"./Aggregator\";\n\n/** @hidden */\nexport class CountAggregator implements Aggregator {\n public value: number;\n /**\n * Represents an aggregator for COUNT operator.\n * @hidden\n */\n constructor() {\n this.value = 0;\n }\n /**\n * Add the provided item to aggregation result.\n */\n public aggregate(other: number): void {\n this.value += other;\n }\n\n /**\n * Get the aggregation result.\n */\n public getResult(): number {\n return this.value;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DocumentProducer } from \"./documentProducer\";\n\n// TODO: this smells funny\n/** @hidden */\nconst TYPEORDCOMPARATOR: {\n [type: string]: { ord: number; compFunc?: (a: any, b: any) => number };\n} = Object.freeze({\n NoValue: {\n ord: 0,\n },\n undefined: {\n ord: 1,\n },\n boolean: {\n ord: 2,\n compFunc: (a: boolean, b: boolean) => {\n return a === b ? 0 : a > b ? 1 : -1;\n },\n },\n number: {\n ord: 4,\n compFunc: (a: number, b: number) => {\n return a === b ? 0 : a > b ? 1 : -1;\n },\n },\n string: {\n ord: 5,\n compFunc: (a: string, b: string) => {\n return a === b ? 0 : a > b ? 1 : -1;\n },\n },\n});\n\n/** @hidden */\nexport class OrderByDocumentProducerComparator {\n constructor(public sortOrder: string[]) {} // TODO: This should be an enum\n\n private targetPartitionKeyRangeDocProdComparator(\n docProd1: DocumentProducer,\n docProd2: DocumentProducer,\n ): 0 | 1 | -1 {\n const a = docProd1.getTargetParitionKeyRange()[\"minInclusive\"];\n const b = docProd2.getTargetParitionKeyRange()[\"minInclusive\"];\n return a === b ? 0 : a > b ? 1 : -1;\n }\n\n public compare(docProd1: DocumentProducer, docProd2: DocumentProducer): number {\n // Need to check for split, since we don't want to dereference \"item\" of undefined / exception\n if (docProd1.gotSplit()) {\n return -1;\n }\n if (docProd2.gotSplit()) {\n return 1;\n }\n\n const orderByItemsRes1 = this.getOrderByItems(docProd1.peekBufferedItems()[0]);\n const orderByItemsRes2 = this.getOrderByItems(docProd2.peekBufferedItems()[0]);\n\n // validate order by items and types\n // TODO: once V1 order by on different types is fixed this need to change\n this.validateOrderByItems(orderByItemsRes1, orderByItemsRes2);\n\n // no async call in the for loop\n for (let i = 0; i < orderByItemsRes1.length; i++) {\n // compares the orderby items one by one\n const compRes = this.compareOrderByItem(orderByItemsRes1[i], orderByItemsRes2[i]);\n if (compRes !== 0) {\n if (this.sortOrder[i] === \"Ascending\") {\n return compRes;\n } else if (this.sortOrder[i] === \"Descending\") {\n return -compRes;\n }\n }\n }\n\n return this.targetPartitionKeyRangeDocProdComparator(docProd1, docProd2);\n }\n\n // TODO: This smells funny\n public compareValue(item1: unknown, type1: string, item2: unknown, type2: string): number {\n if (type1 === \"object\" || type2 === \"object\") {\n throw new Error(\"Tried to compare an object type\");\n }\n const type1Ord = TYPEORDCOMPARATOR[type1].ord;\n const type2Ord = TYPEORDCOMPARATOR[type2].ord;\n const typeCmp = type1Ord - type2Ord;\n\n if (typeCmp !== 0) {\n // if the types are different, use type ordinal\n return typeCmp;\n }\n\n // both are of the same type\n if (\n type1Ord === TYPEORDCOMPARATOR[\"undefined\"].ord ||\n type1Ord === TYPEORDCOMPARATOR[\"NoValue\"].ord\n ) {\n // if both types are undefined or Null they are equal\n return 0;\n }\n\n const compFunc = TYPEORDCOMPARATOR[type1].compFunc;\n if (typeof compFunc === \"undefined\") {\n throw new Error(\"Cannot find the comparison function\");\n }\n // same type and type is defined compare the items\n return compFunc(item1, item2);\n }\n\n private compareOrderByItem(orderByItem1: any, orderByItem2: any): number {\n const type1 = this.getType(orderByItem1);\n const type2 = this.getType(orderByItem2);\n return this.compareValue(orderByItem1[\"item\"], type1, orderByItem2[\"item\"], type2);\n }\n\n private validateOrderByItems(res1: string[], res2: string[]): void {\n if (res1.length !== res2.length) {\n throw new Error(`Expected ${res1.length}, but got ${res2.length}.`);\n }\n if (res1.length !== this.sortOrder.length) {\n throw new Error(\"orderByItems cannot have a different size than sort orders.\");\n }\n\n for (let i = 0; i < this.sortOrder.length; i++) {\n const type1 = this.getType(res1[i]);\n const type2 = this.getType(res2[i]);\n if (type1 !== type2) {\n throw new Error(\n `Expected ${type1}, but got ${type2}. Cannot execute cross partition order-by queries on mixed types. Consider filtering your query using IS_STRING or IS_NUMBER to get around this exception.`,\n );\n }\n }\n }\n\n private getType(\n orderByItem: any,\n ):\n | \"string\"\n | \"number\"\n | \"bigint\"\n | \"boolean\"\n | \"symbol\"\n | \"undefined\"\n | \"object\"\n | \"function\"\n | \"NoValue\" {\n // TODO: any item?\n if (orderByItem === undefined || orderByItem.item === undefined) {\n return \"NoValue\";\n }\n const type = typeof orderByItem.item;\n if (TYPEORDCOMPARATOR[type] === undefined) {\n throw new Error(`unrecognizable type ${type}`);\n }\n return type;\n }\n\n private getOrderByItems(res: any): any {\n // TODO: any res?\n return res[\"orderByItems\"];\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { OrderByDocumentProducerComparator } from \"../orderByDocumentProducerComparator\";\nimport type { Aggregator } from \"./Aggregator\";\n\ninterface MaxAggregateResult {\n count: number;\n max?: number;\n}\n\n/** @hidden */\nexport class MaxAggregator implements Aggregator {\n private value: number;\n private comparer: OrderByDocumentProducerComparator;\n /**\n * Represents an aggregator for MAX operator.\n * @hidden\n */\n constructor() {\n this.value = undefined;\n this.comparer = new OrderByDocumentProducerComparator([\"Ascending\"]);\n }\n /**\n * Add the provided item to aggregation result.\n */\n public aggregate(other: MaxAggregateResult): void {\n if (this.value === undefined) {\n this.value = other.max;\n } else if (\n this.comparer.compareValue(other.max, typeof other.max, this.value, typeof this.value) > 0\n ) {\n this.value = other.max;\n }\n }\n\n /**\n * Get the aggregation result.\n */\n public getResult(): number {\n return this.value;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { OrderByDocumentProducerComparator } from \"../orderByDocumentProducerComparator\";\nimport type { Aggregator } from \"./Aggregator\";\n\nexport interface MinAggregateResult {\n min: number;\n count: number;\n}\n\n/** @hidden */\nexport class MinAggregator implements Aggregator {\n private value: number;\n private comparer: OrderByDocumentProducerComparator;\n /**\n * Represents an aggregator for MIN operator.\n * @hidden\n */\n constructor() {\n this.value = undefined;\n this.comparer = new OrderByDocumentProducerComparator([\"Ascending\"]);\n }\n /**\n * Add the provided item to aggregation result.\n */\n public aggregate(other: MinAggregateResult): void {\n if (this.value === undefined) {\n // || typeof this.value === \"object\"\n this.value = other.min;\n } else {\n const otherType = other.min === null ? \"NoValue\" : typeof other.min; // || typeof other === \"object\"\n const thisType = this.value === null ? \"NoValue\" : typeof this.value;\n if (this.comparer.compareValue(other.min, otherType, this.value, thisType) < 0) {\n this.value = other.min;\n }\n }\n }\n\n /**\n * Get the aggregation result.\n */\n public getResult(): number {\n return this.value;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { Aggregator } from \"./Aggregator\";\n\n/** @hidden */\nexport class SumAggregator implements Aggregator {\n public sum: number;\n /**\n * Add the provided item to aggregation result.\n */\n public aggregate(other: number): void {\n if (other === undefined) {\n return;\n }\n if (this.sum === undefined) {\n this.sum = other;\n } else {\n this.sum += other;\n }\n }\n\n /**\n * Get the aggregation result.\n */\n public getResult(): number {\n return this.sum;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { Aggregator } from \"./Aggregator\";\n\n/** @hidden */\nexport class StaticValueAggregator implements Aggregator {\n public value: any;\n public aggregate(other: unknown): void {\n if (this.value === undefined) {\n this.value = other;\n }\n }\n\n public getResult(): any {\n return this.value;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { Aggregator } from \"./Aggregator\";\n\n/** @hidden */\nexport class MakeListAggregator implements Aggregator {\n value: any[];\n\n constructor() {\n this.value = [];\n }\n public aggregate(other: any[]): void {\n if (Array.isArray(other)) {\n this.value.push(...other);\n }\n }\n public getResult(): any[] {\n const result = [...this.value];\n return result;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { Aggregator } from \"./Aggregator\";\n\n/** @hidden */\n/**\n * Represents an aggregator that collects unique values into a set.\n */\nexport class MakeSetAggregator implements Aggregator {\n value: Set;\n\n constructor() {\n this.value = new Set();\n }\n\n /**\n * Aggregates the values from another set into the current set.\n * @param other - The set to aggregate.\n */\n public aggregate(other: any[]): void {\n other.forEach((item) => {\n this.value.add(item);\n });\n }\n\n /**\n * Gets the result of the MakeSetAggregator.\n * @returns A Set containing the unique values collected by the aggregator.\n */\n public getResult(): any {\n return Array.from(this.value);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { AverageAggregator } from \"./AverageAggregator\";\nimport { CountAggregator } from \"./CountAggregator\";\nimport { MaxAggregator } from \"./MaxAggregator\";\nimport { MinAggregator } from \"./MinAggregator\";\nimport { SumAggregator } from \"./SumAggregator\";\nimport { StaticValueAggregator } from \"./StaticValueAggregator\";\nimport type { AggregateType } from \"../../request/ErrorResponse\";\nimport { MakeListAggregator } from \"./MakeListAggregator\";\nimport { MakeSetAggregator } from \"./MakeSetAggregator\";\n\nexport function createAggregator(\n aggregateType: AggregateType,\n):\n | AverageAggregator\n | CountAggregator\n | MaxAggregator\n | MinAggregator\n | SumAggregator\n | StaticValueAggregator {\n switch (aggregateType) {\n case \"Average\":\n return new AverageAggregator();\n case \"Count\":\n return new CountAggregator();\n case \"Max\":\n return new MaxAggregator();\n case \"Min\":\n return new MinAggregator();\n case \"Sum\":\n return new SumAggregator();\n case \"MakeList\":\n return new MakeListAggregator();\n case \"MakeSet\":\n return new MakeSetAggregator();\n default:\n return new StaticValueAggregator();\n }\n}\n\nexport { AverageAggregator, CountAggregator, MaxAggregator, MinAggregator, SumAggregator };\nexport { Aggregator } from \"./Aggregator\";\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// All aggregates are effectively a group by operation\n// The empty group is used for aggregates without a GROUP BY clause\nexport const emptyGroup = \"__empty__\";\n\n// Newer API versions rewrite the query to return `item2`. It fixes some legacy issues with the original `item` result\n// Aggregator code should use item2 when available\nexport const extractAggregateResult = (payload: { item2?: unknown; item: unknown }): any =>\n Object.keys(payload).length > 0 ? (payload.item2 ? payload.item2 : payload.item) : null;\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { Response } from \"../../request\";\nimport type { ExecutionContext } from \"../ExecutionContext\";\nimport type { CosmosHeaders } from \"../CosmosHeaders\";\nimport type { QueryInfo } from \"../../request/ErrorResponse\";\nimport { hashObject } from \"../../utils/hashObject\";\nimport type { Aggregator } from \"../Aggregators\";\nimport { createAggregator } from \"../Aggregators\";\nimport { getInitialHeader, mergeHeaders } from \"../headerUtils\";\nimport { emptyGroup, extractAggregateResult } from \"./emptyGroup\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\n\ninterface GroupByResponse {\n result: GroupByResult;\n headers: CosmosHeaders;\n}\n\ninterface GroupByResult {\n groupByItems: any[];\n payload: any;\n}\n\n/** @hidden */\nexport class GroupByEndpointComponent implements ExecutionContext {\n constructor(\n private executionContext: ExecutionContext,\n private queryInfo: QueryInfo,\n ) {}\n\n private readonly groupings: Map> = new Map();\n private readonly aggregateResultArray: any[] = [];\n private completed: boolean = false;\n\n public async nextItem(diagnosticNode: DiagnosticNodeInternal): Promise> {\n // If we have a full result set, begin returning results\n if (this.aggregateResultArray.length > 0) {\n return {\n result: this.aggregateResultArray.pop(),\n headers: getInitialHeader(),\n };\n }\n\n if (this.completed) {\n return {\n result: undefined,\n headers: getInitialHeader(),\n };\n }\n\n const aggregateHeaders = getInitialHeader();\n\n while (this.executionContext.hasMoreResults()) {\n // Grab the next result\n const { result, headers } = (await this.executionContext.nextItem(\n diagnosticNode,\n )) as GroupByResponse;\n mergeHeaders(aggregateHeaders, headers);\n\n // If it exists, process it via aggregators\n if (result) {\n const group = result.groupByItems ? await hashObject(result.groupByItems) : emptyGroup;\n const aggregators = this.groupings.get(group);\n const payload = result.payload;\n if (aggregators) {\n // Iterator over all results in the payload\n Object.keys(payload).map((key) => {\n // in case the value of a group is null make sure we create a dummy payload with item2==null\n const effectiveGroupByValue = payload[key]\n ? payload[key]\n : new Map().set(\"item2\", null);\n const aggregateResult = extractAggregateResult(effectiveGroupByValue);\n aggregators.get(key).aggregate(aggregateResult);\n });\n } else {\n // This is the first time we have seen a grouping. Setup the initial result without aggregate values\n const grouping = new Map();\n this.groupings.set(group, grouping);\n // Iterator over all results in the payload\n Object.keys(payload).map((key) => {\n const aggregateType = this.queryInfo.groupByAliasToAggregateType[key];\n // Create a new aggregator for this specific aggregate field\n const aggregator = createAggregator(aggregateType);\n grouping.set(key, aggregator);\n if (aggregateType) {\n const aggregateResult = extractAggregateResult(payload[key]);\n aggregator.aggregate(aggregateResult);\n } else {\n aggregator.aggregate(payload[key]);\n }\n });\n }\n }\n }\n\n for (const grouping of this.groupings.values()) {\n const groupResult: any = {};\n for (const [aggregateKey, aggregator] of grouping.entries()) {\n groupResult[aggregateKey] = aggregator.getResult();\n }\n this.aggregateResultArray.push(groupResult);\n }\n this.completed = true;\n return {\n result: this.aggregateResultArray.pop(),\n headers: aggregateHeaders,\n };\n }\n\n public hasMoreResults(): boolean {\n return this.executionContext.hasMoreResults() || this.aggregateResultArray.length > 0;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { PartitionKeyRange } from \"../client/Container/PartitionKeyRange\";\nimport { Constants } from \"../common\";\nimport type { QueryRange as ResponseQueryRange } from \"../request/ErrorResponse\";\n\n/** @hidden */\nexport class QueryRange {\n public min: string;\n public max: string;\n public isMinInclusive: boolean;\n public isMaxInclusive: boolean;\n\n /**\n * Represents a QueryRange.\n *\n * @param rangeMin - min\n * @param rangeMin - max\n * @param isMinInclusive - isMinInclusive\n * @param isMaxInclusive - isMaxInclusive\n * @hidden\n */\n constructor(\n rangeMin: string,\n rangeMax: string,\n isMinInclusive: boolean,\n isMaxInclusive: boolean,\n ) {\n this.min = rangeMin;\n this.max = rangeMax;\n this.isMinInclusive = isMinInclusive;\n this.isMaxInclusive = isMaxInclusive;\n }\n public overlaps(other: QueryRange): boolean {\n const range1 = this; // eslint-disable-line @typescript-eslint/no-this-alias\n const range2 = other;\n if (range1 === undefined || range2 === undefined) {\n return false;\n }\n if (range1.isEmpty() || range2.isEmpty()) {\n return false;\n }\n\n if (range1.min <= range2.max || range2.min <= range1.max) {\n if (\n (range1.min === range2.max && !(range1.isMinInclusive && range2.isMaxInclusive)) ||\n (range2.min === range1.max && !(range2.isMinInclusive && range1.isMaxInclusive))\n ) {\n return false;\n }\n return true;\n }\n return false;\n }\n\n public isFullRange(): boolean {\n return (\n this.min === Constants.EffectivePartitionKeyConstants.MinimumInclusiveEffectivePartitionKey &&\n this.max === Constants.EffectivePartitionKeyConstants.MaximumExclusiveEffectivePartitionKey &&\n this.isMinInclusive === true &&\n this.isMaxInclusive === false\n );\n }\n\n public isEmpty(): boolean {\n return !(this.isMinInclusive && this.isMaxInclusive) && this.min === this.max;\n }\n /**\n * Parse a QueryRange from a partitionKeyRange\n * @returns QueryRange\n * @hidden\n */\n public static parsePartitionKeyRange(partitionKeyRange: PartitionKeyRange): QueryRange {\n return new QueryRange(\n partitionKeyRange[Constants.PartitionKeyRange.MinInclusive],\n partitionKeyRange[Constants.PartitionKeyRange.MaxExclusive],\n true,\n false,\n );\n }\n /**\n * Parse a QueryRange from a dictionary\n * @returns QueryRange\n * @hidden\n */\n public static parseFromDict(queryRangeDict: ResponseQueryRange): QueryRange {\n return new QueryRange(\n queryRangeDict.min,\n queryRangeDict.max,\n queryRangeDict.isMinInclusive,\n queryRangeDict.isMaxInclusive,\n );\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { PartitionKeyRange } from \"../client\";\nimport { Constants } from \"../common\";\nimport { QueryRange } from \"./QueryRange\";\n\n/** @hidden */\nexport class InMemoryCollectionRoutingMap {\n private orderedPartitionKeyRanges: PartitionKeyRange[];\n private orderedRanges: QueryRange[];\n // TODO: chrande made this public, even though it is implementation detail for a test\n public orderedPartitionInfo: unknown;\n\n /**\n * Represents a InMemoryCollectionRoutingMap Object,\n * Stores partition key ranges in an efficient way with some additional information and provides\n * convenience methods for working with set of ranges.\n */\n constructor(orderedPartitionKeyRanges: PartitionKeyRange[], orderedPartitionInfo: unknown) {\n this.orderedPartitionKeyRanges = orderedPartitionKeyRanges;\n this.orderedRanges = orderedPartitionKeyRanges.map((pkr) => {\n return new QueryRange(\n pkr[Constants.PartitionKeyRange.MinInclusive],\n pkr[Constants.PartitionKeyRange.MaxExclusive],\n true,\n false,\n );\n });\n this.orderedPartitionInfo = orderedPartitionInfo;\n }\n public getOrderedParitionKeyRanges(): PartitionKeyRange[] {\n return this.orderedPartitionKeyRanges;\n }\n\n public getOverlappingRanges(providedQueryRanges: QueryRange | QueryRange[]): PartitionKeyRange[] {\n // TODO This code has all kinds of smells. Multiple iterations and sorts just to grab overlapping ranges\n // stfaul attempted to bring it down to one for-loop and failed\n const pqr: QueryRange[] = Array.isArray(providedQueryRanges)\n ? providedQueryRanges\n : [providedQueryRanges];\n const minToPartitionRange: any = {}; // TODO: any\n\n // this for loop doesn't invoke any async callback\n for (const queryRange of pqr) {\n if (queryRange.isEmpty()) {\n continue;\n }\n\n if (queryRange.isFullRange()) {\n return this.orderedPartitionKeyRanges;\n }\n\n const minIndex = this.orderedRanges.findIndex((range) => {\n if (queryRange.min > range.min && queryRange.min < range.max) {\n return true;\n }\n if (queryRange.min === range.min) {\n return true;\n }\n if (queryRange.min === range.max) {\n return true;\n }\n });\n\n if (minIndex < 0) {\n throw new Error(\n \"error in collection routing map, queried value is less than the start range.\",\n );\n }\n\n // Start at the end and work backwards\n let maxIndex: number;\n for (let i = this.orderedRanges.length - 1; i >= 0; i--) {\n const range = this.orderedRanges[i];\n if (queryRange.max > range.min && queryRange.max < range.max) {\n maxIndex = i;\n break;\n }\n if (queryRange.max === range.min) {\n maxIndex = i;\n break;\n }\n if (queryRange.max === range.max) {\n maxIndex = i;\n break;\n }\n }\n\n if (maxIndex > this.orderedRanges.length) {\n throw new Error(\n \"error in collection routing map, queried value is greater than the end range.\",\n );\n }\n\n for (let j = minIndex; j < maxIndex + 1; j++) {\n if (queryRange.overlaps(this.orderedRanges[j])) {\n minToPartitionRange[\n this.orderedPartitionKeyRanges[j][Constants.PartitionKeyRange.MinInclusive]\n ] = this.orderedPartitionKeyRanges[j];\n }\n }\n }\n\n const overlappingPartitionKeyRanges = Object.keys(minToPartitionRange).map(\n (k) => minToPartitionRange[k],\n );\n\n return overlappingPartitionKeyRanges.sort((a, b) => {\n return a[Constants.PartitionKeyRange.MinInclusive].localeCompare(\n b[Constants.PartitionKeyRange.MinInclusive],\n );\n });\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Constants } from \"../common/constants\";\nimport { InMemoryCollectionRoutingMap } from \"./inMemoryCollectionRoutingMap\";\n\n/**\n * @hidden\n */\nfunction compareRanges(a: any, b: any): 0 | 1 | -1 {\n const aVal = a[0][Constants.PartitionKeyRange.MinInclusive];\n const bVal = b[0][Constants.PartitionKeyRange.MinInclusive];\n if (aVal > bVal) {\n return 1;\n }\n if (aVal < bVal) {\n return -1;\n }\n return 0;\n}\n\n/** @hidden */\nexport function createCompleteRoutingMap(\n partitionKeyRangeInfoTuppleList: any[],\n): InMemoryCollectionRoutingMap {\n const rangeById: any = {}; // TODO: any\n const rangeByInfo: any = {}; // TODO: any\n\n let sortedRanges = [];\n\n // the for loop doesn't invoke any async callback\n for (const r of partitionKeyRangeInfoTuppleList) {\n rangeById[r[0][Constants.PartitionKeyRange.Id]] = r;\n rangeByInfo[r[1]] = r[0];\n sortedRanges.push(r);\n }\n\n sortedRanges = sortedRanges.sort(compareRanges);\n const partitionKeyOrderedRange = sortedRanges.map((r) => r[0]);\n const orderedPartitionInfo = sortedRanges.map((r) => r[1]);\n\n if (!isCompleteSetOfRange(partitionKeyOrderedRange)) {\n return undefined;\n }\n return new InMemoryCollectionRoutingMap(partitionKeyOrderedRange, orderedPartitionInfo);\n}\n\n/**\n * @hidden\n */\nfunction isCompleteSetOfRange(partitionKeyOrderedRange: any): boolean {\n // TODO: any\n let isComplete = false;\n if (partitionKeyOrderedRange.length > 0) {\n const firstRange = partitionKeyOrderedRange[0];\n const lastRange = partitionKeyOrderedRange[partitionKeyOrderedRange.length - 1];\n isComplete =\n firstRange[Constants.PartitionKeyRange.MinInclusive] ===\n Constants.EffectivePartitionKeyConstants.MinimumInclusiveEffectivePartitionKey;\n isComplete =\n isComplete &&\n lastRange[Constants.PartitionKeyRange.MaxExclusive] ===\n Constants.EffectivePartitionKeyConstants.MaximumExclusiveEffectivePartitionKey;\n\n for (let i = 1; i < partitionKeyOrderedRange.length; i++) {\n const previousRange = partitionKeyOrderedRange[i - 1];\n const currentRange = partitionKeyOrderedRange[i];\n isComplete =\n isComplete &&\n previousRange[Constants.PartitionKeyRange.MaxExclusive] ===\n currentRange[Constants.PartitionKeyRange.MinInclusive];\n\n if (!isComplete) {\n if (\n previousRange[Constants.PartitionKeyRange.MaxExclusive] >\n currentRange[Constants.PartitionKeyRange.MinInclusive]\n ) {\n throw Error(\"Ranges overlap\");\n }\n break;\n }\n }\n }\n return isComplete;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { MetadataLookUpType } from \"../CosmosDiagnostics\";\nimport type { PartitionKeyRange } from \"../client/Container/PartitionKeyRange\";\nimport type { ClientContext } from \"../ClientContext\";\nimport { getIdFromLink } from \"../common/helper\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal\";\nimport { withMetadataDiagnostics } from \"../utils/diagnostics\";\nimport { createCompleteRoutingMap } from \"./CollectionRoutingMapFactory\";\nimport type { InMemoryCollectionRoutingMap } from \"./inMemoryCollectionRoutingMap\";\nimport type { QueryRange } from \"./QueryRange\";\n\n/** @hidden */\nexport class PartitionKeyRangeCache {\n private collectionRoutingMapByCollectionId: {\n [key: string]: Promise;\n };\n\n constructor(private clientContext: ClientContext) {\n this.collectionRoutingMapByCollectionId = {};\n }\n /**\n * Finds or Instantiates the requested Collection Routing Map\n * @param collectionLink - Requested collectionLink\n * @hidden\n */\n public async onCollectionRoutingMap(\n collectionLink: string,\n diagnosticNode: DiagnosticNodeInternal,\n forceRefresh: boolean = false,\n ): Promise {\n const collectionId = getIdFromLink(collectionLink);\n if (this.collectionRoutingMapByCollectionId[collectionId] === undefined || forceRefresh) {\n this.collectionRoutingMapByCollectionId[collectionId] = this.requestCollectionRoutingMap(\n collectionLink,\n diagnosticNode,\n );\n }\n return this.collectionRoutingMapByCollectionId[collectionId];\n }\n\n /**\n * Given the query ranges and a collection, invokes the callback on the list of overlapping partition key ranges\n * @hidden\n */\n public async getOverlappingRanges(\n collectionLink: string,\n queryRange: QueryRange,\n diagnosticNode: DiagnosticNodeInternal,\n forceRefresh: boolean = false,\n ): Promise {\n const crm = await this.onCollectionRoutingMap(collectionLink, diagnosticNode, forceRefresh);\n return crm.getOverlappingRanges(queryRange);\n }\n\n private async requestCollectionRoutingMap(\n collectionLink: string,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise {\n const { resources } = await withMetadataDiagnostics(\n async (metadataDiagnostics: DiagnosticNodeInternal) => {\n return this.clientContext\n .queryPartitionKeyRanges(collectionLink)\n .fetchAllInternal(metadataDiagnostics);\n },\n diagnosticNode,\n MetadataLookUpType.PartitionKeyRangeLookUp,\n );\n return createCompleteRoutingMap(resources.map((r) => [r, true]));\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../ClientContext\";\nimport { Constants } from \"../common/constants\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal\";\nimport { PartitionKeyRangeCache } from \"./partitionKeyRangeCache\";\nimport { QueryRange } from \"./QueryRange\";\n\n/** @hidden */\nexport const PARITIONKEYRANGE = Constants.PartitionKeyRange;\n\n/** @hidden */\nexport class SmartRoutingMapProvider {\n private partitionKeyRangeCache: PartitionKeyRangeCache;\n\n constructor(clientContext: ClientContext) {\n this.partitionKeyRangeCache = new PartitionKeyRangeCache(clientContext);\n }\n private static _secondRangeIsAfterFirstRange(range1: QueryRange, range2: QueryRange): boolean {\n if (typeof range1.max === \"undefined\") {\n throw new Error(\"range1 must have max\");\n }\n\n if (typeof range2.min === \"undefined\") {\n throw new Error(\"range2 must have min\");\n }\n\n if (range1.max > range2.min) {\n // r.min < #previous_r.max\n return false;\n } else {\n if (range1.max === range2.min && range1.isMaxInclusive && range2.isMinInclusive) {\n // the inclusive ending endpoint of previous_r is the same as the inclusive beginning endpoint of r\n // they share a point\n return false;\n }\n return true;\n }\n }\n\n private static _isSortedAndNonOverlapping(ranges: QueryRange[]): boolean {\n for (let idx = 1; idx < ranges.length; idx++) {\n const previousR = ranges[idx - 1];\n const r = ranges[idx];\n if (!this._secondRangeIsAfterFirstRange(previousR, r)) {\n return false;\n }\n }\n return true;\n }\n\n private static _stringMax(a: string, b: string): string {\n return a >= b ? a : b;\n }\n\n private static _stringCompare(a: string, b: string): 1 | 0 | -1 {\n return a === b ? 0 : a > b ? 1 : -1;\n }\n\n private static _subtractRange(r: QueryRange, partitionKeyRange: any): QueryRange {\n const left = this._stringMax(partitionKeyRange[PARITIONKEYRANGE.MaxExclusive], r.min);\n const leftInclusive = this._stringCompare(left, r.min) === 0 ? r.isMinInclusive : false;\n return new QueryRange(left, r.max, leftInclusive, r.isMaxInclusive);\n }\n\n /**\n * Given the sorted ranges and a collection, invokes the callback on the list of overlapping partition key ranges\n * @param callback - Function execute on the overlapping partition key ranges result,\n * takes two parameters error, partition key ranges\n * @hidden\n */\n public async getOverlappingRanges(\n collectionLink: string,\n sortedRanges: QueryRange[],\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise {\n // validate if the list is non- overlapping and sorted TODO: any PartitionKeyRanges\n if (!SmartRoutingMapProvider._isSortedAndNonOverlapping(sortedRanges)) {\n throw new Error(\"the list of ranges is not a non-overlapping sorted ranges\");\n }\n\n let partitionKeyRanges: any[] = []; // TODO: any ParitionKeyRanges\n\n if (sortedRanges.length === 0) {\n return partitionKeyRanges;\n }\n\n const collectionRoutingMap = await this.partitionKeyRangeCache.onCollectionRoutingMap(\n collectionLink,\n diagnosticNode,\n );\n\n let index = 0;\n let currentProvidedRange = sortedRanges[index];\n for (;;) {\n if (currentProvidedRange.isEmpty()) {\n // skip and go to the next item\n if (++index >= sortedRanges.length) {\n return partitionKeyRanges;\n }\n currentProvidedRange = sortedRanges[index];\n continue;\n }\n\n let queryRange;\n if (partitionKeyRanges.length > 0) {\n queryRange = SmartRoutingMapProvider._subtractRange(\n currentProvidedRange,\n partitionKeyRanges[partitionKeyRanges.length - 1],\n );\n } else {\n queryRange = currentProvidedRange;\n }\n\n const overlappingRanges = collectionRoutingMap.getOverlappingRanges(queryRange);\n if (overlappingRanges.length <= 0) {\n throw new Error(`error: returned overlapping ranges for queryRange ${queryRange} is empty`);\n }\n partitionKeyRanges = partitionKeyRanges.concat(overlappingRanges);\n\n const lastKnownTargetRange = QueryRange.parsePartitionKeyRange(\n partitionKeyRanges[partitionKeyRanges.length - 1],\n );\n if (!lastKnownTargetRange) {\n throw new Error(\"expected lastKnowTargetRange to be truthy\");\n }\n // the overlapping ranges must contain the requested range\n\n if (\n SmartRoutingMapProvider._stringCompare(currentProvidedRange.max, lastKnownTargetRange.max) >\n 0\n ) {\n throw new Error(`error: returned overlapping ranges ${overlappingRanges} \\\n does not contain the requested range ${queryRange}`);\n }\n\n // the current range is contained in partitionKeyRanges just move forward\n if (++index >= sortedRanges.length) {\n return partitionKeyRanges;\n }\n currentProvidedRange = sortedRanges[index];\n\n while (\n SmartRoutingMapProvider._stringCompare(\n currentProvidedRange.max,\n lastKnownTargetRange.max,\n ) <= 0\n ) {\n // the current range is covered too.just move forward\n if (++index >= sortedRanges.length) {\n return partitionKeyRanges;\n }\n currentProvidedRange = sortedRanges[index];\n }\n }\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/** @hidden */\nexport enum FetchResultType {\n \"Done\" = 0,\n \"Exception\" = 1,\n \"Result\" = 2,\n}\n\n/** @hidden */\nexport class FetchResult {\n public feedResponse: any;\n public fetchResultType: FetchResultType;\n public error: any;\n /**\n * Wraps fetch results for the document producer.\n * This allows the document producer to buffer exceptions so that actual results don't get flushed during splits.\n *\n * @param feedReponse - The response the document producer got back on a successful fetch\n * @param error - The exception meant to be buffered on an unsuccessful fetch\n * @hidden\n */\n constructor(feedResponse: unknown, error: unknown) {\n // TODO: feedResponse/error\n if (feedResponse !== undefined) {\n this.feedResponse = feedResponse;\n this.fetchResultType = FetchResultType.Result;\n } else {\n this.error = error;\n this.fetchResultType = FetchResultType.Exception;\n }\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { PartitionKeyRange, Resource } from \"../client\";\nimport type { ClientContext } from \"../ClientContext\";\nimport {\n Constants,\n getIdFromLink,\n getPathFromLink,\n ResourceType,\n StatusCodes,\n SubStatusCodes,\n} from \"../common\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal\";\nimport type { FeedOptions } from \"../request\";\nimport type { Response } from \"../request\";\nimport type { FetchFunctionCallback } from \"./defaultQueryExecutionContext\";\nimport { DefaultQueryExecutionContext } from \"./defaultQueryExecutionContext\";\nimport { FetchResult, FetchResultType } from \"./FetchResult\";\nimport type { CosmosHeaders } from \"./headerUtils\";\nimport { getInitialHeader, mergeHeaders } from \"./headerUtils\";\nimport type { SqlQuerySpec } from \"./index\";\n\n/** @hidden */\nexport class DocumentProducer {\n private collectionLink: string;\n private query: string | SqlQuerySpec;\n public targetPartitionKeyRange: PartitionKeyRange;\n public fetchResults: FetchResult[];\n public allFetched: boolean;\n private err: Error;\n public previousContinuationToken: string;\n public continuationToken: string;\n public generation: number = 0;\n private respHeaders: CosmosHeaders;\n private internalExecutionContext: DefaultQueryExecutionContext;\n\n /**\n * Provides the Target Partition Range Query Execution Context.\n * @param clientContext - The service endpoint to use to create the client.\n * @param collectionLink - Represents collection link\n * @param query - A SQL query.\n * @param targetPartitionKeyRange - Query Target Partition key Range\n * @hidden\n */\n constructor(\n private clientContext: ClientContext,\n collectionLink: string,\n query: SqlQuerySpec,\n targetPartitionKeyRange: PartitionKeyRange,\n options: FeedOptions,\n correlatedActivityId: string,\n ) {\n // TODO: any options\n this.collectionLink = collectionLink;\n this.query = query;\n this.targetPartitionKeyRange = targetPartitionKeyRange;\n this.fetchResults = [];\n\n this.allFetched = false;\n this.err = undefined;\n\n this.previousContinuationToken = undefined;\n this.continuationToken = undefined;\n this.respHeaders = getInitialHeader();\n\n this.internalExecutionContext = new DefaultQueryExecutionContext(\n options,\n this.fetchFunction,\n correlatedActivityId,\n );\n }\n /**\n * Synchronously gives the contiguous buffered results (stops at the first non result) if any\n * @returns buffered current items if any\n * @hidden\n */\n public peekBufferedItems(): any[] {\n const bufferedResults = [];\n for (let i = 0, done = false; i < this.fetchResults.length && !done; i++) {\n const fetchResult = this.fetchResults[i];\n switch (fetchResult.fetchResultType) {\n case FetchResultType.Done:\n done = true;\n break;\n case FetchResultType.Exception:\n done = true;\n break;\n case FetchResultType.Result:\n bufferedResults.push(fetchResult.feedResponse);\n break;\n }\n }\n return bufferedResults;\n }\n\n public fetchFunction: FetchFunctionCallback = async (\n diagnosticNode: DiagnosticNodeInternal,\n options: FeedOptions,\n correlatedActivityId: string,\n ): Promise> => {\n const path = getPathFromLink(this.collectionLink, ResourceType.item);\n diagnosticNode.addData({ partitionKeyRangeId: this.targetPartitionKeyRange.id });\n const id = getIdFromLink(this.collectionLink);\n\n return this.clientContext.queryFeed({\n path,\n resourceType: ResourceType.item,\n resourceId: id,\n resultFn: (result: any) => result.Documents,\n query: this.query,\n options,\n diagnosticNode,\n partitionKeyRangeId: this.targetPartitionKeyRange[\"id\"],\n correlatedActivityId: correlatedActivityId,\n });\n };\n\n public hasMoreResults(): boolean {\n return this.internalExecutionContext.hasMoreResults() || this.fetchResults.length !== 0;\n }\n\n public gotSplit(): boolean {\n const fetchResult = this.fetchResults[0];\n if (fetchResult.fetchResultType === FetchResultType.Exception) {\n if (DocumentProducer._needPartitionKeyRangeCacheRefresh(fetchResult.error)) {\n return true;\n }\n }\n\n return false;\n }\n\n private _getAndResetActiveResponseHeaders(): CosmosHeaders {\n const ret = this.respHeaders;\n this.respHeaders = getInitialHeader();\n return ret;\n }\n\n private _updateStates(err: any, allFetched: boolean): void {\n // TODO: any Error\n if (err) {\n this.err = err;\n return;\n }\n if (allFetched) {\n this.allFetched = true;\n }\n if (this.internalExecutionContext.continuationToken === this.continuationToken) {\n // nothing changed\n return;\n }\n this.previousContinuationToken = this.continuationToken;\n this.continuationToken = this.internalExecutionContext.continuationToken;\n }\n\n private static _needPartitionKeyRangeCacheRefresh(error: any): boolean {\n // TODO: error\n return (\n error.code === StatusCodes.Gone &&\n \"substatus\" in error &&\n error[\"substatus\"] === SubStatusCodes.PartitionKeyRangeGone\n );\n }\n\n /**\n * Fetches and bufferes the next page of results and executes the given callback\n */\n public async bufferMore(diagnosticNode: DiagnosticNodeInternal): Promise> {\n if (this.err) {\n throw this.err;\n }\n\n try {\n const { result: resources, headers: headerResponse } =\n await this.internalExecutionContext.fetchMore(diagnosticNode);\n ++this.generation;\n this._updateStates(undefined, resources === undefined);\n if (resources !== undefined) {\n // some more results\n resources.forEach((element: any) => {\n // TODO: resources any\n this.fetchResults.push(new FetchResult(element, undefined));\n });\n }\n\n // need to modify the header response so that the query metrics are per partition\n if (headerResponse != null && Constants.HttpHeaders.QueryMetrics in headerResponse) {\n // \"0\" is the default partition before one is actually assigned.\n const queryMetrics = headerResponse[Constants.HttpHeaders.QueryMetrics][\"0\"];\n\n // Wraping query metrics in a object where the keys are the partition key range.\n headerResponse[Constants.HttpHeaders.QueryMetrics] = {};\n headerResponse[Constants.HttpHeaders.QueryMetrics][this.targetPartitionKeyRange.id] =\n queryMetrics;\n }\n\n return { result: resources, headers: headerResponse };\n } catch (err: any) {\n // TODO: any error\n if (DocumentProducer._needPartitionKeyRangeCacheRefresh(err)) {\n // Split just happend\n // Buffer the error so the execution context can still get the feedResponses in the itemBuffer\n const bufferedError = new FetchResult(undefined, err);\n this.fetchResults.push(bufferedError);\n // Putting a dummy result so that the rest of code flows\n return {\n result: [bufferedError],\n headers: err.headers,\n };\n } else {\n this._updateStates(err, err.resources === undefined);\n throw err;\n }\n }\n }\n\n /**\n * Synchronously gives the bufferend current item if any\n * @returns buffered current item if any\n * @hidden\n */\n public getTargetParitionKeyRange(): PartitionKeyRange {\n return this.targetPartitionKeyRange;\n }\n\n /**\n * Fetches the next element in the DocumentProducer.\n */\n public async nextItem(diagnosticNode: DiagnosticNodeInternal): Promise> {\n if (this.err) {\n this._updateStates(this.err, undefined);\n throw this.err;\n }\n\n try {\n const { result, headers } = await this.current(diagnosticNode);\n\n const fetchResult = this.fetchResults.shift();\n this._updateStates(undefined, result === undefined);\n if (fetchResult.feedResponse !== result) {\n throw new Error(`Expected ${fetchResult.feedResponse} to equal ${result}`);\n }\n switch (fetchResult.fetchResultType) {\n case FetchResultType.Done:\n return { result: undefined, headers };\n case FetchResultType.Exception:\n fetchResult.error.headers = headers;\n throw fetchResult.error;\n case FetchResultType.Result:\n return { result: fetchResult.feedResponse, headers };\n }\n } catch (err: any) {\n this._updateStates(err, err.item === undefined);\n throw err;\n }\n }\n\n /**\n * Retrieve the current element on the DocumentProducer.\n */\n public async current(diagnosticNode: DiagnosticNodeInternal): Promise> {\n // If something is buffered just give that\n if (this.fetchResults.length > 0) {\n const fetchResult = this.fetchResults[0];\n // Need to unwrap fetch results\n switch (fetchResult.fetchResultType) {\n case FetchResultType.Done:\n return {\n result: undefined,\n headers: this._getAndResetActiveResponseHeaders(),\n };\n case FetchResultType.Exception:\n fetchResult.error.headers = this._getAndResetActiveResponseHeaders();\n throw fetchResult.error;\n case FetchResultType.Result:\n return {\n result: fetchResult.feedResponse,\n headers: this._getAndResetActiveResponseHeaders(),\n };\n }\n }\n\n // If there isn't anymore items left to fetch then let the user know.\n if (this.allFetched) {\n return {\n result: undefined,\n headers: this._getAndResetActiveResponseHeaders(),\n };\n }\n\n // If there are no more bufferd items and there are still items to be fetched then buffer more\n const { result, headers } = await this.bufferMore(diagnosticNode);\n mergeHeaders(this.respHeaders, headers);\n if (result === undefined) {\n return { result: undefined, headers: this.respHeaders };\n }\n return this.current(diagnosticNode);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport PriorityQueue from \"priorityqueuejs\";\nimport semaphore from \"semaphore\";\nimport type { ClientContext } from \"../ClientContext\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport { createClientLogger } from \"@azure/logger\";\nimport { StatusCodes, SubStatusCodes } from \"../common/statusCodes\";\nimport type { FeedOptions, Response } from \"../request\";\nimport type { PartitionedQueryExecutionInfo } from \"../request/ErrorResponse\";\nimport { QueryRange } from \"../routing/QueryRange\";\nimport { SmartRoutingMapProvider } from \"../routing/smartRoutingMapProvider\";\nimport type { CosmosHeaders } from \"./CosmosHeaders\";\nimport { DocumentProducer } from \"./documentProducer\";\nimport type { ExecutionContext } from \"./ExecutionContext\";\nimport { getInitialHeader, mergeHeaders } from \"./headerUtils\";\nimport type { SqlQuerySpec } from \"./SqlQuerySpec\";\nimport { DiagnosticNodeInternal, DiagnosticNodeType } from \"../diagnostics/DiagnosticNodeInternal\";\nimport { addDignosticChild } from \"../utils/diagnostics\";\nimport { MetadataLookUpType } from \"../CosmosDiagnostics\";\nimport { CosmosDbDiagnosticLevel } from \"../diagnostics/CosmosDbDiagnosticLevel\";\n\n/** @hidden */\nconst logger: AzureLogger = createClientLogger(\"parallelQueryExecutionContextBase\");\n\n/** @hidden */\nexport enum ParallelQueryExecutionContextBaseStates {\n started = \"started\",\n inProgress = \"inProgress\",\n ended = \"ended\",\n}\n\n/** @hidden */\nexport abstract class ParallelQueryExecutionContextBase implements ExecutionContext {\n private err: any;\n private state: any;\n private static STATES = ParallelQueryExecutionContextBaseStates;\n private routingProvider: SmartRoutingMapProvider;\n protected sortOrders: any;\n private requestContinuation: any;\n private respHeaders: CosmosHeaders;\n private orderByPQ: PriorityQueue;\n private sem: any;\n private waitingForInternalExecutionContexts: number;\n private diagnosticNodeWrapper: {\n consumed: boolean;\n diagnosticNode: DiagnosticNodeInternal;\n };\n /**\n * Provides the ParallelQueryExecutionContextBase.\n * This is the base class that ParallelQueryExecutionContext and OrderByQueryExecutionContext will derive from.\n *\n * When handling a parallelized query, it instantiates one instance of\n * DocumentProcuder per target partition key range and aggregates the result of each.\n *\n * @param clientContext - The service endpoint to use to create the client.\n * @param collectionLink - The Collection Link\n * @param options - Represents the feed options.\n * @param partitionedQueryExecutionInfo - PartitionedQueryExecutionInfo\n * @hidden\n */\n constructor(\n private clientContext: ClientContext,\n private collectionLink: string,\n private query: string | SqlQuerySpec,\n private options: FeedOptions,\n private partitionedQueryExecutionInfo: PartitionedQueryExecutionInfo,\n private correlatedActivityId: string,\n ) {\n this.clientContext = clientContext;\n this.collectionLink = collectionLink;\n this.query = query;\n this.options = options;\n this.partitionedQueryExecutionInfo = partitionedQueryExecutionInfo;\n this.correlatedActivityId = correlatedActivityId;\n this.diagnosticNodeWrapper = {\n consumed: false,\n diagnosticNode: new DiagnosticNodeInternal(\n clientContext.diagnosticLevel,\n DiagnosticNodeType.PARALLEL_QUERY_NODE,\n null,\n ),\n };\n this.diagnosticNodeWrapper.diagnosticNode.addData({ stateful: true });\n this.err = undefined;\n this.state = ParallelQueryExecutionContextBase.STATES.started;\n this.routingProvider = new SmartRoutingMapProvider(this.clientContext);\n this.sortOrders = this.partitionedQueryExecutionInfo.queryInfo.orderBy;\n\n this.requestContinuation = options ? options.continuationToken || options.continuation : null;\n // response headers of undergoing operation\n this.respHeaders = getInitialHeader();\n\n // Make priority queue for documentProducers\n // The comparator is supplied by the derived class\n this.orderByPQ = new PriorityQueue(\n (a: DocumentProducer, b: DocumentProducer) => this.documentProducerComparator(b, a),\n );\n // Creating the documentProducers\n this.sem = semaphore(1);\n // Creating callback for semaphore\n // TODO: Code smell\n const createDocumentProducersAndFillUpPriorityQueueFunc = async (): Promise => {\n // ensure the lock is released after finishing up\n try {\n const targetPartitionRanges = await this._onTargetPartitionRanges();\n this.waitingForInternalExecutionContexts = targetPartitionRanges.length;\n\n const maxDegreeOfParallelism =\n options.maxDegreeOfParallelism === undefined || options.maxDegreeOfParallelism < 1\n ? targetPartitionRanges.length\n : Math.min(options.maxDegreeOfParallelism, targetPartitionRanges.length);\n\n logger.info(\n \"Query starting against \" +\n targetPartitionRanges.length +\n \" ranges with parallelism of \" +\n maxDegreeOfParallelism,\n );\n\n const parallelismSem = semaphore(maxDegreeOfParallelism);\n let filteredPartitionKeyRanges = [];\n // The document producers generated from filteredPartitionKeyRanges\n const targetPartitionQueryExecutionContextList: DocumentProducer[] = [];\n\n if (this.requestContinuation) {\n throw new Error(\"Continuation tokens are not yet supported for cross partition queries\");\n } else {\n filteredPartitionKeyRanges = targetPartitionRanges;\n }\n\n // Create one documentProducer for each partitionTargetRange\n filteredPartitionKeyRanges.forEach((partitionTargetRange: any) => {\n // TODO: any partitionTargetRange\n // no async callback\n targetPartitionQueryExecutionContextList.push(\n this._createTargetPartitionQueryExecutionContext(partitionTargetRange),\n );\n });\n\n // Fill up our priority queue with documentProducers\n targetPartitionQueryExecutionContextList.forEach((documentProducer): void => {\n // has async callback\n const throttledFunc = async (): Promise => {\n try {\n const { result: document, headers } = await documentProducer.current(\n this.getDiagnosticNode(),\n );\n this._mergeWithActiveResponseHeaders(headers);\n if (document === undefined) {\n // no results on this one\n return;\n }\n // if there are matching results in the target ex range add it to the priority queue\n try {\n this.orderByPQ.enq(documentProducer);\n } catch (e: any) {\n this.err = e;\n }\n } catch (err: any) {\n this._mergeWithActiveResponseHeaders(err.headers);\n this.err = err;\n } finally {\n parallelismSem.leave();\n this._decrementInitiationLock();\n }\n };\n parallelismSem.take(throttledFunc);\n });\n } catch (err: any) {\n this.err = err;\n // release the lock\n this.sem.leave();\n return;\n }\n };\n this.sem.take(createDocumentProducersAndFillUpPriorityQueueFunc);\n }\n\n protected abstract documentProducerComparator(\n dp1: DocumentProducer,\n dp2: DocumentProducer,\n ): number;\n\n private _decrementInitiationLock(): void {\n // decrements waitingForInternalExecutionContexts\n // if waitingForInternalExecutionContexts reaches 0 releases the semaphore and changes the state\n this.waitingForInternalExecutionContexts = this.waitingForInternalExecutionContexts - 1;\n if (this.waitingForInternalExecutionContexts === 0) {\n this.sem.leave();\n if (this.orderByPQ.size() === 0) {\n this.state = ParallelQueryExecutionContextBase.STATES.inProgress;\n }\n }\n }\n\n private _mergeWithActiveResponseHeaders(headers: CosmosHeaders): void {\n mergeHeaders(this.respHeaders, headers);\n }\n\n private _getAndResetActiveResponseHeaders(): CosmosHeaders {\n const ret = this.respHeaders;\n this.respHeaders = getInitialHeader();\n return ret;\n }\n\n private getDiagnosticNode(): DiagnosticNodeInternal {\n return this.diagnosticNodeWrapper.diagnosticNode;\n }\n\n private async _onTargetPartitionRanges(): Promise {\n // invokes the callback when the target partition ranges are ready\n const parsedRanges = this.partitionedQueryExecutionInfo.queryRanges;\n const queryRanges = parsedRanges.map((item) => QueryRange.parseFromDict(item));\n return this.routingProvider.getOverlappingRanges(\n this.collectionLink,\n queryRanges,\n this.getDiagnosticNode(),\n );\n }\n\n /**\n * Gets the replacement ranges for a partitionkeyrange that has been split\n */\n private async _getReplacementPartitionKeyRanges(\n documentProducer: DocumentProducer,\n ): Promise {\n const partitionKeyRange = documentProducer.targetPartitionKeyRange;\n // Download the new routing map\n this.routingProvider = new SmartRoutingMapProvider(this.clientContext);\n // Get the queryRange that relates to this partitionKeyRange\n const queryRange = QueryRange.parsePartitionKeyRange(partitionKeyRange);\n return this.routingProvider.getOverlappingRanges(\n this.collectionLink,\n [queryRange],\n this.getDiagnosticNode(),\n );\n }\n\n // TODO: P0 Code smell - can barely tell what this is doing\n /**\n * Removes the current document producer from the priqueue,\n * replaces that document producer with child document producers,\n * then reexecutes the originFunction with the corrrected executionContext\n */\n private async _repairExecutionContext(\n diagnosticNode: DiagnosticNodeInternal,\n originFunction: any,\n ): Promise {\n // TODO: any\n // Get the replacement ranges\n // Removing the invalid documentProducer from the orderByPQ\n const parentDocumentProducer = this.orderByPQ.deq();\n try {\n const replacementPartitionKeyRanges: any[] =\n await this._getReplacementPartitionKeyRanges(parentDocumentProducer);\n const replacementDocumentProducers: DocumentProducer[] = [];\n // Create the replacement documentProducers\n replacementPartitionKeyRanges.forEach((partitionKeyRange) => {\n // Create replacment document producers with the parent's continuationToken\n const replacementDocumentProducer = this._createTargetPartitionQueryExecutionContext(\n partitionKeyRange,\n parentDocumentProducer.continuationToken,\n );\n replacementDocumentProducers.push(replacementDocumentProducer);\n });\n // We need to check if the documentProducers even has anything left to fetch from before enqueing them\n const checkAndEnqueueDocumentProducer = async (\n documentProducerToCheck: DocumentProducer,\n checkNextDocumentProducerCallback: any,\n ): Promise => {\n try {\n const { result: afterItem } = await documentProducerToCheck.current(diagnosticNode);\n if (afterItem === undefined) {\n // no more results left in this document producer, so we don't enqueue it\n } else {\n // Safe to put document producer back in the queue\n this.orderByPQ.enq(documentProducerToCheck);\n }\n\n await checkNextDocumentProducerCallback();\n } catch (err: any) {\n this.err = err;\n return;\n }\n };\n const checkAndEnqueueDocumentProducers = async (rdp: DocumentProducer[]): Promise => {\n if (rdp.length > 0) {\n // We still have a replacementDocumentProducer to check\n const replacementDocumentProducer = rdp.shift();\n await checkAndEnqueueDocumentProducer(replacementDocumentProducer, async () => {\n await checkAndEnqueueDocumentProducers(rdp);\n });\n } else {\n // reexecutes the originFunction with the corrrected executionContext\n return originFunction();\n }\n };\n // Invoke the recursive function to get the ball rolling\n await checkAndEnqueueDocumentProducers(replacementDocumentProducers);\n } catch (err: any) {\n this.err = err;\n throw err;\n }\n }\n\n private static _needPartitionKeyRangeCacheRefresh(error: any): boolean {\n // TODO: any error\n return (\n error.code === StatusCodes.Gone &&\n \"substatus\" in error &&\n error[\"substatus\"] === SubStatusCodes.PartitionKeyRangeGone\n );\n }\n\n /**\n * Checks to see if the executionContext needs to be repaired.\n * if so it repairs the execution context and executes the ifCallback,\n * else it continues with the current execution context and executes the elseCallback\n */\n private async _repairExecutionContextIfNeeded(\n diagnosticNode: DiagnosticNodeInternal,\n ifCallback: any,\n elseCallback: any,\n ): Promise {\n const documentProducer = this.orderByPQ.peek();\n // Check if split happened\n try {\n await documentProducer.current(diagnosticNode);\n elseCallback();\n } catch (err: any) {\n if (ParallelQueryExecutionContextBase._needPartitionKeyRangeCacheRefresh(err)) {\n // Split has happened so we need to repair execution context before continueing\n return addDignosticChild(\n (childNode) => this._repairExecutionContext(childNode, ifCallback),\n diagnosticNode,\n DiagnosticNodeType.QUERY_REPAIR_NODE,\n );\n } else {\n // Something actually bad happened ...\n this.err = err;\n throw err;\n }\n }\n }\n\n /**\n * Fetches the next element in the ParallelQueryExecutionContextBase.\n */\n public async nextItem(diagnosticNode: DiagnosticNodeInternal): Promise> {\n if (this.err) {\n // if there is a prior error return error\n throw this.err;\n }\n return new Promise>((resolve, reject) => {\n this.sem.take(() => {\n if (!this.diagnosticNodeWrapper.consumed) {\n diagnosticNode.addChildNode(\n this.diagnosticNodeWrapper.diagnosticNode,\n CosmosDbDiagnosticLevel.debug,\n MetadataLookUpType.QueryPlanLookUp,\n );\n this.diagnosticNodeWrapper.diagnosticNode = undefined;\n this.diagnosticNodeWrapper.consumed = true;\n } else {\n this.diagnosticNodeWrapper.diagnosticNode = diagnosticNode;\n }\n\n // NOTE: lock must be released before invoking quitting\n if (this.err) {\n // release the lock before invoking callback\n this.sem.leave();\n // if there is a prior error return error\n this.err.headers = this._getAndResetActiveResponseHeaders();\n reject(this.err);\n return;\n }\n\n if (this.orderByPQ.size() === 0) {\n // there is no more results\n this.state = ParallelQueryExecutionContextBase.STATES.ended;\n // release the lock before invoking callback\n this.sem.leave();\n return resolve({\n result: undefined,\n headers: this._getAndResetActiveResponseHeaders(),\n });\n }\n\n const ifCallback = (): void => {\n // Release the semaphore to avoid deadlock\n this.sem.leave();\n // Reexcute the function\n return resolve(this.nextItem(diagnosticNode));\n };\n const elseCallback = async (): Promise => {\n let documentProducer: DocumentProducer;\n try {\n documentProducer = this.orderByPQ.deq();\n } catch (e: any) {\n // if comparing elements of the priority queue throws exception\n // set that error and return error\n this.err = e;\n // release the lock before invoking callback\n this.sem.leave();\n this.err.headers = this._getAndResetActiveResponseHeaders();\n reject(this.err);\n return;\n }\n\n let item: any;\n let headers: CosmosHeaders;\n try {\n const response = await documentProducer.nextItem(diagnosticNode);\n item = response.result;\n headers = response.headers;\n this._mergeWithActiveResponseHeaders(headers);\n if (item === undefined) {\n // this should never happen\n // because the documentProducer already has buffered an item\n // assert item !== undefined\n this.err = new Error(\n `Extracted DocumentProducer from the priority queue \\\n doesn't have any buffered item!`,\n );\n // release the lock before invoking callback\n this.sem.leave();\n return resolve({\n result: undefined,\n headers: this._getAndResetActiveResponseHeaders(),\n });\n }\n } catch (err: any) {\n this.err = new Error(\n `Extracted DocumentProducer from the priority queue fails to get the \\\n buffered item. Due to ${JSON.stringify(err)}`,\n );\n this.err.headers = this._getAndResetActiveResponseHeaders();\n // release the lock before invoking callback\n this.sem.leave();\n reject(this.err);\n return;\n }\n\n // we need to put back the document producer to the queue if it has more elements.\n // the lock will be released after we know document producer must be put back in the queue or not\n try {\n const { result: afterItem, headers: otherHeaders } =\n await documentProducer.current(diagnosticNode);\n this._mergeWithActiveResponseHeaders(otherHeaders);\n if (afterItem === undefined) {\n // no more results is left in this document producer\n } else {\n try {\n const headItem = documentProducer.fetchResults[0];\n if (typeof headItem === \"undefined\") {\n throw new Error(\n \"Extracted DocumentProducer from PQ is invalid state with no result!\",\n );\n }\n this.orderByPQ.enq(documentProducer);\n } catch (e: any) {\n // if comparing elements in priority queue throws exception\n // set error\n this.err = e;\n }\n }\n } catch (err: any) {\n if (ParallelQueryExecutionContextBase._needPartitionKeyRangeCacheRefresh(err)) {\n // We want the document producer enqueued\n // So that later parts of the code can repair the execution context\n this.orderByPQ.enq(documentProducer);\n } else {\n // Something actually bad happened\n this.err = err;\n reject(this.err);\n }\n } finally {\n // release the lock before returning\n this.sem.leave();\n }\n // invoke the callback on the item\n return resolve({\n result: item,\n headers: this._getAndResetActiveResponseHeaders(),\n });\n };\n this._repairExecutionContextIfNeeded(diagnosticNode, ifCallback, elseCallback).catch(\n reject,\n );\n });\n });\n }\n\n /**\n * Determine if there are still remaining resources to processs based on the value of the continuation\n * token or the elements remaining on the current batch in the QueryIterator.\n * @returns true if there is other elements to process in the ParallelQueryExecutionContextBase.\n */\n public hasMoreResults(): boolean {\n return !(\n this.state === ParallelQueryExecutionContextBase.STATES.ended || this.err !== undefined\n );\n }\n\n /**\n * Creates document producers\n */\n private _createTargetPartitionQueryExecutionContext(\n partitionKeyTargetRange: any,\n continuationToken?: any,\n ): DocumentProducer {\n // TODO: any\n // creates target partition range Query Execution Context\n let rewrittenQuery = this.partitionedQueryExecutionInfo.queryInfo.rewrittenQuery;\n let sqlQuerySpec: SqlQuerySpec;\n const query = this.query;\n if (typeof query === \"string\") {\n sqlQuerySpec = { query };\n } else {\n sqlQuerySpec = query;\n }\n\n const formatPlaceHolder = \"{documentdb-formattableorderbyquery-filter}\";\n if (rewrittenQuery) {\n sqlQuerySpec = JSON.parse(JSON.stringify(sqlQuerySpec));\n // We hardcode the formattable filter to true for now\n rewrittenQuery = rewrittenQuery.replace(formatPlaceHolder, \"true\");\n sqlQuerySpec[\"query\"] = rewrittenQuery;\n }\n\n const options = { ...this.options };\n options.continuationToken = continuationToken;\n\n return new DocumentProducer(\n this.clientContext,\n this.collectionLink,\n sqlQuerySpec,\n partitionKeyTargetRange,\n options,\n this.correlatedActivityId,\n );\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../ClientContext\";\nimport type { PartitionedQueryExecutionInfo } from \"../request/ErrorResponse\";\nimport type { FeedOptions } from \"../request/FeedOptions\";\nimport type { DocumentProducer } from \"./documentProducer\";\nimport type { ExecutionContext } from \"./ExecutionContext\";\nimport { OrderByDocumentProducerComparator } from \"./orderByDocumentProducerComparator\";\nimport { ParallelQueryExecutionContextBase } from \"./parallelQueryExecutionContextBase\";\nimport type { SqlQuerySpec } from \"./SqlQuerySpec\";\n\n/** @hidden */\nexport class OrderByQueryExecutionContext\n extends ParallelQueryExecutionContextBase\n implements ExecutionContext\n{\n private orderByComparator: any;\n /**\n * Provides the OrderByQueryExecutionContext.\n * This class is capable of handling orderby queries and dervives from ParallelQueryExecutionContextBase.\n *\n * When handling a parallelized query, it instantiates one instance of\n * DocumentProcuder per target partition key range and aggregates the result of each.\n *\n * @param clientContext - The service endpoint to use to create the client.\n * @param collectionLink - The Collection Link\n * @param options - Represents the feed options.\n * @param partitionedQueryExecutionInfo - PartitionedQueryExecutionInfo\n * @hidden\n */\n constructor(\n clientContext: ClientContext,\n collectionLink: string,\n query: string | SqlQuerySpec,\n options: FeedOptions,\n partitionedQueryExecutionInfo: PartitionedQueryExecutionInfo,\n correlatedActivityId: string,\n ) {\n // Calling on base class constructor\n super(\n clientContext,\n collectionLink,\n query,\n options,\n partitionedQueryExecutionInfo,\n correlatedActivityId,\n );\n this.orderByComparator = new OrderByDocumentProducerComparator(this.sortOrders);\n }\n // Instance members are inherited\n\n // Overriding documentProducerComparator for OrderByQueryExecutionContexts\n /**\n * Provides a Comparator for document producers which respects orderby sort order.\n * @returns Comparator Function\n * @hidden\n */\n public documentProducerComparator(docProd1: DocumentProducer, docProd2: DocumentProducer): any {\n return this.orderByComparator.compare(docProd1, docProd2);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { DocumentProducer } from \"./documentProducer\";\nimport type { ExecutionContext } from \"./ExecutionContext\";\nimport { ParallelQueryExecutionContextBase } from \"./parallelQueryExecutionContextBase\";\n\n/**\n * Provides the ParallelQueryExecutionContext.\n * This class is capable of handling parallelized queries and derives from ParallelQueryExecutionContextBase.\n * @hidden\n */\nexport class ParallelQueryExecutionContext\n extends ParallelQueryExecutionContextBase\n implements ExecutionContext\n{\n // Instance members are inherited\n\n // Overriding documentProducerComparator for ParallelQueryExecutionContexts\n /**\n * Provides a Comparator for document producers using the min value of the corresponding target partition.\n * @returns Comparator Function\n * @hidden\n */\n public documentProducerComparator(\n docProd1: DocumentProducer,\n docProd2: DocumentProducer,\n ): number {\n return docProd1.generation - docProd2.generation;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { Response } from \"../../request\";\nimport type { ExecutionContext } from \"../ExecutionContext\";\nimport type { CosmosHeaders } from \"../CosmosHeaders\";\nimport type { AggregateType, QueryInfo } from \"../../request/ErrorResponse\";\nimport { hashObject } from \"../../utils/hashObject\";\nimport type { Aggregator } from \"../Aggregators\";\nimport { createAggregator } from \"../Aggregators\";\nimport { getInitialHeader, mergeHeaders } from \"../headerUtils\";\nimport { emptyGroup, extractAggregateResult } from \"./emptyGroup\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\n\ninterface GroupByResponse {\n result: GroupByResult;\n headers: CosmosHeaders;\n}\n\ninterface GroupByResult {\n groupByItems: any[];\n payload: any;\n}\n\n/** @hidden */\nexport class GroupByValueEndpointComponent implements ExecutionContext {\n private readonly aggregators: Map = new Map();\n private readonly aggregateResultArray: any[] = [];\n private aggregateType: AggregateType;\n private completed: boolean = false;\n\n constructor(\n private executionContext: ExecutionContext,\n private queryInfo: QueryInfo,\n ) {\n // VALUE queries will only every have a single grouping\n this.aggregateType = this.queryInfo.aggregates[0];\n }\n\n public async nextItem(diagnosticNode: DiagnosticNodeInternal): Promise> {\n // Start returning results if we have processed a full results set\n if (this.aggregateResultArray.length > 0) {\n return {\n result: this.aggregateResultArray.pop(),\n headers: getInitialHeader(),\n };\n }\n\n if (this.completed) {\n return {\n result: undefined,\n headers: getInitialHeader(),\n };\n }\n\n const aggregateHeaders = getInitialHeader();\n\n while (this.executionContext.hasMoreResults()) {\n // Grab the next result\n const { result, headers } = (await this.executionContext.nextItem(\n diagnosticNode,\n )) as GroupByResponse;\n mergeHeaders(aggregateHeaders, headers);\n\n // If it exists, process it via aggregators\n if (result) {\n let grouping: string = emptyGroup;\n let payload: any = result;\n if (result.groupByItems) {\n // If the query contains a GROUP BY clause, it will have a payload property and groupByItems\n payload = result.payload;\n grouping = await hashObject(result.groupByItems);\n }\n\n const aggregator = this.aggregators.get(grouping);\n if (!aggregator) {\n // This is the first time we have seen a grouping so create a new aggregator\n this.aggregators.set(grouping, createAggregator(this.aggregateType));\n }\n\n if (this.aggregateType) {\n const aggregateResult = extractAggregateResult(payload[0]);\n // if aggregate result is null, we need to short circuit aggregation and return undefined\n if (aggregateResult === null) {\n this.completed = true;\n }\n this.aggregators.get(grouping).aggregate(aggregateResult);\n } else {\n // Queries with no aggregates pass the payload directly to the aggregator\n // Example: SELECT VALUE c.team FROM c GROUP BY c.team\n this.aggregators.get(grouping).aggregate(payload);\n }\n }\n }\n\n // We bail early since we got an undefined result back `[{}]`\n if (this.completed) {\n return {\n result: undefined,\n headers: aggregateHeaders,\n };\n }\n // If no results are left in the underlying execution context, convert our aggregate results to an array\n for (const aggregator of this.aggregators.values()) {\n this.aggregateResultArray.push(aggregator.getResult());\n }\n this.completed = true;\n return {\n result: this.aggregateResultArray.pop(),\n headers: aggregateHeaders,\n };\n }\n\n public hasMoreResults(): boolean {\n return this.executionContext.hasMoreResults() || this.aggregateResultArray.length > 0;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport PriorityQueue from \"priorityqueuejs\";\n\nexport class FixedSizePriorityQueue {\n private pq: PriorityQueue;\n // The compare function should return a positive number if a is greater than b, a negative number if a is less than b, and 0 if a is equal to b.\n private compareFn: (a: T, b: T) => number;\n private pqMaxSize: number;\n\n constructor(compareFn: (a: T, b: T) => number, pqMaxSize: number) {\n this.compareFn = compareFn;\n this.pq = new PriorityQueue(this.compareFn);\n this.pqMaxSize = pqMaxSize;\n }\n\n public enqueue(item: T): void {\n if (this.pq.size() < this.pqMaxSize) {\n this.pq.enq(item);\n } else {\n const topItem = this.pq.peek();\n if (this.compareFn(topItem, item) > 0) {\n this.pq.deq();\n this.pq.enq(item);\n }\n }\n }\n\n public dequeue(): T {\n return this.pq.deq();\n }\n\n public size(): number {\n return this.pq.size();\n }\n\n public isEmpty(): boolean {\n return this.pq.isEmpty();\n }\n\n public peek(): T {\n return this.pq.peek();\n }\n\n public getTopElements(): T[] {\n const elements: T[] = [];\n while (!this.pq.isEmpty()) {\n elements.unshift(this.pq.deq());\n }\n return elements;\n }\n\n // Create a new instance of FixedSizePriorityQueue with a reversed compare function and the same maximum size.\n // Enqueue all elements from the current priority queue into the reverse priority queue.\n public reverse(): FixedSizePriorityQueue {\n const reversePQ = new FixedSizePriorityQueue(\n (a: T, b: T) => -this.compareFn(a, b),\n this.pqMaxSize,\n );\n while (!this.pq.isEmpty()) {\n reversePQ.enqueue(this.pq.deq());\n }\n return reversePQ;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Stores the most favourable distinct result from a set of nonStreamingOrderBy results.\n */\nexport class NonStreamingOrderByMap {\n private map: Map;\n private compareFn: (a: T | undefined, b: T | undefined) => number;\n\n constructor(compareFn: (a: T | undefined, b: T | undefined) => number) {\n this.compareFn = compareFn;\n this.map = new Map();\n }\n\n public set(key: string, value: T): void {\n if (!this.map.has(key)) {\n // If the key is not present in the map, add it.\n this.map.set(key, value);\n } else {\n // If the key is present in the map, compare the similarity score of the new value with the old value. Keep the more favourable one.\n const oldValue = this.map.get(key);\n if (this.replaceResults(oldValue, value)) {\n this.map.set(key, value);\n }\n }\n }\n\n public get(key: string): T | undefined {\n if (!this.map.has(key)) return undefined;\n\n return this.map.get(key);\n }\n /**\n * Returns all the values in the map and resets the map.\n */\n public getAllValuesAndReset(): T[] {\n const res: T[] = [];\n for (const [key, value] of this.map) {\n res.push(value);\n this.map.delete(key);\n }\n return res;\n }\n\n private replaceResults(res1: T | undefined, res2: T | undefined): boolean {\n const res = this.compareFn(res1, res2);\n if (res < 0) return true;\n\n return false;\n }\n\n public size(): number {\n return this.map.size;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { NonStreamingOrderByResult } from \"./nonStreamingOrderByResult\";\n\n/**\n * @hidden\n * ord is used to compare different types. Eg. in ascending order, for cross type comparison, boolean will come first, then number and, then string.\n * compFunc is used to compare the same type comparison.\n */\nconst TYPEORDCOMPARATOR: {\n [type: string]: { ord: number; compFunc?: (a: any, b: any) => number };\n} = Object.freeze({\n NoValue: {\n ord: 0,\n },\n undefined: {\n ord: 1,\n },\n boolean: {\n ord: 2,\n compFunc: (a: boolean, b: boolean) => {\n return a === b ? 0 : a > b ? 1 : -1;\n },\n },\n number: {\n ord: 4,\n compFunc: (a: number, b: number) => {\n return a === b ? 0 : a > b ? 1 : -1;\n },\n },\n string: {\n ord: 5,\n compFunc: (a: string, b: string) => {\n return a === b ? 0 : a > b ? 1 : -1;\n },\n },\n});\n\n/** @hidden */\nexport class OrderByComparator {\n constructor(public sortOrder: string[]) {}\n\n public compareItems(item1: NonStreamingOrderByResult, item2: NonStreamingOrderByResult): number {\n const orderByItemsRes1 = this.getOrderByItems(item1);\n const orderByItemsRes2 = this.getOrderByItems(item2);\n\n for (let i = 0; i < orderByItemsRes1.length; i++) {\n // compares the orderby items one by one\n const compRes = this.compareOrderByItem(orderByItemsRes1[i], orderByItemsRes2[i]);\n if (compRes !== 0) {\n if (this.sortOrder[i] === \"Descending\") {\n return compRes;\n } else if (this.sortOrder[i] === \"Ascending\") {\n return -compRes;\n }\n }\n }\n }\n\n private getOrderByItems(res: any): any {\n return res[\"orderByItems\"];\n }\n\n private compareOrderByItem(orderByItem1: any, orderByItem2: any): number {\n const type1 = this.getType(orderByItem1);\n const type2 = this.getType(orderByItem2);\n return this.compareValue(orderByItem1[\"item\"], type1, orderByItem2[\"item\"], type2);\n }\n\n private getType(\n orderByItem: any,\n ):\n | \"string\"\n | \"number\"\n | \"bigint\"\n | \"boolean\"\n | \"symbol\"\n | \"undefined\"\n | \"object\"\n | \"function\"\n | \"NoValue\" {\n // TODO: any item?\n if (orderByItem === undefined || orderByItem.item === undefined) {\n return \"NoValue\";\n }\n const type = typeof orderByItem.item;\n if (TYPEORDCOMPARATOR[type] === undefined) {\n throw new Error(`unrecognizable type ${type}`);\n }\n return type;\n }\n\n private compareValue(item1: unknown, type1: string, item2: unknown, type2: string): number {\n // TODO: https://github.com/Azure/azure-sdk-for-js/issues/30122\n // currently we do not support same type and cross type comparision for object and arrays.\n\n if (type1 === \"object\" || type2 === \"object\") {\n throw new Error(\"Tried to compare an object type\");\n }\n const type1Ord = TYPEORDCOMPARATOR[type1].ord;\n const type2Ord = TYPEORDCOMPARATOR[type2].ord;\n\n // Validate if the two item are of same type or not based on the type ordinal.\n const typeCmp = type1Ord - type2Ord;\n\n // if not same type, compare based on the type ordinal. Lower ordinal takes precedence over higher ordinal.\n if (typeCmp !== 0) {\n return typeCmp;\n }\n\n // both are of the same type\n if (\n type1Ord === TYPEORDCOMPARATOR[\"undefined\"].ord ||\n type1Ord === TYPEORDCOMPARATOR[\"NoValue\"].ord\n ) {\n // if both types are undefined or Null they are equal\n return 0;\n }\n\n const compFunc = TYPEORDCOMPARATOR[type1].compFunc;\n if (typeof compFunc === \"undefined\") {\n throw new Error(\"Cannot find the comparison function\");\n }\n // same type and type is defined compare the items\n return compFunc(item1, item2);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { QueryInfo, Response } from \"../../request\";\nimport type { ExecutionContext } from \"../ExecutionContext\";\nimport { getInitialHeader } from \"../headerUtils\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport { hashObject } from \"../../utils/hashObject\";\nimport type { NonStreamingOrderByResult } from \"../nonStreamingOrderByResult\";\nimport type { NonStreamingOrderByResponse } from \"../nonStreamingOrderByResponse\";\nimport { FixedSizePriorityQueue } from \"../../utils/fixedSizePriorityQueue\";\nimport { NonStreamingOrderByMap } from \"../../utils/nonStreamingOrderByMap\";\nimport { OrderByComparator } from \"../orderByComparator\";\n\n/**\n * @hidden\n * Represents an endpoint in handling an non-streaming order by distinct query.\n */\nexport class NonStreamingOrderByDistinctEndpointComponent implements ExecutionContext {\n /**\n * A Map that holds the distinct values of the items before storing in priority queue.\n */\n private aggregateMap: NonStreamingOrderByMap;\n /**\n * A priority queue to compute the final sorted results.\n */\n private nonStreamingOrderByPQ: FixedSizePriorityQueue;\n /**\n * Array to store the final sorted results.\n */\n private finalResultArray: NonStreamingOrderByResult[];\n\n private sortOrders: string[];\n /**\n * Flag to determine if all results are fetched from backend and results can be returned.\n */\n private isCompleted: boolean = false;\n\n constructor(\n private executionContext: ExecutionContext,\n private queryInfo: QueryInfo,\n private priorityQueueBufferSize: number,\n private emitRawOrderByPayload: boolean = false,\n ) {\n this.sortOrders = this.queryInfo.orderBy;\n const comparator = new OrderByComparator(this.sortOrders);\n this.aggregateMap = new NonStreamingOrderByMap(\n (a: NonStreamingOrderByResult, b: NonStreamingOrderByResult) => {\n return comparator.compareItems(a, b);\n },\n );\n this.nonStreamingOrderByPQ = new FixedSizePriorityQueue(\n (a: NonStreamingOrderByResult, b: NonStreamingOrderByResult) => {\n return comparator.compareItems(b, a);\n },\n this.priorityQueueBufferSize,\n );\n }\n\n public async nextItem(diagnosticNode: DiagnosticNodeInternal): Promise> {\n let resHeaders = getInitialHeader();\n // if size is 0, just return undefined to signal to more results. Valid if query is TOP 0 or LIMIT 0\n if (this.priorityQueueBufferSize <= 0) {\n return {\n result: undefined,\n headers: resHeaders,\n };\n }\n\n // If there are more results in backend, keep filling map.\n if (this.executionContext.hasMoreResults()) {\n // Grab the next result\n const { result, headers } = (await this.executionContext.nextItem(\n diagnosticNode,\n )) as NonStreamingOrderByResponse;\n resHeaders = headers;\n if (result) {\n // make hash of result object and update the map if required.\n const key = await hashObject(result?.payload);\n this.aggregateMap.set(key, result);\n }\n\n // return {} to signal that there are more results to fetch.\n if (this.executionContext.hasMoreResults()) {\n return {\n result: {},\n headers: resHeaders,\n };\n }\n }\n\n // If all results are fetched from backend, prepare final results\n if (!this.executionContext.hasMoreResults() && !this.isCompleted) {\n this.isCompleted = true;\n await this.buildFinalResultArray();\n }\n\n // Return results from final array.\n if (this.finalResultArray.length > 0) {\n return {\n result: this.finalResultArray.shift(),\n headers: resHeaders,\n };\n }\n // Signal that there are no more results.\n return {\n result: undefined,\n headers: resHeaders,\n };\n }\n\n /**\n * Build final sorted result array from which responses will be served.\n */\n private async buildFinalResultArray(): Promise {\n // Fetch all distinct values from the map and store in priority queue.\n const allValues = this.aggregateMap.getAllValuesAndReset();\n for (const value of allValues) {\n this.nonStreamingOrderByPQ.enqueue(value);\n }\n\n // Compute the final result array size based on offset and limit.\n const offSet = this.queryInfo.offset ? this.queryInfo.offset : 0;\n const queueSize = this.nonStreamingOrderByPQ.size();\n const finalArraySize = queueSize - offSet;\n\n if (finalArraySize <= 0) {\n this.finalResultArray = [];\n } else {\n this.finalResultArray = new Array(finalArraySize);\n // Only keep the final result array size number of items in the final result array and discard the rest.\n for (let count = finalArraySize - 1; count >= 0; count--) {\n if (this.emitRawOrderByPayload) {\n this.finalResultArray[count] = this.nonStreamingOrderByPQ.dequeue();\n } else {\n this.finalResultArray[count] = this.nonStreamingOrderByPQ.dequeue()?.payload;\n }\n }\n }\n }\n\n public hasMoreResults(): boolean {\n if (this.priorityQueueBufferSize === 0) return false;\n return this.executionContext.hasMoreResults() || this.finalResultArray.length > 0;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport type { Response } from \"../../request\";\nimport type { ExecutionContext } from \"../ExecutionContext\";\nimport { OrderByComparator } from \"../orderByComparator\";\nimport type { NonStreamingOrderByResult } from \"../nonStreamingOrderByResult\";\nimport { FixedSizePriorityQueue } from \"../../utils/fixedSizePriorityQueue\";\nimport { getInitialHeader } from \"../headerUtils\";\n\n/**\n * @hidden\n * Represents an endpoint in handling an non-streaming order by query.\n */\nexport class NonStreamingOrderByEndpointComponent implements ExecutionContext {\n /**\n * A priority queue to store the final sorted results.\n */\n private nonStreamingOrderByPQ: FixedSizePriorityQueue;\n /**\n * Flag to determine if all results are fetched from backend and results can be returned from priority queue.\n */\n private isCompleted: boolean = false;\n /**\n * Represents an endpoint in handling an non-streaming order by query. For each processed orderby\n * result it returns 'payload' item of the result\n *\n * @param executionContext - Underlying Execution Context\n * @hidden\n */\n constructor(\n private executionContext: ExecutionContext,\n private sortOrders: any[],\n private priorityQueueBufferSize: number,\n private offset: number = 0,\n private emitRawOrderByPayload: boolean = false,\n ) {\n const comparator = new OrderByComparator(this.sortOrders);\n this.nonStreamingOrderByPQ = new FixedSizePriorityQueue(\n (a: NonStreamingOrderByResult, b: NonStreamingOrderByResult) => {\n return comparator.compareItems(b, a);\n },\n this.priorityQueueBufferSize,\n );\n }\n\n public async nextItem(diagnosticNode: DiagnosticNodeInternal): Promise> {\n let resHeaders = getInitialHeader();\n // if size is 0, just return undefined to signal to more results. Valid if query is TOP 0 or LIMIT 0\n if (this.priorityQueueBufferSize <= 0) {\n return {\n result: undefined,\n headers: resHeaders,\n };\n }\n\n // If there are more results in backend, keep filling pq.\n if (this.executionContext.hasMoreResults()) {\n const { result: item, headers } = await this.executionContext.nextItem(diagnosticNode);\n resHeaders = headers;\n if (item !== undefined) {\n this.nonStreamingOrderByPQ.enqueue(item);\n }\n\n // If the backend has more results to fetch, return {} to signal that there are more results to fetch.\n if (this.executionContext.hasMoreResults()) {\n return {\n result: {},\n headers: resHeaders,\n };\n }\n }\n // If all results are fetched from backend, prepare final results\n if (!this.executionContext.hasMoreResults() && !this.isCompleted) {\n // Set isCompleted to true.\n this.isCompleted = true;\n // Reverse the priority queue to get the results in the correct order\n this.nonStreamingOrderByPQ = this.nonStreamingOrderByPQ.reverse();\n // For offset limit case we set the size of priority queue to offset + limit\n // and we drain offset number of items from the priority queue\n while (\n this.offset < this.priorityQueueBufferSize &&\n this.offset > 0 &&\n !this.nonStreamingOrderByPQ.isEmpty()\n ) {\n this.nonStreamingOrderByPQ.dequeue();\n this.offset--;\n }\n }\n // If pq is not empty, return the result from pq.\n if (!this.nonStreamingOrderByPQ.isEmpty()) {\n let item;\n if (this.emitRawOrderByPayload) {\n item = this.nonStreamingOrderByPQ.dequeue();\n } else {\n item = this.nonStreamingOrderByPQ.dequeue()?.payload;\n }\n return {\n result: item,\n headers: resHeaders,\n };\n }\n // If pq is empty, return undefined to signal that there are no more results.\n return {\n result: undefined,\n headers: resHeaders,\n };\n }\n\n /**\n * Determine if there are still remaining resources to processs.\n * @returns true if there is other elements to process in the NonStreamingOrderByEndpointComponent.\n */\n public hasMoreResults(): boolean {\n return (\n this.priorityQueueBufferSize > 0 &&\n (this.executionContext.hasMoreResults() || !this.nonStreamingOrderByPQ.isEmpty())\n );\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../ClientContext\";\nimport type { Response, FeedOptions } from \"../request\";\nimport type { PartitionedQueryExecutionInfo, QueryInfo } from \"../request/ErrorResponse\";\nimport { ErrorResponse } from \"../request/ErrorResponse\";\nimport type { CosmosHeaders } from \"./CosmosHeaders\";\nimport { OffsetLimitEndpointComponent } from \"./EndpointComponent/OffsetLimitEndpointComponent\";\nimport { OrderByEndpointComponent } from \"./EndpointComponent/OrderByEndpointComponent\";\nimport { OrderedDistinctEndpointComponent } from \"./EndpointComponent/OrderedDistinctEndpointComponent\";\nimport { UnorderedDistinctEndpointComponent } from \"./EndpointComponent/UnorderedDistinctEndpointComponent\";\nimport { GroupByEndpointComponent } from \"./EndpointComponent/GroupByEndpointComponent\";\nimport type { ExecutionContext } from \"./ExecutionContext\";\nimport { getInitialHeader, mergeHeaders } from \"./headerUtils\";\nimport { OrderByQueryExecutionContext } from \"./orderByQueryExecutionContext\";\nimport { ParallelQueryExecutionContext } from \"./parallelQueryExecutionContext\";\nimport { GroupByValueEndpointComponent } from \"./EndpointComponent/GroupByValueEndpointComponent\";\nimport type { SqlQuerySpec } from \"./SqlQuerySpec\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal\";\nimport { NonStreamingOrderByDistinctEndpointComponent } from \"./EndpointComponent/NonStreamingOrderByDistinctEndpointComponent\";\nimport { NonStreamingOrderByEndpointComponent } from \"./EndpointComponent/NonStreamingOrderByEndpointComponent\";\n\n/** @hidden */\nexport class PipelinedQueryExecutionContext implements ExecutionContext {\n private fetchBuffer: any[];\n private fetchMoreRespHeaders: CosmosHeaders;\n private endpoint: ExecutionContext;\n private pageSize: number;\n private vectorSearchBufferSize: number = 0;\n private static DEFAULT_PAGE_SIZE = 10;\n private static DEFAULT_MAX_VECTOR_SEARCH_BUFFER_SIZE = 50000;\n private nonStreamingOrderBy = false;\n\n constructor(\n private clientContext: ClientContext,\n private collectionLink: string,\n private query: string | SqlQuerySpec,\n private options: FeedOptions,\n private partitionedQueryExecutionInfo: PartitionedQueryExecutionInfo,\n correlatedActivityId: string,\n private emitRawOrderByPayload: boolean = false,\n ) {\n this.endpoint = null;\n this.pageSize = options[\"maxItemCount\"];\n if (this.pageSize === undefined) {\n this.pageSize = PipelinedQueryExecutionContext.DEFAULT_PAGE_SIZE;\n }\n // Pick between Nonstreaming and streaming endpoints\n this.nonStreamingOrderBy = partitionedQueryExecutionInfo.queryInfo.hasNonStreamingOrderBy;\n\n // Pick between parallel vs order by execution context\n const sortOrders = partitionedQueryExecutionInfo.queryInfo.orderBy;\n // TODO: Currently we don't get any field from backend to determine streaming queries\n if (this.nonStreamingOrderBy) {\n if (!options.allowUnboundedNonStreamingQueries) {\n this.checkQueryConstraints(partitionedQueryExecutionInfo.queryInfo);\n }\n\n this.vectorSearchBufferSize = this.calculateVectorSearchBufferSize(\n partitionedQueryExecutionInfo.queryInfo,\n options,\n );\n const maxBufferSize = options[\"vectorSearchBufferSize\"]\n ? options[\"vectorSearchBufferSize\"]\n : PipelinedQueryExecutionContext.DEFAULT_MAX_VECTOR_SEARCH_BUFFER_SIZE;\n\n if (this.vectorSearchBufferSize > maxBufferSize) {\n throw new ErrorResponse(\n `Executing a vector search query with TOP or OFFSET + LIMIT value ${this.vectorSearchBufferSize} larger than the vectorSearchBufferSize ${maxBufferSize} ` +\n `is not allowed`,\n );\n }\n\n const distinctType = partitionedQueryExecutionInfo.queryInfo.distinctType;\n const context: ExecutionContext = new ParallelQueryExecutionContext(\n this.clientContext,\n this.collectionLink,\n this.query,\n this.options,\n this.partitionedQueryExecutionInfo,\n correlatedActivityId,\n );\n\n if (distinctType === \"None\") {\n this.endpoint = new NonStreamingOrderByEndpointComponent(\n context,\n sortOrders,\n this.vectorSearchBufferSize,\n partitionedQueryExecutionInfo.queryInfo.offset,\n this.emitRawOrderByPayload,\n );\n } else {\n this.endpoint = new NonStreamingOrderByDistinctEndpointComponent(\n context,\n partitionedQueryExecutionInfo.queryInfo,\n this.vectorSearchBufferSize,\n this.emitRawOrderByPayload,\n );\n }\n } else {\n if (Array.isArray(sortOrders) && sortOrders.length > 0) {\n // Need to wrap orderby execution context in endpoint component, since the data is nested as a \\\n // \"payload\" property.\n this.endpoint = new OrderByEndpointComponent(\n new OrderByQueryExecutionContext(\n this.clientContext,\n this.collectionLink,\n this.query,\n this.options,\n this.partitionedQueryExecutionInfo,\n correlatedActivityId,\n ),\n this.emitRawOrderByPayload,\n );\n } else {\n this.endpoint = new ParallelQueryExecutionContext(\n this.clientContext,\n this.collectionLink,\n this.query,\n this.options,\n this.partitionedQueryExecutionInfo,\n correlatedActivityId,\n );\n }\n if (\n Object.keys(partitionedQueryExecutionInfo.queryInfo.groupByAliasToAggregateType).length >\n 0 ||\n partitionedQueryExecutionInfo.queryInfo.aggregates.length > 0 ||\n partitionedQueryExecutionInfo.queryInfo.groupByExpressions.length > 0\n ) {\n if (partitionedQueryExecutionInfo.queryInfo.hasSelectValue) {\n this.endpoint = new GroupByValueEndpointComponent(\n this.endpoint,\n partitionedQueryExecutionInfo.queryInfo,\n );\n } else {\n this.endpoint = new GroupByEndpointComponent(\n this.endpoint,\n partitionedQueryExecutionInfo.queryInfo,\n );\n }\n }\n // If top then add that to the pipeline. TOP N is effectively OFFSET 0 LIMIT N\n const top = partitionedQueryExecutionInfo.queryInfo.top;\n if (typeof top === \"number\") {\n this.endpoint = new OffsetLimitEndpointComponent(this.endpoint, 0, top);\n }\n\n // If offset+limit then add that to the pipeline\n const limit = partitionedQueryExecutionInfo.queryInfo.limit;\n const offset = partitionedQueryExecutionInfo.queryInfo.offset;\n if (typeof limit === \"number\" && typeof offset === \"number\") {\n this.endpoint = new OffsetLimitEndpointComponent(this.endpoint, offset, limit);\n }\n\n // If distinct then add that to the pipeline\n const distinctType = partitionedQueryExecutionInfo.queryInfo.distinctType;\n if (distinctType === \"Ordered\") {\n this.endpoint = new OrderedDistinctEndpointComponent(this.endpoint);\n }\n if (distinctType === \"Unordered\") {\n this.endpoint = new UnorderedDistinctEndpointComponent(this.endpoint);\n }\n }\n }\n\n public async nextItem(diagnosticNode: DiagnosticNodeInternal): Promise> {\n return this.endpoint.nextItem(diagnosticNode);\n }\n\n // Removed callback here beacuse it wouldn't have ever worked...\n public hasMoreResults(): boolean {\n return this.endpoint.hasMoreResults();\n }\n\n public async fetchMore(diagnosticNode: DiagnosticNodeInternal): Promise> {\n // if the wrapped endpoint has different implementation for fetchMore use that\n // otherwise use the default implementation\n if (typeof this.endpoint.fetchMore === \"function\") {\n return this.endpoint.fetchMore(diagnosticNode);\n } else {\n this.fetchBuffer = [];\n this.fetchMoreRespHeaders = getInitialHeader();\n return this.nonStreamingOrderBy\n ? this._nonStreamingFetchMoreImplementation(diagnosticNode)\n : this._fetchMoreImplementation(diagnosticNode);\n }\n }\n\n private async _fetchMoreImplementation(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise> {\n try {\n const { result: item, headers } = await this.endpoint.nextItem(diagnosticNode);\n mergeHeaders(this.fetchMoreRespHeaders, headers);\n if (item === undefined) {\n // no more results\n if (this.fetchBuffer.length === 0) {\n return {\n result: undefined,\n headers: this.fetchMoreRespHeaders,\n };\n } else {\n // Just give what we have\n const temp = this.fetchBuffer;\n this.fetchBuffer = [];\n return { result: temp, headers: this.fetchMoreRespHeaders };\n }\n } else {\n this.fetchBuffer.push(item);\n if (this.fetchBuffer.length >= this.pageSize) {\n // fetched enough results\n const temp = this.fetchBuffer.slice(0, this.pageSize);\n this.fetchBuffer = this.fetchBuffer.splice(this.pageSize);\n return { result: temp, headers: this.fetchMoreRespHeaders };\n } else {\n // recursively fetch more\n // TODO: is recursion a good idea?\n return this._fetchMoreImplementation(diagnosticNode);\n }\n }\n } catch (err: any) {\n mergeHeaders(this.fetchMoreRespHeaders, err.headers);\n err.headers = this.fetchMoreRespHeaders;\n if (err) {\n throw err;\n }\n }\n }\n\n private async _nonStreamingFetchMoreImplementation(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise> {\n try {\n const { result: item, headers } = await this.endpoint.nextItem(diagnosticNode);\n mergeHeaders(this.fetchMoreRespHeaders, headers);\n if (item === undefined) {\n // no more results\n if (this.fetchBuffer.length === 0) {\n return {\n result: undefined,\n headers: this.fetchMoreRespHeaders,\n };\n } else {\n // Just give what we have\n const temp = this.fetchBuffer;\n this.fetchBuffer = [];\n return { result: temp, headers: this.fetchMoreRespHeaders };\n }\n } else {\n // append the result\n if (typeof item !== \"object\") {\n this.fetchBuffer.push(item);\n } else if (Object.keys(item).length !== 0) {\n this.fetchBuffer.push(item);\n }\n if (this.fetchBuffer.length >= this.pageSize) {\n // fetched enough results\n const temp = this.fetchBuffer.slice(0, this.pageSize);\n this.fetchBuffer = this.fetchBuffer.splice(this.pageSize);\n return { result: temp, headers: this.fetchMoreRespHeaders };\n } else {\n return this._nonStreamingFetchMoreImplementation(diagnosticNode);\n }\n }\n } catch (err: any) {\n mergeHeaders(this.fetchMoreRespHeaders, err.headers);\n err.headers = this.fetchMoreRespHeaders;\n if (err) {\n throw err;\n }\n }\n }\n\n private calculateVectorSearchBufferSize(queryInfo: QueryInfo, options: FeedOptions): number {\n if (queryInfo.top === 0 || queryInfo.limit === 0) return 0;\n return queryInfo.top\n ? queryInfo.top\n : queryInfo.limit\n ? queryInfo.offset + queryInfo.limit\n : options[\"vectorSearchBufferSize\"] && options[\"vectorSearchBufferSize\"] > 0\n ? options[\"vectorSearchBufferSize\"]\n : PipelinedQueryExecutionContext.DEFAULT_MAX_VECTOR_SEARCH_BUFFER_SIZE;\n }\n\n private checkQueryConstraints(queryInfo: QueryInfo): void {\n const hasTop = queryInfo.top || queryInfo.top === 0;\n const hasLimit = queryInfo.limit || queryInfo.limit === 0;\n if (!hasTop && !hasLimit) {\n throw new ErrorResponse(\n \"Executing a non-streaming search query without TOP or LIMIT can consume a large number of RUs \" +\n \"very fast and have long runtimes. Please ensure you are using one of the above two filters \" +\n \"with your vector search query.\",\n );\n }\n return;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ItemDefinition } from \"../client\";\n\nconst FieldNames = {\n Rid: \"_rid\",\n Payload: \"payload\",\n ComponentScores: \"componentScores\",\n};\n\nexport class HybridSearchQueryResult {\n rid: string;\n componentScores: number[];\n data: any;\n score: number;\n ranks: number[];\n\n constructor(rid: string, componentScores: number[], data: Record) {\n this.rid = rid;\n this.componentScores = componentScores;\n this.data = data;\n }\n\n public static create(document: T): HybridSearchQueryResult {\n const rid = document[FieldNames.Rid];\n if (!rid) {\n throw new Error(`${FieldNames.Rid} must exist.`);\n }\n\n const outerPayload = document[FieldNames.Payload];\n if (!outerPayload || typeof outerPayload !== \"object\") {\n throw new Error(`${FieldNames.Payload} must exist.`);\n }\n\n const innerPayload = outerPayload[FieldNames.Payload];\n if (!innerPayload || typeof innerPayload !== \"object\") {\n throw new Error(`${FieldNames.Payload} must exist nested within the outer payload field.`);\n }\n\n const componentScores = outerPayload[FieldNames.ComponentScores];\n if (!Array.isArray(componentScores)) {\n throw new Error(`${FieldNames.ComponentScores} must exist.`);\n }\n\n return new HybridSearchQueryResult(rid, componentScores, innerPayload);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { GlobalStatistics } from \"../../request/globalStatistics\";\nimport { Aggregator } from \"./Aggregator\";\n\nexport class GlobalStatisticsAggregator implements Aggregator {\n private globalStatistics: GlobalStatistics;\n\n constructor() {\n this.globalStatistics = {\n documentCount: 0,\n fullTextStatistics: [],\n };\n }\n\n public aggregate(other: GlobalStatistics): void {\n if (!other) {\n return;\n }\n // Aggregate document count\n this.globalStatistics.documentCount += other.documentCount;\n // Ensure `fullTextStatistics` is initialized\n if (!other.fullTextStatistics || other.fullTextStatistics.length === 0) {\n return;\n }\n\n // Initialize `this.globalStatistics.fullTextStatistics` if it's empty\n if (this.globalStatistics.fullTextStatistics.length === 0) {\n this.globalStatistics.fullTextStatistics = other.fullTextStatistics.map((stat) => ({\n totalWordCount: stat.totalWordCount,\n hitCounts: [...stat.hitCounts],\n }));\n } else {\n // Loop through `other.fullTextStatistics` to add values to `this.globalStatistics.fullTextStatistics`\n for (let i = 0; i < other.fullTextStatistics.length; i++) {\n const otherStat = other.fullTextStatistics[i];\n\n // Ensure the index `i` is initialized\n if (!this.globalStatistics.fullTextStatistics[i]) {\n this.globalStatistics.fullTextStatistics[i] = {\n totalWordCount: 0,\n hitCounts: [],\n };\n }\n\n // Add totalWordCount\n this.globalStatistics.fullTextStatistics[i].totalWordCount += otherStat.totalWordCount;\n\n // Aggregate `hitCounts`\n for (let j = 0; j < otherStat.hitCounts.length; j++) {\n // Initialize hit count if necessary\n if (this.globalStatistics.fullTextStatistics[i].hitCounts.length <= j) {\n this.globalStatistics.fullTextStatistics[i].hitCounts.push(0);\n }\n this.globalStatistics.fullTextStatistics[i].hitCounts[j] += otherStat.hitCounts[j];\n }\n }\n }\n }\n\n public getResult(): GlobalStatistics {\n return this.globalStatistics;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AzureLogger, createClientLogger } from \"@azure/logger\";\nimport { ClientContext } from \"../ClientContext\";\nimport { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal\";\nimport {\n FeedOptions,\n GlobalStatistics,\n PartitionedQueryExecutionInfo,\n QueryInfo,\n QueryRange,\n Response,\n} from \"../request\";\nimport { HybridSearchQueryResult } from \"../request/hybridSearchQueryResult\";\nimport { GlobalStatisticsAggregator } from \"./Aggregators/GlobalStatisticsAggregator\";\nimport { CosmosHeaders } from \"./CosmosHeaders\";\nimport { ExecutionContext } from \"./ExecutionContext\";\nimport { getInitialHeader, mergeHeaders } from \"./headerUtils\";\nimport { ParallelQueryExecutionContext } from \"./parallelQueryExecutionContext\";\nimport { PipelinedQueryExecutionContext } from \"./pipelinedQueryExecutionContext\";\n\n/** @hidden */\nexport enum HybridQueryExecutionContextBaseStates {\n uninitialized = \"uninitialized\",\n initialized = \"initialized\",\n draining = \"draining\",\n done = \"done\",\n}\nexport class HybridQueryExecutionContext implements ExecutionContext {\n private globalStatisticsExecutionContext: ExecutionContext;\n private componentsExecutionContext: ExecutionContext[] = [];\n private pageSize: number;\n private state: HybridQueryExecutionContextBaseStates;\n private globalStatisticsAggregator: GlobalStatisticsAggregator;\n private emitRawOrderByPayload: boolean = true;\n private buffer: HybridSearchQueryResult[] = [];\n private DEFAULT_PAGE_SIZE = 10;\n private TOTAL_WORD_COUNT_PLACEHOLDER = \"documentdb-formattablehybridsearchquery-totalwordcount\";\n private HIT_COUNTS_ARRAY_PLACEHOLDER = \"documentdb-formattablehybridsearchquery-hitcountsarray\";\n private TOTAL_DOCUMENT_COUNT_PLACEHOLDER =\n \"documentdb-formattablehybridsearchquery-totaldocumentcount\";\n private RRF_CONSTANT = 60; // Constant for RRF score calculation\n private logger: AzureLogger = createClientLogger(\"HybridQueryExecutionContext\");\n\n constructor(\n private clientContext: ClientContext,\n private collectionLink: string,\n private options: FeedOptions,\n private partitionedQueryExecutionInfo: PartitionedQueryExecutionInfo,\n private correlatedActivityId: string,\n private allPartitionsRanges: QueryRange[],\n ) {\n this.state = HybridQueryExecutionContextBaseStates.uninitialized;\n this.pageSize = this.options.maxItemCount;\n if (this.pageSize === undefined) {\n this.pageSize = this.DEFAULT_PAGE_SIZE;\n }\n if (partitionedQueryExecutionInfo.hybridSearchQueryInfo.requiresGlobalStatistics) {\n const globalStaticsQueryOptions: FeedOptions = { maxItemCount: this.pageSize };\n this.globalStatisticsAggregator = new GlobalStatisticsAggregator();\n\n const globalStatisticsQuery =\n this.partitionedQueryExecutionInfo.hybridSearchQueryInfo.globalStatisticsQuery;\n const globalStatisticsQueryExecutionInfo: PartitionedQueryExecutionInfo = {\n partitionedQueryExecutionInfoVersion: 1,\n queryInfo: {\n distinctType: \"None\",\n hasSelectValue: false,\n groupByAliasToAggregateType: {},\n rewrittenQuery: globalStatisticsQuery,\n hasNonStreamingOrderBy: false,\n },\n queryRanges: this.allPartitionsRanges,\n };\n\n this.globalStatisticsExecutionContext = new ParallelQueryExecutionContext(\n this.clientContext,\n this.collectionLink,\n globalStatisticsQuery,\n globalStaticsQueryOptions,\n globalStatisticsQueryExecutionInfo,\n this.correlatedActivityId,\n );\n } else {\n this.createComponentExecutionContexts();\n this.state = HybridQueryExecutionContextBaseStates.initialized;\n }\n }\n public async nextItem(diagnosticNode: DiagnosticNodeInternal): Promise> {\n const nextItemRespHeaders = getInitialHeader();\n while (\n (this.state === HybridQueryExecutionContextBaseStates.uninitialized ||\n this.state === HybridQueryExecutionContextBaseStates.initialized) &&\n this.buffer.length === 0\n ) {\n await this.fetchMoreInternal(diagnosticNode, nextItemRespHeaders);\n }\n\n if (this.state === HybridQueryExecutionContextBaseStates.draining && this.buffer.length > 0) {\n return this.drainOne(nextItemRespHeaders);\n } else {\n return this.done(nextItemRespHeaders);\n }\n }\n\n public hasMoreResults(): boolean {\n switch (this.state) {\n case HybridQueryExecutionContextBaseStates.uninitialized:\n return true;\n case HybridQueryExecutionContextBaseStates.initialized:\n return true;\n case HybridQueryExecutionContextBaseStates.draining:\n return this.buffer.length > 0;\n case HybridQueryExecutionContextBaseStates.done:\n return false;\n default:\n return false;\n }\n }\n\n public async fetchMore(diagnosticNode: DiagnosticNodeInternal): Promise> {\n const fetchMoreRespHeaders = getInitialHeader();\n return this.fetchMoreInternal(diagnosticNode, fetchMoreRespHeaders);\n }\n\n private async fetchMoreInternal(\n diagnosticNode: DiagnosticNodeInternal,\n headers: CosmosHeaders,\n ): Promise> {\n switch (this.state) {\n case HybridQueryExecutionContextBaseStates.uninitialized:\n await this.initialize(diagnosticNode, headers);\n return {\n result: [],\n headers: headers,\n };\n\n case HybridQueryExecutionContextBaseStates.initialized:\n await this.executeComponentQueries(diagnosticNode, headers);\n return {\n result: [],\n headers: headers,\n };\n case HybridQueryExecutionContextBaseStates.draining:\n return this.drain(headers);\n case HybridQueryExecutionContextBaseStates.done:\n return this.done(headers);\n default:\n throw new Error(`Invalid state: ${this.state}`);\n }\n }\n\n private async initialize(\n diagnosticNode: DiagnosticNodeInternal,\n fetchMoreRespHeaders: CosmosHeaders,\n ): Promise {\n try {\n while (this.globalStatisticsExecutionContext.hasMoreResults()) {\n const result = await this.globalStatisticsExecutionContext.nextItem(diagnosticNode);\n const globalStatistics: GlobalStatistics = result.result;\n mergeHeaders(fetchMoreRespHeaders, result.headers);\n if (globalStatistics) {\n // iterate over the components update placeholders from globalStatistics\n this.globalStatisticsAggregator.aggregate(globalStatistics);\n }\n }\n } catch (error) {\n this.state = HybridQueryExecutionContextBaseStates.done;\n throw error;\n }\n\n // create component execution contexts for each component query\n this.createComponentExecutionContexts();\n this.state = HybridQueryExecutionContextBaseStates.initialized;\n }\n\n private async executeComponentQueries(\n diagnosticNode: DiagnosticNodeInternal,\n fetchMoreRespHeaders: CosmosHeaders,\n ): Promise {\n if (this.componentsExecutionContext.length === 1) {\n await this.drainSingleComponent(diagnosticNode, fetchMoreRespHeaders);\n return;\n }\n try {\n const hybridSearchResult: HybridSearchQueryResult[] = [];\n const uniqueItems = new Map();\n\n for (const componentExecutionContext of this.componentsExecutionContext) {\n while (componentExecutionContext.hasMoreResults()) {\n const result = await componentExecutionContext.fetchMore(diagnosticNode);\n const response = result.result;\n mergeHeaders(fetchMoreRespHeaders, result.headers);\n if (response) {\n response.forEach((item: any) => {\n const hybridItem = HybridSearchQueryResult.create(item);\n if (!uniqueItems.has(hybridItem.rid)) {\n uniqueItems.set(hybridItem.rid, hybridItem);\n }\n });\n }\n }\n }\n uniqueItems.forEach((item) => hybridSearchResult.push(item));\n if (hybridSearchResult.length === 0 || hybridSearchResult.length === 1) {\n // return the result as no or one element is present\n hybridSearchResult.forEach((item) => this.buffer.push(item.data));\n this.state = HybridQueryExecutionContextBaseStates.draining;\n return;\n }\n\n // Initialize an array to hold ranks for each document\n const sortedHybridSearchResult = this.sortHybridSearchResultByRRFScore(hybridSearchResult);\n // store the result to buffer\n // add only data from the sortedHybridSearchResult in the buffer\n sortedHybridSearchResult.forEach((item) => this.buffer.push(item.data));\n this.applySkipAndTakeToBuffer();\n this.state = HybridQueryExecutionContextBaseStates.draining;\n } catch (error) {\n this.state = HybridQueryExecutionContextBaseStates.done;\n throw error;\n }\n }\n\n private applySkipAndTakeToBuffer(): void {\n const { skip, take } = this.partitionedQueryExecutionInfo.hybridSearchQueryInfo;\n if (skip) {\n this.buffer = skip >= this.buffer.length ? [] : this.buffer.slice(skip);\n }\n if (take) {\n this.buffer = take <= 0 ? [] : this.buffer.slice(0, take);\n }\n }\n\n private async drain(fetchMoreRespHeaders: CosmosHeaders): Promise> {\n try {\n if (this.buffer.length === 0) {\n this.state = HybridQueryExecutionContextBaseStates.done;\n return this.done(fetchMoreRespHeaders);\n }\n const result = this.buffer.slice(0, this.pageSize);\n this.buffer = this.buffer.slice(this.pageSize);\n if (this.buffer.length === 0) {\n this.state = HybridQueryExecutionContextBaseStates.done;\n }\n return {\n result: result,\n headers: fetchMoreRespHeaders,\n };\n } catch (error) {\n this.state = HybridQueryExecutionContextBaseStates.done;\n throw error;\n }\n }\n\n private async drainOne(nextItemRespHeaders: CosmosHeaders): Promise> {\n try {\n if (this.buffer.length === 0) {\n this.state = HybridQueryExecutionContextBaseStates.done;\n return this.done(nextItemRespHeaders);\n }\n const result = this.buffer.shift();\n if (this.buffer.length === 0) {\n this.state = HybridQueryExecutionContextBaseStates.done;\n }\n return {\n result: result,\n headers: nextItemRespHeaders,\n };\n } catch (error) {\n this.state = HybridQueryExecutionContextBaseStates.done;\n throw error;\n }\n }\n\n private done(fetchMoreRespHeaders: CosmosHeaders): Response {\n return {\n result: undefined,\n headers: fetchMoreRespHeaders,\n };\n }\n\n private sortHybridSearchResultByRRFScore(\n hybridSearchResult: HybridSearchQueryResult[],\n ): HybridSearchQueryResult[] {\n const ranksArray: { rid: string; ranks: number[] }[] = hybridSearchResult.map((item) => ({\n rid: item.rid,\n ranks: new Array(item.componentScores.length).fill(0),\n }));\n // Compute ranks for each component score\n for (let i = 0; i < hybridSearchResult[0].componentScores.length; i++) {\n // Sort based on the i-th component score\n hybridSearchResult.sort((a, b) => b.componentScores[i] - a.componentScores[i]);\n\n // Assign ranks\n let rank = 1;\n for (let j = 0; j < hybridSearchResult.length; j++) {\n if (\n j > 0 &&\n hybridSearchResult[j].componentScores[i] !== hybridSearchResult[j - 1].componentScores[i]\n ) {\n rank = j + 1;\n }\n const rankIndex = ranksArray.findIndex(\n (rankItem) => rankItem.rid === hybridSearchResult[j].rid,\n );\n ranksArray[rankIndex].ranks[i] = rank; // 1-based rank\n }\n }\n\n // Function to compute RRF score\n const computeRRFScore = (ranks: number[], k: number): number => {\n return ranks.reduce((acc, rank) => acc + 1 / (k + rank), 0);\n };\n\n // Compute RRF scores and sort based on them\n const rrfScores = ranksArray.map((item) => ({\n rid: item.rid,\n rrfScore: computeRRFScore(item.ranks, this.RRF_CONSTANT),\n }));\n\n // Sort based on RRF scores\n rrfScores.sort((a, b) => b.rrfScore - a.rrfScore);\n\n // Map sorted RRF scores back to hybridSearchResult\n const sortedHybridSearchResult = rrfScores.map((scoreItem) =>\n hybridSearchResult.find((item) => item.rid === scoreItem.rid),\n );\n return sortedHybridSearchResult;\n }\n\n private async drainSingleComponent(\n diagNode: DiagnosticNodeInternal,\n fetchMoreRespHeaders: CosmosHeaders,\n ): Promise {\n if (this.componentsExecutionContext && this.componentsExecutionContext.length !== 1) {\n this.logger.error(\"drainSingleComponent called on multiple components\");\n return;\n }\n try {\n const componentExecutionContext = this.componentsExecutionContext[0];\n const hybridSearchResult: HybridSearchQueryResult[] = [];\n while (componentExecutionContext.hasMoreResults()) {\n const result = await componentExecutionContext.fetchMore(diagNode);\n const response = result.result;\n mergeHeaders(fetchMoreRespHeaders, result.headers);\n if (response) {\n response.forEach((item: any) => {\n hybridSearchResult.push(HybridSearchQueryResult.create(item));\n });\n }\n }\n hybridSearchResult.forEach((item) => this.buffer.push(item.data));\n this.applySkipAndTakeToBuffer();\n this.state = HybridQueryExecutionContextBaseStates.draining;\n } catch (error) {\n this.state = HybridQueryExecutionContextBaseStates.done;\n throw error;\n }\n }\n\n private createComponentExecutionContexts(): void {\n // rewrite queries based on global statistics\n let queryInfos: QueryInfo[] =\n this.partitionedQueryExecutionInfo.hybridSearchQueryInfo.componentQueryInfos;\n if (this.partitionedQueryExecutionInfo.hybridSearchQueryInfo.requiresGlobalStatistics) {\n queryInfos = this.processComponentQueries(\n this.partitionedQueryExecutionInfo.hybridSearchQueryInfo.componentQueryInfos,\n this.globalStatisticsAggregator.getResult(),\n );\n }\n // create component execution contexts\n for (const componentQueryInfo of queryInfos) {\n const componentPartitionExecutionInfo: PartitionedQueryExecutionInfo = {\n partitionedQueryExecutionInfoVersion: 1,\n queryInfo: componentQueryInfo,\n queryRanges: this.partitionedQueryExecutionInfo.queryRanges,\n };\n this.componentsExecutionContext.push(\n new PipelinedQueryExecutionContext(\n this.clientContext,\n this.collectionLink,\n componentQueryInfo.rewrittenQuery,\n this.options,\n componentPartitionExecutionInfo,\n this.correlatedActivityId,\n this.emitRawOrderByPayload,\n ),\n );\n }\n }\n private processComponentQueries(\n componentQueryInfos: QueryInfo[],\n globalStats: GlobalStatistics,\n ): QueryInfo[] {\n return componentQueryInfos.map((queryInfo) => {\n if (!queryInfo.hasNonStreamingOrderBy) {\n throw new Error(\"The component query must have a non-streaming order by clause.\");\n }\n return {\n ...queryInfo,\n rewrittenQuery: this.replacePlaceholdersWorkaroud(\n queryInfo.rewrittenQuery,\n globalStats,\n componentQueryInfos.length,\n ),\n orderByExpressions: queryInfo.orderByExpressions.map((expr) =>\n this.replacePlaceholdersWorkaroud(expr, globalStats, componentQueryInfos.length),\n ),\n };\n });\n }\n // This method is commented currently, but we will switch back to using this\n // once the gateway has been redeployed with the fix for placeholder indexes\n // private replacePlaceholders(query: string, globalStats: GlobalStatistics): string {\n // // Replace total document count\n // query = query.replace(\n // new RegExp(`{${this.TOTAL_DOCUMENT_COUNT_PLACEHOLDER}}`, \"g\"),\n // globalStats.documentCount.toString(),\n // );\n\n // // Replace total word counts and hit counts from fullTextStatistics\n // globalStats.fullTextStatistics.forEach((stats, index) => {\n // // Replace total word counts\n // query = query.replace(\n // new RegExp(`{${this.TOTAL_WORD_COUNT_PLACEHOLDER}-${index}}`, \"g\"),\n // stats.totalWordCount.toString(),\n // );\n // // Replace hit counts\n // query = query.replace(\n // new RegExp(`{${this.HIT_COUNTS_ARRAY_PLACEHOLDER}-${index}}`, \"g\"),\n // `[${stats.hitCounts.join(\",\")}]`,\n // );\n // });\n\n // return query;\n // }\n\n private replacePlaceholdersWorkaroud(\n query: string,\n globalStats: GlobalStatistics,\n componentCount: number,\n ): string {\n // Replace total document count\n query = query.replace(\n new RegExp(`{${this.TOTAL_DOCUMENT_COUNT_PLACEHOLDER}}`, \"g\"),\n globalStats.documentCount.toString(),\n );\n let statisticsIndex: number = 0;\n for (let i = 0; i < componentCount; i++) {\n // Replace total word counts and hit counts from fullTextStatistics\n const wordCountPlaceholder = `{${this.TOTAL_WORD_COUNT_PLACEHOLDER}-${i}}`;\n const hitCountPlaceholder = `{${this.HIT_COUNTS_ARRAY_PLACEHOLDER}-${i}}`;\n if (!query.includes(wordCountPlaceholder)) {\n continue;\n }\n const stats = globalStats.fullTextStatistics[statisticsIndex];\n // Replace total word counts\n query = query.replace(new RegExp(wordCountPlaceholder, \"g\"), stats.totalWordCount.toString());\n // Replace hit counts\n query = query.replace(new RegExp(hitCountPlaceholder, \"g\"), `[${stats.hitCounts.join(\",\")}]`);\n statisticsIndex++;\n }\n return query;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/// \nimport type { ClientContext } from \"./ClientContext\";\nimport { DiagnosticNodeInternal, DiagnosticNodeType } from \"./diagnostics/DiagnosticNodeInternal\";\nimport { getPathFromLink, ResourceType, StatusCodes } from \"./common\";\nimport type {\n CosmosHeaders,\n ExecutionContext,\n FetchFunctionCallback,\n SqlQuerySpec,\n} from \"./queryExecutionContext\";\nimport {\n DefaultQueryExecutionContext,\n getInitialHeader,\n mergeHeaders,\n PipelinedQueryExecutionContext,\n} from \"./queryExecutionContext\";\nimport type { Response } from \"./request\";\nimport type {\n ErrorResponse,\n PartitionedQueryExecutionInfo,\n QueryRange,\n} from \"./request/ErrorResponse\";\nimport type { FeedOptions } from \"./request/FeedOptions\";\nimport { FeedResponse } from \"./request/FeedResponse\";\nimport {\n getEmptyCosmosDiagnostics,\n withDiagnostics,\n withMetadataDiagnostics,\n} from \"./utils/diagnostics\";\nimport { MetadataLookUpType } from \"./CosmosDiagnostics\";\nimport { randomUUID } from \"@azure/core-util\";\nimport { HybridQueryExecutionContext } from \"./queryExecutionContext/hybridQueryExecutionContext\";\nimport { PartitionKeyRangeCache } from \"./routing\";\n\n/**\n * Represents a QueryIterator Object, an implementation of feed or query response that enables\n * traversal and iterating over the response\n * in the Azure Cosmos DB database service.\n */\nexport class QueryIterator {\n private fetchAllTempResources: T[]; // TODO\n private fetchAllLastResHeaders: CosmosHeaders;\n private queryExecutionContext: ExecutionContext;\n private queryPlanPromise: Promise>;\n private isInitialized: boolean;\n private correlatedActivityId: string;\n private nonStreamingOrderBy: boolean = false;\n private partitionKeyRangeCache: PartitionKeyRangeCache;\n\n /**\n * @hidden\n */\n constructor(\n private clientContext: ClientContext,\n private query: SqlQuerySpec | string,\n private options: FeedOptions,\n private fetchFunctions: FetchFunctionCallback | FetchFunctionCallback[],\n private resourceLink?: string,\n private resourceType?: ResourceType,\n ) {\n this.query = query;\n this.fetchFunctions = fetchFunctions;\n this.options = options || {};\n this.resourceLink = resourceLink;\n this.fetchAllLastResHeaders = getInitialHeader();\n this.reset();\n this.isInitialized = false;\n this.partitionKeyRangeCache = new PartitionKeyRangeCache(this.clientContext);\n }\n\n /**\n * Gets an async iterator that will yield results until completion.\n *\n * NOTE: AsyncIterators are a very new feature and you might need to\n * use polyfils/etc. in order to use them in your code.\n *\n * If you're using TypeScript, you can use the following polyfill as long\n * as you target ES6 or higher and are running on Node 6 or higher.\n *\n * ```typescript\n * if (!Symbol || !Symbol.asyncIterator) {\n * (Symbol as any).asyncIterator = Symbol.for(\"Symbol.asyncIterator\");\n * }\n * ```\n *\n * @example Iterate over all databases\n * ```typescript\n * for await(const { resources: db } of client.databases.readAll().getAsyncIterator()) {\n * console.log(`Got ${db} from AsyncIterator`);\n * }\n * ```\n */\n public async *getAsyncIterator(): AsyncIterable> {\n this.reset();\n let diagnosticNode = new DiagnosticNodeInternal(\n this.clientContext.diagnosticLevel,\n DiagnosticNodeType.CLIENT_REQUEST_NODE,\n null,\n );\n this.queryPlanPromise = this.fetchQueryPlan(diagnosticNode);\n while (this.queryExecutionContext.hasMoreResults()) {\n let response: Response;\n try {\n response = await this.queryExecutionContext.fetchMore(diagnosticNode);\n } catch (error: any) {\n if (this.needsQueryPlan(error)) {\n await this.createExecutionContext(diagnosticNode);\n try {\n response = await this.queryExecutionContext.fetchMore(diagnosticNode);\n } catch (queryError: any) {\n this.handleSplitError(queryError);\n }\n } else {\n throw error;\n }\n }\n\n const feedResponse = new FeedResponse(\n response.result,\n response.headers,\n this.queryExecutionContext.hasMoreResults(),\n diagnosticNode.toDiagnostic(this.clientContext.getClientConfig()),\n );\n diagnosticNode = new DiagnosticNodeInternal(\n this.clientContext.diagnosticLevel,\n DiagnosticNodeType.CLIENT_REQUEST_NODE,\n null,\n );\n if (response.result !== undefined) {\n yield feedResponse;\n }\n }\n }\n\n /**\n * Determine if there are still remaining resources to process based on the value of the continuation token or the\n * elements remaining on the current batch in the QueryIterator.\n * @returns true if there is other elements to process in the QueryIterator.\n */\n public hasMoreResults(): boolean {\n return this.queryExecutionContext.hasMoreResults();\n }\n\n /**\n * Fetch all pages for the query and return a single FeedResponse.\n */\n\n public async fetchAll(): Promise> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.fetchAllInternal(diagnosticNode);\n }, this.clientContext);\n }\n\n /**\n * @hidden\n */\n public async fetchAllInternal(diagnosticNode: DiagnosticNodeInternal): Promise> {\n this.reset();\n let response: FeedResponse;\n try {\n response = await this.toArrayImplementation(diagnosticNode);\n } catch (error: any) {\n this.handleSplitError(error);\n }\n return response;\n }\n\n /**\n * Retrieve the next batch from the feed.\n *\n * This may or may not fetch more pages from the backend depending on your settings\n * and the type of query. Aggregate queries will generally fetch all backend pages\n * before returning the first batch of responses.\n */\n public async fetchNext(): Promise> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n this.queryPlanPromise = withMetadataDiagnostics(\n async (metadataNode: DiagnosticNodeInternal) => {\n return this.fetchQueryPlan(metadataNode);\n },\n diagnosticNode,\n MetadataLookUpType.QueryPlanLookUp,\n );\n if (!this.isInitialized) {\n await this.init(diagnosticNode);\n }\n let response: Response;\n try {\n response = await this.queryExecutionContext.fetchMore(diagnosticNode);\n } catch (error: any) {\n if (this.needsQueryPlan(error)) {\n await this.createExecutionContext(diagnosticNode);\n try {\n response = await this.queryExecutionContext.fetchMore(diagnosticNode);\n } catch (queryError: any) {\n this.handleSplitError(queryError);\n }\n } else {\n throw error;\n }\n }\n return new FeedResponse(\n response.result,\n response.headers,\n this.queryExecutionContext.hasMoreResults(),\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Reset the QueryIterator to the beginning and clear all the resources inside it\n */\n public reset(): void {\n this.correlatedActivityId = randomUUID();\n this.queryPlanPromise = undefined;\n this.fetchAllLastResHeaders = getInitialHeader();\n this.fetchAllTempResources = [];\n this.queryExecutionContext = new DefaultQueryExecutionContext(\n this.options,\n this.fetchFunctions,\n this.correlatedActivityId,\n );\n }\n\n private async toArrayImplementation(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise> {\n this.queryPlanPromise = withMetadataDiagnostics(\n async (metadataNode: DiagnosticNodeInternal) => {\n return this.fetchQueryPlan(metadataNode);\n },\n diagnosticNode,\n MetadataLookUpType.QueryPlanLookUp,\n );\n\n // this.queryPlanPromise = this.fetchQueryPlan(diagnosticNode);\n if (!this.isInitialized) {\n await this.init(diagnosticNode);\n }\n while (this.queryExecutionContext.hasMoreResults()) {\n let response: Response;\n try {\n response = await this.queryExecutionContext.nextItem(diagnosticNode);\n } catch (error: any) {\n if (this.needsQueryPlan(error)) {\n await this.createExecutionContext(diagnosticNode);\n response = await this.queryExecutionContext.nextItem(diagnosticNode);\n } else {\n throw error;\n }\n }\n const { result, headers } = response;\n // concatenate the results and fetch more\n mergeHeaders(this.fetchAllLastResHeaders, headers);\n if (result !== undefined) {\n if (\n this.nonStreamingOrderBy &&\n typeof result === \"object\" &&\n Object.keys(result).length === 0\n ) {\n // ignore empty results from NonStreamingOrderBy Endpoint components.\n } else {\n this.fetchAllTempResources.push(result);\n }\n }\n }\n return new FeedResponse(\n this.fetchAllTempResources,\n this.fetchAllLastResHeaders,\n this.queryExecutionContext.hasMoreResults(),\n getEmptyCosmosDiagnostics(),\n );\n }\n\n private async createExecutionContext(diagnosticNode?: DiagnosticNodeInternal): Promise {\n const queryPlanResponse = await this.queryPlanPromise;\n\n // We always coerce queryPlanPromise to resolved. So if it errored, we need to manually inspect the resolved value\n if (queryPlanResponse instanceof Error) {\n throw queryPlanResponse;\n }\n\n const queryPlan: PartitionedQueryExecutionInfo = queryPlanResponse.result;\n if (queryPlan.hybridSearchQueryInfo && queryPlan.hybridSearchQueryInfo !== null) {\n await this.createHybridQueryExecutionContext(queryPlan, diagnosticNode);\n } else {\n await this.createPipelinedExecutionContext(queryPlan);\n }\n }\n\n private async createHybridQueryExecutionContext(\n queryPlan: PartitionedQueryExecutionInfo,\n diagnosticNode?: DiagnosticNodeInternal,\n ): Promise {\n const allPartitionKeyRanges = (\n await this.partitionKeyRangeCache.onCollectionRoutingMap(this.resourceLink, diagnosticNode)\n ).getOrderedParitionKeyRanges();\n\n // convert allPartitionKeyRanges to QueryRanges\n const queryRanges: QueryRange[] = allPartitionKeyRanges.map((partitionKeyRange) => {\n return {\n min: partitionKeyRange.minInclusive,\n max: partitionKeyRange.maxExclusive,\n isMinInclusive: true,\n isMaxInclusive: false,\n };\n });\n\n this.queryExecutionContext = new HybridQueryExecutionContext(\n this.clientContext,\n this.resourceLink,\n this.options,\n queryPlan,\n this.correlatedActivityId,\n queryRanges,\n );\n }\n\n private async createPipelinedExecutionContext(\n queryPlan: PartitionedQueryExecutionInfo,\n ): Promise {\n const queryInfo = queryPlan.queryInfo;\n this.nonStreamingOrderBy = queryInfo.hasNonStreamingOrderBy ? true : false;\n if (queryInfo.aggregates.length > 0 && queryInfo.hasSelectValue === false) {\n throw new Error(\"Aggregate queries must use the VALUE keyword\");\n }\n this.queryExecutionContext = new PipelinedQueryExecutionContext(\n this.clientContext,\n this.resourceLink,\n this.query,\n this.options,\n queryPlan,\n this.correlatedActivityId,\n );\n }\n\n private async fetchQueryPlan(diagnosticNode: DiagnosticNodeInternal): Promise {\n if (!this.queryPlanPromise && this.resourceType === ResourceType.item) {\n return this.clientContext\n .getQueryPlan(\n getPathFromLink(this.resourceLink) + \"/docs\",\n ResourceType.item,\n this.resourceLink,\n this.query,\n this.options,\n diagnosticNode,\n this.correlatedActivityId,\n )\n .catch((error: any) => error); // Without this catch, node reports an unhandled rejection. So we stash the promise as resolved even if it errored.\n }\n return this.queryPlanPromise;\n }\n\n private needsQueryPlan(error: ErrorResponse): error is ErrorResponse {\n if (\n error.body?.additionalErrorInfo ||\n error.message.includes(\"Cross partition query only supports\")\n ) {\n return error.code === StatusCodes.BadRequest && this.resourceType === ResourceType.item;\n } else {\n throw error;\n }\n }\n\n private initPromise: Promise;\n private async init(diagnosticNode: DiagnosticNodeInternal): Promise {\n if (this.isInitialized === true) {\n return;\n }\n if (this.initPromise === undefined) {\n this.initPromise = this._init(diagnosticNode);\n }\n return this.initPromise;\n }\n private async _init(diagnosticNode: DiagnosticNodeInternal): Promise {\n if (this.options.forceQueryPlan === true && this.resourceType === ResourceType.item) {\n await this.createExecutionContext(diagnosticNode);\n }\n this.isInitialized = true;\n }\n\n private handleSplitError(err: any): void {\n if (err.code === 410) {\n const error = new Error(\n \"Encountered partition split and could not recover. This request is retryable\",\n ) as any;\n error.code = 503;\n error.originalError = err;\n throw error;\n } else {\n throw err;\n }\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Constants } from \"./constants\";\nimport { trimSlashFromLeftAndRight, validateResourceId, validateItemResourceId } from \"./helper\";\n\n/**\n * Would be used when creating or deleting a DocumentCollection\n * or a User in Azure Cosmos DB database service\n * @hidden\n * Given a database id, this creates a database link.\n * @param databaseId - The database id\n * @returns A database link in the format of `dbs/{0}`\n * with `{0}` being a Uri escaped version of the databaseId\n */\nexport function createDatabaseUri(databaseId: string): string {\n databaseId = trimSlashFromLeftAndRight(databaseId);\n validateResourceId(databaseId);\n\n return Constants.Path.DatabasesPathSegment + \"/\" + databaseId;\n}\n\n/**\n * Given a database and collection id, this creates a collection link.\n * Would be used when updating or deleting a DocumentCollection, creating a\n * Document, a StoredProcedure, a Trigger, a UserDefinedFunction, or when executing a query\n * with CreateDocumentQuery in Azure Cosmos DB database service.\n * @param databaseId - The database id\n * @param collectionId - The collection id\n * @returns A collection link in the format of `dbs/{0}/colls/{1}`\n * with `{0}` being a Uri escaped version of the databaseId and `{1}` being collectionId\n * @hidden\n */\nexport function createDocumentCollectionUri(databaseId: string, collectionId: string): string {\n collectionId = trimSlashFromLeftAndRight(collectionId);\n validateResourceId(collectionId);\n\n return (\n createDatabaseUri(databaseId) + \"/\" + Constants.Path.CollectionsPathSegment + \"/\" + collectionId\n );\n}\n\n/**\n * Given a database and user id, this creates a user link.\n * Would be used when creating a Permission, or when replacing or deleting\n * a User in Azure Cosmos DB database service\n * @param databaseId - The database id\n * @param userId - The user id\n * @returns A user link in the format of `dbs/{0}/users/{1}`\n * with `{0}` being a Uri escaped version of the databaseId and `{1}` being userId\n * @hidden\n */\nexport function createUserUri(databaseId: string, userId: string): string {\n userId = trimSlashFromLeftAndRight(userId);\n validateResourceId(userId);\n\n return createDatabaseUri(databaseId) + \"/\" + Constants.Path.UsersPathSegment + \"/\" + userId;\n}\n\n/**\n * Given a database and collection id, this creates a collection link.\n * Would be used when creating an Attachment, or when replacing\n * or deleting a Document in Azure Cosmos DB database service\n * @param databaseId - The database id\n * @param collectionId - The collection id\n * @param documentId - The document id\n * @returns A document link in the format of\n * `dbs/{0}/colls/{1}/docs/{2}` with `{0}` being a Uri escaped version of\n * the databaseId, `{1}` being collectionId and `{2}` being the documentId\n * @hidden\n */\nexport function createDocumentUri(\n databaseId: string,\n collectionId: string,\n documentId: string,\n): string {\n documentId = trimSlashFromLeftAndRight(documentId);\n validateItemResourceId(documentId);\n\n return (\n createDocumentCollectionUri(databaseId, collectionId) +\n \"/\" +\n Constants.Path.DocumentsPathSegment +\n \"/\" +\n documentId\n );\n}\n\n/**\n * Given a database, collection and document id, this creates a document link.\n * Would be used when replacing or deleting a Permission in Azure Cosmos DB database service.\n * @param databaseId -The database Id\n * @param userId -The user Id\n * @param permissionId - The permissionId\n * @returns A permission link in the format of `dbs/{0}/users/{1}/permissions/{2}`\n * with `{0}` being a Uri escaped version of the databaseId, `{1}` being userId and `{2}` being permissionId\n * @hidden\n */\nexport function createPermissionUri(\n databaseId: string,\n userId: string,\n permissionId: string,\n): string {\n permissionId = trimSlashFromLeftAndRight(permissionId);\n validateResourceId(permissionId);\n\n return (\n createUserUri(databaseId, userId) +\n \"/\" +\n Constants.Path.PermissionsPathSegment +\n \"/\" +\n permissionId\n );\n}\n\n/**\n * Given a database, collection and stored proc id, this creates a stored proc link.\n * Would be used when replacing, executing, or deleting a StoredProcedure in\n * Azure Cosmos DB database service.\n * @param databaseId -The database Id\n * @param collectionId -The collection Id\n * @param storedProcedureId -The stored procedure Id\n * @returns A stored procedure link in the format of\n * `dbs/{0}/colls/{1}/sprocs/{2}` with `{0}` being a Uri escaped version of the databaseId,\n * `{1}` being collectionId and `{2}` being the storedProcedureId\n * @hidden\n */\nexport function createStoredProcedureUri(\n databaseId: string,\n collectionId: string,\n storedProcedureId: string,\n): string {\n storedProcedureId = trimSlashFromLeftAndRight(storedProcedureId);\n validateResourceId(storedProcedureId);\n\n return (\n createDocumentCollectionUri(databaseId, collectionId) +\n \"/\" +\n Constants.Path.StoredProceduresPathSegment +\n \"/\" +\n storedProcedureId\n );\n}\n\n/**\n * Given a database, collection and trigger id, this creates a trigger link.\n * Would be used when replacing, executing, or deleting a Trigger in Azure Cosmos DB database service\n * @param databaseId -The database Id\n * @param collectionId -The collection Id\n * @param triggerId -The trigger Id\n * @returns A trigger link in the format of\n * `dbs/{0}/colls/{1}/triggers/{2}` with `{0}` being a Uri escaped version of the databaseId,\n * `{1}` being collectionId and `{2}` being the triggerId\n * @hidden\n */\nexport function createTriggerUri(\n databaseId: string,\n collectionId: string,\n triggerId: string,\n): string {\n triggerId = trimSlashFromLeftAndRight(triggerId);\n validateResourceId(triggerId);\n\n return (\n createDocumentCollectionUri(databaseId, collectionId) +\n \"/\" +\n Constants.Path.TriggersPathSegment +\n \"/\" +\n triggerId\n );\n}\n\n/**\n * Given a database, collection and udf id, this creates a udf link.\n * Would be used when replacing, executing, or deleting a UserDefinedFunction in\n * Azure Cosmos DB database service\n * @param databaseId -The database Id\n * @param collectionId -The collection Id\n * @param udfId -The User Defined Function Id\n * @returns A udf link in the format of `dbs/{0}/colls/{1}/udfs/{2}`\n * with `{0}` being a Uri escaped version of the databaseId, `{1}` being collectionId and `{2}` being the udfId\n * @hidden\n */\nexport function createUserDefinedFunctionUri(\n databaseId: string,\n collectionId: string,\n udfId: string,\n): string {\n udfId = trimSlashFromLeftAndRight(udfId);\n validateResourceId(udfId);\n\n return (\n createDocumentCollectionUri(databaseId, collectionId) +\n \"/\" +\n Constants.Path.UserDefinedFunctionsPathSegment +\n \"/\" +\n udfId\n );\n}\n\n/**\n * Given a database, collection and conflict id, this creates a conflict link.\n * Would be used when creating a Conflict in Azure Cosmos DB database service.\n * @param databaseId -The database Id\n * @param collectionId -The collection Id\n * @param conflictId -The conflict Id\n * @returns A conflict link in the format of `dbs/{0}/colls/{1}/conflicts/{2}`\n * with `{0}` being a Uri escaped version of the databaseId, `{1}` being collectionId and `{2}` being the conflictId\n * @hidden\n */\nexport function createConflictUri(\n databaseId: string,\n collectionId: string,\n conflictId: string,\n): string {\n conflictId = trimSlashFromLeftAndRight(conflictId);\n validateResourceId(conflictId);\n\n return (\n createDocumentCollectionUri(databaseId, collectionId) +\n \"/\" +\n Constants.Path.ConflictsPathSegment +\n \"/\" +\n conflictId\n );\n}\n\n/**\n * Given a database, collection and conflict id, this creates a conflict link.\n * Would be used when creating a Conflict in Azure Cosmos DB database service.\n * @param databaseId -The database Id\n * @param collectionId -The collection Id\n * @param documentId -The document Id\n * @param attachmentId -The attachment Id\n * @returns A conflict link in the format of `dbs/{0}/colls/{1}/conflicts/{2}`\n * with `{0}` being a Uri escaped version of the databaseId, `{1}` being collectionId and `{2}` being the conflictId\n * @hidden\n */\nexport function createAttachmentUri(\n databaseId: string,\n collectionId: string,\n documentId: string,\n attachmentId: string,\n): string {\n attachmentId = trimSlashFromLeftAndRight(attachmentId);\n validateResourceId(attachmentId);\n\n return (\n createDocumentUri(databaseId, collectionId, documentId) +\n \"/\" +\n Constants.Path.AttachmentsPathSegment +\n \"/\" +\n attachmentId\n );\n}\n\n/**\n * Given a database and collection, this creates a partition key ranges link in\n * the Azure Cosmos DB database service.\n * @param databaseId - The database Id\n * @param collectionId - The collection Id\n * @returns A partition key ranges link in the format of\n * `dbs/{0}/colls/{1}/pkranges` with `{0}` being a Uri escaped version of the databaseId and `{1}` being collectionId\n * @hidden\n */\nexport function createPartitionKeyRangesUri(databaseId: string, collectionId: string): string {\n return (\n createDocumentCollectionUri(databaseId, collectionId) +\n \"/\" +\n Constants.Path.PartitionKeyRangesPathSegment\n );\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport { getIdFromLink, getPathFromLink, ResourceType } from \"../../common\";\nimport type { SqlQuerySpec } from \"../../queryExecutionContext\";\nimport { QueryIterator } from \"../../queryIterator\";\nimport type { FeedOptions } from \"../../request\";\nimport type { Container } from \"../Container\";\nimport type { Resource } from \"../Resource\";\nimport type { ConflictDefinition } from \"./ConflictDefinition\";\n\n/**\n * Use to query or read all conflicts.\n *\n * @see {@link Conflict} to read or delete a given {@link Conflict} by id.\n */\nexport class Conflicts {\n constructor(\n public readonly container: Container,\n private readonly clientContext: ClientContext,\n ) {}\n\n /**\n * Queries all conflicts.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n * @param options - Use to set options like response page size, continuation tokens, etc.\n * @returns {@link QueryIterator} Allows you to return results in an array or iterate over them one at a time.\n */\n public query(query: string | SqlQuerySpec, options?: FeedOptions): QueryIterator;\n /**\n * Queries all conflicts.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n * @param options - Use to set options like response page size, continuation tokens, etc.\n * @returns {@link QueryIterator} Allows you to return results in an array or iterate over them one at a time.\n */\n public query(query: string | SqlQuerySpec, options?: FeedOptions): QueryIterator;\n public query(query: string | SqlQuerySpec, options?: FeedOptions): QueryIterator {\n const path = getPathFromLink(this.container.url, ResourceType.conflicts);\n const id = getIdFromLink(this.container.url);\n\n return new QueryIterator(\n this.clientContext,\n query,\n options,\n (diagNode: DiagnosticNodeInternal, innerOptions) => {\n return this.clientContext.queryFeed({\n path,\n resourceType: ResourceType.conflicts,\n resourceId: id,\n resultFn: (result) => result.Conflicts,\n query,\n options: innerOptions,\n diagnosticNode: diagNode,\n });\n },\n );\n }\n\n /**\n * Reads all conflicts\n * @param options - Use to set options like response page size, continuation tokens, etc.\n */\n public readAll(options?: FeedOptions): QueryIterator {\n return this.query(undefined, options);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { CosmosDiagnostics } from \"../../CosmosDiagnostics\";\nimport type { CosmosHeaders } from \"../../queryExecutionContext\";\nimport { ResourceResponse } from \"../../request\";\nimport type { Resource } from \"../Resource\";\nimport type { Conflict } from \"./Conflict\";\nimport type { ConflictDefinition } from \"./ConflictDefinition\";\n\nexport class ConflictResponse extends ResourceResponse {\n constructor(\n resource: ConflictDefinition & Resource,\n headers: CosmosHeaders,\n statusCode: number,\n conflict: Conflict,\n diagnostics: CosmosDiagnostics,\n ) {\n super(resource, headers, statusCode, diagnostics);\n this.conflict = conflict;\n }\n /** A reference to the {@link Conflict} corresponding to the returned {@link ConflictDefinition}. */\n public readonly conflict: Conflict;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport { Constants, getIdFromLink, getPathFromLink, ResourceType } from \"../../common\";\nimport type { RequestOptions } from \"../../request\";\nimport type { Container } from \"../Container\";\nimport type { ConflictDefinition } from \"./ConflictDefinition\";\nimport { ConflictResponse } from \"./ConflictResponse\";\nimport { undefinedPartitionKey } from \"../../extractPartitionKey\";\nimport type { PartitionKey } from \"../../documents\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport { readPartitionKeyDefinition } from \"../ClientUtils\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"../../utils/diagnostics\";\n\n/**\n * Use to read or delete a given {@link Conflict} by id.\n *\n * @see {@link Conflicts} to query or read all conflicts.\n */\nexport class Conflict {\n /**\n * Returns a reference URL to the resource. Used for linking in Permissions.\n */\n public get url(): string {\n return `/${this.container.url}/${Constants.Path.ConflictsPathSegment}/${this.id}`;\n }\n /**\n * @hidden\n * @param container - The parent {@link Container}.\n * @param id - The id of the given {@link Conflict}.\n */\n constructor(\n public readonly container: Container,\n public readonly id: string,\n private readonly clientContext: ClientContext,\n private partitionKey?: PartitionKey,\n ) {\n this.partitionKey = partitionKey;\n }\n\n /**\n * Read the {@link ConflictDefinition} for the given {@link Conflict}.\n */\n public async read(options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = getPathFromLink(this.url, ResourceType.conflicts);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.read({\n path,\n resourceType: ResourceType.user,\n resourceId: id,\n options,\n diagnosticNode,\n });\n\n return new ConflictResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Delete the given {@link ConflictDefinition}.\n */\n public async delete(options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n if (this.partitionKey === undefined) {\n const partitionKeyDefinition = await readPartitionKeyDefinition(\n diagnosticNode,\n this.container,\n );\n this.partitionKey = undefinedPartitionKey(partitionKeyDefinition);\n }\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.delete({\n path,\n resourceType: ResourceType.conflicts,\n resourceId: id,\n options,\n partitionKey: this.partitionKey,\n diagnosticNode,\n });\n return new ConflictResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { CosmosDiagnostics } from \"./CosmosDiagnostics\";\nimport { Constants } from \"./common\";\nimport type { CosmosHeaders } from \"./queryExecutionContext\";\n\n/**\n * A single response page from the Azure Cosmos DB Change Feed\n */\nexport class ChangeFeedResponse {\n /**\n * @internal\n */\n constructor(\n /**\n * Gets the items returned in the response from Azure Cosmos DB\n */\n public readonly result: T,\n /**\n * Gets the number of items returned in the response from Azure Cosmos DB\n */\n public readonly count: number,\n /**\n * Gets the status code of the response from Azure Cosmos DB\n */\n public readonly statusCode: number,\n headers: CosmosHeaders,\n public readonly diagnostics: CosmosDiagnostics,\n ) {\n this.headers = Object.freeze(headers);\n }\n\n /**\n * Gets the request charge for this request from the Azure Cosmos DB service.\n */\n public get requestCharge(): number {\n const rus = this.headers[Constants.HttpHeaders.RequestCharge];\n return rus ? parseInt(rus, 10) : null;\n }\n\n /**\n * Gets the activity ID for the request from the Azure Cosmos DB service.\n */\n public get activityId(): string {\n return this.headers[Constants.HttpHeaders.ActivityId];\n }\n\n /**\n * Gets the continuation token to be used for continuing enumeration of the Azure Cosmos DB service.\n *\n * This is equivalent to the `etag` property.\n */\n public get continuation(): string {\n return this.etag;\n }\n\n /**\n * Gets the session token for use in session consistency reads from the Azure Cosmos DB service.\n */\n public get sessionToken(): string {\n return this.headers[Constants.HttpHeaders.SessionToken];\n }\n\n /**\n * Gets the entity tag associated with last transaction in the Azure Cosmos DB service,\n * which can be used as If-Non-Match Access condition for ReadFeed REST request or\n * `continuation` property of `ChangeFeedOptions` parameter for\n * `Items.changeFeed()`\n * to get feed changes since the transaction specified by this entity tag.\n *\n * This is equivalent to the `continuation` property.\n */\n public get etag(): string {\n return this.headers[Constants.HttpHeaders.ETag];\n }\n\n /**\n * Response headers of the response from Azure Cosmos DB\n */\n public headers: CosmosHeaders;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/// \nimport type { ChangeFeedOptions } from \"./ChangeFeedOptions\";\nimport { ChangeFeedResponse } from \"./ChangeFeedResponse\";\nimport type { Resource } from \"./client\";\nimport type { ClientContext } from \"./ClientContext\";\nimport { Constants, ResourceType, StatusCodes } from \"./common\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal\";\nimport type { PartitionKey } from \"./documents\";\nimport type { FeedOptions } from \"./request\";\nimport type { Response } from \"./request\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"./utils/diagnostics\";\n\n/**\n * Provides iterator for change feed.\n *\n * Use `Items.changeFeed()` to get an instance of the iterator.\n */\nexport class ChangeFeedIterator {\n private static readonly IfNoneMatchAllHeaderValue = \"*\";\n private nextIfNoneMatch: string;\n private ifModifiedSince: string;\n private lastStatusCode: number;\n private isPartitionSpecified: boolean;\n\n /**\n * @internal\n */\n constructor(\n private clientContext: ClientContext,\n private resourceId: string,\n private resourceLink: string,\n private partitionKey: PartitionKey,\n private changeFeedOptions: ChangeFeedOptions,\n ) {\n // partition key XOR partition key range id\n const partitionKeyValid = partitionKey !== undefined;\n this.isPartitionSpecified = partitionKeyValid;\n\n let canUseStartFromBeginning = true;\n if (changeFeedOptions.continuation) {\n this.nextIfNoneMatch = changeFeedOptions.continuation;\n canUseStartFromBeginning = false;\n }\n\n if (changeFeedOptions.startTime) {\n // .toUTCString() is platform specific, but most platforms use RFC 1123.\n // In ECMAScript 2018, this was standardized to RFC 1123.\n // See for more info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toUTCString\n this.ifModifiedSince = changeFeedOptions.startTime.toUTCString();\n canUseStartFromBeginning = false;\n }\n\n if (canUseStartFromBeginning && !changeFeedOptions.startFromBeginning) {\n this.nextIfNoneMatch = ChangeFeedIterator.IfNoneMatchAllHeaderValue;\n }\n }\n\n /**\n * Gets a value indicating whether there are potentially additional results that can be retrieved.\n *\n * Initially returns true. This value is set based on whether the last execution returned a continuation token.\n *\n * @returns Boolean value representing if whether there are potentially additional results that can be retrieved.\n */\n get hasMoreResults(): boolean {\n return this.lastStatusCode !== StatusCodes.NotModified;\n }\n\n /**\n * Gets an async iterator which will yield pages of results from Azure Cosmos DB.\n */\n public async *getAsyncIterator(): AsyncIterable>> {\n do {\n const result = await this.fetchNext();\n if (result.count > 0) {\n yield result;\n }\n } while (this.hasMoreResults);\n }\n\n /**\n * Read feed and retrieves the next page of results in Azure Cosmos DB.\n */\n public async fetchNext(): Promise>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const response = await this.getFeedResponse(diagnosticNode);\n this.lastStatusCode = response.statusCode;\n this.nextIfNoneMatch = response.headers[Constants.HttpHeaders.ETag];\n return response;\n }, this.clientContext);\n }\n\n private async getFeedResponse(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise>> {\n if (!this.isPartitionSpecified) {\n throw new Error(\n \"Container is partitioned, but no partition key or partition key range id was specified.\",\n );\n }\n const feedOptions: FeedOptions = { initialHeaders: {}, useIncrementalFeed: true };\n\n if (typeof this.changeFeedOptions.maxItemCount === \"number\") {\n feedOptions.maxItemCount = this.changeFeedOptions.maxItemCount;\n }\n\n if (this.changeFeedOptions.sessionToken) {\n feedOptions.sessionToken = this.changeFeedOptions.sessionToken;\n }\n\n if (this.nextIfNoneMatch) {\n feedOptions.accessCondition = {\n type: Constants.HttpHeaders.IfNoneMatch,\n condition: this.nextIfNoneMatch,\n };\n }\n\n if (this.ifModifiedSince) {\n feedOptions.initialHeaders[Constants.HttpHeaders.IfModifiedSince] = this.ifModifiedSince;\n }\n\n const response: Response> = await (this.clientContext.queryFeed({\n path: this.resourceLink,\n resourceType: ResourceType.item,\n resourceId: this.resourceId,\n resultFn: (result) => (result ? result.Documents : []),\n query: undefined,\n options: feedOptions,\n partitionKey: this.partitionKey,\n diagnosticNode: diagnosticNode,\n }) as Promise); // TODO: some funky issues with query feed. Probably need to change it up.\n\n return new ChangeFeedResponse(\n response.result,\n response.result ? response.result.length : 0,\n response.code,\n response.headers,\n getEmptyCosmosDiagnostics(),\n );\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { CosmosDiagnostics } from \"../../CosmosDiagnostics\";\nimport type { CosmosHeaders } from \"../../queryExecutionContext\";\nimport { ResourceResponse } from \"../../request/ResourceResponse\";\nimport type { Resource } from \"../Resource\";\nimport type { Item } from \"./Item\";\nimport type { ItemDefinition } from \"./ItemDefinition\";\n\nexport class ItemResponse extends ResourceResponse {\n constructor(\n resource: T & Resource,\n headers: CosmosHeaders,\n statusCode: number,\n subsstatusCode: number,\n item: Item,\n diagnostics: CosmosDiagnostics,\n ) {\n super(resource, headers, statusCode, diagnostics, subsstatusCode);\n this.item = item;\n }\n /** Reference to the {@link Item} the response corresponds to. */\n public readonly item: Item;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport {\n createDocumentUri,\n getIdFromLink,\n getPathFromLink,\n isItemResourceValid,\n ResourceType,\n StatusCodes,\n} from \"../../common\";\nimport type { PartitionKey, PartitionKeyInternal } from \"../../documents\";\nimport { convertToInternalPartitionKey } from \"../../documents\";\nimport type { RequestOptions, Response } from \"../../request\";\nimport type { PatchRequestBody } from \"../../utils/patch\";\nimport type { Container } from \"../Container\";\nimport type { Resource } from \"../Resource\";\nimport type { ItemDefinition } from \"./ItemDefinition\";\nimport { ItemResponse } from \"./ItemResponse\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"../../utils/diagnostics\";\nimport { setPartitionKeyIfUndefined } from \"../../extractPartitionKey\";\n\n/**\n * Used to perform operations on a specific item.\n *\n * @see {@link Items} for operations on all items; see `container.items`.\n */\nexport class Item {\n private partitionKey: PartitionKeyInternal;\n /**\n * Returns a reference URL to the resource. Used for linking in Permissions.\n */\n public get url(): string {\n return createDocumentUri(this.container.database.id, this.container.id, this.id);\n }\n\n /**\n * @hidden\n * @param container - The parent {@link Container}.\n * @param id - The id of the given {@link Item}.\n * @param partitionKey - The primary key of the given {@link Item} (only for partitioned containers).\n */\n constructor(\n public readonly container: Container,\n public readonly id: string,\n private readonly clientContext: ClientContext,\n partitionKey?: PartitionKey,\n ) {\n this.partitionKey =\n partitionKey === undefined ? undefined : convertToInternalPartitionKey(partitionKey);\n }\n\n /**\n * Read the item's definition.\n *\n * Any provided type, T, is not necessarily enforced by the SDK.\n * You may get more or less properties and it's up to your logic to enforce it.\n * If the type, T, is a class, it won't pass `typeof` comparisons, because it won't have a match prototype.\n * It's recommended to only use interfaces.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param options - Additional options for the request\n *\n * @example Using custom type for response\n * ```typescript\n * interface TodoItem {\n * title: string;\n * done: bool;\n * id: string;\n * }\n *\n * let item: TodoItem;\n * ({body: item} = await item.read());\n * ```\n */\n public async read(\n options: RequestOptions = {},\n ): Promise> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n this.partitionKey = await setPartitionKeyIfUndefined(\n diagnosticNode,\n this.container,\n this.partitionKey,\n );\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n let response: Response;\n try {\n response = await this.clientContext.read({\n path,\n resourceType: ResourceType.item,\n resourceId: id,\n options,\n partitionKey: this.partitionKey,\n diagnosticNode,\n });\n } catch (error: any) {\n if (error.code !== StatusCodes.NotFound) {\n throw error;\n }\n response = error;\n }\n\n return new ItemResponse(\n response.result,\n response.headers,\n response.code,\n response.substatus,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Replace the item's definition.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param body - The definition to replace the existing {@link Item}'s definition with.\n * @param options - Additional options for the request\n */\n public replace(\n body: ItemDefinition,\n options?: RequestOptions,\n ): Promise>;\n /**\n * Replace the item's definition.\n *\n * Any provided type, T, is not necessarily enforced by the SDK.\n * You may get more or less properties and it's up to your logic to enforce it.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param body - The definition to replace the existing {@link Item}'s definition with.\n * @param options - Additional options for the request\n */\n public replace(\n body: T,\n options?: RequestOptions,\n ): Promise>;\n public async replace(\n body: T,\n options: RequestOptions = {},\n ): Promise> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n this.partitionKey = await setPartitionKeyIfUndefined(\n diagnosticNode,\n this.container,\n this.partitionKey,\n );\n const err = {};\n if (!isItemResourceValid(body, err)) {\n throw err;\n }\n\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.replace({\n body,\n path,\n resourceType: ResourceType.item,\n resourceId: id,\n options,\n partitionKey: this.partitionKey,\n diagnosticNode,\n });\n return new ItemResponse(\n response.result,\n response.headers,\n response.code,\n response.substatus,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Delete the item.\n *\n * Any provided type, T, is not necessarily enforced by the SDK.\n * You may get more or less properties and it's up to your logic to enforce it.\n *\n * @param options - Additional options for the request\n */\n public async delete(\n options: RequestOptions = {},\n ): Promise> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n this.partitionKey = await setPartitionKeyIfUndefined(\n diagnosticNode,\n this.container,\n this.partitionKey,\n );\n\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.delete({\n path,\n resourceType: ResourceType.item,\n resourceId: id,\n options,\n partitionKey: this.partitionKey,\n diagnosticNode,\n });\n\n return new ItemResponse(\n response.result,\n response.headers,\n response.code,\n response.substatus,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Perform a JSONPatch on the item.\n *\n * Any provided type, T, is not necessarily enforced by the SDK.\n * You may get more or less properties and it's up to your logic to enforce it.\n *\n * @param options - Additional options for the request\n */\n public async patch(\n body: PatchRequestBody,\n options: RequestOptions = {},\n ): Promise> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n this.partitionKey = await setPartitionKeyIfUndefined(\n diagnosticNode,\n this.container,\n this.partitionKey,\n );\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.patch({\n body,\n path,\n resourceType: ResourceType.item,\n resourceId: id,\n options,\n partitionKey: this.partitionKey,\n diagnosticNode,\n });\n\n return new ItemResponse(\n response.result,\n response.headers,\n response.code,\n response.substatus,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Enum to specify the resource for which change feed is being fetched.\n */\nexport enum ChangeFeedResourceType {\n FeedRange,\n PartitionKey,\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PartitionKeyDefinition, PrimitivePartitionKeyValue } from \"../../documents\";\nimport { PartitionKeyDefinitionVersion, PartitionKeyKind } from \"../../documents\";\nimport { hashMultiHashPartitionKey } from \"./multiHash\";\nimport { hashV1PartitionKey } from \"./v1\";\nimport { hashV2PartitionKey } from \"./v2\";\n\n/**\n * Generate hash of a PartitonKey based on it PartitionKeyDefinition.\n * @param partitionKey - to be hashed.\n * @param partitionDefinition - container's partitionKey definition\n * @returns\n */\nexport function hashPartitionKey(\n partitionKey: PrimitivePartitionKeyValue[],\n partitionDefinition: PartitionKeyDefinition,\n): string {\n const kind: PartitionKeyKind = partitionDefinition?.kind || PartitionKeyKind.Hash; // Default value.\n const isV2 =\n partitionDefinition &&\n partitionDefinition.version &&\n partitionDefinition.version === PartitionKeyDefinitionVersion.V2;\n switch (kind) {\n case PartitionKeyKind.Hash:\n return isV2 ? hashV2PartitionKey(partitionKey) : hashV1PartitionKey(partitionKey);\n case PartitionKeyKind.MultiHash:\n return hashMultiHashPartitionKey(partitionKey);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { PrimitivePartitionKeyValue } from \"../../documents\";\nimport { hashV2PartitionKey } from \"./v2\";\n\n/**\n * Generate Hash for a `Multi Hash` type partition.\n * @param partitionKey - to be hashed.\n * @returns\n */\nexport function hashMultiHashPartitionKey(partitionKey: PrimitivePartitionKeyValue[]): string {\n return partitionKey.map((keys) => hashV2PartitionKey([keys])).join(\"\");\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PartitionKey } from \"../../documents\";\nimport type { FeedRange } from \"./FeedRange\";\n/**\n * @hidden\n * Class which specifies the ChangeFeedIterator to start reading changes from this moment in time.\n */\nexport class ChangeFeedStartFromNow {\n public cfResource?: PartitionKey | FeedRange;\n\n constructor(cfResource?: PartitionKey | FeedRange) {\n this.cfResource = cfResource;\n }\n\n public getCfResource(): PartitionKey | FeedRange | undefined {\n return this.cfResource;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { PartitionKey } from \"../../documents\";\nimport type { FeedRange } from \"./FeedRange\";\n\n/**\n * @hidden\n * Class which specifies the ChangeFeedIterator to start reading changes from beginning of time.\n */\nexport class ChangeFeedStartFromBeginning {\n private cfResource?: PartitionKey | FeedRange;\n\n constructor(cfResource?: PartitionKey | FeedRange) {\n this.cfResource = cfResource;\n }\n\n public getCfResource(): PartitionKey | FeedRange | undefined {\n return this.cfResource;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { PartitionKey } from \"../../documents\";\nimport type { FeedRange } from \"./FeedRange\";\n/**\n * @hidden\n * Class which specifies the ChangeFeedIterator to start reading changes from a particular point of time.\n */\nexport class ChangeFeedStartFromTime {\n private cfResource?: PartitionKey | FeedRange;\n\n private startTime: Date;\n\n constructor(startTime: Date, cfResource?: PartitionKey | FeedRange) {\n this.startTime = startTime;\n this.cfResource = cfResource;\n }\n\n public getCfResource(): PartitionKey | FeedRange | undefined {\n return this.cfResource;\n }\n\n public getStartTime(): Date {\n return this.startTime;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { ErrorResponse } from \"../../request\";\nimport { ChangeFeedResourceType } from \"./ChangeFeedEnums\";\n/**\n * @hidden\n * Class which specifies the ChangeFeedIterator to start reading changes from a saved point.\n */\nexport class ChangeFeedStartFromContinuation {\n private continuationToken: string;\n\n constructor(continuation: string) {\n this.continuationToken = continuation;\n }\n\n public getCfResource(): string {\n return this.continuationToken;\n }\n public getCfResourceJson(): any {\n return JSON.parse(this.continuationToken);\n }\n\n public getResourceType(): any {\n const cToken = this.getCfResourceJson();\n if (\n Object.prototype.hasOwnProperty.call(cToken, \"partitionKey\") &&\n Object.prototype.hasOwnProperty.call(cToken, \"Continuation\") &&\n typeof cToken.Continuation === \"string\"\n ) {\n return ChangeFeedResourceType.PartitionKey;\n } else if (\n Object.prototype.hasOwnProperty.call(cToken, \"Continuation\") &&\n Array.isArray(cToken.Continuation) &&\n cToken.Continuation.length > 0\n ) {\n return ChangeFeedResourceType.FeedRange;\n } else {\n throw new ErrorResponse(\"Invalid continuation token.\");\n }\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ErrorResponse } from \"../../request\";\n\n/**\n * Specifies a feed range for the changefeed.\n */\nexport abstract class FeedRange {\n /**\n * Min value for the feed range.\n */\n readonly minInclusive: string;\n /**\n * Max value for the feed range.\n */\n readonly maxExclusive: string;\n /**\n * @internal\n */\n protected constructor(minInclusive: string, maxExclusive: string) {\n // only way to explictly block users from creating FeedRange directly in JS\n if (new.target === FeedRange) {\n throw new ErrorResponse(\"Cannot instantiate abstract class FeedRange\");\n }\n\n this.minInclusive = minInclusive;\n this.maxExclusive = maxExclusive;\n }\n}\n\n/**\n * @hidden\n * Specifies a feed range for the changefeed.\n */\nexport class FeedRangeInternal extends FeedRange {\n /* eslint-disable @typescript-eslint/no-useless-constructor */\n constructor(minInclusive: string, maxExclusive: string) {\n super(minInclusive, maxExclusive);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ChangeFeedIteratorOptions } from \"./ChangeFeedIteratorOptions\";\nimport { ErrorResponse } from \"../../request\";\nimport type { PartitionKeyRange } from \"../Container\";\nimport type { InternalChangeFeedIteratorOptions } from \"./InternalChangeFeedOptions\";\nimport { isPrimitivePartitionKeyValue } from \"../../utils/typeChecks\";\nimport type { ChangeFeedStartFrom } from \"./ChangeFeedStartFrom\";\nimport { ChangeFeedStartFromBeginning } from \"./ChangeFeedStartFromBeginning\";\nimport { Constants } from \"../../common\";\nimport { ChangeFeedStartFromTime } from \"./ChangeFeedStartFromTime\";\nimport type { QueryRange } from \"../../routing\";\nimport { FeedRangeInternal } from \"./FeedRange\";\n\n/**\n * @hidden\n * Validates the change feed options passed by the user\n */\nexport function validateChangeFeedIteratorOptions(options: ChangeFeedIteratorOptions): void {\n if (!isChangeFeedIteratorOptions(options)) {\n throw new ErrorResponse(\"Invalid Changefeed Iterator Options.\");\n }\n if (options?.maxItemCount && typeof options?.maxItemCount !== \"number\") {\n throw new ErrorResponse(\"maxItemCount must be number\");\n }\n if (options?.maxItemCount !== undefined && options?.maxItemCount < 1) {\n throw new ErrorResponse(\"maxItemCount must be a positive number\");\n }\n}\n\nfunction isChangeFeedIteratorOptions(options: unknown): options is ChangeFeedIteratorOptions {\n if (typeof options !== \"object\") {\n return false;\n }\n if (Object.keys(options).length === 0 && JSON.stringify(options) === \"{}\") {\n return true;\n }\n return options && !(isPrimitivePartitionKeyValue(options) || Array.isArray(options));\n}\n\n/**\n * @hidden\n * Checks if pkRange entirely covers the given overLapping range or there is only partial overlap.\n *\n * If no complete overlap, exact range which overlaps is retured which is used to set minEpk and maxEpk headers while quering change feed.\n */\nexport async function extractOverlappingRanges(\n epkRange: QueryRange,\n overLappingRange: PartitionKeyRange,\n): Promise<[string, string]> {\n if (\n overLappingRange.minInclusive >= epkRange.min &&\n overLappingRange.maxExclusive <= epkRange.max\n ) {\n return [undefined, undefined];\n } else if (\n overLappingRange.minInclusive <= epkRange.min &&\n overLappingRange.maxExclusive >= epkRange.max\n ) {\n return [epkRange.min, epkRange.max];\n }\n // Right Side of overlapping range is covered\n else if (\n overLappingRange.minInclusive <= epkRange.min &&\n overLappingRange.maxExclusive <= epkRange.max &&\n overLappingRange.maxExclusive >= epkRange.min\n ) {\n return [epkRange.min, overLappingRange.maxExclusive];\n }\n // Left Side of overlapping range is covered\n else {\n return [overLappingRange.minInclusive, epkRange.max];\n }\n}\n\n/**\n * @hidden\n * Checks if the object is a valid EpkRange\n */\nexport function isEpkRange(obj: unknown): boolean {\n return (\n obj instanceof FeedRangeInternal &&\n typeof obj.minInclusive === \"string\" &&\n typeof obj.maxExclusive === \"string\" &&\n obj.minInclusive >=\n Constants.EffectivePartitionKeyConstants.MinimumInclusiveEffectivePartitionKey &&\n obj.maxExclusive <=\n Constants.EffectivePartitionKeyConstants.MaximumExclusiveEffectivePartitionKey &&\n obj.maxExclusive > obj.minInclusive\n );\n}\n\n/**\n * @hidden\n */\nexport function buildInternalChangeFeedOptions(\n options: ChangeFeedIteratorOptions,\n continuationToken?: string,\n startTime?: Date,\n startFromNow?: boolean,\n): InternalChangeFeedIteratorOptions {\n const internalCfOptions = {} as InternalChangeFeedIteratorOptions;\n internalCfOptions.maxItemCount = options?.maxItemCount;\n internalCfOptions.sessionToken = options?.sessionToken;\n internalCfOptions.continuationToken = continuationToken;\n internalCfOptions.changeFeedMode = options?.changeFeedMode;\n // Default option of changefeed is to start from now.\n if (startFromNow) {\n internalCfOptions.startFromNow = true;\n } else {\n internalCfOptions.startTime = startTime;\n }\n return internalCfOptions;\n}\n/**\n * @hidden\n */\nexport function fetchStartTime(changeFeedStartFrom: ChangeFeedStartFrom): Date | undefined {\n if (changeFeedStartFrom instanceof ChangeFeedStartFromBeginning) {\n return undefined;\n } else if (changeFeedStartFrom instanceof ChangeFeedStartFromTime) {\n return changeFeedStartFrom.getStartTime();\n }\n}\n\n/**\n * @hidden\n */\nexport function isNullOrEmpty(text: string | null | undefined): boolean {\n return text === null || text === undefined || text.trim() === \"\";\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { PartitionKey } from \"../../documents\";\nimport type { FeedRange } from \"./FeedRange\";\nimport { ChangeFeedStartFromNow } from \"./ChangeFeedStartFromNow\";\nimport { ChangeFeedStartFromBeginning } from \"./ChangeFeedStartFromBeginning\";\nimport { ChangeFeedStartFromTime } from \"./ChangeFeedStartFromTime\";\nimport { ChangeFeedStartFromContinuation } from \"./ChangeFeedStartFromContinuation\";\nimport { ErrorResponse } from \"../../request/ErrorResponse\";\nimport { isNullOrEmpty } from \"./changeFeedUtils\";\n\n/**\n * Base class for where to start a ChangeFeedIterator.\n */\n/* eslint-disable @typescript-eslint/no-extraneous-class */\nexport abstract class ChangeFeedStartFrom {\n /**\n * Returns an object that tells the ChangeFeedIterator to start from the beginning of time.\n * @param cfResource - PartitionKey or FeedRange for which changes are to be fetched. Leave blank for fetching changes for entire container.\n */\n public static Beginning(cfResource?: PartitionKey | FeedRange): ChangeFeedStartFromBeginning {\n return new ChangeFeedStartFromBeginning(cfResource);\n }\n /**\n * Returns an object that tells the ChangeFeedIterator to start reading changes from this moment onward.\n * @param cfResource - PartitionKey or FeedRange for which changes are to be fetched. Leave blank for fetching changes for entire container.\n **/\n public static Now(cfResource?: PartitionKey | FeedRange): ChangeFeedStartFromNow {\n return new ChangeFeedStartFromNow(cfResource);\n }\n /**\n * Returns an object that tells the ChangeFeedIterator to start reading changes from some point in time onward.\n * @param startTime - Date object specfiying the time to start reading changes from.\n * @param cfResource - PartitionKey or FeedRange for which changes are to be fetched. Leave blank for fetching changes for entire container.\n */\n public static Time(\n startTime: Date,\n cfResource?: PartitionKey | FeedRange,\n ): ChangeFeedStartFromTime {\n if (!startTime) {\n throw new ErrorResponse(\"startTime must be present\");\n }\n if (startTime instanceof Date === true) {\n return new ChangeFeedStartFromTime(startTime, cfResource);\n } else {\n throw new ErrorResponse(\"startTime must be a Date object.\");\n }\n }\n /**\n * Returns an object that tells the ChangeFeedIterator to start reading changes from a save point.\n * @param continuation - The continuation to resume from.\n */\n public static Continuation(continuationToken: string): ChangeFeedStartFromContinuation {\n if (!continuationToken) {\n throw new ErrorResponse(\"Argument continuation must be passed.\");\n }\n if (isNullOrEmpty(continuationToken)) {\n throw new ErrorResponse(\"Argument continuationToken must be a non-empty string.\");\n }\n return new ChangeFeedStartFromContinuation(continuationToken);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { CosmosDiagnostics } from \"../../CosmosDiagnostics\";\nimport { Constants } from \"../../common\";\nimport type { CosmosHeaders } from \"../../queryExecutionContext\";\n\n/**\n * A single response page from the Azure Cosmos DB Change Feed\n */\nexport class ChangeFeedIteratorResponse {\n /**\n * @internal\n */\n constructor(\n /**\n * Gets the items returned in the response from Azure Cosmos DB\n */\n public readonly result: T,\n /**\n * Gets the number of items returned in the response from Azure Cosmos DB\n */\n public readonly count: number,\n /**\n * Gets the status code of the response from Azure Cosmos DB\n */\n public readonly statusCode: number,\n /**\n * Headers related to cosmos DB and change feed.\n */\n headers: CosmosHeaders,\n /**\n * Cosmos Diagnostic Object.\n */\n public readonly diagnostics: CosmosDiagnostics,\n /**\n * Gets the subStatusCodes of the response from Azure Cosmos DB. Useful in partition split or partition gone.\n */\n public readonly subStatusCode?: number,\n ) {\n this.headers = headers;\n }\n\n /**\n * Gets the request charge for this request from the Azure Cosmos DB service.\n */\n public get requestCharge(): number {\n const rus = this.headers[Constants.HttpHeaders.RequestCharge];\n return rus ? parseInt(rus, 10) : null;\n }\n\n /**\n * Gets the activity ID for the request from the Azure Cosmos DB service.\n */\n public get activityId(): string {\n return this.headers[Constants.HttpHeaders.ActivityId];\n }\n\n /**\n * Gets the continuation token to be used for continuing enumeration of the Azure Cosmos DB service.\n */\n public get continuationToken(): string {\n return this.headers[Constants.HttpHeaders.ContinuationToken];\n }\n /**\n * Gets the session token for use in session consistency reads from the Azure Cosmos DB service.\n */\n public get sessionToken(): string {\n return this.headers[Constants.HttpHeaders.SessionToken];\n }\n /**\n * Response headers of the response from Azure Cosmos DB\n */\n public headers: CosmosHeaders;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { PartitionKey } from \"../../documents\";\n/**\n * Continuation token for change feed of entire container, or a specific Epk Range.\n * @internal\n */\nexport class ContinuationTokenForPartitionKey {\n /**\n * rid of the container for which the continuation token is issued.\n */\n public readonly rid: string;\n /**\n * A specific Partition key in the container for which the continuation token is issued.\n */\n public readonly partitionKey: PartitionKey;\n /**\n * Continuation value for the specific Partition key in the container.\n */\n public Continuation: string;\n\n constructor(rid: string, partitionKey: PartitionKey, continuation: string) {\n this.rid = rid;\n this.partitionKey = partitionKey;\n this.Continuation = continuation;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { InternalChangeFeedIteratorOptions } from \"./InternalChangeFeedOptions\";\nimport { ChangeFeedIteratorResponse } from \"./ChangeFeedIteratorResponse\";\nimport type { Container, Resource } from \"../../client\";\nimport type { ClientContext } from \"../../ClientContext\";\nimport { Constants, ResourceType, StatusCodes } from \"../../common\";\nimport type { FeedOptions, Response } from \"../../request\";\nimport { ErrorResponse } from \"../../request\";\nimport { ContinuationTokenForPartitionKey } from \"./ContinuationTokenForPartitionKey\";\nimport type { ChangeFeedPullModelIterator } from \"./ChangeFeedPullModelIterator\";\nimport type { PartitionKey } from \"../../documents\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"../../utils/diagnostics\";\nimport { ChangeFeedMode } from \"./ChangeFeedMode\";\n/**\n * @hidden\n * Provides iterator for change feed for one partition key.\n *\n * Use `Items.getChangeFeedIterator()` to get an instance of the iterator.\n */\nexport class ChangeFeedForPartitionKey implements ChangeFeedPullModelIterator {\n private continuationToken: ContinuationTokenForPartitionKey;\n private startTime: string;\n private rId: string;\n private isInstantiated: boolean;\n private startFromNow: boolean;\n /**\n * @internal\n */\n constructor(\n private clientContext: ClientContext,\n private container: Container,\n private resourceId: string,\n private resourceLink: string,\n private partitionKey: PartitionKey,\n private changeFeedOptions: InternalChangeFeedIteratorOptions,\n ) {\n this.continuationToken = changeFeedOptions.continuationToken\n ? JSON.parse(changeFeedOptions.continuationToken)\n : undefined;\n this.isInstantiated = false;\n // startTime is used to store and specify time from which change feed should start reading new changes. StartFromNow flag is used to indicate fetching changes from now.\n if (changeFeedOptions.startFromNow) {\n this.startFromNow = true;\n } else if (changeFeedOptions.startTime) {\n this.startTime = changeFeedOptions.startTime.toUTCString();\n }\n }\n\n private async instantiateIterator(diagnosticNode: DiagnosticNodeInternal): Promise {\n await this.setIteratorRid(diagnosticNode);\n if (this.continuationToken) {\n if (!this.continuationTokenRidMatchContainerRid()) {\n throw new ErrorResponse(\"The continuation is not for the current container definition.\");\n }\n } else {\n this.continuationToken = new ContinuationTokenForPartitionKey(\n this.rId,\n this.partitionKey,\n \"\",\n );\n }\n\n this.isInstantiated = true;\n }\n\n private continuationTokenRidMatchContainerRid(): boolean {\n if (this.continuationToken.rid !== this.rId) {\n return false;\n }\n return true;\n }\n\n private async setIteratorRid(diagnosticNode: DiagnosticNodeInternal): Promise {\n const { resource } = await this.container.readInternal(diagnosticNode);\n this.rId = resource._rid;\n }\n\n /**\n * Change feed is an infinite feed. hasMoreResults is always true.\n */\n get hasMoreResults(): boolean {\n return true;\n }\n\n /**\n * Gets an async iterator which will yield change feed results.\n */\n public async *getAsyncIterator(): AsyncIterable>> {\n do {\n const result = await this.readNext();\n yield result;\n } while (this.hasMoreResults);\n }\n\n /**\n * Returns the result of change feed from Azure Cosmos DB.\n */\n public async readNext(): Promise>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n if (!this.isInstantiated) {\n await this.instantiateIterator(diagnosticNode);\n }\n const result = await this.fetchNext(diagnosticNode);\n return result;\n }, this.clientContext);\n }\n\n /**\n * Read feed and retrieves the next set of results in Azure Cosmos DB.\n */\n private async fetchNext(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise>> {\n const response = await this.getFeedResponse(diagnosticNode);\n this.continuationToken.Continuation = response.headers[Constants.HttpHeaders.ETag];\n response.headers[Constants.HttpHeaders.ContinuationToken] = JSON.stringify(\n this.continuationToken,\n );\n return response;\n }\n\n private async getFeedResponse(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise>> {\n const feedOptions: FeedOptions = {\n initialHeaders: {},\n useLatestVersionFeed: true,\n useAllVersionsAndDeletesFeed: false,\n };\n if (typeof this.changeFeedOptions.maxItemCount === \"number\") {\n feedOptions.maxItemCount = this.changeFeedOptions.maxItemCount;\n }\n\n if (this.changeFeedOptions.sessionToken) {\n feedOptions.sessionToken = this.changeFeedOptions.sessionToken;\n }\n\n const continuation = this.continuationToken.Continuation;\n if (continuation) {\n feedOptions.accessCondition = {\n type: Constants.HttpHeaders.IfNoneMatch,\n condition: continuation,\n };\n } else if (this.startFromNow) {\n feedOptions.initialHeaders[Constants.HttpHeaders.IfNoneMatch] =\n Constants.ChangeFeedIfNoneMatchStartFromNowHeader;\n }\n\n if (this.startTime) {\n feedOptions.initialHeaders[Constants.HttpHeaders.IfModifiedSince] = this.startTime;\n }\n if (\n this.changeFeedOptions.changeFeedMode &&\n this.changeFeedOptions.changeFeedMode === ChangeFeedMode.AllVersionsAndDeletes\n ) {\n feedOptions.useAllVersionsAndDeletesFeed = true;\n feedOptions.useLatestVersionFeed = false;\n }\n try {\n const response: Response> = await (this.clientContext.queryFeed({\n path: this.resourceLink,\n resourceType: ResourceType.item,\n resourceId: this.resourceId,\n resultFn: (result) => (result ? result.Documents : []),\n diagnosticNode,\n query: undefined,\n options: feedOptions,\n partitionKey: this.partitionKey,\n }) as Promise);\n return new ChangeFeedIteratorResponse(\n response.result,\n response.result ? response.result.length : 0,\n response.code,\n response.headers,\n getEmptyCosmosDiagnostics(),\n );\n } catch (err) {\n if (err.code >= StatusCodes.BadRequest && err.code !== StatusCodes.Gone) {\n const errorResponse = new ErrorResponse(err.message);\n errorResponse.code = err.code;\n errorResponse.headers = err.headers;\n throw errorResponse;\n }\n return new ChangeFeedIteratorResponse(\n [],\n 0,\n err.code,\n err.headers,\n getEmptyCosmosDiagnostics(),\n );\n }\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * @internal\n * FeedRange for which change feed is being requested.\n */\nexport class ChangeFeedRange {\n /**\n * Min value for the range.\n */\n public minInclusive: string;\n /**\n * Max value for the range.\n */\n public maxExclusive: string;\n /**\n * Continuation token from where to start reading changes.\n */\n public continuationToken?: string;\n /**\n * Min epk value to begin reading changes from in case changefeed of entire partition is not requested.\n */\n public epkMinHeader?: string;\n /**\n * Max epk value to begin reading changes from in case changefeed of entire partition is not requested.\n */\n public epkMaxHeader?: string;\n\n constructor(\n minInclusive: string,\n maxExclusive: string,\n continuationToken?: string,\n epkMinHeader?: string,\n epkMaxHeader?: string,\n ) {\n this.minInclusive = minInclusive;\n this.maxExclusive = maxExclusive;\n this.continuationToken = continuationToken;\n this.epkMinHeader = epkMinHeader;\n this.epkMaxHeader = epkMaxHeader;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { ChangeFeedRange } from \"./ChangeFeedRange\";\n/**\n * @hidden\n * A queue for iterating over specified Epk ranges and fetch change feed for the given epk ranges.\n */\nexport class FeedRangeQueue {\n private elements: ChangeFeedRange[];\n\n constructor() {\n this.elements = [];\n }\n\n public modifyFirstElement(newItem: ChangeFeedRange): void {\n if (!this.isEmpty()) {\n this.elements[0] = newItem;\n }\n }\n\n public enqueue(item: ChangeFeedRange): void {\n this.elements.push(item);\n }\n\n public dequeue(): ChangeFeedRange {\n return this.elements.shift();\n }\n\n public peek(): T | ChangeFeedRange {\n return !this.isEmpty() ? this.elements[0] : undefined;\n }\n\n public isEmpty(): boolean {\n return this.elements.length === 0;\n }\n\n public moveFirstElementToTheEnd(): void {\n if (!this.isEmpty()) {\n this.elements.push(this.dequeue());\n }\n }\n /**\n * Returns a snapshot of the queue as an array to be used as Continuation token.\n */\n public returnSnapshot(): ChangeFeedRange[] {\n const allFeedRanges: ChangeFeedRange[] = [];\n this.elements.map((element) => {\n const minInclusive = element.epkMinHeader ? element.epkMinHeader : element.minInclusive;\n const maxExclusive = element.epkMaxHeader ? element.epkMaxHeader : element.maxExclusive;\n const feedRangeElement = new ChangeFeedRange(\n minInclusive,\n maxExclusive,\n element.continuationToken,\n );\n allFeedRanges.push(feedRangeElement);\n });\n return allFeedRanges;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ChangeFeedRange } from \"./ChangeFeedRange\";\n/**\n * Continuation token for change feed of entire container, or a specific Epk Range.\n * @internal\n */\nexport class CompositeContinuationToken {\n /**\n * rid of the container for which the continuation token is issued.\n */\n public readonly rid: string;\n /**\n * List of Epk Ranges part of the continuation token\n */\n public readonly Continuation: ChangeFeedRange[];\n\n constructor(rid: string, Continuation: ChangeFeedRange[]) {\n this.rid = rid;\n this.Continuation = Continuation;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { ChangeFeedRange } from \"./ChangeFeedRange\";\nimport { ChangeFeedIteratorResponse } from \"./ChangeFeedIteratorResponse\";\nimport type { PartitionKeyRangeCache } from \"../../routing\";\nimport { QueryRange } from \"../../routing\";\nimport { FeedRangeQueue } from \"./FeedRangeQueue\";\nimport type { ClientContext } from \"../../ClientContext\";\nimport type { Container, Resource } from \"../../client\";\nimport { Constants, SubStatusCodes, StatusCodes, ResourceType } from \"../../common\";\nimport type { Response, FeedOptions } from \"../../request\";\nimport { ErrorResponse } from \"../../request\";\nimport { CompositeContinuationToken } from \"./CompositeContinuationToken\";\nimport type { ChangeFeedPullModelIterator } from \"./ChangeFeedPullModelIterator\";\nimport { extractOverlappingRanges } from \"./changeFeedUtils\";\nimport type { InternalChangeFeedIteratorOptions } from \"./InternalChangeFeedOptions\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"../../utils/diagnostics\";\nimport { ChangeFeedMode } from \"./ChangeFeedMode\";\n/**\n * @hidden\n * Provides iterator for change feed for entire container or an epk range.\n *\n * Use `Items.getChangeFeedIterator()` to get an instance of the iterator.\n */\nexport class ChangeFeedForEpkRange implements ChangeFeedPullModelIterator {\n private continuationToken?: CompositeContinuationToken;\n private queue: FeedRangeQueue;\n private startTime: string;\n private isInstantiated: boolean;\n private rId: string;\n private startFromNow: boolean;\n /**\n * @internal\n */\n constructor(\n private clientContext: ClientContext,\n private container: Container,\n private partitionKeyRangeCache: PartitionKeyRangeCache,\n private resourceId: string,\n private resourceLink: string,\n private url: string,\n private changeFeedOptions: InternalChangeFeedIteratorOptions,\n private epkRange: QueryRange,\n ) {\n this.queue = new FeedRangeQueue();\n this.continuationToken = changeFeedOptions.continuationToken\n ? JSON.parse(changeFeedOptions.continuationToken)\n : undefined;\n this.isInstantiated = false;\n // startTime is used to store and specify time from which change feed should start reading new changes. StartFromNow flag is used to indicate fetching changes from now.\n if (changeFeedOptions.startFromNow) {\n this.startFromNow = true;\n } else if (changeFeedOptions.startTime) {\n this.startTime = changeFeedOptions.startTime.toUTCString();\n }\n }\n\n private async setIteratorRid(diagnosticNode: DiagnosticNodeInternal): Promise {\n const { resource } = await this.container.readInternal(diagnosticNode);\n this.rId = resource._rid;\n }\n\n private continuationTokenRidMatchContainerRid(): boolean {\n if (this.continuationToken.rid !== this.rId) {\n return false;\n }\n return true;\n }\n\n private async fillChangeFeedQueue(diagnosticNode: DiagnosticNodeInternal): Promise {\n if (this.continuationToken) {\n // fill the queue with feed ranges in continuation token.\n await this.fetchContinuationTokenFeedRanges(diagnosticNode);\n } else {\n // fill the queue with feed ranges overlapping the given epk range.\n await this.fetchOverLappingFeedRanges(diagnosticNode);\n }\n this.isInstantiated = true;\n }\n\n /**\n * Fill the queue with the feed ranges overlapping with the given epk range.\n */\n private async fetchOverLappingFeedRanges(diagnosticNode: DiagnosticNodeInternal): Promise {\n try {\n const overLappingRanges = await this.partitionKeyRangeCache.getOverlappingRanges(\n this.url,\n this.epkRange,\n diagnosticNode,\n );\n for (const overLappingRange of overLappingRanges) {\n const [epkMinHeader, epkMaxHeader] = await extractOverlappingRanges(\n this.epkRange,\n overLappingRange,\n );\n const feedRange: ChangeFeedRange = new ChangeFeedRange(\n overLappingRange.minInclusive,\n overLappingRange.maxExclusive,\n \"\",\n epkMinHeader,\n epkMaxHeader,\n );\n this.queue.enqueue(feedRange);\n }\n } catch (err) {\n throw new ErrorResponse(err.message);\n }\n }\n /**\n * Fill the queue with feed ranges from continuation token\n */\n private async fetchContinuationTokenFeedRanges(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise {\n const contToken = this.continuationToken;\n if (!this.continuationTokenRidMatchContainerRid()) {\n throw new ErrorResponse(\"The continuation token is not for the current container definition\");\n } else {\n for (const cToken of contToken.Continuation) {\n const queryRange = new QueryRange(cToken.minInclusive, cToken.maxExclusive, true, false);\n try {\n const overLappingRanges = await this.partitionKeyRangeCache.getOverlappingRanges(\n this.url,\n queryRange,\n diagnosticNode,\n );\n for (const overLappingRange of overLappingRanges) {\n // check if the epk range present in continuation token entirely covers the overlapping range.\n // If yes, minInclusive and maxExclusive of the overlapping range will be set.\n // If no, i.e. there is only partial overlap, epkMinHeader and epkMaxHeader are set as min and max of overlap.\n // This will be used when we make a call to fetch change feed.\n const [epkMinHeader, epkMaxHeader] = await extractOverlappingRanges(\n queryRange,\n overLappingRange,\n );\n const feedRange: ChangeFeedRange = new ChangeFeedRange(\n overLappingRange.minInclusive,\n overLappingRange.maxExclusive,\n cToken.continuationToken,\n epkMinHeader,\n epkMaxHeader,\n );\n this.queue.enqueue(feedRange);\n }\n } catch (err) {\n throw new ErrorResponse(err.message);\n }\n }\n }\n }\n\n /**\n * Change feed is an infinite feed. hasMoreResults is always true.\n */\n get hasMoreResults(): boolean {\n return true;\n }\n\n /**\n * Gets an async iterator which will yield change feed results.\n */\n public async *getAsyncIterator(): AsyncIterable>> {\n do {\n const result = await this.readNext();\n yield result;\n } while (this.hasMoreResults);\n }\n\n /**\n * Gets an async iterator which will yield pages of results from Azure Cosmos DB.\n *\n * Keeps iterating over the feedranges and checks if any feed range has new result. Keeps note of the last feed range which returned non 304 result.\n *\n * When same feed range is reached and no new changes are found, a 304 (not Modified) is returned to the end user. Then starts process all over again.\n */\n public async readNext(): Promise>> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n // validate if the internal queue is filled up with feed ranges.\n if (!this.isInstantiated) {\n await this.setIteratorRid(diagnosticNode);\n await this.fillChangeFeedQueue(diagnosticNode);\n }\n\n // stores the last feedRange for which statusCode is not 304 i.e. there were new changes in that feed range.\n let firstNotModifiedFeedRange: [string, string] = undefined;\n let result: ChangeFeedIteratorResponse>;\n do {\n const [processedFeedRange, response] = await this.fetchNext(diagnosticNode);\n result = response;\n if (result !== undefined) {\n {\n if (firstNotModifiedFeedRange === undefined) {\n firstNotModifiedFeedRange = processedFeedRange;\n }\n // move current feed range to end of queue to fetch result of next feed range.\n // This is done to fetch changes in breadth first manner and avoid starvation.\n this.queue.moveFirstElementToTheEnd();\n // check if there are new results for the given feed range.\n if (result.statusCode === StatusCodes.Ok) {\n result.headers[Constants.HttpHeaders.ContinuationToken] =\n this.generateContinuationToken();\n return result;\n }\n }\n }\n } while (!this.checkedAllFeedRanges(firstNotModifiedFeedRange));\n // set the continuation token after processing.\n result.headers[Constants.HttpHeaders.ContinuationToken] = this.generateContinuationToken();\n return result;\n }, this.clientContext);\n }\n\n private generateContinuationToken = (): string => {\n return JSON.stringify(new CompositeContinuationToken(this.rId, this.queue.returnSnapshot()));\n };\n\n /**\n * Read feed and retrieves the next page of results in Azure Cosmos DB.\n */\n private async fetchNext(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise<[[string, string], ChangeFeedIteratorResponse>]> {\n const feedRange = this.queue.peek();\n if (feedRange) {\n // fetch results for feed range at the beginning of the queue.\n const result = await this.getFeedResponse(feedRange, diagnosticNode);\n\n // check if results need to be fetched again depending on status code returned.\n // Eg. in case of paritionSplit, results need to be fetched for the child partitions.\n const shouldRetry: boolean = await this.shouldRetryOnFailure(\n feedRange,\n result,\n diagnosticNode,\n );\n\n if (shouldRetry) {\n this.queue.dequeue();\n return this.fetchNext(diagnosticNode);\n } else {\n // update the continuation value for the current feed range.\n const continuationValueForFeedRange = result.headers[Constants.HttpHeaders.ETag];\n const newFeedRange = this.queue.peek();\n newFeedRange.continuationToken = continuationValueForFeedRange;\n\n return [[newFeedRange.minInclusive, newFeedRange.maxExclusive], result];\n }\n } else {\n return [[undefined, undefined], undefined];\n }\n }\n\n private checkedAllFeedRanges(firstNotModifiedFeedRange: [string, string]): boolean {\n if (firstNotModifiedFeedRange === undefined) {\n return false;\n }\n const feedRangeQueueFirstElement = this.queue.peek();\n return (\n firstNotModifiedFeedRange[0] === feedRangeQueueFirstElement?.minInclusive &&\n firstNotModifiedFeedRange[1] === feedRangeQueueFirstElement?.maxExclusive\n );\n }\n\n /**\n * Checks whether the current EpkRange is split into multiple ranges or not.\n *\n * If yes, it force refreshes the partitionKeyRange cache and enqueue children epk ranges.\n */\n private async shouldRetryOnFailure(\n feedRange: ChangeFeedRange,\n response: ChangeFeedIteratorResponse>,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise {\n if (response.statusCode === StatusCodes.Ok || response.statusCode === StatusCodes.NotModified) {\n return false;\n }\n\n const partitionSplit =\n response.statusCode === StatusCodes.Gone &&\n (response.subStatusCode === SubStatusCodes.PartitionKeyRangeGone ||\n response.subStatusCode === SubStatusCodes.CompletingSplit);\n\n if (partitionSplit) {\n const queryRange = new QueryRange(\n feedRange.epkMinHeader ? feedRange.epkMinHeader : feedRange.minInclusive,\n feedRange.epkMaxHeader ? feedRange.epkMaxHeader : feedRange.maxExclusive,\n true,\n false,\n );\n const resolvedRanges = await this.partitionKeyRangeCache.getOverlappingRanges(\n this.url,\n queryRange,\n diagnosticNode,\n true,\n );\n if (resolvedRanges.length < 1) {\n throw new ErrorResponse(\"Partition split/merge detected but no overlapping ranges found.\");\n }\n // This covers both cases of merge and split.\n // resolvedRanges.length > 1 in case of split.\n // resolvedRanges.length === 1 in case of merge. EpkRange headers will be added in this case.\n if (resolvedRanges.length >= 1) {\n await this.handleSplit(false, resolvedRanges, queryRange, feedRange.continuationToken);\n }\n return true;\n }\n return false;\n }\n /*\n * Enqueues all the children feed ranges for the given feed range.\n */\n private async handleSplit(\n shiftLeft: boolean,\n resolvedRanges: any,\n oldFeedRange: QueryRange,\n continuationToken: string,\n ): Promise {\n let flag = 0;\n if (shiftLeft) {\n // This section is only applicable when handleSplit is called by getPartitionRangeId().\n // used only when existing partition key range cache is used to check for any overlapping ranges.\n // Modifies the first element with the first overlapping range.\n const [epkMinHeader, epkMaxHeader] = await extractOverlappingRanges(\n oldFeedRange,\n resolvedRanges[0],\n );\n const newFeedRange = new ChangeFeedRange(\n resolvedRanges[0].minInclusive,\n resolvedRanges[0].maxExclusive,\n continuationToken,\n epkMinHeader,\n epkMaxHeader,\n );\n\n this.queue.modifyFirstElement(newFeedRange);\n flag = 1;\n }\n // Enqueue the overlapping ranges.\n for (let i = flag; i < resolvedRanges.length; i++) {\n const [epkMinHeader, epkMaxHeader] = await extractOverlappingRanges(\n oldFeedRange,\n resolvedRanges[i],\n );\n const newFeedRange = new ChangeFeedRange(\n resolvedRanges[i].minInclusive,\n resolvedRanges[i].maxExclusive,\n continuationToken,\n epkMinHeader,\n epkMaxHeader,\n );\n this.queue.enqueue(newFeedRange);\n }\n }\n\n /**\n * Fetch the partitionKeyRangeId for the given feed range.\n *\n * This partitionKeyRangeId is passed to queryFeed to fetch the results.\n */\n private async getPartitionRangeId(\n feedRange: ChangeFeedRange,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise {\n const min = feedRange.epkMinHeader ? feedRange.epkMinHeader : feedRange.minInclusive;\n const max = feedRange.epkMaxHeader ? feedRange.epkMaxHeader : feedRange.maxExclusive;\n const queryRange = new QueryRange(min, max, true, false);\n const resolvedRanges = await this.partitionKeyRangeCache.getOverlappingRanges(\n this.url,\n queryRange,\n diagnosticNode,\n false,\n );\n if (resolvedRanges.length < 1) {\n throw new ErrorResponse(\"No overlapping ranges found.\");\n }\n const firstResolvedRange = resolvedRanges[0];\n if (resolvedRanges.length > 1) {\n await this.handleSplit(true, resolvedRanges, queryRange, feedRange.continuationToken);\n }\n return firstResolvedRange.id;\n }\n\n private async getFeedResponse(\n feedRange: ChangeFeedRange,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise>> {\n const feedOptions: FeedOptions = {\n initialHeaders: {},\n useLatestVersionFeed: true,\n useAllVersionsAndDeletesFeed: false,\n };\n\n if (typeof this.changeFeedOptions.maxItemCount === \"number\") {\n feedOptions.maxItemCount = this.changeFeedOptions.maxItemCount;\n }\n\n if (this.changeFeedOptions.sessionToken) {\n feedOptions.sessionToken = this.changeFeedOptions.sessionToken;\n }\n\n if (feedRange.continuationToken) {\n feedOptions.accessCondition = {\n type: Constants.HttpHeaders.IfNoneMatch,\n condition: feedRange.continuationToken,\n };\n } else if (this.startFromNow) {\n feedOptions.initialHeaders[Constants.HttpHeaders.IfNoneMatch] =\n Constants.ChangeFeedIfNoneMatchStartFromNowHeader;\n }\n\n if (this.startTime) {\n feedOptions.initialHeaders[Constants.HttpHeaders.IfModifiedSince] = this.startTime;\n }\n\n if (\n this.changeFeedOptions.changeFeedMode &&\n this.changeFeedOptions.changeFeedMode === ChangeFeedMode.AllVersionsAndDeletes\n ) {\n feedOptions.useAllVersionsAndDeletesFeed = true;\n feedOptions.useLatestVersionFeed = false;\n }\n\n const rangeId = await this.getPartitionRangeId(feedRange, diagnosticNode);\n try {\n // startEpk and endEpk are only valid in case we want to fetch result for a part of partition and not the entire partition.\n const response: Response> = await (this.clientContext.queryFeed({\n path: this.resourceLink,\n resourceType: ResourceType.item,\n resourceId: this.resourceId,\n resultFn: (result) => (result ? result.Documents : []),\n query: undefined,\n options: feedOptions,\n diagnosticNode,\n partitionKey: undefined,\n partitionKeyRangeId: rangeId,\n startEpk: feedRange.epkMinHeader,\n endEpk: feedRange.epkMaxHeader,\n }) as Promise);\n\n return new ChangeFeedIteratorResponse(\n response.result,\n response.result ? response.result.length : 0,\n response.code,\n response.headers,\n getEmptyCosmosDiagnostics(),\n );\n } catch (err) {\n if (err.code >= StatusCodes.BadRequest && err.code !== StatusCodes.Gone) {\n const errorResponse = new ErrorResponse(err.message);\n errorResponse.code = err.code;\n errorResponse.headers = err.headers;\n\n throw errorResponse;\n }\n\n // If any other errors are encountered, eg. partition split or gone, handle it based on error code and not break the flow.\n return new ChangeFeedIteratorResponse(\n [],\n 0,\n err.code,\n err.headers,\n getEmptyCosmosDiagnostics(),\n err.substatus,\n );\n }\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport type { PartitionKey } from \"../../documents\";\nimport type { PartitionKeyRangeCache } from \"../../routing\";\nimport { QueryRange } from \"../../routing\";\nimport type { ChangeFeedIteratorOptions } from \"./ChangeFeedIteratorOptions\";\nimport { ChangeFeedStartFrom } from \"./ChangeFeedStartFrom\";\nimport { ChangeFeedStartFromBeginning } from \"./ChangeFeedStartFromBeginning\";\nimport { ChangeFeedStartFromContinuation } from \"./ChangeFeedStartFromContinuation\";\nimport { ChangeFeedStartFromNow } from \"./ChangeFeedStartFromNow\";\nimport { ChangeFeedStartFromTime } from \"./ChangeFeedStartFromTime\";\nimport { ChangeFeedResourceType } from \"./ChangeFeedEnums\";\nimport { ChangeFeedForPartitionKey } from \"./ChangeFeedForPartitionKey\";\nimport { ErrorResponse } from \"../../request\";\nimport { ChangeFeedForEpkRange } from \"./ChangeFeedForEpkRange\";\nimport { getIdFromLink, getPathFromLink, ResourceType, Constants } from \"../../common\";\nimport { buildInternalChangeFeedOptions, fetchStartTime, isEpkRange } from \"./changeFeedUtils\";\nimport { isPartitionKey } from \"../../utils/typeChecks\";\nimport type { Container } from \"../Container\";\nimport type { FeedRangeInternal } from \"./FeedRange\";\n\nexport function changeFeedIteratorBuilder(\n cfOptions: ChangeFeedIteratorOptions,\n clientContext: ClientContext,\n container: Container,\n partitionKeyRangeCache: PartitionKeyRangeCache,\n): any {\n const url = container.url;\n const path = getPathFromLink(url, ResourceType.item);\n const id = getIdFromLink(url);\n\n let changeFeedStartFrom = cfOptions.changeFeedStartFrom;\n\n if (changeFeedStartFrom === undefined) {\n changeFeedStartFrom = ChangeFeedStartFrom.Now();\n }\n\n if (changeFeedStartFrom instanceof ChangeFeedStartFromContinuation) {\n const continuationToken = changeFeedStartFrom.getCfResourceJson();\n const resourceType = changeFeedStartFrom.getResourceType();\n const internalCfOptions = buildInternalChangeFeedOptions(\n cfOptions,\n changeFeedStartFrom.getCfResource(),\n );\n\n if (\n resourceType === ChangeFeedResourceType.PartitionKey &&\n isPartitionKey(continuationToken.partitionKey)\n ) {\n return new ChangeFeedForPartitionKey(\n clientContext,\n container,\n id,\n path,\n continuationToken.partitionKey,\n internalCfOptions,\n );\n } else if (resourceType === ChangeFeedResourceType.FeedRange) {\n return new ChangeFeedForEpkRange(\n clientContext,\n container,\n partitionKeyRangeCache,\n id,\n path,\n url,\n internalCfOptions,\n undefined,\n );\n } else {\n throw new ErrorResponse(\"Invalid continuation token.\");\n }\n } else if (\n changeFeedStartFrom instanceof ChangeFeedStartFromNow ||\n changeFeedStartFrom instanceof ChangeFeedStartFromTime ||\n changeFeedStartFrom instanceof ChangeFeedStartFromBeginning\n ) {\n const startFromNow = changeFeedStartFrom instanceof ChangeFeedStartFromNow ? true : false;\n const startTime = startFromNow ? undefined : fetchStartTime(changeFeedStartFrom);\n\n const internalCfOptions = buildInternalChangeFeedOptions(\n cfOptions,\n undefined,\n startTime,\n startFromNow,\n );\n const cfResource = changeFeedStartFrom.getCfResource();\n if (isPartitionKey(cfResource)) {\n return new ChangeFeedForPartitionKey(\n clientContext,\n container,\n id,\n path,\n cfResource as PartitionKey,\n internalCfOptions,\n );\n } else {\n let internalCfResource: QueryRange;\n if (cfResource === undefined) {\n internalCfResource = new QueryRange(\n Constants.EffectivePartitionKeyConstants.MinimumInclusiveEffectivePartitionKey,\n Constants.EffectivePartitionKeyConstants.MaximumExclusiveEffectivePartitionKey,\n true,\n false,\n );\n } else if (isEpkRange(cfResource)) {\n internalCfResource = new QueryRange(\n (cfResource as FeedRangeInternal).minInclusive,\n (cfResource as FeedRangeInternal).maxExclusive,\n true,\n false,\n );\n } else {\n throw new ErrorResponse(\"Invalid feed range.\");\n }\n return new ChangeFeedForEpkRange(\n clientContext,\n container,\n partitionKeyRangeCache,\n id,\n path,\n url,\n internalCfOptions,\n internalCfResource,\n );\n }\n } else {\n throw new ErrorResponse(\"Invalid change feed start location.\");\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ChangeFeedIterator } from \"../../ChangeFeedIterator\";\nimport type { ChangeFeedOptions } from \"../../ChangeFeedOptions\";\nimport type { ClientContext } from \"../../ClientContext\";\nimport {\n getIdFromLink,\n getPathFromLink,\n isItemResourceValid,\n ResourceType,\n StatusCodes,\n SubStatusCodes,\n} from \"../../common\";\nimport { extractPartitionKeys, setPartitionKeyIfUndefined } from \"../../extractPartitionKey\";\nimport type { FetchFunctionCallback, SqlQuerySpec } from \"../../queryExecutionContext\";\nimport { QueryIterator } from \"../../queryIterator\";\nimport type { FeedOptions, RequestOptions, Response } from \"../../request\";\nimport type { Container, PartitionKeyRange } from \"../Container\";\nimport { Item } from \"./Item\";\nimport type { ItemDefinition } from \"./ItemDefinition\";\nimport { ItemResponse } from \"./ItemResponse\";\nimport type {\n Batch,\n OperationResponse,\n OperationInput,\n BulkOptions,\n BulkOperationResponse,\n} from \"../../utils/batch\";\nimport {\n isKeyInRange,\n prepareOperations,\n decorateBatchOperation,\n splitBatchBasedOnBodySize,\n} from \"../../utils/batch\";\nimport { assertNotUndefined, isPrimitivePartitionKeyValue } from \"../../utils/typeChecks\";\nimport { hashPartitionKey } from \"../../utils/hashing/hash\";\nimport type { PartitionKey, PartitionKeyDefinition } from \"../../documents\";\nimport { PartitionKeyRangeCache, QueryRange } from \"../../routing\";\nimport type {\n ChangeFeedPullModelIterator,\n ChangeFeedIteratorOptions,\n} from \"../../client/ChangeFeed\";\nimport { changeFeedIteratorBuilder } from \"../../client/ChangeFeed\";\nimport { validateChangeFeedIteratorOptions } from \"../../client/ChangeFeed/changeFeedUtils\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport { DiagnosticNodeType } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport {\n getEmptyCosmosDiagnostics,\n withDiagnostics,\n addDignosticChild,\n} from \"../../utils/diagnostics\";\nimport { randomUUID } from \"@azure/core-util\";\nimport { readPartitionKeyDefinition } from \"../ClientUtils\";\n\n/**\n * @hidden\n */\nfunction isChangeFeedOptions(options: unknown): options is ChangeFeedOptions {\n return options && !(isPrimitivePartitionKeyValue(options) || Array.isArray(options));\n}\n\n/**\n * Operations for creating new items, and reading/querying all items\n *\n * @see {@link Item} for reading, replacing, or deleting an existing container; use `.item(id)`.\n */\nexport class Items {\n private partitionKeyRangeCache: PartitionKeyRangeCache;\n /**\n * Create an instance of {@link Items} linked to the parent {@link Container}.\n * @param container - The parent container.\n * @hidden\n */\n constructor(\n public readonly container: Container,\n private readonly clientContext: ClientContext,\n ) {\n this.partitionKeyRangeCache = new PartitionKeyRangeCache(this.clientContext);\n }\n\n /**\n * Queries all items.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Read all items to array.\n * ```typescript\n * const querySpec: SqlQuerySpec = {\n * query: \"SELECT * FROM Families f WHERE f.lastName = @lastName\",\n * parameters: [\n * {name: \"@lastName\", value: \"Hendricks\"}\n * ]\n * };\n * const {result: items} = await items.query(querySpec).fetchAll();\n * ```\n */\n public query(query: string | SqlQuerySpec, options?: FeedOptions): QueryIterator;\n /**\n * Queries all items.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Read all items to array.\n * ```typescript\n * const querySpec: SqlQuerySpec = {\n * query: \"SELECT firstname FROM Families f WHERE f.lastName = @lastName\",\n * parameters: [\n * {name: \"@lastName\", value: \"Hendricks\"}\n * ]\n * };\n * const {result: items} = await items.query<{firstName: string}>(querySpec).fetchAll();\n * ```\n */\n public query(query: string | SqlQuerySpec, options?: FeedOptions): QueryIterator;\n public query(query: string | SqlQuerySpec, options: FeedOptions = {}): QueryIterator {\n const path = getPathFromLink(this.container.url, ResourceType.item);\n const id = getIdFromLink(this.container.url);\n\n const fetchFunction: FetchFunctionCallback = async (\n diagnosticNode: DiagnosticNodeInternal,\n innerOptions: FeedOptions,\n correlatedActivityId: string,\n ) => {\n const response = await this.clientContext.queryFeed({\n path,\n resourceType: ResourceType.item,\n resourceId: id,\n resultFn: (result) => (result ? result.Documents : []),\n query,\n options: innerOptions,\n partitionKey: options.partitionKey,\n diagnosticNode,\n correlatedActivityId: correlatedActivityId,\n });\n return response;\n };\n\n return new QueryIterator(\n this.clientContext,\n query,\n options,\n fetchFunction,\n this.container.url,\n ResourceType.item,\n );\n }\n\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n *\n * @deprecated Use `changeFeed` instead.\n *\n * @example Read from the beginning of the change feed.\n * ```javascript\n * const iterator = items.readChangeFeed({ startFromBeginning: true });\n * const firstPage = await iterator.fetchNext();\n * const firstPageResults = firstPage.result\n * const secondPage = await iterator.fetchNext();\n * ```\n */\n public readChangeFeed(\n partitionKey: PartitionKey,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n * @deprecated Use `changeFeed` instead.\n *\n */\n public readChangeFeed(changeFeedOptions?: ChangeFeedOptions): ChangeFeedIterator;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n * @deprecated Use `changeFeed` instead.\n */\n public readChangeFeed(\n partitionKey: PartitionKey,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n * @deprecated Use `changeFeed` instead.\n */\n public readChangeFeed(changeFeedOptions?: ChangeFeedOptions): ChangeFeedIterator;\n public readChangeFeed(\n partitionKeyOrChangeFeedOptions?: PartitionKey | ChangeFeedOptions,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator {\n if (isChangeFeedOptions(partitionKeyOrChangeFeedOptions)) {\n return this.changeFeed(partitionKeyOrChangeFeedOptions);\n } else {\n return this.changeFeed(partitionKeyOrChangeFeedOptions, changeFeedOptions);\n }\n }\n\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n *\n * @example Read from the beginning of the change feed.\n * ```javascript\n * const iterator = items.readChangeFeed({ startFromBeginning: true });\n * const firstPage = await iterator.fetchNext();\n * const firstPageResults = firstPage.result\n * const secondPage = await iterator.fetchNext();\n * ```\n */\n public changeFeed(\n partitionKey: PartitionKey,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n */\n public changeFeed(changeFeedOptions?: ChangeFeedOptions): ChangeFeedIterator;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n */\n public changeFeed(\n partitionKey: PartitionKey,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator;\n /**\n * Create a `ChangeFeedIterator` to iterate over pages of changes\n */\n public changeFeed(changeFeedOptions?: ChangeFeedOptions): ChangeFeedIterator;\n public changeFeed(\n partitionKeyOrChangeFeedOptions?: PartitionKey | ChangeFeedOptions,\n changeFeedOptions?: ChangeFeedOptions,\n ): ChangeFeedIterator {\n let partitionKey: PartitionKey;\n if (!changeFeedOptions && isChangeFeedOptions(partitionKeyOrChangeFeedOptions)) {\n partitionKey = undefined;\n changeFeedOptions = partitionKeyOrChangeFeedOptions;\n } else if (\n partitionKeyOrChangeFeedOptions !== undefined &&\n !isChangeFeedOptions(partitionKeyOrChangeFeedOptions)\n ) {\n partitionKey = partitionKeyOrChangeFeedOptions;\n }\n\n if (!changeFeedOptions) {\n changeFeedOptions = {};\n }\n\n const path = getPathFromLink(this.container.url, ResourceType.item);\n const id = getIdFromLink(this.container.url);\n return new ChangeFeedIterator(this.clientContext, id, path, partitionKey, changeFeedOptions);\n }\n\n /**\n * Returns an iterator to iterate over pages of changes. The iterator returned can be used to fetch changes for a single partition key, feed range or an entire container.\n */\n public getChangeFeedIterator(\n changeFeedIteratorOptions?: ChangeFeedIteratorOptions,\n ): ChangeFeedPullModelIterator {\n const cfOptions = changeFeedIteratorOptions !== undefined ? changeFeedIteratorOptions : {};\n validateChangeFeedIteratorOptions(cfOptions);\n const iterator = changeFeedIteratorBuilder(\n cfOptions,\n this.clientContext,\n this.container,\n this.partitionKeyRangeCache,\n );\n return iterator;\n }\n\n /**\n * Read all items.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Read all items to array.\n * ```typescript\n * const {body: containerList} = await items.readAll().fetchAll();\n * ```\n */\n public readAll(options?: FeedOptions): QueryIterator;\n /**\n * Read all items.\n *\n * Any provided type, T, is not necessarily enforced by the SDK.\n * You may get more or less properties and it's up to your logic to enforce it.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n * @example Read all items to array.\n * ```typescript\n * const {body: containerList} = await items.readAll().fetchAll();\n * ```\n */\n public readAll(options?: FeedOptions): QueryIterator;\n public readAll(options?: FeedOptions): QueryIterator {\n return this.query(\"SELECT * from c\", options);\n }\n\n /**\n * Create an item.\n *\n * Any provided type, T, is not necessarily enforced by the SDK.\n * You may get more or less properties and it's up to your logic to enforce it.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param body - Represents the body of the item. Can contain any number of user defined properties.\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n */\n public async create(\n body: T,\n options: RequestOptions = {},\n ): Promise> {\n // Generate random document id if the id is missing in the payload and\n // options.disableAutomaticIdGeneration != true\n\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n if ((body.id === undefined || body.id === \"\") && !options.disableAutomaticIdGeneration) {\n body.id = randomUUID();\n }\n const partitionKeyDefinition = await readPartitionKeyDefinition(\n diagnosticNode,\n this.container,\n );\n const partitionKey = extractPartitionKeys(body, partitionKeyDefinition);\n\n const err = {};\n if (!isItemResourceValid(body, err)) {\n throw err;\n }\n\n const path = getPathFromLink(this.container.url, ResourceType.item);\n const id = getIdFromLink(this.container.url);\n\n const response = await this.clientContext.create({\n body,\n path,\n resourceType: ResourceType.item,\n resourceId: id,\n diagnosticNode,\n options,\n partitionKey,\n });\n\n const ref = new Item(\n this.container,\n (response.result as any).id,\n this.clientContext,\n partitionKey,\n );\n return new ItemResponse(\n response.result,\n response.headers,\n response.code,\n response.substatus,\n ref,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Upsert an item.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param body - Represents the body of the item. Can contain any number of user defined properties.\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n */\n public async upsert(\n body: unknown,\n options?: RequestOptions,\n ): Promise>;\n /**\n * Upsert an item.\n *\n * Any provided type, T, is not necessarily enforced by the SDK.\n * You may get more or less properties and it's up to your logic to enforce it.\n *\n * There is no set schema for JSON items. They may contain any number of custom properties.\n *\n * @param body - Represents the body of the item. Can contain any number of user defined properties.\n * @param options - Used for modifying the request (for instance, specifying the partition key).\n */\n public async upsert(\n body: T,\n options?: RequestOptions,\n ): Promise>;\n public async upsert(\n body: T,\n options: RequestOptions = {},\n ): Promise> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n // Generate random document id if the id is missing in the payload and\n // options.disableAutomaticIdGeneration != true\n if ((body.id === undefined || body.id === \"\") && !options.disableAutomaticIdGeneration) {\n body.id = randomUUID();\n }\n\n const partitionKeyDefinition = await readPartitionKeyDefinition(\n diagnosticNode,\n this.container,\n );\n const partitionKey = extractPartitionKeys(body, partitionKeyDefinition);\n\n const err = {};\n if (!isItemResourceValid(body, err)) {\n throw err;\n }\n\n const path = getPathFromLink(this.container.url, ResourceType.item);\n const id = getIdFromLink(this.container.url);\n\n const response = await this.clientContext.upsert({\n body,\n path,\n resourceType: ResourceType.item,\n resourceId: id,\n options,\n partitionKey,\n diagnosticNode,\n });\n\n const ref = new Item(\n this.container,\n (response.result as any).id,\n this.clientContext,\n partitionKey,\n );\n return new ItemResponse(\n response.result,\n response.headers,\n response.code,\n response.substatus,\n ref,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Execute bulk operations on items.\n *\n * Bulk takes an array of Operations which are typed based on what the operation does.\n * The choices are: Create, Upsert, Read, Replace, and Delete\n *\n * Usage example:\n * ```typescript\n * // partitionKey is optional at the top level if present in the resourceBody\n * const operations: OperationInput[] = [\n * {\n * operationType: \"Create\",\n * resourceBody: { id: \"doc1\", name: \"sample\", key: \"A\" }\n * },\n * {\n * operationType: \"Upsert\",\n * partitionKey: 'A',\n * resourceBody: { id: \"doc2\", name: \"other\", key: \"A\" }\n * }\n * ]\n *\n * await database.container.items.bulk(operations)\n * ```\n *\n * @param operations - List of operations. Limit 100\n * @param bulkOptions - Optional options object to modify bulk behavior. Pass \\{ continueOnError: false \\} to stop executing operations when one fails. (Defaults to true)\n * @param options - Used for modifying the request.\n */\n public async bulk(\n operations: OperationInput[],\n bulkOptions?: BulkOptions,\n options?: RequestOptions,\n ): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const partitionKeyRanges = (\n await this.partitionKeyRangeCache.onCollectionRoutingMap(this.container.url, diagnosticNode)\n ).getOrderedParitionKeyRanges();\n\n const partitionKeyDefinition = await readPartitionKeyDefinition(\n diagnosticNode,\n this.container,\n );\n const batches: Batch[] = partitionKeyRanges.map((keyRange: PartitionKeyRange) => {\n return {\n min: keyRange.minInclusive,\n max: keyRange.maxExclusive,\n rangeId: keyRange.id,\n indexes: [],\n operations: [],\n };\n });\n\n this.groupOperationsBasedOnPartitionKey(operations, partitionKeyDefinition, options, batches);\n\n const path = getPathFromLink(this.container.url, ResourceType.item);\n\n const orderedResponses: OperationResponse[] = [];\n // split batches based on cumulative size of operations\n const batchMap = batches\n .filter((batch: Batch) => batch.operations.length)\n .flatMap((batch: Batch) => splitBatchBasedOnBodySize(batch));\n\n await Promise.all(\n this.executeBatchOperations(\n batchMap,\n path,\n bulkOptions,\n options,\n diagnosticNode,\n orderedResponses,\n partitionKeyDefinition,\n ),\n );\n const response: any = orderedResponses;\n response.diagnostics = diagnosticNode.toDiagnostic(this.clientContext.getClientConfig());\n return response;\n }, this.clientContext);\n }\n\n private executeBatchOperations(\n batchMap: Batch[],\n path: string,\n bulkOptions: BulkOptions,\n options: RequestOptions,\n diagnosticNode: DiagnosticNodeInternal,\n orderedResponses: OperationResponse[],\n partitionKeyDefinition: PartitionKeyDefinition,\n ): Promise[] {\n return batchMap.map(async (batch: Batch) => {\n if (batch.operations.length > 100) {\n throw new Error(\"Cannot run bulk request with more than 100 operations per partition\");\n }\n try {\n const response = await addDignosticChild(\n async (childNode: DiagnosticNodeInternal) =>\n this.clientContext.bulk({\n body: batch.operations,\n partitionKeyRangeId: batch.rangeId,\n path,\n resourceId: this.container.url,\n bulkOptions,\n options,\n diagnosticNode: childNode,\n }),\n diagnosticNode,\n DiagnosticNodeType.BATCH_REQUEST,\n );\n response.result.forEach((operationResponse: OperationResponse, index: number) => {\n orderedResponses[batch.indexes[index]] = operationResponse;\n });\n } catch (err: any) {\n // In the case of 410 errors, we need to recompute the partition key ranges\n // and redo the batch request, however, 410 errors occur for unsupported\n // partition key types as well since we don't support them, so for now we throw\n if (err.code === StatusCodes.Gone) {\n const isPartitionSplit =\n err.substatus === SubStatusCodes.PartitionKeyRangeGone ||\n err.substatus === SubStatusCodes.CompletingSplit;\n\n if (isPartitionSplit) {\n const queryRange = new QueryRange(batch.min, batch.max, true, false);\n const overlappingRanges = await this.partitionKeyRangeCache.getOverlappingRanges(\n this.container.url,\n queryRange,\n diagnosticNode,\n true,\n );\n if (overlappingRanges.length < 1) {\n throw new Error(\"Partition split/merge detected but no overlapping ranges found.\");\n }\n // Handles both merge (overlappingRanges.length === 1) and split (overlappingRanges.length > 1) cases.\n if (overlappingRanges.length >= 1) {\n // const splitBatches: Batch[] = [];\n const newBatches: Batch[] = this.createNewBatches(\n overlappingRanges,\n batch,\n partitionKeyDefinition,\n );\n\n await Promise.all(\n this.executeBatchOperations(\n newBatches,\n path,\n bulkOptions,\n options,\n diagnosticNode,\n orderedResponses,\n partitionKeyDefinition,\n ),\n );\n }\n } else {\n throw new Error(\n \"Partition key error. An operation has an unsupported partitionKey type\" +\n err.message,\n );\n }\n } else {\n throw new Error(`Bulk request errored with: ${err.message}`);\n }\n }\n });\n }\n\n /**\n * Function to create new batches based of partition key Ranges.\n *\n * @param overlappingRanges - Overlapping partition key ranges.\n * @param batch - Batch to be split.\n * @param partitionKeyDefinition - PartitionKey definition of container.\n * @returns Array of new batches.\n */\n private createNewBatches(\n overlappingRanges: PartitionKeyRange[],\n batch: Batch,\n partitionKeyDefinition: PartitionKeyDefinition,\n ): Batch[] {\n const newBatches: Batch[] = overlappingRanges.map((keyRange: PartitionKeyRange) => {\n return {\n min: keyRange.minInclusive,\n max: keyRange.maxExclusive,\n rangeId: keyRange.id,\n indexes: [],\n operations: [],\n };\n });\n let indexValue = 0;\n batch.operations.forEach((operation) => {\n const partitionKey = JSON.parse(operation.partitionKey);\n const hashed = hashPartitionKey(\n assertNotUndefined(\n partitionKey,\n \"undefined value for PartitionKey is not expected during grouping of bulk operations.\",\n ),\n partitionKeyDefinition,\n );\n const batchForKey = assertNotUndefined(\n newBatches.find((newBatch: Batch) => {\n return isKeyInRange(newBatch.min, newBatch.max, hashed);\n }),\n \"No suitable Batch found.\",\n );\n batchForKey.operations.push(operation);\n batchForKey.indexes.push(batch.indexes[indexValue]);\n indexValue++;\n });\n return newBatches;\n }\n\n /**\n * Function to create batches based of partition key Ranges.\n * @param operations - operations to group\n * @param partitionDefinition - PartitionKey definition of container.\n * @param options - Request options for bulk request.\n * @param batches - Groups to be filled with operations.\n */\n private groupOperationsBasedOnPartitionKey(\n operations: OperationInput[],\n partitionDefinition: PartitionKeyDefinition,\n options: RequestOptions | undefined,\n batches: Batch[],\n ) {\n operations.forEach((operationInput, index: number) => {\n const { operation, partitionKey } = prepareOperations(\n operationInput,\n partitionDefinition,\n options,\n );\n const hashed = hashPartitionKey(\n assertNotUndefined(\n partitionKey,\n \"undefined value for PartitionKey is not expected during grouping of bulk operations.\",\n ),\n partitionDefinition,\n );\n const batchForKey = assertNotUndefined(\n batches.find((batch: Batch) => {\n return isKeyInRange(batch.min, batch.max, hashed);\n }),\n \"No suitable Batch found.\",\n );\n batchForKey.operations.push(operation);\n batchForKey.indexes.push(index);\n });\n }\n\n /**\n * Execute transactional batch operations on items.\n *\n * Batch takes an array of Operations which are typed based on what the operation does. Batch is transactional and will rollback all operations if one fails.\n * The choices are: Create, Upsert, Read, Replace, and Delete\n *\n * Usage example:\n * ```typescript\n * // The partitionKey is a required second argument. If it’s undefined, it defaults to the expected partition key format.\n * const operations: OperationInput[] = [\n * {\n * operationType: \"Create\",\n * resourceBody: { id: \"doc1\", name: \"sample\", key: \"A\" }\n * },\n * {\n * operationType: \"Upsert\",\n * resourceBody: { id: \"doc2\", name: \"other\", key: \"A\" }\n * }\n * ]\n *\n * await database.container.items.batch(operations, \"A\")\n * ```\n *\n * @param operations - List of operations. Limit 100\n * @param options - Used for modifying the request\n */\n public async batch(\n operations: OperationInput[],\n partitionKey?: PartitionKey,\n options?: RequestOptions,\n ): Promise> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n operations.map((operation) => decorateBatchOperation(operation, options));\n partitionKey = await setPartitionKeyIfUndefined(diagnosticNode, this.container, partitionKey);\n const path = getPathFromLink(this.container.url, ResourceType.item);\n\n if (operations.length > 100) {\n throw new Error(\"Cannot run batch request with more than 100 operations per partition\");\n }\n try {\n const response: Response = await this.clientContext.batch({\n body: operations,\n partitionKey,\n path,\n resourceId: this.container.url,\n options,\n diagnosticNode,\n });\n return response;\n } catch (err: any) {\n throw new Error(`Batch request error: ${err.message}`);\n }\n }, this.clientContext);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { CosmosDiagnostics } from \"../../CosmosDiagnostics\";\nimport type { CosmosHeaders } from \"../../queryExecutionContext\";\nimport { ResourceResponse } from \"../../request\";\nimport type { Resource } from \"../Resource\";\nimport type { StoredProcedure } from \"./StoredProcedure\";\nimport type { StoredProcedureDefinition } from \"./StoredProcedureDefinition\";\n\nexport class StoredProcedureResponse extends ResourceResponse<\n StoredProcedureDefinition & Resource\n> {\n constructor(\n resource: StoredProcedureDefinition & Resource,\n headers: CosmosHeaders,\n statusCode: number,\n storedProcedure: StoredProcedure,\n diagnostics: CosmosDiagnostics,\n ) {\n super(resource, headers, statusCode, diagnostics);\n this.storedProcedure = storedProcedure;\n }\n /**\n * A reference to the {@link StoredProcedure} which the {@link StoredProcedureDefinition} corresponds to.\n */\n public readonly storedProcedure: StoredProcedure;\n\n /**\n * Alias for storedProcedure.\n *\n * A reference to the {@link StoredProcedure} which the {@link StoredProcedureDefinition} corresponds to.\n */\n public get sproc(): StoredProcedure {\n return this.storedProcedure;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport {\n createStoredProcedureUri,\n getIdFromLink,\n getPathFromLink,\n isResourceValid,\n ResourceType,\n} from \"../../common\";\nimport type { PartitionKey } from \"../../documents/PartitionKey\";\nimport { undefinedPartitionKey } from \"../../extractPartitionKey\";\nimport type { RequestOptions } from \"../../request\";\nimport { ResourceResponse } from \"../../request\";\nimport { readPartitionKeyDefinition } from \"../ClientUtils\";\nimport type { Container } from \"../Container\";\nimport type { StoredProcedureDefinition } from \"./StoredProcedureDefinition\";\nimport { StoredProcedureResponse } from \"./StoredProcedureResponse\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"../../utils/diagnostics\";\n\n/**\n * Operations for reading, replacing, deleting, or executing a specific, existing stored procedure by id.\n *\n * For operations to create, read all, or query Stored Procedures,\n */\nexport class StoredProcedure {\n /**\n * Returns a reference URL to the resource. Used for linking in Permissions.\n */\n public get url(): string {\n return createStoredProcedureUri(this.container.database.id, this.container.id, this.id);\n }\n /**\n * Creates a new instance of {@link StoredProcedure} linked to the parent {@link Container}.\n * @param container - The parent {@link Container}.\n * @param id - The id of the given {@link StoredProcedure}.\n * @hidden\n */\n constructor(\n public readonly container: Container,\n public readonly id: string,\n private readonly clientContext: ClientContext,\n ) {}\n\n /**\n * Read the {@link StoredProcedureDefinition} for the given {@link StoredProcedure}.\n */\n public async read(options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.read({\n path,\n resourceType: ResourceType.sproc,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new StoredProcedureResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Replace the given {@link StoredProcedure} with the specified {@link StoredProcedureDefinition}.\n * @param body - The specified {@link StoredProcedureDefinition} to replace the existing definition.\n */\n public async replace(\n body: StoredProcedureDefinition,\n options?: RequestOptions,\n ): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n if (body.body) {\n body.body = body.body.toString();\n }\n\n const err = {};\n if (!isResourceValid(body, err)) {\n throw err;\n }\n\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.replace({\n body,\n path,\n resourceType: ResourceType.sproc,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new StoredProcedureResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Delete the given {@link StoredProcedure}.\n */\n public async delete(options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.delete({\n path,\n resourceType: ResourceType.sproc,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new StoredProcedureResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Execute the given {@link StoredProcedure}.\n *\n * The specified type, T, is not enforced by the client.\n * Be sure to validate the response from the stored procedure matches the type, T, you provide.\n *\n * @param partitionKey - The partition key to use when executing the stored procedure\n * @param params - Array of parameters to pass as arguments to the given {@link StoredProcedure}.\n * @param options - Additional options, such as the partition key to invoke the {@link StoredProcedure} on.\n */\n public async execute(\n partitionKey: PartitionKey,\n params?: any[],\n options?: RequestOptions,\n ): Promise> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n if (partitionKey === undefined) {\n const partitionKeyResponse = await readPartitionKeyDefinition(\n diagnosticNode,\n this.container,\n );\n partitionKey = undefinedPartitionKey(partitionKeyResponse);\n }\n const response = await this.clientContext.execute({\n sprocLink: this.url,\n params,\n options,\n partitionKey,\n diagnosticNode,\n });\n return new ResourceResponse(\n response.result,\n response.headers,\n response.code,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport { getIdFromLink, getPathFromLink, isResourceValid, ResourceType } from \"../../common\";\nimport type { SqlQuerySpec } from \"../../queryExecutionContext\";\nimport { QueryIterator } from \"../../queryIterator\";\nimport type { FeedOptions, RequestOptions } from \"../../request\";\nimport type { Container } from \"../Container\";\nimport type { Resource } from \"../Resource\";\nimport { StoredProcedure } from \"./StoredProcedure\";\nimport type { StoredProcedureDefinition } from \"./StoredProcedureDefinition\";\nimport { StoredProcedureResponse } from \"./StoredProcedureResponse\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"../../utils/diagnostics\";\n\n/**\n * Operations for creating, upserting, or reading/querying all Stored Procedures.\n *\n * For operations to read, replace, delete, or execute a specific, existing stored procedure by id, see `container.storedProcedure()`.\n */\nexport class StoredProcedures {\n /**\n * @param container - The parent {@link Container}.\n * @hidden\n */\n constructor(\n public readonly container: Container,\n private readonly clientContext: ClientContext,\n ) {}\n\n /**\n * Query all Stored Procedures.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n * @example Read all stored procedures to array.\n * ```typescript\n * const querySpec: SqlQuerySpec = {\n * query: \"SELECT * FROM root r WHERE r.id = @sproc\",\n * parameters: [\n * {name: \"@sproc\", value: \"Todo\"}\n * ]\n * };\n * const {body: sprocList} = await containers.storedProcedures.query(querySpec).fetchAll();\n * ```\n */\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator;\n /**\n * Query all Stored Procedures.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n * @example Read all stored procedures to array.\n * ```typescript\n * const querySpec: SqlQuerySpec = {\n * query: \"SELECT * FROM root r WHERE r.id = @sproc\",\n * parameters: [\n * {name: \"@sproc\", value: \"Todo\"}\n * ]\n * };\n * const {body: sprocList} = await containers.storedProcedures.query(querySpec).fetchAll();\n * ```\n */\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator;\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator {\n const path = getPathFromLink(this.container.url, ResourceType.sproc);\n const id = getIdFromLink(this.container.url);\n\n return new QueryIterator(this.clientContext, query, options, (diagNode, innerOptions) => {\n return this.clientContext.queryFeed({\n path,\n resourceType: ResourceType.sproc,\n resourceId: id,\n resultFn: (result) => result.StoredProcedures,\n query,\n options: innerOptions,\n diagnosticNode: diagNode,\n });\n });\n }\n\n /**\n * Read all stored procedures.\n * @example Read all stored procedures to array.\n * ```typescript\n * const {body: sprocList} = await containers.storedProcedures.readAll().fetchAll();\n * ```\n */\n public readAll(options?: FeedOptions): QueryIterator {\n return this.query(undefined, options);\n }\n\n /**\n * Create a StoredProcedure.\n *\n * Azure Cosmos DB allows stored procedures to be executed in the storage tier,\n * directly against an item container. The script\n * gets executed under ACID transactions on the primary storage partition of the\n * specified container. For additional details,\n * refer to the server-side JavaScript API documentation.\n */\n public async create(\n body: StoredProcedureDefinition,\n options?: RequestOptions,\n ): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n if (body.body) {\n body.body = body.body.toString();\n }\n\n const err = {};\n if (!isResourceValid(body, err)) {\n throw err;\n }\n\n const path = getPathFromLink(this.container.url, ResourceType.sproc);\n const id = getIdFromLink(this.container.url);\n\n const response = await this.clientContext.create({\n body,\n path,\n resourceType: ResourceType.sproc,\n resourceId: id,\n options,\n diagnosticNode,\n });\n const ref = new StoredProcedure(this.container, response.result.id, this.clientContext);\n return new StoredProcedureResponse(\n response.result,\n response.headers,\n response.code,\n ref,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { CosmosDiagnostics } from \"../../CosmosDiagnostics\";\nimport type { CosmosHeaders } from \"../../queryExecutionContext\";\nimport { ResourceResponse } from \"../../request\";\nimport type { Resource } from \"../Resource\";\nimport type { Trigger } from \"./index\";\nimport type { TriggerDefinition } from \"./TriggerDefinition\";\n\nexport class TriggerResponse extends ResourceResponse {\n constructor(\n resource: TriggerDefinition & Resource,\n headers: CosmosHeaders,\n statusCode: number,\n trigger: Trigger,\n diagnostics: CosmosDiagnostics,\n ) {\n super(resource, headers, statusCode, diagnostics);\n this.trigger = trigger;\n }\n /** A reference to the {@link Trigger} corresponding to the returned {@link TriggerDefinition}. */\n public readonly trigger: Trigger;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport {\n createTriggerUri,\n getIdFromLink,\n getPathFromLink,\n isResourceValid,\n ResourceType,\n} from \"../../common\";\nimport type { RequestOptions } from \"../../request\";\nimport type { Container } from \"../Container\";\nimport type { TriggerDefinition } from \"./TriggerDefinition\";\nimport { TriggerResponse } from \"./TriggerResponse\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"../../utils/diagnostics\";\n\n/**\n * Operations to read, replace, or delete a {@link Trigger}.\n *\n * Use `container.triggers` to create, upsert, query, or read all.\n */\nexport class Trigger {\n /**\n * Returns a reference URL to the resource. Used for linking in Permissions.\n */\n public get url(): string {\n return createTriggerUri(this.container.database.id, this.container.id, this.id);\n }\n\n /**\n * @hidden\n * @param container - The parent {@link Container}.\n * @param id - The id of the given {@link Trigger}.\n */\n constructor(\n public readonly container: Container,\n public readonly id: string,\n private readonly clientContext: ClientContext,\n ) {}\n\n /**\n * Read the {@link TriggerDefinition} for the given {@link Trigger}.\n */\n public async read(options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.read({\n path,\n resourceType: ResourceType.trigger,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new TriggerResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Replace the given {@link Trigger} with the specified {@link TriggerDefinition}.\n * @param body - The specified {@link TriggerDefinition} to replace the existing definition with.\n */\n public async replace(\n body: TriggerDefinition,\n options?: RequestOptions,\n ): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n if (body.body) {\n body.body = body.body.toString();\n }\n\n const err = {};\n if (!isResourceValid(body, err)) {\n throw err;\n }\n\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.replace({\n body,\n path,\n resourceType: ResourceType.trigger,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new TriggerResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Delete the given {@link Trigger}.\n */\n public async delete(options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.delete({\n path,\n resourceType: ResourceType.trigger,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new TriggerResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport { getIdFromLink, getPathFromLink, isResourceValid, ResourceType } from \"../../common\";\nimport type { SqlQuerySpec } from \"../../queryExecutionContext\";\nimport { QueryIterator } from \"../../queryIterator\";\nimport type { FeedOptions, RequestOptions } from \"../../request\";\nimport type { Container } from \"../Container\";\nimport type { Resource } from \"../Resource\";\nimport { Trigger } from \"./Trigger\";\nimport type { TriggerDefinition } from \"./TriggerDefinition\";\nimport { TriggerResponse } from \"./TriggerResponse\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"../../utils/diagnostics\";\n\n/**\n * Operations to create, upsert, query, and read all triggers.\n *\n * Use `container.triggers` to read, replace, or delete a {@link Trigger}.\n */\nexport class Triggers {\n /**\n * @hidden\n * @param container - The parent {@link Container}.\n */\n constructor(\n public readonly container: Container,\n private readonly clientContext: ClientContext,\n ) {}\n\n /**\n * Query all Triggers.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n */\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator;\n /**\n * Query all Triggers.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n */\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator;\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator {\n const path = getPathFromLink(this.container.url, ResourceType.trigger);\n const id = getIdFromLink(this.container.url);\n\n return new QueryIterator(this.clientContext, query, options, (diagnosticNode, innerOptions) => {\n return this.clientContext.queryFeed({\n path,\n resourceType: ResourceType.trigger,\n resourceId: id,\n resultFn: (result) => result.Triggers,\n query,\n options: innerOptions,\n diagnosticNode,\n });\n });\n }\n\n /**\n * Read all Triggers.\n * @example Read all trigger to array.\n * ```typescript\n * const {body: triggerList} = await container.triggers.readAll().fetchAll();\n * ```\n */\n public readAll(options?: FeedOptions): QueryIterator {\n return this.query(undefined, options);\n }\n /**\n * Create a trigger.\n *\n * Azure Cosmos DB supports pre and post triggers defined in JavaScript to be executed\n * on creates, updates and deletes.\n *\n * For additional details, refer to the server-side JavaScript API documentation.\n */\n public async create(body: TriggerDefinition, options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n if (body.body) {\n body.body = body.body.toString();\n }\n\n const err = {};\n if (!isResourceValid(body, err)) {\n throw err;\n }\n\n const path = getPathFromLink(this.container.url, ResourceType.trigger);\n const id = getIdFromLink(this.container.url);\n\n const response = await this.clientContext.create({\n body,\n path,\n resourceType: ResourceType.trigger,\n resourceId: id,\n options,\n diagnosticNode,\n });\n const ref = new Trigger(this.container, response.result.id, this.clientContext);\n return new TriggerResponse(\n response.result,\n response.headers,\n response.code,\n ref,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { CosmosDiagnostics } from \"../../CosmosDiagnostics\";\nimport type { CosmosHeaders } from \"../../queryExecutionContext\";\nimport { ResourceResponse } from \"../../request\";\nimport type { Resource } from \"../Resource\";\nimport type { UserDefinedFunction } from \"./UserDefinedFunction\";\nimport type { UserDefinedFunctionDefinition } from \"./UserDefinedFunctionDefinition\";\n\nexport class UserDefinedFunctionResponse extends ResourceResponse<\n UserDefinedFunctionDefinition & Resource\n> {\n constructor(\n resource: UserDefinedFunctionDefinition & Resource,\n headers: CosmosHeaders,\n statusCode: number,\n udf: UserDefinedFunction,\n diagnostics: CosmosDiagnostics,\n ) {\n super(resource, headers, statusCode, diagnostics);\n this.userDefinedFunction = udf;\n }\n /** A reference to the {@link UserDefinedFunction} corresponding to the returned {@link UserDefinedFunctionDefinition}. */\n public readonly userDefinedFunction: UserDefinedFunction;\n /**\n * Alias for `userDefinedFunction(id)`.\n *\n * A reference to the {@link UserDefinedFunction} corresponding to the returned {@link UserDefinedFunctionDefinition}.\n */\n public get udf(): UserDefinedFunction {\n return this.userDefinedFunction;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport {\n createUserDefinedFunctionUri,\n getIdFromLink,\n getPathFromLink,\n isResourceValid,\n ResourceType,\n} from \"../../common\";\nimport type { RequestOptions } from \"../../request\";\nimport type { Container } from \"../Container\";\nimport type { UserDefinedFunctionDefinition } from \"./UserDefinedFunctionDefinition\";\nimport { UserDefinedFunctionResponse } from \"./UserDefinedFunctionResponse\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"../../utils/diagnostics\";\n\n/**\n * Used to read, replace, or delete a specified User Definied Function by id.\n *\n * @see {@link UserDefinedFunction} to create, upsert, query, read all User Defined Functions.\n */\nexport class UserDefinedFunction {\n /**\n * Returns a reference URL to the resource. Used for linking in Permissions.\n */\n public get url(): string {\n return createUserDefinedFunctionUri(this.container.database.id, this.container.id, this.id);\n }\n /**\n * @hidden\n * @param container - The parent {@link Container}.\n * @param id - The id of the given {@link UserDefinedFunction}.\n */\n constructor(\n public readonly container: Container,\n public readonly id: string,\n private readonly clientContext: ClientContext,\n ) {}\n\n /**\n * Read the {@link UserDefinedFunctionDefinition} for the given {@link UserDefinedFunction}.\n */\n public async read(options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.read({\n path,\n resourceType: ResourceType.udf,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new UserDefinedFunctionResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Replace the given {@link UserDefinedFunction} with the specified {@link UserDefinedFunctionDefinition}.\n * @param options -\n */\n public async replace(\n body: UserDefinedFunctionDefinition,\n options?: RequestOptions,\n ): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n if (body.body) {\n body.body = body.body.toString();\n }\n\n const err = {};\n if (!isResourceValid(body, err)) {\n throw err;\n }\n\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.replace({\n body,\n path,\n resourceType: ResourceType.udf,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new UserDefinedFunctionResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Delete the given {@link UserDefined}.\n */\n public async delete(options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.delete({\n path,\n resourceType: ResourceType.udf,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new UserDefinedFunctionResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport { getIdFromLink, getPathFromLink, isResourceValid, ResourceType } from \"../../common\";\nimport type { SqlQuerySpec } from \"../../queryExecutionContext\";\nimport { QueryIterator } from \"../../queryIterator\";\nimport type { FeedOptions, RequestOptions } from \"../../request\";\nimport type { Container } from \"../Container\";\nimport type { Resource } from \"../Resource\";\nimport { UserDefinedFunction } from \"./UserDefinedFunction\";\nimport type { UserDefinedFunctionDefinition } from \"./UserDefinedFunctionDefinition\";\nimport { UserDefinedFunctionResponse } from \"./UserDefinedFunctionResponse\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"../../utils/diagnostics\";\n\n/**\n * Used to create, upsert, query, or read all User Defined Functions.\n *\n * @see {@link UserDefinedFunction} to read, replace, or delete a given User Defined Function by id.\n */\nexport class UserDefinedFunctions {\n /**\n * @hidden\n * @param container - The parent {@link Container}.\n */\n constructor(\n public readonly container: Container,\n private readonly clientContext: ClientContext,\n ) {}\n\n /**\n * Query all User Defined Functions.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n */\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator;\n /**\n * Query all User Defined Functions.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n */\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator;\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator {\n const path = getPathFromLink(this.container.url, ResourceType.udf);\n const id = getIdFromLink(this.container.url);\n\n return new QueryIterator(this.clientContext, query, options, (diagnosticNode, innerOptions) => {\n return this.clientContext.queryFeed({\n path,\n resourceType: ResourceType.udf,\n resourceId: id,\n resultFn: (result) => result.UserDefinedFunctions,\n query,\n options: innerOptions,\n diagnosticNode,\n });\n });\n }\n\n /**\n * Read all User Defined Functions.\n * @example Read all User Defined Functions to array.\n * ```typescript\n * const {body: udfList} = await container.userDefinedFunctions.readAll().fetchAll();\n * ```\n */\n public readAll(options?: FeedOptions): QueryIterator {\n return this.query(undefined, options);\n }\n\n /**\n * Create a UserDefinedFunction.\n *\n * Azure Cosmos DB supports JavaScript UDFs which can be used inside queries, stored procedures and triggers.\n *\n * For additional details, refer to the server-side JavaScript API documentation.\n *\n */\n public async create(\n body: UserDefinedFunctionDefinition,\n options?: RequestOptions,\n ): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n if (body.body) {\n body.body = body.body.toString();\n }\n\n const err = {};\n if (!isResourceValid(body, err)) {\n throw err;\n }\n\n const path = getPathFromLink(this.container.url, ResourceType.udf);\n const id = getIdFromLink(this.container.url);\n\n const response = await this.clientContext.create({\n body,\n path,\n resourceType: ResourceType.udf,\n resourceId: id,\n options,\n diagnosticNode,\n });\n const ref = new UserDefinedFunction(this.container, response.result.id, this.clientContext);\n return new UserDefinedFunctionResponse(\n response.result,\n response.headers,\n response.code,\n ref,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { StoredProcedures, StoredProcedure } from \"../StoredProcedure\";\nimport { Trigger, Triggers } from \"../Trigger\";\nimport { UserDefinedFunction, UserDefinedFunctions } from \"../UserDefinedFunction\";\nimport type { ClientContext } from \"../../ClientContext\";\nimport type { Container } from \"../Container/Container\";\n\nexport class Scripts {\n /**\n * @param container - The parent {@link Container}.\n * @hidden\n */\n constructor(\n public readonly container: Container,\n private readonly clientContext: ClientContext,\n ) {}\n\n /**\n * Used to read, replace, or delete a specific, existing {@link StoredProcedure} by id.\n *\n * Use `.storedProcedures` for creating new stored procedures, or querying/reading all stored procedures.\n * @param id - The id of the {@link StoredProcedure}.\n */\n public storedProcedure(id: string): StoredProcedure {\n return new StoredProcedure(this.container, id, this.clientContext);\n }\n\n /**\n * Used to read, replace, or delete a specific, existing {@link Trigger} by id.\n *\n * Use `.triggers` for creating new triggers, or querying/reading all triggers.\n * @param id - The id of the {@link Trigger}.\n */\n public trigger(id: string): Trigger {\n return new Trigger(this.container, id, this.clientContext);\n }\n\n /**\n * Used to read, replace, or delete a specific, existing {@link UserDefinedFunction} by id.\n *\n * Use `.userDefinedFunctions` for creating new user defined functions, or querying/reading all user defined functions.\n * @param id - The id of the {@link UserDefinedFunction}.\n */\n public userDefinedFunction(id: string): UserDefinedFunction {\n return new UserDefinedFunction(this.container, id, this.clientContext);\n }\n\n private $sprocs: StoredProcedures;\n /**\n * Operations for creating new stored procedures, and reading/querying all stored procedures.\n *\n * For reading, replacing, or deleting an existing stored procedure, use `.storedProcedure(id)`.\n */\n public get storedProcedures(): StoredProcedures {\n if (!this.$sprocs) {\n this.$sprocs = new StoredProcedures(this.container, this.clientContext);\n }\n return this.$sprocs;\n }\n\n private $triggers: Triggers;\n /**\n * Operations for creating new triggers, and reading/querying all triggers.\n *\n * For reading, replacing, or deleting an existing trigger, use `.trigger(id)`.\n */\n public get triggers(): Triggers {\n if (!this.$triggers) {\n this.$triggers = new Triggers(this.container, this.clientContext);\n }\n return this.$triggers;\n }\n\n private $udfs: UserDefinedFunctions;\n /**\n * Operations for creating new user defined functions, and reading/querying all user defined functions.\n *\n * For reading, replacing, or deleting an existing user defined function, use `.userDefinedFunction(id)`.\n */\n public get userDefinedFunctions(): UserDefinedFunctions {\n if (!this.$udfs) {\n this.$udfs = new UserDefinedFunctions(this.container, this.clientContext);\n }\n return this.$udfs;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { CosmosDiagnostics } from \"../../CosmosDiagnostics\";\nimport type { CosmosHeaders } from \"../../queryExecutionContext\";\nimport { ResourceResponse } from \"../../request/ResourceResponse\";\nimport type { Resource } from \"../Resource\";\nimport type { ContainerDefinition } from \"./ContainerDefinition\";\nimport type { Container } from \"./index\";\n\n/** Response object for Container operations */\nexport class ContainerResponse extends ResourceResponse {\n constructor(\n resource: ContainerDefinition & Resource,\n headers: CosmosHeaders,\n statusCode: number,\n container: Container,\n diagnostics: CosmosDiagnostics,\n ) {\n super(resource, headers, statusCode, diagnostics);\n this.container = container;\n }\n /** A reference to the {@link Container} that the returned {@link ContainerDefinition} corresponds to. */\n public readonly container: Container;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { CosmosDiagnostics } from \"../../CosmosDiagnostics\";\nimport type { CosmosHeaders } from \"../../queryExecutionContext\";\nimport { ResourceResponse } from \"../../request\";\nimport type { Resource } from \"../Resource\";\nimport type { Offer } from \"./Offer\";\nimport type { OfferDefinition } from \"./OfferDefinition\";\n\nexport class OfferResponse extends ResourceResponse {\n constructor(\n resource: OfferDefinition & Resource,\n headers: CosmosHeaders,\n statusCode: number,\n diagnostics: CosmosDiagnostics,\n offer?: Offer,\n ) {\n super(resource, headers, statusCode, diagnostics);\n this.offer = offer;\n }\n /** A reference to the {@link Offer} corresponding to the returned {@link OfferDefinition}. */\n public readonly offer: Offer;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport { Constants, isResourceValid, ResourceType } from \"../../common\";\nimport type { CosmosClient } from \"../../CosmosClient\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"../../utils/diagnostics\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport type { RequestOptions } from \"../../request\";\nimport type { OfferDefinition } from \"./OfferDefinition\";\nimport { OfferResponse } from \"./OfferResponse\";\n\n/**\n * Use to read or replace an existing {@link Offer} by id.\n *\n * @see {@link Offers} to query or read all offers.\n */\nexport class Offer {\n /**\n * Returns a reference URL to the resource. Used for linking in Permissions.\n */\n public get url(): string {\n return `/${Constants.Path.OffersPathSegment}/${this.id}`;\n }\n /**\n * @hidden\n * @param client - The parent {@link CosmosClient} for the Database Account.\n * @param id - The id of the given {@link Offer}.\n */\n constructor(\n public readonly client: CosmosClient,\n public readonly id: string,\n private readonly clientContext: ClientContext,\n ) {}\n\n /**\n * Read the {@link OfferDefinition} for the given {@link Offer}.\n */\n public async read(options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const response = await this.clientContext.read({\n path: this.url,\n resourceType: ResourceType.offer,\n resourceId: this.id,\n options,\n diagnosticNode,\n });\n return new OfferResponse(\n response.result,\n response.headers,\n response.code,\n getEmptyCosmosDiagnostics(),\n this,\n );\n }, this.clientContext);\n }\n\n /**\n * Replace the given {@link Offer} with the specified {@link OfferDefinition}.\n * @param body - The specified {@link OfferDefinition}\n */\n public async replace(body: OfferDefinition, options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const err = {};\n if (!isResourceValid(body, err)) {\n throw err;\n }\n const response = await this.clientContext.replace({\n body,\n path: this.url,\n resourceType: ResourceType.offer,\n resourceId: this.id,\n options,\n diagnosticNode,\n });\n return new OfferResponse(\n response.result,\n response.headers,\n response.code,\n getEmptyCosmosDiagnostics(),\n this,\n );\n }, this.clientContext);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport {\n createDocumentCollectionUri,\n getIdFromLink,\n getPathFromLink,\n HTTPMethod,\n isResourceValid,\n ResourceType,\n} from \"../../common\";\nimport type { PartitionKey, PartitionKeyDefinition } from \"../../documents\";\nimport type { SqlQuerySpec } from \"../../queryExecutionContext\";\nimport type { QueryIterator } from \"../../queryIterator\";\nimport type { FeedOptions, RequestOptions, Response } from \"../../request\";\nimport { ResourceResponse } from \"../../request\";\nimport type { PartitionedQueryExecutionInfo } from \"../../request/ErrorResponse\";\nimport { Conflict, Conflicts } from \"../Conflict\";\nimport type { Database } from \"../Database\";\nimport { Item, Items } from \"../Item\";\nimport { Scripts } from \"../Script/Scripts\";\nimport type { ContainerDefinition } from \"./ContainerDefinition\";\nimport { ContainerResponse } from \"./ContainerResponse\";\nimport type { PartitionKeyRange } from \"./PartitionKeyRange\";\nimport type { OfferDefinition } from \"../Offer\";\nimport { Offer } from \"../Offer\";\nimport { OfferResponse } from \"../Offer/OfferResponse\";\nimport type { Resource } from \"../Resource\";\nimport type { FeedRange } from \"../ChangeFeed\";\nimport { FeedRangeInternal } from \"../ChangeFeed\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport {\n getEmptyCosmosDiagnostics,\n withDiagnostics,\n withMetadataDiagnostics,\n} from \"../../utils/diagnostics\";\nimport { MetadataLookUpType } from \"../../CosmosDiagnostics\";\n\n/**\n * Operations for reading, replacing, or deleting a specific, existing container by id.\n *\n * @see {@link Containers} for creating new containers, and reading/querying all containers; use `.containers`.\n *\n * Note: all these operations make calls against a fixed budget.\n * You should design your system such that these calls scale sublinearly with your application.\n * For instance, do not call `container(id).read()` before every single `item.read()` call, to ensure the container exists;\n * do this once on application start up.\n */\nexport class Container {\n private $items: Items;\n /**\n * Operations for creating new items, and reading/querying all items\n *\n * For reading, replacing, or deleting an existing item, use `.item(id)`.\n *\n * @example Create a new item\n * ```typescript\n * const {body: createdItem} = await container.items.create({id: \"\", properties: {}});\n * ```\n */\n public get items(): Items {\n if (!this.$items) {\n this.$items = new Items(this, this.clientContext);\n }\n return this.$items;\n }\n\n private $scripts: Scripts;\n /**\n * All operations for Stored Procedures, Triggers, and User Defined Functions\n */\n public get scripts(): Scripts {\n if (!this.$scripts) {\n this.$scripts = new Scripts(this, this.clientContext);\n }\n return this.$scripts;\n }\n\n private $conflicts: Conflicts;\n /**\n * Operations for reading and querying conflicts for the given container.\n *\n * For reading or deleting a specific conflict, use `.conflict(id)`.\n */\n public get conflicts(): Conflicts {\n if (!this.$conflicts) {\n this.$conflicts = new Conflicts(this, this.clientContext);\n }\n return this.$conflicts;\n }\n\n /**\n * Returns a reference URL to the resource. Used for linking in Permissions.\n */\n public get url(): string {\n return createDocumentCollectionUri(this.database.id, this.id);\n }\n\n /**\n * Returns a container instance. Note: You should get this from `database.container(id)`, rather than creating your own object.\n * @param database - The parent {@link Database}.\n * @param id - The id of the given container.\n * @hidden\n */\n constructor(\n public readonly database: Database,\n public readonly id: string,\n private readonly clientContext: ClientContext,\n ) {}\n\n /**\n * Used to read, replace, or delete a specific, existing {@link Item} by id.\n *\n * Use `.items` for creating new items, or querying/reading all items.\n *\n * @param id - The id of the {@link Item}.\n * @param partitionKeyValue - The value of the {@link Item} partition key\n * @example Replace an item\n * `const {body: replacedItem} = await container.item(\"\", \"\").replace({id: \"\", title: \"Updated post\", authorID: 5});`\n */\n public item(id: string, partitionKeyValue?: PartitionKey): Item {\n return new Item(this, id, this.clientContext, partitionKeyValue);\n }\n\n /**\n * Used to read, replace, or delete a specific, existing {@link Conflict} by id.\n *\n * Use `.conflicts` for creating new conflicts, or querying/reading all conflicts.\n * @param id - The id of the {@link Conflict}.\n */\n public conflict(id: string, partitionKey?: PartitionKey): Conflict {\n return new Conflict(this, id, this.clientContext, partitionKey);\n }\n\n /** Read the container's definition */\n public async read(options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.readInternal(diagnosticNode, options);\n }, this.clientContext);\n }\n\n /**\n * @hidden\n */\n public async readInternal(\n diagnosticNode: DiagnosticNodeInternal,\n options?: RequestOptions,\n ): Promise {\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n const response = await this.clientContext.read({\n path,\n resourceType: ResourceType.container,\n resourceId: id,\n options,\n diagnosticNode,\n });\n this.clientContext.partitionKeyDefinitionCache[this.url] = response.result.partitionKey;\n return new ContainerResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }\n\n /** Replace the container's definition */\n public async replace(\n body: ContainerDefinition,\n options?: RequestOptions,\n ): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const err = {};\n if (!isResourceValid(body, err)) {\n throw err;\n }\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.replace({\n body,\n path,\n resourceType: ResourceType.container,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new ContainerResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /** Delete the container */\n public async delete(options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.delete({\n path,\n resourceType: ResourceType.container,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new ContainerResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Gets the partition key definition first by looking into the cache otherwise by reading the collection.\n * @deprecated This method has been renamed to readPartitionKeyDefinition.\n */\n public async getPartitionKeyDefinition(): Promise> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.readPartitionKeyDefinition(diagnosticNode);\n }, this.clientContext);\n }\n\n /**\n * Gets the partition key definition first by looking into the cache otherwise by reading the collection.\n * @hidden\n */\n public async readPartitionKeyDefinition(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise> {\n // $ISSUE-felixfan-2016-03-17: Make name based path and link based path use the same key\n // $ISSUE-felixfan-2016-03-17: Refresh partitionKeyDefinitionCache when necessary\n if (this.url in this.clientContext.partitionKeyDefinitionCache) {\n diagnosticNode.addData({ readFromCache: true });\n return new ResourceResponse(\n this.clientContext.partitionKeyDefinitionCache[this.url],\n {},\n 0,\n getEmptyCosmosDiagnostics(),\n );\n }\n\n const { headers, statusCode, diagnostics } = await withMetadataDiagnostics(\n async (node: DiagnosticNodeInternal) => {\n return this.readInternal(node);\n },\n diagnosticNode,\n MetadataLookUpType.ContainerLookUp,\n );\n\n return new ResourceResponse(\n this.clientContext.partitionKeyDefinitionCache[this.url],\n headers,\n statusCode,\n diagnostics,\n );\n }\n\n /**\n * Gets offer on container. If none exists, returns an OfferResponse with undefined.\n */\n public async readOffer(options: RequestOptions = {}): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const { resource: container } = await this.read();\n const path = \"/offers\";\n const url = container._self;\n\n const response = await this.clientContext.queryFeed({\n path,\n resourceId: \"\",\n resourceType: ResourceType.offer,\n query: `SELECT * from root where root.resource = \"${url}\"`,\n resultFn: (result) => result.Offers,\n options,\n diagnosticNode,\n });\n const offer = response.result[0]\n ? new Offer(this.database.client, response.result[0].id, this.clientContext)\n : undefined;\n return new OfferResponse(\n response.result[0],\n response.headers,\n response.code,\n getEmptyCosmosDiagnostics(),\n offer,\n );\n }, this.clientContext);\n }\n\n public async getQueryPlan(\n query: string | SqlQuerySpec,\n ): Promise> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = getPathFromLink(this.url);\n\n return this.clientContext.getQueryPlan(\n path + \"/docs\",\n ResourceType.item,\n getIdFromLink(this.url),\n query,\n {},\n diagnosticNode,\n );\n }, this.clientContext);\n }\n\n public readPartitionKeyRanges(feedOptions?: FeedOptions): QueryIterator {\n feedOptions = feedOptions || {};\n return this.clientContext.queryPartitionKeyRanges(this.url, undefined, feedOptions);\n }\n /**\n *\n * @returns all the feed ranges for which changefeed could be fetched.\n */\n public async getFeedRanges(): Promise> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const { resources } = await this.readPartitionKeyRanges().fetchAllInternal(diagnosticNode);\n\n const feedRanges: FeedRange[] = [];\n for (const resource of resources) {\n const feedRange = new FeedRangeInternal(resource.minInclusive, resource.maxExclusive);\n Object.freeze(feedRange);\n feedRanges.push(feedRange);\n }\n return feedRanges;\n }, this.clientContext);\n }\n\n /**\n * Delete all documents belong to the container for the provided partition key value\n * @param partitionKey - The partition key value of the items to be deleted\n */\n public async deleteAllItemsForPartitionKey(\n partitionKey: PartitionKey,\n options?: RequestOptions,\n ): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n let path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n path = path + \"/operations/partitionkeydelete\";\n const response = await this.clientContext.delete({\n path,\n resourceType: ResourceType.container,\n resourceId: id,\n options,\n partitionKey: partitionKey,\n method: HTTPMethod.post,\n diagnosticNode,\n });\n return new ContainerResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { ContainerRequest } from \"../client/Container/ContainerRequest\";\n\nexport function validateOffer(body: ContainerRequest): void {\n if (body.throughput) {\n if (body.maxThroughput) {\n console.log(\"should be erroring\");\n throw new Error(\"Cannot specify `throughput` with `maxThroughput`\");\n }\n if (body.autoUpgradePolicy) {\n throw new Error(\n \"Cannot specify autoUpgradePolicy with throughput. Use `maxThroughput` instead\",\n );\n }\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport {\n Constants,\n getIdFromLink,\n getPathFromLink,\n isResourceValid,\n ResourceType,\n StatusCodes,\n} from \"../../common\";\nimport { DEFAULT_PARTITION_KEY_PATH } from \"../../common/partitionKeys\";\nimport type { SqlQuerySpec } from \"../../queryExecutionContext\";\nimport { mergeHeaders } from \"../../queryExecutionContext\";\nimport { QueryIterator } from \"../../queryIterator\";\nimport type { FeedOptions, RequestOptions } from \"../../request\";\nimport type { Database } from \"../Database\";\nimport type { Resource } from \"../Resource\";\nimport { Container } from \"./Container\";\nimport type { ContainerDefinition } from \"./ContainerDefinition\";\nimport type { ContainerRequest } from \"./ContainerRequest\";\nimport { ContainerResponse } from \"./ContainerResponse\";\nimport { validateOffer } from \"../../utils/offers\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"../../utils/diagnostics\";\n\n/**\n * Operations for creating new containers, and reading/querying all containers\n *\n * @see {@link Container} for reading, replacing, or deleting an existing container; use `.container(id)`.\n *\n * Note: all these operations make calls against a fixed budget.\n * You should design your system such that these calls scale sublinearly with your application.\n * For instance, do not call `containers.readAll()` before every single `item.read()` call, to ensure the container exists;\n * do this once on application start up.\n */\nexport class Containers {\n constructor(\n public readonly database: Database,\n private readonly clientContext: ClientContext,\n ) {}\n\n /**\n * Queries all containers.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n * @param options - Use to set options like response page size, continuation tokens, etc.\n * @returns {@link QueryIterator} Allows you to return specific containers in an array or iterate over them one at a time.\n * @example Read all containers to array.\n * ```typescript\n * const querySpec: SqlQuerySpec = {\n * query: \"SELECT * FROM root r WHERE r.id = @container\",\n * parameters: [\n * {name: \"@container\", value: \"Todo\"}\n * ]\n * };\n * const {body: containerList} = await client.database(\"\").containers.query(querySpec).fetchAll();\n * ```\n */\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator;\n /**\n * Queries all containers.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n * @param options - Use to set options like response page size, continuation tokens, etc.\n * @returns {@link QueryIterator} Allows you to return specific containers in an array or iterate over them one at a time.\n * @example Read all containers to array.\n * ```typescript\n * const querySpec: SqlQuerySpec = {\n * query: \"SELECT * FROM root r WHERE r.id = @container\",\n * parameters: [\n * {name: \"@container\", value: \"Todo\"}\n * ]\n * };\n * const {body: containerList} = await client.database(\"\").containers.query(querySpec).fetchAll();\n * ```\n */\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator;\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator {\n const path = getPathFromLink(this.database.url, ResourceType.container);\n const id = getIdFromLink(this.database.url);\n\n return new QueryIterator(\n this.clientContext,\n query,\n options,\n (diagNode: DiagnosticNodeInternal, innerOptions) => {\n return this.clientContext.queryFeed({\n path,\n resourceType: ResourceType.container,\n resourceId: id,\n resultFn: (result) => result.DocumentCollections,\n query,\n options: innerOptions,\n diagnosticNode: diagNode,\n });\n },\n );\n }\n\n /**\n * Creates a container.\n *\n * A container is a named logical container for items.\n *\n * A database may contain zero or more named containers and each container consists of\n * zero or more JSON items.\n *\n * Being schema-free, the items in a container do not need to share the same structure or fields.\n *\n *\n * Since containers are application resources, they can be authorized using either the\n * master key or resource keys.\n *\n * @param body - Represents the body of the container.\n * @param options - Use to set options like response page size, continuation tokens, etc.\n */\n public async create(\n body: ContainerRequest,\n options: RequestOptions = {},\n ): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.createInternal(diagnosticNode, body, options);\n }, this.clientContext);\n }\n\n /**\n * @hidden\n */\n public async createInternal(\n diagnosticNode: DiagnosticNodeInternal,\n body: ContainerRequest,\n options: RequestOptions = {},\n ): Promise {\n const err = {};\n if (!isResourceValid(body, err)) {\n throw err;\n }\n const path = getPathFromLink(this.database.url, ResourceType.container);\n const id = getIdFromLink(this.database.url);\n\n validateOffer(body);\n\n if (body.maxThroughput) {\n const autoscaleParams: {\n maxThroughput: number;\n autoUpgradePolicy?: {\n throughputPolicy: {\n incrementPercent: number;\n };\n };\n } = {\n maxThroughput: body.maxThroughput,\n };\n if (body.autoUpgradePolicy) {\n autoscaleParams.autoUpgradePolicy = body.autoUpgradePolicy;\n }\n const autoscaleHeader = JSON.stringify(autoscaleParams);\n options.initialHeaders = Object.assign({}, options.initialHeaders, {\n [Constants.HttpHeaders.AutoscaleSettings]: autoscaleHeader,\n });\n delete body.maxThroughput;\n delete body.autoUpgradePolicy;\n }\n\n if (body.throughput) {\n options.initialHeaders = Object.assign({}, options.initialHeaders, {\n [Constants.HttpHeaders.OfferThroughput]: body.throughput,\n });\n delete body.throughput;\n }\n\n if (typeof body.partitionKey === \"string\") {\n if (!body.partitionKey.startsWith(\"/\")) {\n throw new Error(\"Partition key must start with '/'\");\n }\n body.partitionKey = {\n paths: [body.partitionKey],\n };\n }\n\n // If they don't specify a partition key, use the default path\n if (!body.partitionKey || !body.partitionKey.paths) {\n body.partitionKey = {\n paths: [DEFAULT_PARTITION_KEY_PATH],\n };\n }\n\n const response = await this.clientContext.create({\n body,\n path,\n resourceType: ResourceType.container,\n resourceId: id,\n diagnosticNode,\n options,\n });\n const ref = new Container(this.database, response.result.id, this.clientContext);\n return new ContainerResponse(\n response.result,\n response.headers,\n response.code,\n ref,\n getEmptyCosmosDiagnostics(),\n );\n }\n\n /**\n * Checks if a Container exists, and, if it doesn't, creates it.\n * This will make a read operation based on the id in the `body`, then if it is not found, a create operation.\n * You should confirm that the output matches the body you passed in for non-default properties (i.e. indexing policy/etc.)\n *\n * A container is a named logical container for items.\n *\n * A database may contain zero or more named containers and each container consists of\n * zero or more JSON items.\n *\n * Being schema-free, the items in a container do not need to share the same structure or fields.\n *\n *\n * Since containers are application resources, they can be authorized using either the\n * master key or resource keys.\n *\n * @param body - Represents the body of the container.\n * @param options - Use to set options like response page size, continuation tokens, etc.\n */\n public async createIfNotExists(\n body: ContainerRequest,\n options?: RequestOptions,\n ): Promise {\n if (!body || body.id === null || body.id === undefined) {\n throw new Error(\"body parameter must be an object with an id property\");\n }\n /*\n 1. Attempt to read the Container (based on an assumption that most containers will already exist, so its faster)\n 2. If it fails with NotFound error, attempt to create the container. Else, return the read results.\n */\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n try {\n const readResponse = await this.database\n .container(body.id)\n .readInternal(diagnosticNode, options);\n return readResponse;\n } catch (err: any) {\n if (err.code === StatusCodes.NotFound) {\n const createResponse = await this.createInternal(diagnosticNode, body, options);\n // Must merge the headers to capture RU costskaty\n mergeHeaders(createResponse.headers, err.headers);\n return createResponse;\n } else {\n throw err;\n }\n }\n }, this.clientContext);\n }\n\n /**\n * Read all containers.\n * @param options - Use to set options like response page size, continuation tokens, etc.\n * @returns {@link QueryIterator} Allows you to return all containers in an array or iterate over them one at a time.\n * @example Read all containers to array.\n * ```typescript\n * const {body: containerList} = await client.database(\"\").containers.readAll().fetchAll();\n * ```\n */\n public readAll(options?: FeedOptions): QueryIterator {\n return this.query(undefined, options);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { CosmosDiagnostics } from \"../../CosmosDiagnostics\";\nimport type { CosmosHeaders } from \"../../queryExecutionContext\";\nimport { ResourceResponse } from \"../../request\";\nimport type { Resource } from \"../Resource\";\nimport type { Permission } from \"./Permission\";\nimport type { PermissionBody } from \"./PermissionBody\";\nimport type { PermissionDefinition } from \"./PermissionDefinition\";\n\nexport class PermissionResponse extends ResourceResponse<\n PermissionDefinition & PermissionBody & Resource\n> {\n constructor(\n resource: PermissionDefinition & PermissionBody & Resource,\n headers: CosmosHeaders,\n statusCode: number,\n permission: Permission,\n diagnostics: CosmosDiagnostics,\n ) {\n super(resource, headers, statusCode, diagnostics);\n this.permission = permission;\n }\n /** A reference to the {@link Permission} corresponding to the returned {@link PermissionDefinition}. */\n public readonly permission: Permission;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport {\n createPermissionUri,\n getIdFromLink,\n getPathFromLink,\n isResourceValid,\n ResourceType,\n} from \"../../common\";\nimport type { RequestOptions } from \"../../request/RequestOptions\";\nimport type { User } from \"../User\";\nimport type { PermissionBody } from \"./PermissionBody\";\nimport type { PermissionDefinition } from \"./PermissionDefinition\";\nimport { PermissionResponse } from \"./PermissionResponse\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"../../utils/diagnostics\";\n\n/**\n * Use to read, replace, or delete a given {@link Permission} by id.\n *\n * @see {@link Permissions} to create, upsert, query, or read all Permissions.\n */\nexport class Permission {\n /**\n * Returns a reference URL to the resource. Used for linking in Permissions.\n */\n public get url(): string {\n return createPermissionUri(this.user.database.id, this.user.id, this.id);\n }\n /**\n * @hidden\n * @param user - The parent {@link User}.\n * @param id - The id of the given {@link Permission}.\n */\n constructor(\n public readonly user: User,\n public readonly id: string,\n private readonly clientContext: ClientContext,\n ) {}\n\n /**\n * Read the {@link PermissionDefinition} of the given {@link Permission}.\n */\n public async read(options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.read({\n path,\n resourceType: ResourceType.permission,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new PermissionResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Replace the given {@link Permission} with the specified {@link PermissionDefinition}.\n * @param body - The specified {@link PermissionDefinition}.\n */\n public async replace(\n body: PermissionDefinition,\n options?: RequestOptions,\n ): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const err = {};\n if (!isResourceValid(body, err)) {\n throw err;\n }\n\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n const response = await this.clientContext.replace({\n body,\n path,\n resourceType: ResourceType.permission,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new PermissionResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Delete the given {@link Permission}.\n */\n public async delete(options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n const response = await this.clientContext.delete({\n path,\n resourceType: ResourceType.permission,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new PermissionResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport { getIdFromLink, getPathFromLink, isResourceValid, ResourceType } from \"../../common\";\nimport type { SqlQuerySpec } from \"../../queryExecutionContext\";\nimport { QueryIterator } from \"../../queryIterator\";\nimport type { FeedOptions, RequestOptions } from \"../../request\";\nimport type { Resource } from \"../Resource\";\nimport type { User } from \"../User\";\nimport { Permission } from \"./Permission\";\nimport type { PermissionBody } from \"./PermissionBody\";\nimport type { PermissionDefinition } from \"./PermissionDefinition\";\nimport { PermissionResponse } from \"./PermissionResponse\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"../../utils/diagnostics\";\n\n/**\n * Use to create, replace, query, and read all Permissions.\n *\n * @see {@link Permission} to read, replace, or delete a specific permission by id.\n */\nexport class Permissions {\n /**\n * @hidden\n * @param user - The parent {@link User}.\n */\n constructor(\n public readonly user: User,\n private readonly clientContext: ClientContext,\n ) {}\n\n /**\n * Query all permissions.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n */\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator;\n /**\n * Query all permissions.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n */\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator;\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator {\n const path = getPathFromLink(this.user.url, ResourceType.permission);\n const id = getIdFromLink(this.user.url);\n\n return new QueryIterator(this.clientContext, query, options, (diagnosticNode, innerOptions) => {\n return this.clientContext.queryFeed({\n path,\n resourceType: ResourceType.permission,\n resourceId: id,\n resultFn: (result) => result.Permissions,\n query,\n options: innerOptions,\n diagnosticNode,\n });\n });\n }\n\n /**\n * Read all permissions.\n * @example Read all permissions to array.\n * ```typescript\n * const {body: permissionList} = await user.permissions.readAll().fetchAll();\n * ```\n */\n public readAll(options?: FeedOptions): QueryIterator {\n return this.query(undefined, options);\n }\n\n /**\n * Create a permission.\n *\n * A permission represents a per-User Permission to access a specific resource\n * e.g. Item or Container.\n * @param body - Represents the body of the permission.\n */\n public async create(\n body: PermissionDefinition,\n options?: RequestOptions,\n ): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const err = {};\n if (!isResourceValid(body, err)) {\n throw err;\n }\n\n const path = getPathFromLink(this.user.url, ResourceType.permission);\n const id = getIdFromLink(this.user.url);\n\n const response = await this.clientContext.create({\n body,\n path,\n resourceType: ResourceType.permission,\n resourceId: id,\n diagnosticNode,\n options,\n });\n const ref = new Permission(this.user, response.result.id, this.clientContext);\n return new PermissionResponse(\n response.result,\n response.headers,\n response.code,\n ref,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Upsert a permission.\n *\n * A permission represents a per-User Permission to access a\n * specific resource e.g. Item or Container.\n */\n public async upsert(\n body: PermissionDefinition,\n options?: RequestOptions,\n ): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const err = {};\n if (!isResourceValid(body, err)) {\n throw err;\n }\n\n const path = getPathFromLink(this.user.url, ResourceType.permission);\n const id = getIdFromLink(this.user.url);\n\n const response = await this.clientContext.upsert({\n body,\n path,\n resourceType: ResourceType.permission,\n resourceId: id,\n options,\n diagnosticNode,\n });\n const ref = new Permission(this.user, response.result.id, this.clientContext);\n return new PermissionResponse(\n response.result,\n response.headers,\n response.code,\n ref,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { CosmosDiagnostics } from \"../../CosmosDiagnostics\";\nimport type { CosmosHeaders } from \"../../queryExecutionContext\";\nimport { ResourceResponse } from \"../../request\";\nimport type { Resource } from \"../Resource\";\nimport type { User } from \"./User\";\nimport type { UserDefinition } from \"./UserDefinition\";\n\nexport class UserResponse extends ResourceResponse {\n constructor(\n resource: UserDefinition & Resource,\n headers: CosmosHeaders,\n statusCode: number,\n user: User,\n diagnostics: CosmosDiagnostics,\n ) {\n super(resource, headers, statusCode, diagnostics);\n this.user = user;\n }\n /** A reference to the {@link User} corresponding to the returned {@link UserDefinition}. */\n public readonly user: User;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport {\n createUserUri,\n getIdFromLink,\n getPathFromLink,\n isResourceValid,\n ResourceType,\n} from \"../../common\";\nimport type { RequestOptions } from \"../../request\";\nimport type { Database } from \"../Database\";\nimport { Permission, Permissions } from \"../Permission\";\nimport type { UserDefinition } from \"./UserDefinition\";\nimport { UserResponse } from \"./UserResponse\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"../../utils/diagnostics\";\n\n/**\n * Used to read, replace, and delete Users.\n *\n * Additionally, you can access the permissions for a given user via `user.permission` and `user.permissions`.\n *\n * @see {@link Users} to create, upsert, query, or read all.\n */\nexport class User {\n /**\n * Operations for creating, upserting, querying, or reading all operations.\n *\n * See `client.permission(id)` to read, replace, or delete a specific Permission by id.\n */\n public readonly permissions: Permissions;\n /**\n * Returns a reference URL to the resource. Used for linking in Permissions.\n */\n public get url(): string {\n return createUserUri(this.database.id, this.id);\n }\n /**\n * @hidden\n * @param database - The parent {@link Database}.\n */\n constructor(\n public readonly database: Database,\n public readonly id: string,\n private readonly clientContext: ClientContext,\n ) {\n this.permissions = new Permissions(this, this.clientContext);\n }\n\n /**\n * Operations to read, replace, or delete a specific Permission by id.\n *\n * See `client.permissions` for creating, upserting, querying, or reading all operations.\n */\n public permission(id: string): Permission {\n return new Permission(this, id, this.clientContext);\n }\n\n /**\n * Read the {@link UserDefinition} for the given {@link User}.\n */\n public async read(options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n const response = await this.clientContext.read({\n path,\n resourceType: ResourceType.user,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new UserResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Replace the given {@link User}'s definition with the specified {@link UserDefinition}.\n * @param body - The specified {@link UserDefinition} to replace the definition.\n */\n public async replace(body: UserDefinition, options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const err = {};\n if (!isResourceValid(body, err)) {\n throw err;\n }\n\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.replace({\n body,\n path,\n resourceType: ResourceType.user,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new UserResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Delete the given {@link User}.\n */\n public async delete(options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.delete({\n path,\n resourceType: ResourceType.user,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new UserResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport { getIdFromLink, getPathFromLink, isResourceValid, ResourceType } from \"../../common\";\nimport type { SqlQuerySpec } from \"../../queryExecutionContext\";\nimport { QueryIterator } from \"../../queryIterator\";\nimport type { FeedOptions, RequestOptions } from \"../../request\";\nimport type { Database } from \"../Database\";\nimport type { Resource } from \"../Resource\";\nimport { User } from \"./User\";\nimport type { UserDefinition } from \"./UserDefinition\";\nimport { UserResponse } from \"./UserResponse\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"../../utils/diagnostics\";\n\n/**\n * Used to create, upsert, query, and read all users.\n *\n * @see {@link User} to read, replace, or delete a specific User by id.\n */\nexport class Users {\n /**\n * @hidden\n * @param database - The parent {@link Database}.\n */\n constructor(\n public readonly database: Database,\n private readonly clientContext: ClientContext,\n ) {}\n\n /**\n * Query all users.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n */\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator;\n /**\n * Query all users.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n */\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator;\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator {\n const path = getPathFromLink(this.database.url, ResourceType.user);\n const id = getIdFromLink(this.database.url);\n return new QueryIterator(this.clientContext, query, options, (diagnosticNode, innerOptions) => {\n return this.clientContext.queryFeed({\n path,\n resourceType: ResourceType.user,\n resourceId: id,\n resultFn: (result) => result.Users,\n query,\n options: innerOptions,\n diagnosticNode,\n });\n });\n }\n\n /**\n * Read all users.-\n * @example Read all users to array.\n * ```typescript\n * const {body: usersList} = await database.users.readAll().fetchAll();\n * ```\n */\n public readAll(options?: FeedOptions): QueryIterator {\n return this.query(undefined, options);\n }\n\n /**\n * Create a database user with the specified {@link UserDefinition}.\n * @param body - The specified {@link UserDefinition}.\n */\n public async create(body: UserDefinition, options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const err = {};\n if (!isResourceValid(body, err)) {\n throw err;\n }\n\n const path = getPathFromLink(this.database.url, ResourceType.user);\n const id = getIdFromLink(this.database.url);\n const response = await this.clientContext.create({\n body,\n path,\n resourceType: ResourceType.user,\n resourceId: id,\n options,\n diagnosticNode,\n });\n const ref = new User(this.database, response.result.id, this.clientContext);\n return new UserResponse(\n response.result,\n response.headers,\n response.code,\n ref,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Upsert a database user with a specified {@link UserDefinition}.\n * @param body - The specified {@link UserDefinition}.\n */\n public async upsert(body: UserDefinition, options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const err = {};\n if (!isResourceValid(body, err)) {\n throw err;\n }\n\n const path = getPathFromLink(this.database.url, ResourceType.user);\n const id = getIdFromLink(this.database.url);\n\n const response = await this.clientContext.upsert({\n body,\n path,\n resourceType: ResourceType.user,\n resourceId: id,\n options,\n diagnosticNode,\n });\n const ref = new User(this.database, response.result.id, this.clientContext);\n return new UserResponse(\n response.result,\n response.headers,\n response.code,\n ref,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { CosmosDiagnostics } from \"../../CosmosDiagnostics\";\nimport type { CosmosHeaders } from \"../../queryExecutionContext\";\nimport { ResourceResponse } from \"../../request/ResourceResponse\";\nimport type { Resource } from \"../Resource\";\nimport type { Database } from \"./Database\";\nimport type { DatabaseDefinition } from \"./DatabaseDefinition\";\n\n/** Response object for Database operations */\nexport class DatabaseResponse extends ResourceResponse {\n constructor(\n resource: DatabaseDefinition & Resource,\n headers: CosmosHeaders,\n statusCode: number,\n database: Database,\n diagnostics: CosmosDiagnostics,\n ) {\n super(resource, headers, statusCode, diagnostics);\n this.database = database;\n }\n /** A reference to the {@link Database} that the returned {@link DatabaseDefinition} corresponds to. */\n public readonly database: Database;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport { createDatabaseUri, getIdFromLink, getPathFromLink, ResourceType } from \"../../common\";\nimport type { CosmosClient } from \"../../CosmosClient\";\nimport type { RequestOptions } from \"../../request\";\nimport { Container, Containers } from \"../Container\";\nimport { User, Users } from \"../User\";\nimport type { DatabaseDefinition } from \"./DatabaseDefinition\";\nimport { DatabaseResponse } from \"./DatabaseResponse\";\nimport type { OfferDefinition } from \"../Offer\";\nimport { OfferResponse, Offer } from \"../Offer\";\nimport type { Resource } from \"../Resource\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport {\n getEmptyCosmosDiagnostics,\n withDiagnostics,\n withMetadataDiagnostics,\n} from \"../../utils/diagnostics\";\nimport { MetadataLookUpType } from \"../../CosmosDiagnostics\";\n\n/**\n * Operations for reading or deleting an existing database.\n *\n * @see {@link Databases} for creating new databases, and reading/querying all databases; use `client.databases`.\n *\n * Note: all these operations make calls against a fixed budget.\n * You should design your system such that these calls scale sublinearly with your application.\n * For instance, do not call `database.read()` before every single `item.read()` call, to ensure the database exists;\n * do this once on application start up.\n */\nexport class Database {\n /**\n * Used for creating new containers, or querying/reading all containers.\n *\n * Use `.database(id)` to read, replace, or delete a specific, existing {@link Database} by id.\n *\n * @example Create a new container\n * ```typescript\n * const {body: containerDefinition, container} = await client.database(\"\").containers.create({id: \"\"});\n * ```\n */\n public readonly containers: Containers;\n /**\n * Used for creating new users, or querying/reading all users.\n *\n * Use `.user(id)` to read, replace, or delete a specific, existing {@link User} by id.\n */\n public readonly users: Users;\n\n /**\n * Returns a reference URL to the resource. Used for linking in Permissions.\n */\n public get url(): string {\n return createDatabaseUri(this.id);\n }\n\n /** Returns a new {@link Database} instance.\n *\n * Note: the intention is to get this object from {@link CosmosClient} via `client.database(id)`, not to instantiate it yourself.\n */\n constructor(\n public readonly client: CosmosClient,\n public readonly id: string,\n private clientContext: ClientContext,\n ) {\n this.containers = new Containers(this, this.clientContext);\n this.users = new Users(this, this.clientContext);\n }\n\n /**\n * Used to read, replace, or delete a specific, existing {@link Database} by id.\n *\n * Use `.containers` creating new containers, or querying/reading all containers.\n *\n * @example Delete a container\n * ```typescript\n * await client.database(\"\").container(\"\").delete();\n * ```\n */\n public container(id: string): Container {\n return new Container(this, id, this.clientContext);\n }\n\n /**\n * Used to read, replace, or delete a specific, existing {@link User} by id.\n *\n * Use `.users` for creating new users, or querying/reading all users.\n */\n public user(id: string): User {\n return new User(this, id, this.clientContext);\n }\n\n /** Read the definition of the given Database. */\n public async read(options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.readInternal(diagnosticNode, options);\n }, this.clientContext);\n }\n\n /**\n * @hidden\n */\n public async readInternal(\n diagnosticNode: DiagnosticNodeInternal,\n options?: RequestOptions,\n ): Promise {\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n const response = await this.clientContext.read({\n path,\n resourceType: ResourceType.database,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new DatabaseResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }\n\n /** Delete the given Database. */\n public async delete(options?: RequestOptions): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const path = getPathFromLink(this.url);\n const id = getIdFromLink(this.url);\n\n const response = await this.clientContext.delete({\n path,\n resourceType: ResourceType.database,\n resourceId: id,\n options,\n diagnosticNode,\n });\n return new DatabaseResponse(\n response.result,\n response.headers,\n response.code,\n this,\n getEmptyCosmosDiagnostics(),\n );\n }, this.clientContext);\n }\n\n /**\n * Gets offer on database. If none exists, returns an OfferResponse with undefined.\n */\n public async readOffer(options: RequestOptions = {}): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n const { resource: record } = await withMetadataDiagnostics(\n async (node: DiagnosticNodeInternal) => {\n return this.readInternal(node);\n },\n diagnosticNode,\n MetadataLookUpType.DatabaseLookUp,\n );\n\n const path = \"/offers\";\n const url = record._self;\n\n const response = await this.clientContext.queryFeed({\n path,\n resourceId: \"\",\n resourceType: ResourceType.offer,\n query: `SELECT * from root where root.resource = \"${url}\"`,\n resultFn: (result) => result.Offers,\n options,\n diagnosticNode,\n });\n const offer = response.result[0]\n ? new Offer(this.client, response.result[0].id, this.clientContext)\n : undefined;\n return new OfferResponse(\n response.result[0],\n response.headers,\n response.code,\n getEmptyCosmosDiagnostics(),\n offer,\n );\n }, this.clientContext);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport { Constants, isResourceValid, ResourceType, StatusCodes } from \"../../common\";\nimport type { CosmosClient } from \"../../CosmosClient\";\nimport type { FetchFunctionCallback, SqlQuerySpec } from \"../../queryExecutionContext\";\nimport { mergeHeaders } from \"../../queryExecutionContext\";\nimport { QueryIterator } from \"../../queryIterator\";\nimport type { FeedOptions, RequestOptions } from \"../../request\";\nimport type { Resource } from \"../Resource\";\nimport { Database } from \"./Database\";\nimport type { DatabaseDefinition } from \"./DatabaseDefinition\";\nimport type { DatabaseRequest } from \"./DatabaseRequest\";\nimport { DatabaseResponse } from \"./DatabaseResponse\";\nimport { validateOffer } from \"../../utils/offers\";\nimport type { DiagnosticNodeInternal } from \"../../diagnostics/DiagnosticNodeInternal\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"../../utils/diagnostics\";\n\n/**\n * Operations for creating new databases, and reading/querying all databases\n *\n * @see {@link Database} for reading or deleting an existing database; use `client.database(id)`.\n *\n * Note: all these operations make calls against a fixed budget.\n * You should design your system such that these calls scale sublinearly with your application.\n * For instance, do not call `databases.readAll()` before every single `item.read()` call, to ensure the database exists;\n * do this once on application start up.\n */\nexport class Databases {\n /**\n * @hidden\n * @param client - The parent {@link CosmosClient} for the Database.\n */\n constructor(\n public readonly client: CosmosClient,\n private readonly clientContext: ClientContext,\n ) {}\n\n /**\n * Queries all databases.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n * @param options - Use to set options like response page size, continuation tokens, etc.\n * @returns {@link QueryIterator} Allows you to return all databases in an array or iterate over them one at a time.\n * @example Read all databases to array.\n * ```typescript\n * const querySpec: SqlQuerySpec = {\n * query: \"SELECT * FROM root r WHERE r.id = @db\",\n * parameters: [\n * {name: \"@db\", value: \"Todo\"}\n * ]\n * };\n * const {body: databaseList} = await client.databases.query(querySpec).fetchAll();\n * ```\n */\n public query(query: string | SqlQuerySpec, options?: FeedOptions): QueryIterator;\n /**\n * Queries all databases.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n * @param options - Use to set options like response page size, continuation tokens, etc.\n * @returns {@link QueryIterator} Allows you to return all databases in an array or iterate over them one at a time.\n * @example Read all databases to array.\n * ```typescript\n * const querySpec: SqlQuerySpec = {\n * query: \"SELECT * FROM root r WHERE r.id = @db\",\n * parameters: [\n * {name: \"@db\", value: \"Todo\"}\n * ]\n * };\n * const {body: databaseList} = await client.databases.query(querySpec).fetchAll();\n * ```\n */\n public query(query: string | SqlQuerySpec, options?: FeedOptions): QueryIterator;\n public query(query: string | SqlQuerySpec, options?: FeedOptions): QueryIterator {\n const cb: FetchFunctionCallback = (diagNode: DiagnosticNodeInternal, innerOptions) => {\n return this.clientContext.queryFeed({\n path: \"/dbs\",\n resourceType: ResourceType.database,\n resourceId: \"\",\n resultFn: (result) => result.Databases,\n query,\n options: innerOptions,\n diagnosticNode: diagNode,\n });\n };\n return new QueryIterator(this.clientContext, query, options, cb);\n }\n\n /**\n * Send a request for creating a database.\n *\n * A database manages users, permissions and a set of containers.\n * Each Azure Cosmos DB Database Account is able to support multiple independent named databases,\n * with the database being the logical container for data.\n *\n * Each Database consists of one or more containers, each of which in turn contain one or more\n * documents. Since databases are an administrative resource, the Service Master Key will be\n * required in order to access and successfully complete any action using the User APIs.\n *\n * @param body - The {@link DatabaseDefinition} that represents the {@link Database} to be created.\n * @param options - Use to set options like response page size, continuation tokens, etc.\n */\n public async create(\n body: DatabaseRequest,\n options: RequestOptions = {},\n ): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.createInternal(diagnosticNode, body, options);\n }, this.clientContext);\n }\n\n /**\n * @hidden\n */\n public async createInternal(\n diagnosticNode: DiagnosticNodeInternal,\n body: DatabaseRequest,\n options: RequestOptions = {},\n ): Promise {\n const err = {};\n if (!isResourceValid(body, err)) {\n throw err;\n }\n\n validateOffer(body);\n\n if (body.maxThroughput) {\n const autoscaleParams: {\n maxThroughput: number;\n autoUpgradePolicy?: {\n throughputPolicy: {\n incrementPercent: number;\n };\n };\n } = {\n maxThroughput: body.maxThroughput,\n };\n if (body.autoUpgradePolicy) {\n autoscaleParams.autoUpgradePolicy = body.autoUpgradePolicy;\n }\n const autoscaleHeaders = JSON.stringify(autoscaleParams);\n options.initialHeaders = Object.assign({}, options.initialHeaders, {\n [Constants.HttpHeaders.AutoscaleSettings]: autoscaleHeaders,\n });\n delete body.maxThroughput;\n delete body.autoUpgradePolicy;\n }\n\n if (body.throughput) {\n options.initialHeaders = Object.assign({}, options.initialHeaders, {\n [Constants.HttpHeaders.OfferThroughput]: body.throughput,\n });\n delete body.throughput;\n }\n\n const path = \"/dbs\"; // TODO: constant\n const response = await this.clientContext.create({\n body,\n path,\n resourceType: ResourceType.database,\n resourceId: undefined,\n diagnosticNode,\n options,\n });\n const ref = new Database(this.client, body.id, this.clientContext);\n return new DatabaseResponse(\n response.result,\n response.headers,\n response.code,\n ref,\n getEmptyCosmosDiagnostics(),\n );\n }\n\n /**\n * Check if a database exists, and if it doesn't, create it.\n * This will make a read operation based on the id in the `body`, then if it is not found, a create operation.\n *\n * A database manages users, permissions and a set of containers.\n * Each Azure Cosmos DB Database Account is able to support multiple independent named databases,\n * with the database being the logical container for data.\n *\n * Each Database consists of one or more containers, each of which in turn contain one or more\n * documents. Since databases are an an administrative resource, the Service Master Key will be\n * required in order to access and successfully complete any action using the User APIs.\n *\n * @param body - The {@link DatabaseDefinition} that represents the {@link Database} to be created.\n * @param options - Additional options for the request\n */\n public async createIfNotExists(\n body: DatabaseRequest,\n options?: RequestOptions,\n ): Promise {\n if (!body || body.id === null || body.id === undefined) {\n throw new Error(\"body parameter must be an object with an id property\");\n }\n /*\n 1. Attempt to read the Database (based on an assumption that most databases will already exist, so its faster)\n 2. If it fails with NotFound error, attempt to create the db. Else, return the read results.\n */\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n try {\n const readResponse = await this.client\n .database(body.id)\n .readInternal(diagnosticNode, options);\n return readResponse;\n } catch (err: any) {\n if (err.code === StatusCodes.NotFound) {\n const createResponse = await this.createInternal(diagnosticNode, body, options);\n // Must merge the headers to capture RU costskaty\n mergeHeaders(createResponse.headers, err.headers);\n return createResponse;\n } else {\n throw err;\n }\n }\n }, this.clientContext);\n }\n\n // TODO: DatabaseResponse for QueryIterator?\n /**\n * Reads all databases.\n * @param options - Use to set options like response page size, continuation tokens, etc.\n * @returns {@link QueryIterator} Allows you to return all databases in an array or iterate over them one at a time.\n * @example Read all databases to array.\n * ```typescript\n * const {body: databaseList} = await client.databases.readAll().fetchAll();\n * ```\n */\n public readAll(options?: FeedOptions): QueryIterator {\n return this.query(undefined, options);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ClientContext } from \"../../ClientContext\";\nimport { ResourceType } from \"../../common\";\nimport type { CosmosClient } from \"../../CosmosClient\";\nimport type { SqlQuerySpec } from \"../../queryExecutionContext\";\nimport { QueryIterator } from \"../../queryIterator\";\nimport type { FeedOptions } from \"../../request\";\nimport type { Resource } from \"../Resource\";\nimport type { OfferDefinition } from \"./OfferDefinition\";\n\n/**\n * Use to query or read all Offers.\n *\n * @see {@link Offer} to read or replace an existing {@link Offer} by id.\n */\nexport class Offers {\n /**\n * @hidden\n * @param client - The parent {@link CosmosClient} for the offers.\n */\n constructor(\n public readonly client: CosmosClient,\n private readonly clientContext: ClientContext,\n ) {}\n\n /**\n * Query all offers.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n */\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator;\n /**\n * Query all offers.\n * @param query - Query configuration for the operation. See {@link SqlQuerySpec} for more info on how to configure a query.\n */\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator;\n public query(query: SqlQuerySpec, options?: FeedOptions): QueryIterator {\n return new QueryIterator(this.clientContext, query, options, (diagnosticNode, innerOptions) => {\n return this.clientContext.queryFeed({\n path: \"/offers\",\n resourceType: ResourceType.offer,\n resourceId: \"\",\n resultFn: (result) => result.Offers,\n query,\n options: innerOptions,\n diagnosticNode,\n });\n });\n }\n\n /**\n * Read all offers.\n * @example Read all offers to array.\n * ```typescript\n * const {body: offerList} = await client.offers.readAll().fetchAll();\n * ```\n */\n public readAll(options?: FeedOptions): QueryIterator {\n return this.query(undefined, options);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal\";\nimport type { RequestContext } from \"../request/RequestContext\";\nimport type { Response } from \"../request/Response\";\n\n/**\n * Used to specify which type of events to execute this plug in on.\n *\n * @hidden\n */\nexport enum PluginOn {\n /**\n * Will be executed per network request\n */\n request = \"request\",\n /**\n * Will be executed per API operation\n */\n operation = \"operation\",\n}\n\n/**\n * Specifies which event to run for the specified plugin\n *\n * @hidden\n */\nexport interface PluginConfig {\n /**\n * The event to run the plugin on\n */\n on: keyof typeof PluginOn;\n /**\n * The plugin to run\n */\n plugin: Plugin;\n}\n\n/**\n * Plugins allow you to customize the behavior of the SDk with additional logging, retry, or additional functionality.\n *\n * A plugin is a function which returns a `Promise>`, and is passed a RequestContext and Next object.\n *\n * Next is a function which takes in requestContext returns a promise. You must await/then that promise which will contain the response from further plugins,\n * allowing you to log those results or handle errors.\n *\n * RequestContext is an object which controls what operation is happening, against which endpoint, and more. Modifying this and passing it along via next is how\n * you modify future SDK behavior.\n *\n * @hidden\n */\nexport type Plugin = (\n context: RequestContext,\n diagnosticNode: DiagnosticNodeInternal,\n next: Next,\n) => Promise>;\n\n/**\n * Next is a function which takes in requestContext returns a promise. You must await/then that promise which will contain the response from further plugins,\n * allowing you to log those results or handle errors.\n * @hidden\n */\nexport type Next = (context: RequestContext) => Promise>;\n\n/**\n * @internal\n */\nexport async function executePlugins(\n diagnosticNode: DiagnosticNodeInternal,\n requestContext: RequestContext,\n next: Plugin,\n on: PluginOn,\n): Promise> {\n if (!requestContext.plugins) {\n return next(requestContext, diagnosticNode, undefined);\n }\n let level = 0;\n const _: Next = (inner: RequestContext): Promise> => {\n if (++level >= inner.plugins.length) {\n return next(requestContext, diagnosticNode, undefined);\n } else if (inner.plugins[level].on !== on) {\n return _(requestContext);\n } else {\n return inner.plugins[level].plugin(inner, diagnosticNode, _);\n }\n };\n if (requestContext.plugins[level].on !== on) {\n return _(requestContext);\n } else {\n return requestContext.plugins[level].plugin(requestContext, diagnosticNode, _);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal\";\nimport { OperationType } from \"../common\";\nimport type { ErrorResponse } from \"../request\";\nimport { TimeoutErrorCode } from \"../request/TimeoutError\";\nimport type { RetryPolicy } from \"./RetryPolicy\";\n\n/**\n * @hidden\n */\n// Windows Socket Error Codes\nconst WindowsInterruptedFunctionCall = 10004;\n/**\n * @hidden\n */\nconst WindowsFileHandleNotValid = 10009;\n/**\n * @hidden\n */\nconst WindowsPermissionDenied = 10013;\n/**\n * @hidden\n */\nconst WindowsBadAddress = 10014;\n/**\n * @hidden\n */\nconst WindowsInvalidArgumnet = 10022;\n/**\n * @hidden\n */\nconst WindowsResourceTemporarilyUnavailable = 10035;\n/**\n * @hidden\n */\nconst WindowsOperationNowInProgress = 10036;\n/**\n * @hidden\n */\nconst WindowsAddressAlreadyInUse = 10048;\n/**\n * @hidden\n */\nconst WindowsConnectionResetByPeer = 10054;\n/**\n * @hidden\n */\nconst WindowsCannotSendAfterSocketShutdown = 10058;\n/**\n * @hidden\n */\nconst WindowsConnectionTimedOut = 10060;\n/**\n * @hidden\n */\nconst WindowsConnectionRefused = 10061;\n/**\n * @hidden\n */\nconst WindowsNameTooLong = 10063;\n/**\n * @hidden\n */\nconst WindowsHostIsDown = 10064;\n/**\n * @hidden\n */\nconst WindowsNoRouteTohost = 10065;\n/**\n * @hidden\n */\n\n// Linux Error Codes\n/**\n * @hidden\n */\nconst LinuxConnectionReset = \"ECONNRESET\";\n\n// Node Error Codes\n/**\n * @hidden\n */\nconst BrokenPipe = \"EPIPE\";\n\n/**\n * @hidden\n */\nconst CONNECTION_ERROR_CODES = [\n WindowsInterruptedFunctionCall,\n WindowsFileHandleNotValid,\n WindowsPermissionDenied,\n WindowsBadAddress,\n WindowsInvalidArgumnet,\n WindowsResourceTemporarilyUnavailable,\n WindowsOperationNowInProgress,\n WindowsAddressAlreadyInUse,\n WindowsConnectionResetByPeer,\n WindowsCannotSendAfterSocketShutdown,\n WindowsConnectionTimedOut,\n WindowsConnectionRefused,\n WindowsNameTooLong,\n WindowsHostIsDown,\n WindowsNoRouteTohost,\n LinuxConnectionReset,\n TimeoutErrorCode,\n BrokenPipe,\n];\n\n/**\n * @hidden\n */\nfunction needsRetry(operationType: OperationType, code: number | string): boolean {\n if (\n (operationType === OperationType.Read || operationType === OperationType.Query) &&\n CONNECTION_ERROR_CODES.indexOf(code) !== -1\n ) {\n return true;\n } else {\n return false;\n }\n}\n\n/**\n * This class implements the default connection retry policy for requests.\n * @hidden\n */\nexport class DefaultRetryPolicy implements RetryPolicy {\n private maxTries: number = 10;\n private currentRetryAttemptCount: number = 0;\n public retryAfterInMs: number = 1000;\n\n constructor(private operationType: OperationType) {}\n /**\n * Determines whether the request should be retried or not.\n * @param err - Error returned by the request.\n */\n public async shouldRetry(\n err: ErrorResponse,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise {\n if (err) {\n if (\n this.currentRetryAttemptCount < this.maxTries &&\n needsRetry(this.operationType, err.code)\n ) {\n diagnosticNode.addData({ successfulRetryPolicy: \"default\" });\n this.currentRetryAttemptCount++;\n return true;\n }\n }\n return false;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal\";\nimport type { OperationType } from \"../common\";\nimport { isReadRequest } from \"../common/helper\";\nimport type { GlobalEndpointManager } from \"../globalEndpointManager\";\nimport type { ErrorResponse } from \"../request\";\nimport type { RetryContext } from \"./RetryContext\";\nimport type { RetryPolicy } from \"./RetryPolicy\";\n\n/**\n * This class implements the retry policy for endpoint discovery.\n * @hidden\n */\nexport class EndpointDiscoveryRetryPolicy implements RetryPolicy {\n /** Current retry attempt count. */\n public currentRetryAttemptCount: number;\n /** Retry interval in milliseconds. */\n public retryAfterInMs: number;\n\n /** Max number of retry attempts to perform. */\n private maxTries: number;\n private static readonly maxTries = 120; // TODO: Constant?\n private static readonly retryAfterInMs = 1000;\n\n /**\n * @param globalEndpointManager - The GlobalEndpointManager instance.\n */\n constructor(\n private globalEndpointManager: GlobalEndpointManager,\n private operationType: OperationType,\n ) {\n this.maxTries = EndpointDiscoveryRetryPolicy.maxTries;\n this.currentRetryAttemptCount = 0;\n this.retryAfterInMs = EndpointDiscoveryRetryPolicy.retryAfterInMs;\n }\n\n /**\n * Determines whether the request should be retried or not.\n * @param err - Error returned by the request.\n */\n public async shouldRetry(\n err: ErrorResponse,\n diagnosticNode: DiagnosticNodeInternal,\n retryContext?: RetryContext,\n locationEndpoint?: string,\n ): Promise {\n if (!err) {\n return false;\n }\n\n if (!retryContext || !locationEndpoint) {\n return false;\n }\n\n if (!this.globalEndpointManager.enableEndpointDiscovery) {\n return false;\n }\n\n if (this.currentRetryAttemptCount >= this.maxTries) {\n return false;\n }\n\n this.currentRetryAttemptCount++;\n\n if (isReadRequest(this.operationType)) {\n await this.globalEndpointManager.markCurrentLocationUnavailableForRead(\n diagnosticNode,\n locationEndpoint,\n );\n } else {\n await this.globalEndpointManager.markCurrentLocationUnavailableForWrite(\n diagnosticNode,\n locationEndpoint,\n );\n }\n\n retryContext.retryCount = this.currentRetryAttemptCount;\n retryContext.clearSessionTokenNotAvailable = false;\n retryContext.retryRequestOnPreferredLocations = false;\n diagnosticNode.addData({ successfulRetryPolicy: \"endpointDiscovery\" });\n return true;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal\";\nimport type { ErrorResponse } from \"../request\";\n\n/**\n * This class implements the resource throttle retry policy for requests.\n * @hidden\n */\nexport class ResourceThrottleRetryPolicy {\n /** Current retry attempt count. */\n public currentRetryAttemptCount: number = 0;\n /** Cummulative wait time in milliseconds for a request while the retries are happening. */\n public cummulativeWaitTimeinMs: number = 0;\n /** Retry interval in milliseconds to wait before the next request will be sent. */\n public retryAfterInMs: number = 0;\n\n /** Max wait time in milliseconds to wait for a request while the retries are happening. */\n private timeoutInMs: number;\n /**\n * @param maxTries - Max number of retries to be performed for a request.\n * @param fixedRetryIntervalInMs - Fixed retry interval in milliseconds to wait between each\n * retry ignoring the retryAfter returned as part of the response.\n * @param timeoutInSeconds - Max wait time in seconds to wait for a request while the\n * retries are happening.\n */\n constructor(\n private maxTries: number = 9,\n private fixedRetryIntervalInMs: number = 0,\n timeoutInSeconds: number = 30,\n ) {\n this.timeoutInMs = timeoutInSeconds * 1000;\n this.currentRetryAttemptCount = 0;\n this.cummulativeWaitTimeinMs = 0;\n }\n /**\n * Determines whether the request should be retried or not.\n * @param err - Error returned by the request.\n */\n public async shouldRetry(\n err: ErrorResponse,\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise {\n // TODO: any custom error object\n if (err) {\n if (this.currentRetryAttemptCount < this.maxTries) {\n this.currentRetryAttemptCount++;\n this.retryAfterInMs = 0;\n\n if (this.fixedRetryIntervalInMs) {\n this.retryAfterInMs = this.fixedRetryIntervalInMs;\n } else if (err.retryAfterInMs) {\n this.retryAfterInMs = err.retryAfterInMs;\n }\n\n if (this.cummulativeWaitTimeinMs < this.timeoutInMs) {\n this.cummulativeWaitTimeinMs += this.retryAfterInMs;\n diagnosticNode.addData({ successfulRetryPolicy: \"resourceThrottle\" });\n return true;\n }\n }\n }\n return false;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal\";\nimport type { OperationType, ResourceType } from \"../common\";\nimport { isReadRequest } from \"../common\";\nimport type { ConnectionPolicy } from \"../documents\";\nimport type { GlobalEndpointManager } from \"../globalEndpointManager\";\nimport type { ErrorResponse } from \"../request\";\nimport type { RetryContext } from \"./RetryContext\";\nimport type { RetryPolicy } from \"./RetryPolicy\";\n\n/**\n * This class implements the retry policy for session consistent reads.\n * @hidden\n */\nexport class SessionRetryPolicy implements RetryPolicy {\n /** Current retry attempt count. */\n public currentRetryAttemptCount = 0;\n /** Retry interval in milliseconds. */\n public retryAfterInMs = 0;\n\n /**\n * @param globalEndpointManager - The GlobalEndpointManager instance.\n */\n constructor(\n private globalEndpointManager: GlobalEndpointManager,\n private resourceType: ResourceType,\n private operationType: OperationType,\n private connectionPolicy: ConnectionPolicy,\n ) {}\n\n /**\n * Determines whether the request should be retried or not.\n * @param err - Error returned by the request.\n * @param callback - The callback function which takes bool argument which specifies whether the request\n * will be retried or not.\n */\n public async shouldRetry(\n err: ErrorResponse,\n diagnosticNode: DiagnosticNodeInternal,\n retryContext?: RetryContext,\n ): Promise {\n if (!err) {\n return false;\n }\n\n if (!retryContext) {\n return false;\n }\n\n if (!this.connectionPolicy.enableEndpointDiscovery) {\n return false;\n }\n\n if (\n this.globalEndpointManager.canUseMultipleWriteLocations(this.resourceType, this.operationType)\n ) {\n // If we can write to multiple locations, we should against every write endpoint until we succeed\n const endpoints = isReadRequest(this.operationType)\n ? await this.globalEndpointManager.getReadEndpoints()\n : await this.globalEndpointManager.getWriteEndpoints();\n if (this.currentRetryAttemptCount > endpoints.length) {\n return false;\n } else {\n this.currentRetryAttemptCount++;\n retryContext.retryCount++;\n retryContext.retryRequestOnPreferredLocations = this.currentRetryAttemptCount > 1;\n retryContext.clearSessionTokenNotAvailable =\n this.currentRetryAttemptCount === endpoints.length;\n diagnosticNode.addData({ successfulRetryPolicy: \"session\" });\n return true;\n }\n } else {\n if (this.currentRetryAttemptCount > 1) {\n return false;\n } else {\n this.currentRetryAttemptCount++;\n retryContext.retryCount++;\n retryContext.retryRequestOnPreferredLocations = false; // Forces all operations to primary write endpoint\n retryContext.clearSessionTokenNotAvailable = true;\n diagnosticNode.addData({ successfulRetryPolicy: \"session\" });\n return true;\n }\n }\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { RetryPolicy } from \"./RetryPolicy\";\nimport { StatusCodes } from \"../common/statusCodes\";\nimport type { GlobalEndpointManager } from \"../globalEndpointManager\";\nimport { HTTPMethod, isReadRequest } from \"../common\";\nimport type { OperationType, ResourceType } from \"../common/constants\";\nimport { Constants } from \"../common/constants\";\nimport type { RetryContext } from \"./RetryContext\";\nimport type { CosmosHeaders } from \"../queryExecutionContext/CosmosHeaders\";\nimport { TimeoutErrorCode } from \"../request/TimeoutError\";\nimport type { ErrorResponse } from \"../request\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal\";\n\n/**\n * This class TimeoutFailoverRetryPolicy handles retries for read operations\n * (including data plane,metadata, and query plan) in case of request timeouts\n * (TimeoutError) or service unavailability (503 status code) by performing failover\n * and retrying on other regions.\n * @hidden\n */\nexport class TimeoutFailoverRetryPolicy implements RetryPolicy {\n private maxRetryAttemptCount = 120;\n private maxServiceUnavailableRetryCount = 1;\n public retryAfterInMs = 0;\n public failoverRetryCount = 0;\n public request: any;\n public locationEndpoint: any;\n\n constructor(\n private globalEndpointManager: GlobalEndpointManager,\n private headers: CosmosHeaders,\n private methodType: HTTPMethod,\n private resourceType: ResourceType,\n private operationType: OperationType,\n private enableEndPointDiscovery: boolean,\n ) {}\n\n /**\n * Checks if a timeout request is valid for the timeout failover retry policy.\n * A valid request should be a data plane, metadata, or query plan request.\n * @returns\n */\n private isValidRequestForTimeoutError(): boolean {\n const isQuery = Constants.HttpHeaders.IsQuery in this.headers;\n const isQueryPlan = Constants.HttpHeaders.IsQueryPlan in this.headers;\n if (this.methodType === HTTPMethod.get || isQuery || isQueryPlan) {\n return true;\n }\n return false;\n }\n\n public async shouldRetry(\n err: ErrorResponse,\n diagnosticNode: DiagnosticNodeInternal,\n retryContext?: RetryContext,\n locationEndpoint?: string,\n ): Promise {\n if (!err) {\n return false;\n }\n if (!retryContext || !locationEndpoint) {\n return false;\n }\n // Check if the error is a timeout error (TimeoutErrorCode) and if it is not a valid HTTP network timeout request\n if (err.code === TimeoutErrorCode && !this.isValidRequestForTimeoutError()) {\n return false;\n }\n if (!this.enableEndPointDiscovery) {\n return false;\n }\n if (\n err.code === StatusCodes.ServiceUnavailable &&\n this.failoverRetryCount >= this.maxServiceUnavailableRetryCount\n ) {\n return false;\n }\n if (this.failoverRetryCount >= this.maxRetryAttemptCount) {\n return false;\n }\n const canUseMultipleWriteLocations = this.globalEndpointManager.canUseMultipleWriteLocations(\n this.resourceType,\n this.operationType,\n );\n const readRequest = isReadRequest(this.operationType);\n\n if (!canUseMultipleWriteLocations && !readRequest) {\n // Write requests on single master cannot be retried, no other regions available\n return false;\n }\n this.failoverRetryCount++;\n // Setting the retryLocationIndex to the next available location for retry.\n // The retryLocationIndex is determined based on the failoverRetryCount, starting from zero.\n retryContext.retryLocationServerIndex = await this.findEndpointIndex(this.failoverRetryCount);\n diagnosticNode.addData({ successfulRetryPolicy: \"timeout-failover\" });\n return true;\n }\n\n /**\n * Determines index of endpoint to be used for retry based upon failoverRetryCount and avalable locations\n * @param failoverRetryCount - count of failovers\n * @returns\n */\n private async findEndpointIndex(failoverRetryCount: number): Promise {\n // count of preferred locations specified by user\n const preferredLocationsCount = this.globalEndpointManager.preferredLocationsCount;\n const readRequest = isReadRequest(this.operationType);\n let endpointIndex = 0;\n // If preferredLocationsCount is not zero, it indicates that the user has specified preferred locations.\n if (preferredLocationsCount !== 0) {\n // The endpointIndex is set based on the preferred location and the failover retry count.\n endpointIndex = failoverRetryCount % preferredLocationsCount;\n } else {\n // In the absence of preferred locations, the endpoint selection is based on the failover count and the number of available locations.\n if (readRequest) {\n const getReadEndpoints = await this.globalEndpointManager.getReadEndpoints();\n if (getReadEndpoints && getReadEndpoints.length > 0) {\n endpointIndex = failoverRetryCount % getReadEndpoints.length;\n }\n } else {\n const getWriteEndpoints = await this.globalEndpointManager.getWriteEndpoints();\n if (getWriteEndpoints && getWriteEndpoints.length > 0) {\n endpointIndex = failoverRetryCount % getWriteEndpoints.length;\n }\n }\n }\n return endpointIndex;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Constants } from \"../common/constants\";\nimport { sleep } from \"../common/helper\";\nimport { StatusCodes, SubStatusCodes } from \"../common/statusCodes\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal\";\nimport { DiagnosticNodeType } from \"../diagnostics/DiagnosticNodeInternal\";\nimport type { Response } from \"../request\";\nimport type { RequestContext } from \"../request/RequestContext\";\nimport { TimeoutErrorCode } from \"../request/TimeoutError\";\nimport { addDignosticChild } from \"../utils/diagnostics\";\nimport { getCurrentTimestampInMs } from \"../utils/time\";\nimport { DefaultRetryPolicy } from \"./defaultRetryPolicy\";\nimport { EndpointDiscoveryRetryPolicy } from \"./endpointDiscoveryRetryPolicy\";\nimport { ResourceThrottleRetryPolicy } from \"./resourceThrottleRetryPolicy\";\nimport type { RetryContext } from \"./RetryContext\";\nimport type { RetryPolicy } from \"./RetryPolicy\";\nimport { SessionRetryPolicy } from \"./sessionRetryPolicy\";\nimport { TimeoutFailoverRetryPolicy } from \"./timeoutFailoverRetryPolicy\";\n\n/**\n * @hidden\n */\ninterface ExecuteArgs {\n retryContext?: RetryContext;\n diagnosticNode: DiagnosticNodeInternal;\n retryPolicies?: RetryPolicies;\n requestContext: RequestContext;\n executeRequest: (\n diagnosticNode: DiagnosticNodeInternal,\n requestContext: RequestContext,\n ) => Promise>;\n}\n\n/**\n * @hidden\n */\ninterface RetryPolicies {\n endpointDiscoveryRetryPolicy: EndpointDiscoveryRetryPolicy;\n resourceThrottleRetryPolicy: ResourceThrottleRetryPolicy;\n sessionReadRetryPolicy: SessionRetryPolicy;\n defaultRetryPolicy: DefaultRetryPolicy;\n timeoutFailoverRetryPolicy: TimeoutFailoverRetryPolicy;\n}\n\n/**\n * @hidden\n */\nexport async function execute({\n diagnosticNode,\n retryContext = { retryCount: 0 },\n retryPolicies,\n requestContext,\n executeRequest,\n}: ExecuteArgs): Promise> {\n // TODO: any response\n return addDignosticChild(\n async (localDiagnosticNode: DiagnosticNodeInternal) => {\n localDiagnosticNode.addData({ requestAttempNumber: retryContext.retryCount });\n if (!retryPolicies) {\n retryPolicies = {\n endpointDiscoveryRetryPolicy: new EndpointDiscoveryRetryPolicy(\n requestContext.globalEndpointManager,\n requestContext.operationType,\n ),\n resourceThrottleRetryPolicy: new ResourceThrottleRetryPolicy(\n requestContext.connectionPolicy.retryOptions.maxRetryAttemptCount,\n requestContext.connectionPolicy.retryOptions.fixedRetryIntervalInMilliseconds,\n requestContext.connectionPolicy.retryOptions.maxWaitTimeInSeconds,\n ),\n sessionReadRetryPolicy: new SessionRetryPolicy(\n requestContext.globalEndpointManager,\n requestContext.resourceType,\n requestContext.operationType,\n requestContext.connectionPolicy,\n ),\n defaultRetryPolicy: new DefaultRetryPolicy(requestContext.operationType),\n timeoutFailoverRetryPolicy: new TimeoutFailoverRetryPolicy(\n requestContext.globalEndpointManager,\n requestContext.headers,\n requestContext.method,\n requestContext.resourceType,\n requestContext.operationType,\n requestContext.connectionPolicy.enableEndpointDiscovery,\n ),\n };\n }\n if (retryContext && retryContext.clearSessionTokenNotAvailable) {\n requestContext.client.clearSessionToken(requestContext.path);\n delete requestContext.headers[\"x-ms-session-token\"];\n }\n if (retryContext && retryContext.retryLocationServerIndex) {\n requestContext.endpoint = await requestContext.globalEndpointManager.resolveServiceEndpoint(\n localDiagnosticNode,\n requestContext.resourceType,\n requestContext.operationType,\n retryContext.retryLocationServerIndex,\n );\n } else {\n requestContext.endpoint = await requestContext.globalEndpointManager.resolveServiceEndpoint(\n localDiagnosticNode,\n requestContext.resourceType,\n requestContext.operationType,\n );\n }\n const startTimeUTCInMs = getCurrentTimestampInMs();\n const correlatedActivityId =\n requestContext.headers[Constants.HttpHeaders.CorrelatedActivityId];\n try {\n const response = await executeRequest(localDiagnosticNode, requestContext);\n response.headers[Constants.ThrottleRetryCount] =\n retryPolicies.resourceThrottleRetryPolicy.currentRetryAttemptCount;\n response.headers[Constants.ThrottleRetryWaitTimeInMs] =\n retryPolicies.resourceThrottleRetryPolicy.cummulativeWaitTimeinMs;\n if (correlatedActivityId) {\n response.headers[Constants.HttpHeaders.CorrelatedActivityId] = correlatedActivityId;\n }\n return response;\n } catch (err: any) {\n // TODO: any error\n let retryPolicy: RetryPolicy = null;\n const headers = err.headers || {};\n if (correlatedActivityId) {\n headers[Constants.HttpHeaders.CorrelatedActivityId] = correlatedActivityId;\n }\n if (\n err.code === StatusCodes.ENOTFOUND ||\n err.code === \"REQUEST_SEND_ERROR\" ||\n (err.code === StatusCodes.Forbidden &&\n (err.substatus === SubStatusCodes.DatabaseAccountNotFound ||\n err.substatus === SubStatusCodes.WriteForbidden))\n ) {\n retryPolicy = retryPolicies.endpointDiscoveryRetryPolicy;\n } else if (err.code === StatusCodes.TooManyRequests) {\n retryPolicy = retryPolicies.resourceThrottleRetryPolicy;\n } else if (\n err.code === StatusCodes.NotFound &&\n err.substatus === SubStatusCodes.ReadSessionNotAvailable\n ) {\n retryPolicy = retryPolicies.sessionReadRetryPolicy;\n } else if (err.code === StatusCodes.ServiceUnavailable || err.code === TimeoutErrorCode) {\n retryPolicy = retryPolicies.timeoutFailoverRetryPolicy;\n } else {\n retryPolicy = retryPolicies.defaultRetryPolicy;\n }\n const results = await retryPolicy.shouldRetry(\n err,\n localDiagnosticNode,\n retryContext,\n requestContext.endpoint,\n );\n if (!results) {\n headers[Constants.ThrottleRetryCount] =\n retryPolicies.resourceThrottleRetryPolicy.currentRetryAttemptCount;\n headers[Constants.ThrottleRetryWaitTimeInMs] =\n retryPolicies.resourceThrottleRetryPolicy.cummulativeWaitTimeinMs;\n err.headers = { ...err.headers, ...headers };\n throw err;\n } else {\n requestContext.retryCount++;\n const newUrl = (results as any)[1]; // TODO: any hack\n if (newUrl !== undefined) {\n requestContext.endpoint = newUrl;\n }\n localDiagnosticNode.recordFailedNetworkCall(\n startTimeUTCInMs,\n requestContext,\n retryContext.retryCount,\n err.code,\n err.subsstatusCode,\n headers,\n );\n await sleep(retryPolicy.retryAfterInMs);\n return execute({\n diagnosticNode,\n executeRequest,\n requestContext,\n retryContext,\n retryPolicies,\n });\n }\n }\n },\n diagnosticNode,\n DiagnosticNodeType.HTTP_REQUEST,\n );\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { Agent } from \"http\";\n/**\n * @hidden\n */\nexport let defaultHttpAgent: Agent;\n/**\n * @hidden\n */\nexport let defaultHttpsAgent: Agent;\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient } from \"@azure/core-rest-pipeline\";\nimport { createDefaultHttpClient } from \"@azure/core-rest-pipeline\";\n\nlet cachedHttpClient: HttpClient | undefined;\n\nexport function getCachedDefaultHttpClient(): HttpClient {\n if (!cachedHttpClient) {\n cachedHttpClient = createDefaultHttpClient();\n }\n\n return cachedHttpClient;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { PipelineResponse } from \"@azure/core-rest-pipeline\";\nimport { createPipelineRequest, createHttpHeaders } from \"@azure/core-rest-pipeline\";\nimport { prepareURL } from \"../common\";\nimport { Constants } from \"../common/constants\";\nimport { executePlugins, PluginOn } from \"../plugins/Plugin\";\nimport * as RetryUtility from \"../retry/retryUtility\";\nimport { defaultHttpAgent, defaultHttpsAgent } from \"./defaultAgent\";\nimport { ErrorResponse } from \"./ErrorResponse\";\nimport { bodyFromData } from \"./request\";\nimport type { RequestContext } from \"./RequestContext\";\nimport type { Response as CosmosResponse } from \"./Response\";\nimport { TimeoutError } from \"./TimeoutError\";\nimport { getCachedDefaultHttpClient } from \"../utils/cachedClient\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport { createClientLogger } from \"@azure/logger\";\nimport type { DiagnosticNodeInternal } from \"../diagnostics/DiagnosticNodeInternal\";\nimport { DiagnosticNodeType } from \"../diagnostics/DiagnosticNodeInternal\";\nimport { addDignosticChild } from \"../utils/diagnostics\";\nimport { getCurrentTimestampInMs } from \"../utils/time\";\n\nconst logger: AzureLogger = createClientLogger(\"RequestHandler\");\n\nasync function executeRequest(\n diagnosticNode: DiagnosticNodeInternal,\n requestContext: RequestContext,\n): Promise> {\n return executePlugins(diagnosticNode, requestContext, httpRequest, PluginOn.request);\n}\n\n/**\n * @hidden\n */\nasync function httpRequest(\n requestContext: RequestContext,\n diagnosticNode: DiagnosticNodeInternal,\n): Promise<{\n headers: any;\n result: any;\n code: number;\n substatus: number;\n}> {\n const controller = new AbortController();\n const signal = controller.signal;\n\n // Wrap users passed abort events and call our own internal abort()\n const userSignal = requestContext.options && requestContext.options.abortSignal;\n if (userSignal) {\n if (userSignal.aborted) {\n controller.abort();\n } else {\n userSignal.addEventListener(\"abort\", () => {\n controller.abort();\n });\n }\n }\n\n const timeout = setTimeout(() => {\n controller.abort();\n }, requestContext.connectionPolicy.requestTimeout);\n\n let response: PipelineResponse;\n\n if (requestContext.body) {\n requestContext.body = bodyFromData(requestContext.body);\n }\n\n const httpsClient = requestContext.httpClient ?? getCachedDefaultHttpClient();\n const url = prepareURL(requestContext.endpoint, requestContext.path);\n const reqHeaders = createHttpHeaders(requestContext.headers as any);\n const pipelineRequest = createPipelineRequest({\n url,\n headers: reqHeaders,\n method: requestContext.method,\n abortSignal: signal,\n body: requestContext.body,\n });\n if (requestContext.requestAgent) {\n pipelineRequest.agent = requestContext.requestAgent;\n } else {\n const parsedUrl = new URL(url);\n pipelineRequest.agent = parsedUrl.protocol === \"http:\" ? defaultHttpAgent : defaultHttpsAgent;\n pipelineRequest.allowInsecureConnection = parsedUrl.protocol === \"http:\";\n }\n\n const startTimeUTCInMs = getCurrentTimestampInMs();\n try {\n if (requestContext.pipeline) {\n response = await requestContext.pipeline.sendRequest(httpsClient, pipelineRequest);\n } else {\n response = await httpsClient.sendRequest(pipelineRequest);\n }\n } catch (error: any) {\n if (error.name === \"AbortError\") {\n // If the user passed signal caused the abort, cancel the timeout and rethrow the error\n if (userSignal && userSignal.aborted === true) {\n clearTimeout(timeout);\n throw error;\n }\n // If the user didn't cancel, it must be an abort we called due to timeout\n throw new TimeoutError(\n `Timeout Error! Request took more than ${requestContext.connectionPolicy.requestTimeout} ms`,\n );\n }\n throw error;\n }\n\n clearTimeout(timeout);\n const result =\n response.status === 204 || response.status === 304 || response.bodyAsText === \"\"\n ? null\n : JSON.parse(response.bodyAsText);\n const responseHeaders = response.headers.toJSON();\n\n const substatus = responseHeaders[Constants.HttpHeaders.SubStatus]\n ? parseInt(responseHeaders[Constants.HttpHeaders.SubStatus], 10)\n : undefined;\n\n diagnosticNode.recordSuccessfulNetworkCall(\n startTimeUTCInMs,\n requestContext,\n response,\n substatus,\n url,\n );\n\n if (response.status >= 400) {\n const errorResponse: ErrorResponse = new ErrorResponse(result.message);\n logger.warning(\n response.status +\n \" \" +\n requestContext.endpoint +\n \" \" +\n requestContext.path +\n \" \" +\n result.message,\n );\n\n errorResponse.code = response.status;\n errorResponse.body = result;\n errorResponse.headers = responseHeaders;\n\n if (Constants.HttpHeaders.ActivityId in responseHeaders) {\n errorResponse.activityId = responseHeaders[Constants.HttpHeaders.ActivityId];\n }\n\n if (Constants.HttpHeaders.SubStatus in responseHeaders) {\n errorResponse.substatus = substatus;\n }\n\n if (Constants.HttpHeaders.RetryAfterInMs in responseHeaders) {\n errorResponse.retryAfterInMs = parseInt(\n responseHeaders[Constants.HttpHeaders.RetryAfterInMs],\n 10,\n );\n Object.defineProperty(errorResponse, \"retryAfterInMilliseconds\", {\n get: () => {\n return errorResponse.retryAfterInMs;\n },\n });\n }\n\n throw errorResponse;\n }\n return {\n headers: responseHeaders,\n result,\n code: response.status,\n substatus,\n };\n}\n\n/**\n * @hidden\n */\nasync function request(\n requestContext: RequestContext,\n diagnosticNode: DiagnosticNodeInternal,\n): Promise> {\n if (requestContext.body) {\n requestContext.body = bodyFromData(requestContext.body);\n if (!requestContext.body) {\n throw new Error(\"parameter data must be a javascript object, string, or Buffer\");\n }\n }\n\n return addDignosticChild(\n async (childNode: DiagnosticNodeInternal) => {\n return RetryUtility.execute({\n diagnosticNode: childNode,\n requestContext,\n executeRequest,\n });\n },\n diagnosticNode,\n DiagnosticNodeType.REQUEST_ATTEMPTS,\n );\n}\n\nexport const RequestHandler = {\n request,\n};\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n/**\n * Models vector clock bases session token. Session token has the following format:\n * `{Version}#{GlobalLSN}#{RegionId1}={LocalLsn1}#{RegionId2}={LocalLsn2}....#{RegionIdN}={LocalLsnN}`\n * 'Version' captures the configuration number of the partition which returned this session token.\n * 'Version' is incremented everytime topology of the partition is updated (say due to Add/Remove/Failover).\n *\n * The choice of separators '#' and '=' is important. Separators ';' and ',' are used to delimit\n * per-partitionKeyRange session token\n * @hidden\n *\n */\nexport class VectorSessionToken {\n private static readonly SEGMENT_SEPARATOR = \"#\";\n private static readonly REGION_PROGRESS_SEPARATOR = \"=\";\n\n constructor(\n private readonly version: number,\n private readonly globalLsn: number,\n private readonly localLsnByregion: Map,\n private readonly sessionToken?: string,\n ) {\n if (!this.sessionToken) {\n const regionAndLocalLsn = [];\n for (const [key, value] of this.localLsnByregion.entries()) {\n regionAndLocalLsn.push(`${key}${VectorSessionToken.REGION_PROGRESS_SEPARATOR}${value}`);\n }\n const regionProgress = regionAndLocalLsn.join(VectorSessionToken.SEGMENT_SEPARATOR);\n if (regionProgress === \"\") {\n this.sessionToken = `${this.version}${VectorSessionToken.SEGMENT_SEPARATOR}${this.globalLsn}`;\n } else {\n this.sessionToken = `${this.version}${VectorSessionToken.SEGMENT_SEPARATOR}${this.globalLsn}${VectorSessionToken.SEGMENT_SEPARATOR}${regionProgress}`;\n }\n }\n }\n\n public static create(sessionToken: string): VectorSessionToken | null {\n const [versionStr, globalLsnStr, ...regionSegments] = sessionToken.split(\n VectorSessionToken.SEGMENT_SEPARATOR,\n );\n\n const version = parseInt(versionStr, 10);\n const globalLsn = parseFloat(globalLsnStr);\n\n if (typeof version !== \"number\" || typeof globalLsn !== \"number\") {\n return null;\n }\n\n const lsnByRegion = new Map();\n for (const regionSegment of regionSegments) {\n const [regionIdStr, localLsnStr] = regionSegment.split(\n VectorSessionToken.REGION_PROGRESS_SEPARATOR,\n );\n\n if (!regionIdStr || !localLsnStr) {\n return null;\n }\n\n const regionId = parseInt(regionIdStr, 10);\n let localLsn: string;\n try {\n localLsn = localLsnStr;\n } catch (err: any) {\n // TODO: log error\n return null;\n }\n if (typeof regionId !== \"number\") {\n return null;\n }\n\n lsnByRegion.set(regionId, localLsn);\n }\n\n return new VectorSessionToken(version, globalLsn, lsnByRegion, sessionToken);\n }\n\n public equals(other: VectorSessionToken): boolean {\n return !other\n ? false\n : this.version === other.version &&\n this.globalLsn === other.globalLsn &&\n this.areRegionProgressEqual(other.localLsnByregion);\n }\n\n public merge(other: VectorSessionToken): VectorSessionToken {\n if (other == null) {\n throw new Error(\"other (Vector Session Token) must not be null\");\n }\n\n if (\n this.version === other.version &&\n this.localLsnByregion.size !== other.localLsnByregion.size\n ) {\n throw new Error(\n `Compared session tokens ${this.sessionToken} and ${other.sessionToken} have unexpected regions`,\n );\n }\n\n const [higherVersionSessionToken, lowerVersionSessionToken]: [\n VectorSessionToken,\n VectorSessionToken,\n ] = this.version < other.version ? [other, this] : [this, other];\n\n const highestLocalLsnByRegion = new Map();\n\n for (const [regionId, highLocalLsn] of higherVersionSessionToken.localLsnByregion.entries()) {\n const lowLocalLsn = lowerVersionSessionToken.localLsnByregion.get(regionId);\n if (lowLocalLsn) {\n highestLocalLsnByRegion.set(regionId, max(highLocalLsn, lowLocalLsn));\n } else if (this.version === other.version) {\n throw new Error(\n `Compared session tokens have unexpected regions. Session 1: ${this.sessionToken} - Session 2: ${this.sessionToken}`,\n );\n } else {\n highestLocalLsnByRegion.set(regionId, highLocalLsn);\n }\n }\n\n return new VectorSessionToken(\n Math.max(this.version, other.version),\n Math.max(this.globalLsn, other.globalLsn),\n highestLocalLsnByRegion,\n );\n }\n\n public toString(): string | undefined {\n return this.sessionToken;\n }\n\n private areRegionProgressEqual(other: Map): boolean {\n if (this.localLsnByregion.size !== other.size) {\n return false;\n }\n\n for (const [regionId, localLsn] of this.localLsnByregion.entries()) {\n const otherLocalLsn = other.get(regionId);\n\n if (localLsn !== otherLocalLsn) {\n return false;\n }\n }\n return true;\n }\n}\n\n/**\n * @hidden\n */\nfunction max(int1: string, int2: string): string {\n // NOTE: This only works for positive numbers\n if (int1.length === int2.length) {\n return int1 > int2 ? int1 : int2;\n } else if (int1.length > int2.length) {\n return int1;\n } else {\n return int2;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport atob from \"../utils/atob\";\nimport type { ResourceType } from \"../common\";\nimport { Constants, getContainerLink, OperationType, trimSlashes } from \"../common\";\nimport type { CosmosHeaders } from \"../queryExecutionContext\";\nimport type { SessionContext } from \"./SessionContext\";\nimport { VectorSessionToken } from \"./VectorSessionToken\";\n\n/** @hidden */\nexport class SessionContainer {\n private static readonly EMPTY_SESSION_TOKEN = \"\";\n private static readonly SESSION_TOKEN_SEPARATOR = \",\";\n private static readonly SESSION_TOKEN_PARTITION_SPLITTER = \":\";\n constructor(\n private collectionNameToCollectionResourceId = new Map(),\n private collectionResourceIdToSessionTokens = new Map<\n string,\n Map\n >(),\n ) {}\n\n public get(request: SessionContext): string {\n if (!request) {\n throw new Error(\"request cannot be null\");\n }\n const collectionName = getContainerLink(trimSlashes(request.resourceAddress));\n const rangeIdToTokenMap = this.getPartitionKeyRangeIdToTokenMap(collectionName);\n return SessionContainer.getCombinedSessionTokenString(rangeIdToTokenMap);\n }\n\n public remove(request: SessionContext): void {\n let collectionResourceId: string;\n const resourceAddress = trimSlashes(request.resourceAddress);\n const collectionName = getContainerLink(resourceAddress);\n if (collectionName) {\n collectionResourceId = this.collectionNameToCollectionResourceId.get(collectionName);\n this.collectionNameToCollectionResourceId.delete(collectionName);\n }\n if (collectionResourceId !== undefined) {\n this.collectionResourceIdToSessionTokens.delete(collectionResourceId);\n }\n }\n\n public set(request: SessionContext, resHeaders: CosmosHeaders): void {\n // TODO: we check the master logic a few different places. Might not need it.\n if (\n !resHeaders ||\n SessionContainer.isReadingFromMaster(request.resourceType, request.operationType)\n ) {\n return;\n }\n\n const sessionTokenString = resHeaders[Constants.HttpHeaders.SessionToken];\n if (!sessionTokenString) {\n return;\n }\n\n const containerName = this.getContainerName(request, resHeaders);\n\n const ownerId = !request.isNameBased\n ? request.resourceId\n : resHeaders[Constants.HttpHeaders.OwnerId] || request.resourceId;\n\n if (!ownerId) {\n return;\n }\n\n if (containerName && this.validateOwnerID(ownerId)) {\n if (!this.collectionResourceIdToSessionTokens.has(ownerId)) {\n this.collectionResourceIdToSessionTokens.set(ownerId, new Map());\n }\n\n if (!this.collectionNameToCollectionResourceId.has(containerName)) {\n this.collectionNameToCollectionResourceId.set(containerName, ownerId);\n }\n\n const containerSessionContainer = this.collectionResourceIdToSessionTokens.get(ownerId);\n SessionContainer.compareAndSetToken(sessionTokenString, containerSessionContainer);\n }\n }\n\n private validateOwnerID(ownerId: string): boolean {\n // If ownerId contains exactly 8 bytes it represents a unique database+collection identifier. Otherwise it represents another resource\n // The first 4 bytes are the database. The last 4 bytes are the collection.\n // Cosmos rids potentially contain \"-\" which is an invalid character in the browser atob implementation\n // See https://en.wikipedia.org/wiki/Base64#Filenames\n return atob(ownerId.replace(/-/g, \"/\")).length === 8;\n }\n\n private getPartitionKeyRangeIdToTokenMap(\n collectionName: string,\n ): Map {\n let rangeIdToTokenMap: Map = null;\n if (collectionName && this.collectionNameToCollectionResourceId.has(collectionName)) {\n rangeIdToTokenMap = this.collectionResourceIdToSessionTokens.get(\n this.collectionNameToCollectionResourceId.get(collectionName),\n );\n }\n\n return rangeIdToTokenMap;\n }\n\n private static getCombinedSessionTokenString(tokens: Map): string {\n if (!tokens || tokens.size === 0) {\n return SessionContainer.EMPTY_SESSION_TOKEN;\n }\n\n let result = \"\";\n for (const [range, token] of tokens.entries()) {\n result +=\n range +\n SessionContainer.SESSION_TOKEN_PARTITION_SPLITTER +\n token.toString() +\n SessionContainer.SESSION_TOKEN_SEPARATOR;\n }\n return result.slice(0, -1);\n }\n\n private static compareAndSetToken(\n newTokenString: string,\n containerSessionTokens: Map,\n ): void {\n if (!newTokenString) {\n return;\n }\n\n const partitionsParts = newTokenString.split(SessionContainer.SESSION_TOKEN_SEPARATOR);\n for (const partitionPart of partitionsParts) {\n const newTokenParts = partitionPart.split(SessionContainer.SESSION_TOKEN_PARTITION_SPLITTER);\n if (newTokenParts.length !== 2) {\n return;\n }\n\n const range = newTokenParts[0];\n const newToken = VectorSessionToken.create(newTokenParts[1]);\n const tokenForRange = !containerSessionTokens.get(range)\n ? newToken\n : containerSessionTokens.get(range).merge(newToken);\n containerSessionTokens.set(range, tokenForRange);\n }\n }\n\n // TODO: have a assert if the type doesn't mastch known types\n private static isReadingFromMaster(\n resourceType: ResourceType,\n operationType: OperationType,\n ): boolean {\n if (\n resourceType === Constants.Path.OffersPathSegment ||\n resourceType === Constants.Path.DatabasesPathSegment ||\n resourceType === Constants.Path.UsersPathSegment ||\n resourceType === Constants.Path.PermissionsPathSegment ||\n resourceType === Constants.Path.TopologyPathSegment ||\n resourceType === Constants.Path.DatabaseAccountPathSegment ||\n resourceType === Constants.Path.PartitionKeyRangesPathSegment ||\n (resourceType === Constants.Path.CollectionsPathSegment &&\n operationType === OperationType.Query)\n ) {\n return true;\n }\n\n return false;\n }\n\n private getContainerName(request: SessionContext, headers: CosmosHeaders): string {\n let ownerFullName = headers[Constants.HttpHeaders.OwnerFullName];\n if (!ownerFullName) {\n ownerFullName = trimSlashes(request.resourceAddress);\n }\n\n return getContainerLink(ownerFullName as string);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AzureLogger } from \"@azure/logger\";\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * Interface for a Diagnostic Writer.\n * @hidden\n */\nexport interface DiagnosticWriter {\n write(message: string): Promise;\n}\n\n/**\n * Implementation of DiagnosticWriter, which uses \\@azure/logger to write\n * diagnostics.\n * @hidden\n */\nexport class LogDiagnosticWriter implements DiagnosticWriter {\n private logger: AzureLogger = createClientLogger(\"CosmosDBDiagnostics\");\n public async write(diagnosticsData: string): Promise {\n this.logger.verbose(diagnosticsData);\n }\n}\n\n/**\n * Implementation of a no-op DiagnosticWriter.\n * @hidden\n */\nexport class NoOpDiagnosticWriter implements DiagnosticWriter {\n public async write(_diagnosticsData: string): Promise {\n // No op\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { CosmosDiagnostics } from \"../CosmosDiagnostics\";\n\nexport interface DiagnosticFormatter {\n format(cosmosDiagnostic: CosmosDiagnostics): string;\n}\n\nexport class DefaultDiagnosticFormatter implements DiagnosticFormatter {\n format(cosmosDiagnostic: CosmosDiagnostics): string {\n return JSON.stringify(cosmosDiagnostic);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { HttpClient, Pipeline } from \"@azure/core-rest-pipeline\";\nimport { bearerTokenAuthenticationPolicy, createEmptyPipeline } from \"@azure/core-rest-pipeline\";\nimport type { PartitionKeyRange } from \"./client/Container/PartitionKeyRange\";\nimport type { Resource } from \"./client/Resource\";\nimport { Constants, HTTPMethod, OperationType, ResourceType } from \"./common/constants\";\nimport { getIdFromLink, getPathFromLink, parseLink } from \"./common/helper\";\nimport { StatusCodes, SubStatusCodes } from \"./common/statusCodes\";\nimport type { Agent, CosmosClientOptions } from \"./CosmosClientOptions\";\nimport type { ConnectionPolicy, PartitionKey } from \"./documents\";\nimport { ConsistencyLevel, DatabaseAccount, convertToInternalPartitionKey } from \"./documents\";\nimport type { GlobalEndpointManager } from \"./globalEndpointManager\";\nimport type { PluginConfig } from \"./plugins/Plugin\";\nimport { PluginOn, executePlugins } from \"./plugins/Plugin\";\nimport type { FetchFunctionCallback, SqlQuerySpec } from \"./queryExecutionContext\";\nimport type { CosmosHeaders } from \"./queryExecutionContext/CosmosHeaders\";\nimport { QueryIterator } from \"./queryIterator\";\nimport type { ErrorResponse } from \"./request\";\nimport type { FeedOptions, RequestOptions, Response } from \"./request\";\nimport type { PartitionedQueryExecutionInfo } from \"./request/ErrorResponse\";\nimport { getHeaders } from \"./request/request\";\nimport type { RequestContext } from \"./request/RequestContext\";\nimport { RequestHandler } from \"./request/RequestHandler\";\nimport { SessionContainer } from \"./session/sessionContainer\";\nimport type { SessionContext } from \"./session/SessionContext\";\nimport type { BulkOptions } from \"./utils/batch\";\nimport { sanitizeEndpoint } from \"./utils/checkURL\";\nimport { supportedQueryFeaturesBuilder } from \"./utils/supportedQueryFeaturesBuilder\";\nimport type { AzureLogger } from \"@azure/logger\";\nimport { createClientLogger } from \"@azure/logger\";\nimport type { ClientConfigDiagnostic, CosmosDiagnostics } from \"./CosmosDiagnostics\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal\";\nimport type { DiagnosticWriter } from \"./diagnostics/DiagnosticWriter\";\nimport { LogDiagnosticWriter, NoOpDiagnosticWriter } from \"./diagnostics/DiagnosticWriter\";\nimport type { DiagnosticFormatter } from \"./diagnostics/DiagnosticFormatter\";\nimport { DefaultDiagnosticFormatter } from \"./diagnostics/DiagnosticFormatter\";\nimport { CosmosDbDiagnosticLevel } from \"./diagnostics/CosmosDbDiagnosticLevel\";\nimport { randomUUID } from \"@azure/core-util\";\n\nconst logger: AzureLogger = createClientLogger(\"ClientContext\");\n\nconst QueryJsonContentType = \"application/query+json\";\nconst HttpHeaders = Constants.HttpHeaders;\n/**\n * @hidden\n * @hidden\n */\nexport class ClientContext {\n private readonly sessionContainer: SessionContainer;\n private connectionPolicy: ConnectionPolicy;\n private pipeline: Pipeline;\n private diagnosticWriter: DiagnosticWriter;\n private diagnosticFormatter: DiagnosticFormatter;\n public partitionKeyDefinitionCache: { [containerUrl: string]: any }; // TODO: PartitionKeyDefinitionCache\n public constructor(\n private cosmosClientOptions: CosmosClientOptions,\n private globalEndpointManager: GlobalEndpointManager,\n private clientConfig: ClientConfigDiagnostic,\n public diagnosticLevel: CosmosDbDiagnosticLevel,\n ) {\n this.connectionPolicy = cosmosClientOptions.connectionPolicy;\n this.sessionContainer = new SessionContainer();\n this.partitionKeyDefinitionCache = {};\n this.pipeline = null;\n if (cosmosClientOptions.aadCredentials) {\n this.pipeline = createEmptyPipeline();\n const hrefEndpoint = sanitizeEndpoint(cosmosClientOptions.endpoint);\n const scope = `${hrefEndpoint}/.default`;\n this.pipeline.addPolicy(\n bearerTokenAuthenticationPolicy({\n credential: cosmosClientOptions.aadCredentials,\n scopes: scope,\n challengeCallbacks: {\n async authorizeRequest({ request, getAccessToken }) {\n const tokenResponse = await getAccessToken([scope], {});\n const AUTH_PREFIX = `type=aad&ver=1.0&sig=`;\n const authorizationToken = `${AUTH_PREFIX}${tokenResponse.token}`;\n request.headers.set(\"Authorization\", authorizationToken);\n },\n },\n }),\n );\n }\n this.initializeDiagnosticSettings(diagnosticLevel);\n }\n /** @hidden */\n public async read({\n path,\n resourceType,\n resourceId,\n options = {},\n partitionKey,\n diagnosticNode,\n }: {\n path: string;\n resourceType: ResourceType;\n resourceId: string;\n options?: RequestOptions;\n partitionKey?: PartitionKey;\n diagnosticNode: DiagnosticNodeInternal;\n }): Promise> {\n try {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.get,\n path,\n operationType: OperationType.Read,\n resourceId,\n options,\n resourceType,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Read,\n resourceType,\n });\n\n request.headers = await this.buildHeaders(request);\n this.applySessionToken(request);\n\n // read will use ReadEndpoint since it uses GET operation\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpoint(\n diagnosticNode,\n request.resourceType,\n request.operationType,\n );\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n this.captureSessionToken(undefined, path, OperationType.Read, response.headers);\n return response;\n } catch (err: any) {\n this.captureSessionToken(err, path, OperationType.Upsert, (err as ErrorResponse).headers);\n throw err;\n }\n }\n\n public async queryFeed({\n path,\n resourceType,\n resourceId,\n resultFn,\n query,\n options,\n diagnosticNode,\n partitionKeyRangeId,\n partitionKey,\n startEpk,\n endEpk,\n correlatedActivityId,\n }: {\n path: string;\n resourceType: ResourceType;\n resourceId: string;\n resultFn: (result: { [key: string]: any }) => any[];\n query: SqlQuerySpec | string;\n options: FeedOptions;\n diagnosticNode: DiagnosticNodeInternal;\n partitionKeyRangeId?: string;\n partitionKey?: PartitionKey;\n startEpk?: string | undefined;\n endEpk?: string | undefined;\n correlatedActivityId?: string;\n }): Promise> {\n // Query operations will use ReadEndpoint even though it uses\n // GET(for queryFeed) and POST(for regular query operations)\n\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.get,\n path,\n operationType: OperationType.Query,\n partitionKeyRangeId,\n resourceId,\n resourceType,\n options,\n body: query,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Query,\n resourceType,\n });\n const requestId = randomUUID();\n if (query !== undefined) {\n request.method = HTTPMethod.post;\n }\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpoint(\n diagnosticNode,\n request.resourceType,\n request.operationType,\n );\n request.headers = await this.buildHeaders(request);\n\n if (startEpk !== undefined && endEpk !== undefined) {\n request.headers[HttpHeaders.StartEpk] = startEpk;\n request.headers[HttpHeaders.EndEpk] = endEpk;\n request.headers[HttpHeaders.ReadFeedKeyType] = \"EffectivePartitionKeyRange\";\n }\n\n if (query !== undefined) {\n if (correlatedActivityId !== undefined) {\n request.headers[HttpHeaders.CorrelatedActivityId] = correlatedActivityId;\n }\n request.headers[HttpHeaders.IsQuery] = \"true\";\n request.headers[HttpHeaders.ContentType] = QueryJsonContentType;\n if (typeof query === \"string\") {\n request.body = { query }; // Converts query text to query object.\n }\n }\n this.applySessionToken(request);\n logger.info(\n \"query \" +\n requestId +\n \" started\" +\n (request.partitionKeyRangeId ? \" pkrid: \" + request.partitionKeyRangeId : \"\"),\n );\n logger.verbose(request);\n const start = Date.now();\n const response = await RequestHandler.request(request, diagnosticNode);\n logger.info(\"query \" + requestId + \" finished - \" + (Date.now() - start) + \"ms\");\n this.captureSessionToken(undefined, path, OperationType.Query, response.headers);\n return this.processQueryFeedResponse(response, !!query, resultFn);\n }\n\n public async getQueryPlan(\n path: string,\n resourceType: ResourceType,\n resourceId: string,\n query: SqlQuerySpec | string,\n options: FeedOptions = {},\n diagnosticNode: DiagnosticNodeInternal,\n correlatedActivityId?: string,\n ): Promise> {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.post,\n path,\n operationType: OperationType.Read,\n resourceId,\n resourceType,\n options,\n body: query,\n };\n diagnosticNode.addData({\n operationType: OperationType.Read,\n resourceType,\n });\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpoint(\n diagnosticNode,\n request.resourceType,\n request.operationType,\n );\n request.headers = await this.buildHeaders(request);\n if (correlatedActivityId !== undefined) {\n request.headers[HttpHeaders.CorrelatedActivityId] = correlatedActivityId;\n }\n request.headers[HttpHeaders.IsQueryPlan] = \"True\";\n request.headers[HttpHeaders.QueryVersion] = \"1.4\";\n request.headers[HttpHeaders.ContentType] = QueryJsonContentType;\n request.headers[HttpHeaders.SupportedQueryFeatures] = supportedQueryFeaturesBuilder(\n options.disableNonStreamingOrderByQuery,\n );\n\n if (typeof query === \"string\") {\n request.body = { query }; // Converts query text to query object.\n }\n\n this.applySessionToken(request);\n const response = await RequestHandler.request(request, diagnosticNode);\n this.captureSessionToken(undefined, path, OperationType.Query, response.headers);\n return response as any;\n }\n\n public queryPartitionKeyRanges(\n collectionLink: string,\n query?: string | SqlQuerySpec,\n options?: FeedOptions,\n ): QueryIterator {\n const path = getPathFromLink(collectionLink, ResourceType.pkranges);\n const id = getIdFromLink(collectionLink);\n const cb: FetchFunctionCallback = async (diagNode, innerOptions) => {\n const response = await this.queryFeed({\n path,\n resourceType: ResourceType.pkranges,\n resourceId: id,\n resultFn: (result) => result.PartitionKeyRanges,\n query,\n options: innerOptions,\n diagnosticNode: diagNode,\n });\n return response;\n };\n return new QueryIterator(this, query, options, cb);\n }\n\n public async delete({\n path,\n resourceType,\n resourceId,\n options = {},\n partitionKey,\n method = HTTPMethod.delete,\n diagnosticNode,\n }: {\n path: string;\n resourceType: ResourceType;\n resourceId: string;\n options?: RequestOptions;\n partitionKey?: PartitionKey;\n method?: HTTPMethod;\n diagnosticNode: DiagnosticNodeInternal;\n }): Promise> {\n try {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: method,\n operationType: OperationType.Delete,\n path,\n resourceType,\n options,\n resourceId,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Delete,\n resourceType,\n });\n request.headers = await this.buildHeaders(request);\n this.applySessionToken(request);\n // deleteResource will use WriteEndpoint since it uses DELETE operation\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpoint(\n diagnosticNode,\n request.resourceType,\n request.operationType,\n );\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n if (parseLink(path).type !== \"colls\") {\n this.captureSessionToken(undefined, path, OperationType.Delete, response.headers);\n } else {\n this.clearSessionToken(path);\n }\n return response;\n } catch (err: any) {\n this.captureSessionToken(err, path, OperationType.Upsert, (err as ErrorResponse).headers);\n throw err;\n }\n }\n\n public async patch({\n body,\n path,\n resourceType,\n resourceId,\n options = {},\n partitionKey,\n diagnosticNode,\n }: {\n body: any;\n path: string;\n resourceType: ResourceType;\n resourceId: string;\n options?: RequestOptions;\n partitionKey?: PartitionKey;\n diagnosticNode: DiagnosticNodeInternal;\n }): Promise> {\n try {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.patch,\n operationType: OperationType.Patch,\n path,\n resourceType,\n body,\n resourceId,\n options,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Patch,\n resourceType,\n });\n request.headers = await this.buildHeaders(request);\n this.applySessionToken(request);\n\n // patch will use WriteEndpoint\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpoint(\n diagnosticNode,\n request.resourceType,\n request.operationType,\n );\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n this.captureSessionToken(undefined, path, OperationType.Patch, response.headers);\n return response;\n } catch (err: any) {\n this.captureSessionToken(err, path, OperationType.Upsert, (err as ErrorResponse).headers);\n throw err;\n }\n }\n\n public async create({\n body,\n path,\n resourceType,\n resourceId,\n diagnosticNode,\n options = {},\n partitionKey,\n }: {\n body: T;\n path: string;\n resourceType: ResourceType;\n resourceId: string;\n diagnosticNode: DiagnosticNodeInternal;\n options?: RequestOptions;\n partitionKey?: PartitionKey;\n }): Promise> {\n try {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.post,\n operationType: OperationType.Create,\n path,\n resourceType,\n resourceId,\n body,\n options,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Create,\n resourceType,\n });\n request.headers = await this.buildHeaders(request);\n // create will use WriteEndpoint since it uses POST operation\n this.applySessionToken(request);\n\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpoint(\n diagnosticNode,\n request.resourceType,\n request.operationType,\n );\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n this.captureSessionToken(undefined, path, OperationType.Create, response.headers);\n return response;\n } catch (err: any) {\n this.captureSessionToken(err, path, OperationType.Upsert, (err as ErrorResponse).headers);\n throw err;\n }\n }\n\n private processQueryFeedResponse(\n res: Response,\n isQuery: boolean,\n resultFn: (result: { [key: string]: any }) => any[],\n ): Response {\n if (isQuery) {\n return {\n result: resultFn(res.result),\n headers: res.headers,\n code: res.code,\n };\n } else {\n const newResult = resultFn(res.result).map((body: any) => body);\n return {\n result: newResult,\n headers: res.headers,\n code: res.code,\n };\n }\n }\n\n private applySessionToken(requestContext: RequestContext): void {\n const request = this.getSessionParams(requestContext.path);\n\n if (requestContext.headers && requestContext.headers[HttpHeaders.SessionToken]) {\n return;\n }\n\n const sessionConsistency: ConsistencyLevel = requestContext.headers[\n HttpHeaders.ConsistencyLevel\n ] as ConsistencyLevel;\n if (!sessionConsistency) {\n return;\n }\n\n if (sessionConsistency !== ConsistencyLevel.Session) {\n return;\n }\n\n if (request.resourceAddress) {\n const sessionToken = this.sessionContainer.get(request);\n if (sessionToken) {\n requestContext.headers[HttpHeaders.SessionToken] = sessionToken;\n }\n }\n }\n\n public async replace({\n body,\n path,\n resourceType,\n resourceId,\n options = {},\n partitionKey,\n diagnosticNode,\n }: {\n body: any;\n path: string;\n resourceType: ResourceType;\n resourceId: string;\n options?: RequestOptions;\n partitionKey?: PartitionKey;\n diagnosticNode: DiagnosticNodeInternal;\n }): Promise> {\n try {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.put,\n operationType: OperationType.Replace,\n path,\n resourceType,\n body,\n resourceId,\n options,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Replace,\n resourceType,\n });\n request.headers = await this.buildHeaders(request);\n this.applySessionToken(request);\n\n // replace will use WriteEndpoint since it uses PUT operation\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpoint(\n diagnosticNode,\n request.resourceType,\n request.operationType,\n );\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n this.captureSessionToken(undefined, path, OperationType.Replace, response.headers);\n return response;\n } catch (err: any) {\n this.captureSessionToken(err, path, OperationType.Upsert, (err as ErrorResponse).headers);\n throw err;\n }\n }\n\n public async upsert({\n body,\n path,\n resourceType,\n resourceId,\n options = {},\n partitionKey,\n diagnosticNode,\n }: {\n body: T;\n path: string;\n resourceType: ResourceType;\n resourceId: string;\n options?: RequestOptions;\n partitionKey?: PartitionKey;\n diagnosticNode: DiagnosticNodeInternal;\n }): Promise> {\n try {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.post,\n operationType: OperationType.Upsert,\n path,\n resourceType,\n body,\n resourceId,\n options,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Upsert,\n resourceType,\n });\n request.headers = await this.buildHeaders(request);\n request.headers[HttpHeaders.IsUpsert] = true;\n this.applySessionToken(request);\n\n // upsert will use WriteEndpoint since it uses POST operation\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpoint(\n diagnosticNode,\n request.resourceType,\n request.operationType,\n );\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n this.captureSessionToken(undefined, path, OperationType.Upsert, response.headers);\n return response;\n } catch (err: any) {\n this.captureSessionToken(err, path, OperationType.Upsert, (err as ErrorResponse).headers);\n throw err;\n }\n }\n\n public async execute({\n sprocLink,\n params,\n options = {},\n partitionKey,\n diagnosticNode,\n }: {\n sprocLink: string;\n params?: any[];\n options?: RequestOptions;\n partitionKey?: PartitionKey;\n diagnosticNode: DiagnosticNodeInternal;\n }): Promise> {\n // Accept a single parameter or an array of parameters.\n // Didn't add type annotation for this because we should legacy this behavior\n if (params !== null && params !== undefined && !Array.isArray(params)) {\n params = [params];\n }\n const path = getPathFromLink(sprocLink);\n const id = getIdFromLink(sprocLink);\n\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.post,\n operationType: OperationType.Execute,\n path,\n resourceType: ResourceType.sproc,\n options,\n resourceId: id,\n body: params,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Execute,\n resourceType: ResourceType.sproc,\n });\n request.headers = await this.buildHeaders(request);\n // executeStoredProcedure will use WriteEndpoint since it uses POST operation\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpoint(\n diagnosticNode,\n request.resourceType,\n request.operationType,\n );\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n return response;\n }\n\n /**\n * Gets the Database account information.\n * @param options - `urlConnection` in the options is the endpoint url whose database account needs to be retrieved.\n * If not present, current client's url will be used.\n */\n public async getDatabaseAccount(\n diagnosticNode: DiagnosticNodeInternal,\n options: RequestOptions = {},\n ): Promise> {\n const endpoint = options.urlConnection || this.cosmosClientOptions.endpoint;\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n endpoint,\n method: HTTPMethod.get,\n operationType: OperationType.Read,\n path: \"\",\n resourceType: ResourceType.none,\n options,\n };\n diagnosticNode.addData({\n operationType: OperationType.Read,\n resourceType: ResourceType.none,\n });\n request.headers = await this.buildHeaders(request);\n // await options.beforeOperation({ endpoint, request, headers: requestHeaders });\n const { result, headers, code, substatus, diagnostics } = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n\n const databaseAccount = new DatabaseAccount(result, headers);\n return {\n result: databaseAccount,\n headers,\n diagnostics,\n code: code,\n substatus: substatus,\n };\n }\n\n public getWriteEndpoint(diagnosticNode: DiagnosticNodeInternal): Promise {\n return this.globalEndpointManager.getWriteEndpoint(diagnosticNode);\n }\n\n public getReadEndpoint(diagnosticNode: DiagnosticNodeInternal): Promise {\n return this.globalEndpointManager.getReadEndpoint(diagnosticNode);\n }\n\n public getWriteEndpoints(): Promise {\n return this.globalEndpointManager.getWriteEndpoints();\n }\n\n public getReadEndpoints(): Promise {\n return this.globalEndpointManager.getReadEndpoints();\n }\n\n public async batch({\n body,\n path,\n partitionKey,\n resourceId,\n options = {},\n diagnosticNode,\n }: {\n body: T;\n path: string;\n partitionKey: PartitionKey;\n resourceId: string;\n options?: RequestOptions;\n diagnosticNode: DiagnosticNodeInternal;\n }): Promise> {\n try {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.post,\n operationType: OperationType.Batch,\n path,\n body,\n resourceType: ResourceType.item,\n resourceId,\n options,\n partitionKey,\n };\n diagnosticNode.addData({\n operationType: OperationType.Batch,\n resourceType: ResourceType.item,\n });\n request.headers = await this.buildHeaders(request);\n request.headers[HttpHeaders.IsBatchRequest] = true;\n request.headers[HttpHeaders.IsBatchAtomic] = true;\n\n this.applySessionToken(request);\n\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpoint(\n diagnosticNode,\n request.resourceType,\n request.operationType,\n );\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n this.captureSessionToken(undefined, path, OperationType.Batch, response.headers);\n response.diagnostics = diagnosticNode.toDiagnostic(this.getClientConfig());\n return response;\n } catch (err: any) {\n this.captureSessionToken(err, path, OperationType.Upsert, (err as ErrorResponse).headers);\n throw err;\n }\n }\n\n public async bulk({\n body,\n path,\n partitionKeyRangeId,\n resourceId,\n bulkOptions = {},\n options = {},\n diagnosticNode,\n }: {\n body: T;\n path: string;\n partitionKeyRangeId: string;\n resourceId: string;\n bulkOptions?: BulkOptions;\n options?: RequestOptions;\n diagnosticNode: DiagnosticNodeInternal;\n }): Promise> {\n try {\n const request: RequestContext = {\n ...this.getContextDerivedPropsForRequestCreation(),\n method: HTTPMethod.post,\n operationType: OperationType.Batch,\n path,\n body,\n resourceType: ResourceType.item,\n resourceId,\n options,\n };\n diagnosticNode.addData({\n operationType: OperationType.Batch,\n resourceType: ResourceType.item,\n });\n request.headers = await this.buildHeaders(request);\n request.headers[HttpHeaders.IsBatchRequest] = true;\n request.headers[HttpHeaders.PartitionKeyRangeID] = partitionKeyRangeId;\n request.headers[HttpHeaders.IsBatchAtomic] = false;\n request.headers[HttpHeaders.BatchContinueOnError] = bulkOptions.continueOnError ?? true;\n this.applySessionToken(request);\n\n request.endpoint = await this.globalEndpointManager.resolveServiceEndpoint(\n diagnosticNode,\n request.resourceType,\n request.operationType,\n );\n const response = await executePlugins(\n diagnosticNode,\n request,\n RequestHandler.request,\n PluginOn.operation,\n );\n this.captureSessionToken(undefined, path, OperationType.Batch, response.headers);\n return response;\n } catch (err: any) {\n this.captureSessionToken(err, path, OperationType.Upsert, (err as ErrorResponse).headers);\n throw err;\n }\n }\n\n private captureSessionToken(\n err: ErrorResponse,\n path: string,\n operationType: OperationType,\n resHeaders: CosmosHeaders,\n ): void {\n const request = this.getSessionParams(path);\n request.operationType = operationType;\n if (\n !err ||\n (!this.isMasterResource(request.resourceType) &&\n (err.code === StatusCodes.PreconditionFailed ||\n err.code === StatusCodes.Conflict ||\n (err.code === StatusCodes.NotFound &&\n err.substatus !== SubStatusCodes.ReadSessionNotAvailable)))\n ) {\n this.sessionContainer.set(request, resHeaders);\n }\n }\n\n public clearSessionToken(path: string): void {\n const request = this.getSessionParams(path);\n this.sessionContainer.remove(request);\n }\n\n public recordDiagnostics(diagnostic: CosmosDiagnostics): void {\n const formatted = this.diagnosticFormatter.format(diagnostic);\n this.diagnosticWriter.write(formatted);\n }\n\n public initializeDiagnosticSettings(diagnosticLevel: CosmosDbDiagnosticLevel): void {\n this.diagnosticFormatter = new DefaultDiagnosticFormatter();\n switch (diagnosticLevel) {\n case CosmosDbDiagnosticLevel.info:\n this.diagnosticWriter = new NoOpDiagnosticWriter();\n break;\n default:\n this.diagnosticWriter = new LogDiagnosticWriter();\n }\n }\n\n // TODO: move\n private getSessionParams(resourceLink: string): SessionContext {\n const resourceId: string = null;\n let resourceAddress: string = null;\n const parserOutput = parseLink(resourceLink);\n\n resourceAddress = parserOutput.objectBody.self;\n\n const resourceType = parserOutput.type;\n return {\n resourceId,\n resourceAddress,\n resourceType,\n isNameBased: true,\n };\n }\n\n private isMasterResource(resourceType: string): boolean {\n if (\n resourceType === Constants.Path.OffersPathSegment ||\n resourceType === Constants.Path.DatabasesPathSegment ||\n resourceType === Constants.Path.UsersPathSegment ||\n resourceType === Constants.Path.PermissionsPathSegment ||\n resourceType === Constants.Path.TopologyPathSegment ||\n resourceType === Constants.Path.DatabaseAccountPathSegment ||\n resourceType === Constants.Path.PartitionKeyRangesPathSegment ||\n resourceType === Constants.Path.CollectionsPathSegment\n ) {\n return true;\n }\n\n return false;\n }\n\n private buildHeaders(requestContext: RequestContext): Promise {\n return getHeaders({\n clientOptions: this.cosmosClientOptions,\n defaultHeaders: {\n ...this.cosmosClientOptions.defaultHeaders,\n ...requestContext.options.initialHeaders,\n },\n verb: requestContext.method,\n path: requestContext.path,\n resourceId: requestContext.resourceId,\n resourceType: requestContext.resourceType,\n options: requestContext.options,\n partitionKeyRangeId: requestContext.partitionKeyRangeId,\n useMultipleWriteLocations: this.connectionPolicy.useMultipleWriteLocations,\n partitionKey:\n requestContext.partitionKey !== undefined\n ? convertToInternalPartitionKey(requestContext.partitionKey)\n : undefined, // TODO: Move this check from here to PartitionKey\n });\n }\n\n /**\n * Returns collection of properties which are derived from the context for Request Creation.\n * These properties have client wide scope, as opposed to request specific scope.\n * @returns\n */\n private getContextDerivedPropsForRequestCreation(): {\n globalEndpointManager: GlobalEndpointManager;\n connectionPolicy: ConnectionPolicy;\n requestAgent: Agent;\n client?: ClientContext;\n pipeline?: Pipeline;\n plugins: PluginConfig[];\n httpClient?: HttpClient;\n } {\n return {\n globalEndpointManager: this.globalEndpointManager,\n requestAgent: this.cosmosClientOptions.agent,\n connectionPolicy: this.connectionPolicy,\n client: this,\n plugins: this.cosmosClientOptions.plugins,\n pipeline: this.pipeline,\n httpClient: this.cosmosClientOptions.httpClient,\n };\n }\n\n public getClientConfig(): ClientConfigDiagnostic {\n return this.clientConfig;\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function checkURL(testString: string): URL {\n return new URL(testString);\n}\n\nexport function sanitizeEndpoint(url: string): string {\n return new URL(url).href.replace(/\\/$/, \"\");\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { QueryFeature } from \"../common\";\n\nexport function supportedQueryFeaturesBuilder(disableNonStreamingOrderByQuery?: boolean): string {\n if (disableNonStreamingOrderByQuery) {\n return Object.keys(QueryFeature)\n .filter((k) => k !== QueryFeature.NonStreamingOrderBy)\n .join(\", \");\n } else {\n return Object.keys(QueryFeature).join(\", \");\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const diagnosticLevelFromEnv: string | undefined = undefined;\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Constants } from \"../common\";\nimport { isNonEmptyString } from \"../utils/strings\";\nimport { CosmosDbDiagnosticLevel } from \"./CosmosDbDiagnosticLevel\";\nimport { diagnosticLevelFromEnv } from \"../utils/envUtils\";\n\nexport * from \"./DiagnosticWriter\";\nexport * from \"./DiagnosticFormatter\";\n\nexport const DefaultDiagnosticLevelValue = CosmosDbDiagnosticLevel.info;\n\nconst acceptableDiagnosticLevelValues = Object.values(CosmosDbDiagnosticLevel).map((x) =>\n x.toString(),\n);\n\nlet cosmosDiagnosticLevel: CosmosDbDiagnosticLevel | undefined;\n\nif (isNonEmptyString(diagnosticLevelFromEnv)) {\n // avoid calling setDiagnosticLevel because we don't want a mis-set environment variable to crash\n if (isCosmosDiagnosticLevel(diagnosticLevelFromEnv)) {\n setDiagnosticLevel(diagnosticLevelFromEnv as CosmosDbDiagnosticLevel);\n } else {\n console.error(\n `${\n Constants.CosmosDbDiagnosticLevelEnvVarName\n } set to unknown diagnostic level '${diagnosticLevelFromEnv}'; Setting Cosmos Db diagnostic level to info. Acceptable values: ${acceptableDiagnosticLevelValues.join(\n \", \",\n )}.`,\n );\n }\n}\n\nexport function setDiagnosticLevel(level?: CosmosDbDiagnosticLevel): void {\n if (level && !isCosmosDiagnosticLevel(level)) {\n throw new Error(\n `Unknown diagnostic level '${level}'. Acceptable values: ${acceptableDiagnosticLevelValues.join(\n \",\",\n )}`,\n );\n }\n cosmosDiagnosticLevel = level;\n}\n\nexport function getDiagnosticLevelFromEnvironment(): CosmosDbDiagnosticLevel | undefined {\n return cosmosDiagnosticLevel;\n}\n\nfunction isCosmosDiagnosticLevel(\n diagnosticLevel: string,\n): diagnosticLevel is CosmosDbDiagnosticLevel {\n return acceptableDiagnosticLevelValues.includes(diagnosticLevel);\n}\n\nexport function determineDiagnosticLevel(\n diagnosticLevelFromClientConfig: CosmosDbDiagnosticLevel,\n diagnosticLevelFromEnvironment: CosmosDbDiagnosticLevel,\n): CosmosDbDiagnosticLevel {\n const diagnosticLevelFromEnvOrClient =\n diagnosticLevelFromEnvironment ?? diagnosticLevelFromClientConfig; // Diagnostic Setting from environment gets first priority.\n return diagnosticLevelFromEnvOrClient ?? DefaultDiagnosticLevelValue; // Diagnostic Setting supplied in Client config gets second priority.\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function isNonEmptyString(variable: unknown): boolean {\n return typeof variable === \"string\" && variable.trim().length > 0;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { RetryOptions } from \"../retry/retryOptions\";\nimport { ConnectionMode } from \"./ConnectionMode\";\n/**\n * Represents the Connection policy associated with a CosmosClient in the Azure Cosmos DB database service.\n */\nexport interface ConnectionPolicy {\n /** Determines which mode to connect to Cosmos with. (Currently only supports Gateway option) */\n connectionMode?: ConnectionMode;\n /** Request timeout (time to wait for response from network peer). Represented in milliseconds. */\n requestTimeout?: number;\n /**\n * Flag to enable/disable automatic redirecting of requests based on read/write operations. Default true.\n * Required to call client.dispose() when this is set to true after destroying the CosmosClient inside another process or in the browser.\n */\n enableEndpointDiscovery?: boolean;\n /** List of azure regions to be used as preferred locations for read requests. */\n preferredLocations?: string[];\n /** RetryOptions object which defines several configurable properties used during retry. */\n retryOptions?: RetryOptions;\n /**\n * The flag that enables writes on any locations (regions) for geo-replicated database accounts in the Azure Cosmos DB service.\n * Default is `false`.\n */\n useMultipleWriteLocations?: boolean;\n /** Rate in milliseconds at which the client will refresh the endpoints list in the background */\n endpointRefreshRateInMs?: number;\n /** Flag to enable/disable background refreshing of endpoints. Defaults to false.\n * Endpoint discovery using `enableEndpointsDiscovery` will still work for failed requests. */\n enableBackgroundEndpointRefreshing?: boolean;\n}\n\n/**\n * @hidden\n */\nexport const defaultConnectionPolicy: ConnectionPolicy = Object.freeze({\n connectionMode: ConnectionMode.Gateway,\n requestTimeout: 60000,\n enableEndpointDiscovery: true,\n preferredLocations: [],\n retryOptions: {\n maxRetryAttemptCount: 9,\n fixedRetryIntervalInMilliseconds: 0,\n maxWaitTimeInSeconds: 30,\n },\n useMultipleWriteLocations: true,\n endpointRefreshRateInMs: 300000,\n enableBackgroundEndpointRefreshing: true,\n});\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { OperationType, ResourceType, isReadRequest } from \"./common\";\nimport type { CosmosClientOptions } from \"./CosmosClientOptions\";\nimport type { Location, DatabaseAccount } from \"./documents\";\nimport type { RequestOptions } from \"./index\";\nimport { Constants } from \"./common/constants\";\nimport type { ResourceResponse } from \"./request\";\nimport { MetadataLookUpType } from \"./CosmosDiagnostics\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal\";\nimport { withMetadataDiagnostics } from \"./utils/diagnostics\";\n\n/**\n * @hidden\n * This internal class implements the logic for endpoint management for geo-replicated database accounts.\n */\nexport class GlobalEndpointManager {\n /**\n * The endpoint used to create the client instance.\n */\n private defaultEndpoint: string;\n /**\n * Flag to enable/disable automatic redirecting of requests based on read/write operations.\n */\n public enableEndpointDiscovery: boolean;\n private isRefreshing: boolean;\n private options: CosmosClientOptions;\n /**\n * List of azure regions to be used as preferred locations for read requests.\n */\n private preferredLocations: string[];\n private writeableLocations: Location[] = [];\n private readableLocations: Location[] = [];\n private unavailableReadableLocations: Location[] = [];\n private unavailableWriteableLocations: Location[] = [];\n\n public preferredLocationsCount: number;\n /**\n * @param options - The document client instance.\n * @internal\n */\n constructor(\n options: CosmosClientOptions,\n private readDatabaseAccount: (\n diagnosticNode: DiagnosticNodeInternal,\n opts: RequestOptions,\n ) => Promise>,\n ) {\n this.options = options;\n this.defaultEndpoint = options.endpoint;\n this.enableEndpointDiscovery = options.connectionPolicy.enableEndpointDiscovery;\n this.isRefreshing = false;\n this.preferredLocations = this.options.connectionPolicy.preferredLocations;\n this.preferredLocationsCount = this.preferredLocations ? this.preferredLocations.length : 0;\n }\n\n /**\n * Gets the current read endpoint from the endpoint cache.\n */\n public async getReadEndpoint(diagnosticNode: DiagnosticNodeInternal): Promise {\n return this.resolveServiceEndpoint(diagnosticNode, ResourceType.item, OperationType.Read);\n }\n\n /**\n * Gets the current write endpoint from the endpoint cache.\n */\n public async getWriteEndpoint(diagnosticNode: DiagnosticNodeInternal): Promise {\n return this.resolveServiceEndpoint(diagnosticNode, ResourceType.item, OperationType.Replace);\n }\n\n public async getReadEndpoints(): Promise> {\n return this.readableLocations.map((loc) => loc.databaseAccountEndpoint);\n }\n\n public async getWriteEndpoints(): Promise> {\n return this.writeableLocations.map((loc) => loc.databaseAccountEndpoint);\n }\n\n public async markCurrentLocationUnavailableForRead(\n diagnosticNode: DiagnosticNodeInternal,\n endpoint: string,\n ): Promise {\n await this.refreshEndpointList(diagnosticNode);\n const location = this.readableLocations.find((loc) => loc.databaseAccountEndpoint === endpoint);\n if (location) {\n location.unavailable = true;\n location.lastUnavailabilityTimestampInMs = Date.now();\n this.unavailableReadableLocations.push(location);\n }\n }\n\n public async markCurrentLocationUnavailableForWrite(\n diagnosticNode: DiagnosticNodeInternal,\n endpoint: string,\n ): Promise {\n await this.refreshEndpointList(diagnosticNode);\n const location = this.writeableLocations.find(\n (loc) => loc.databaseAccountEndpoint === endpoint,\n );\n if (location) {\n location.unavailable = true;\n location.lastUnavailabilityTimestampInMs = Date.now();\n this.unavailableWriteableLocations.push(location);\n }\n }\n\n public canUseMultipleWriteLocations(\n resourceType?: ResourceType,\n operationType?: OperationType,\n ): boolean {\n let canUse = this.options.connectionPolicy.useMultipleWriteLocations;\n\n if (resourceType) {\n canUse =\n canUse &&\n (resourceType === ResourceType.item ||\n (resourceType === ResourceType.sproc && operationType === OperationType.Execute));\n }\n\n return canUse;\n }\n\n public async resolveServiceEndpoint(\n diagnosticNode: DiagnosticNodeInternal,\n resourceType: ResourceType,\n operationType: OperationType,\n startServiceEndpointIndex: number = 0, // Represents the starting index for selecting servers.\n ): Promise {\n // If endpoint discovery is disabled, always use the user provided endpoint\n\n if (!this.options.connectionPolicy.enableEndpointDiscovery) {\n diagnosticNode.addData({ readFromCache: true }, \"default_endpoint\");\n diagnosticNode.recordEndpointResolution(this.defaultEndpoint);\n return this.defaultEndpoint;\n }\n\n // If getting the database account, always use the user provided endpoint\n if (resourceType === ResourceType.none) {\n diagnosticNode.addData({ readFromCache: true }, \"none_resource\");\n diagnosticNode.recordEndpointResolution(this.defaultEndpoint);\n return this.defaultEndpoint;\n }\n\n if (this.readableLocations.length === 0 || this.writeableLocations.length === 0) {\n const resourceResponse = await withMetadataDiagnostics(\n async (metadataNode: DiagnosticNodeInternal) => {\n return this.readDatabaseAccount(metadataNode, {\n urlConnection: this.defaultEndpoint,\n });\n },\n diagnosticNode,\n MetadataLookUpType.DatabaseAccountLookUp,\n );\n\n this.writeableLocations = resourceResponse.resource.writableLocations;\n this.readableLocations = resourceResponse.resource.readableLocations;\n }\n\n const locations = isReadRequest(operationType)\n ? this.readableLocations\n : this.writeableLocations;\n\n let location;\n // If we have preferred locations, try each one in order and use the first available one\n if (\n this.preferredLocations &&\n this.preferredLocations.length > 0 &&\n startServiceEndpointIndex < this.preferredLocations.length\n ) {\n for (let i = startServiceEndpointIndex; i < this.preferredLocations.length; i++) {\n const preferredLocation = this.preferredLocations[i];\n location = locations.find(\n (loc) =>\n loc.unavailable !== true &&\n normalizeEndpoint(loc.name) === normalizeEndpoint(preferredLocation),\n );\n if (location) {\n break;\n }\n }\n }\n\n // If no preferred locations or one did not match, just grab the first one that is available\n if (!location) {\n const startIndexValid =\n startServiceEndpointIndex >= 0 && startServiceEndpointIndex < locations.length;\n const locationsToSearch = startIndexValid\n ? locations.slice(startServiceEndpointIndex)\n : locations;\n location = locationsToSearch.find((loc) => {\n return loc.unavailable !== true;\n });\n }\n\n location = location ? location : { name: \"\", databaseAccountEndpoint: this.defaultEndpoint };\n diagnosticNode.recordEndpointResolution(location.databaseAccountEndpoint);\n return location.databaseAccountEndpoint;\n }\n\n /**\n * Refreshes the endpoint list by clearning stale unavailability and then\n * retrieving the writable and readable locations from the geo-replicated database account\n * and then updating the locations cache.\n * We skip the refreshing if enableEndpointDiscovery is set to False\n */\n public async refreshEndpointList(diagnosticNode: DiagnosticNodeInternal): Promise {\n if (!this.isRefreshing && this.enableEndpointDiscovery) {\n this.isRefreshing = true;\n const databaseAccount = await this.getDatabaseAccountFromAnyEndpoint(diagnosticNode);\n if (databaseAccount) {\n this.refreshStaleUnavailableLocations();\n this.refreshEndpoints(databaseAccount);\n }\n this.isRefreshing = false;\n }\n }\n\n private refreshEndpoints(databaseAccount: DatabaseAccount): void {\n for (const location of databaseAccount.writableLocations) {\n const existingLocation = this.writeableLocations.find((loc) => loc.name === location.name);\n if (!existingLocation) {\n this.writeableLocations.push(location);\n }\n }\n for (const location of databaseAccount.readableLocations) {\n const existingLocation = this.readableLocations.find((loc) => loc.name === location.name);\n if (!existingLocation) {\n this.readableLocations.push(location);\n }\n }\n }\n\n private refreshStaleUnavailableLocations(): void {\n const now = Date.now();\n this.updateLocation(now, this.unavailableReadableLocations, this.readableLocations);\n this.unavailableReadableLocations = this.cleanUnavailableLocationList(\n now,\n this.unavailableReadableLocations,\n );\n\n this.updateLocation(now, this.unavailableWriteableLocations, this.writeableLocations);\n this.unavailableWriteableLocations = this.cleanUnavailableLocationList(\n now,\n this.unavailableWriteableLocations,\n );\n }\n\n /**\n * update the locationUnavailability to undefined if the location is available again\n * @param now - current time\n * @param unavailableLocations - list of unavailable locations\n * @param allLocations - list of all locations\n */\n private updateLocation(\n now: number,\n unavailableLocations: Location[],\n allLocations: Location[],\n ): void {\n for (const location of unavailableLocations) {\n const unavaialableLocation = allLocations.find((loc) => loc.name === location.name);\n if (\n unavaialableLocation &&\n now - unavaialableLocation.lastUnavailabilityTimestampInMs >\n Constants.LocationUnavailableExpirationTimeInMs\n ) {\n unavaialableLocation.unavailable = false;\n }\n }\n }\n\n private cleanUnavailableLocationList(now: number, unavailableLocations: Location[]): Location[] {\n return unavailableLocations.filter((loc) => {\n if (\n loc &&\n now - loc.lastUnavailabilityTimestampInMs >= Constants.LocationUnavailableExpirationTimeInMs\n ) {\n return false;\n }\n return true;\n });\n }\n\n /**\n * Gets the database account first by using the default endpoint, and if that doesn't returns\n * use the endpoints for the preferred locations in the order they are specified to get\n * the database account.\n */\n private async getDatabaseAccountFromAnyEndpoint(\n diagnosticNode: DiagnosticNodeInternal,\n ): Promise {\n try {\n const options = { urlConnection: this.defaultEndpoint };\n const { resource: databaseAccount } = await this.readDatabaseAccount(diagnosticNode, options);\n return databaseAccount;\n // If for any reason(non - globaldb related), we are not able to get the database\n // account from the above call to readDatabaseAccount,\n // we would try to get this information from any of the preferred locations that the user\n // might have specified (by creating a locational endpoint)\n // and keeping eating the exception until we get the database account and return None at the end,\n // if we are not able to get that info from any endpoints\n } catch (err: any) {\n // TODO: Tracing\n }\n\n if (this.preferredLocations) {\n for (const location of this.preferredLocations) {\n try {\n const locationalEndpoint = GlobalEndpointManager.getLocationalEndpoint(\n this.defaultEndpoint,\n location,\n );\n const options = { urlConnection: locationalEndpoint };\n const { resource: databaseAccount } = await this.readDatabaseAccount(\n diagnosticNode,\n options,\n );\n if (databaseAccount) {\n return databaseAccount;\n }\n } catch (err: any) {\n // TODO: Tracing\n }\n }\n }\n }\n\n /**\n * Gets the locational endpoint using the location name passed to it using the default endpoint.\n *\n * @param defaultEndpoint - The default endpoint to use for the endpoint.\n * @param locationName - The location name for the azure region like \"East US\".\n */\n private static getLocationalEndpoint(defaultEndpoint: string, locationName: string): string {\n // For defaultEndpoint like 'https://contoso.documents.azure.com:443/' parse it to generate URL format\n // This defaultEndpoint should be global endpoint(and cannot be a locational endpoint)\n // and we agreed to document that\n const endpointUrl = new URL(defaultEndpoint);\n\n // hostname attribute in endpointUrl will return 'contoso.documents.azure.com'\n if (endpointUrl.hostname) {\n const hostnameParts = endpointUrl.hostname.toString().toLowerCase().split(\".\");\n if (hostnameParts) {\n // globalDatabaseAccountName will return 'contoso'\n const globalDatabaseAccountName = hostnameParts[0];\n\n // Prepare the locationalDatabaseAccountName as contoso-EastUS for location_name 'East US'\n const locationalDatabaseAccountName =\n globalDatabaseAccountName + \"-\" + locationName.replace(\" \", \"\");\n\n // Replace 'contoso' with 'contoso-EastUS' and\n // return locationalEndpoint as https://contoso-EastUS.documents.azure.com:443/\n const locationalEndpoint = defaultEndpoint\n .toLowerCase()\n .replace(globalDatabaseAccountName, locationalDatabaseAccountName);\n return locationalEndpoint;\n }\n }\n\n return null;\n }\n}\n\nfunction normalizeEndpoint(endpoint: string): string {\n return endpoint.split(\" \").join(\"\").toLowerCase();\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport { Database, Databases } from \"./client/Database\";\nimport { Offer, Offers } from \"./client/Offer\";\nimport { ClientContext } from \"./ClientContext\";\nimport { parseConnectionString } from \"./common\";\nimport { Constants } from \"./common/constants\";\nimport { getUserAgent } from \"./common/platform\";\nimport type { CosmosClientOptions } from \"./CosmosClientOptions\";\nimport type { ClientConfigDiagnostic } from \"./CosmosDiagnostics\";\nimport { determineDiagnosticLevel, getDiagnosticLevelFromEnvironment } from \"./diagnostics\";\nimport type { DiagnosticNodeInternal } from \"./diagnostics/DiagnosticNodeInternal\";\nimport { DiagnosticNodeType } from \"./diagnostics/DiagnosticNodeInternal\";\nimport type { DatabaseAccount } from \"./documents\";\nimport { defaultConnectionPolicy } from \"./documents\";\nimport { GlobalEndpointManager } from \"./globalEndpointManager\";\nimport type { RequestOptions } from \"./request\";\nimport { ResourceResponse } from \"./request\";\nimport { checkURL } from \"./utils/checkURL\";\nimport { getEmptyCosmosDiagnostics, withDiagnostics } from \"./utils/diagnostics\";\n\n/**\n * Provides a client-side logical representation of the Azure Cosmos DB database account.\n * This client is used to configure and execute requests in the Azure Cosmos DB database service.\n * @example Instantiate a client and create a new database\n * ```typescript\n * const client = new CosmosClient({endpoint: \"\", key: \"\"});\n * await client.databases.create({id: \"\"});\n * ```\n * @example Instantiate a client with custom Connection Policy\n * ```typescript\n * const client = new CosmosClient({\n * endpoint: \"\",\n * key: \"\",\n * connectionPolicy: {\n * requestTimeout: 10000,\n * },\n * });\n * ```\n */\nexport class CosmosClient {\n /**\n * Used for creating new databases, or querying/reading all databases.\n *\n * Use `.database(id)` to read, replace, or delete a specific, existing database by id.\n *\n * @example Create a new database\n * ```typescript\n * const {resource: databaseDefinition, database} = await client.databases.create({id: \"\"});\n * ```\n */\n public readonly databases: Databases;\n /**\n * Used for querying & reading all offers.\n *\n * Use `.offer(id)` to read, or replace existing offers.\n */\n public readonly offers: Offers;\n private clientContext: ClientContext;\n private endpointRefresher: NodeJS.Timeout;\n /**\n * Creates a new {@link CosmosClient} object from a connection string. Your database connection string can be found in the Azure Portal\n */\n constructor(connectionString: string);\n /**\n * Creates a new {@link CosmosClient} object. See {@link CosmosClientOptions} for more details on what options you can use.\n * @param options - bag of options; require at least endpoint and auth to be configured\n */\n constructor(options: CosmosClientOptions);\n constructor(optionsOrConnectionString: string | CosmosClientOptions) {\n if (typeof optionsOrConnectionString === \"string\") {\n optionsOrConnectionString = parseConnectionString(optionsOrConnectionString);\n }\n\n const endpoint = checkURL(optionsOrConnectionString.endpoint);\n if (!endpoint) {\n throw new Error(\"Invalid endpoint specified\");\n }\n\n const clientConfig: ClientConfigDiagnostic =\n this.initializeClientConfigDiagnostic(optionsOrConnectionString);\n\n optionsOrConnectionString.connectionPolicy = Object.assign(\n {},\n defaultConnectionPolicy,\n optionsOrConnectionString.connectionPolicy,\n );\n\n optionsOrConnectionString.defaultHeaders = optionsOrConnectionString.defaultHeaders || {};\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.CacheControl] = \"no-cache\";\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.Version] =\n Constants.CurrentVersion;\n if (optionsOrConnectionString.consistencyLevel !== undefined) {\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.ConsistencyLevel] =\n optionsOrConnectionString.consistencyLevel;\n }\n\n optionsOrConnectionString.defaultHeaders[Constants.HttpHeaders.UserAgent] = getUserAgent(\n optionsOrConnectionString.userAgentSuffix,\n );\n\n const globalEndpointManager = new GlobalEndpointManager(\n optionsOrConnectionString,\n async (diagnosticNode: DiagnosticNodeInternal, opts: RequestOptions) =>\n this.getDatabaseAccountInternal(diagnosticNode, opts),\n );\n\n this.clientContext = new ClientContext(\n optionsOrConnectionString,\n globalEndpointManager,\n clientConfig,\n determineDiagnosticLevel(\n optionsOrConnectionString.diagnosticLevel,\n getDiagnosticLevelFromEnvironment(),\n ),\n );\n if (\n optionsOrConnectionString.connectionPolicy?.enableEndpointDiscovery &&\n optionsOrConnectionString.connectionPolicy?.enableBackgroundEndpointRefreshing\n ) {\n this.backgroundRefreshEndpointList(\n globalEndpointManager,\n optionsOrConnectionString.connectionPolicy.endpointRefreshRateInMs ||\n defaultConnectionPolicy.endpointRefreshRateInMs,\n );\n }\n\n this.databases = new Databases(this, this.clientContext);\n this.offers = new Offers(this, this.clientContext);\n }\n\n private initializeClientConfigDiagnostic(\n optionsOrConnectionString: CosmosClientOptions,\n ): ClientConfigDiagnostic {\n return {\n endpoint: optionsOrConnectionString.endpoint,\n resourceTokensConfigured: optionsOrConnectionString.resourceTokens !== undefined,\n tokenProviderConfigured: optionsOrConnectionString.tokenProvider !== undefined,\n aadCredentialsConfigured: optionsOrConnectionString.aadCredentials !== undefined,\n connectionPolicyConfigured: optionsOrConnectionString.connectionPolicy !== undefined,\n consistencyLevel: optionsOrConnectionString.consistencyLevel,\n defaultHeaders: optionsOrConnectionString.defaultHeaders,\n agentConfigured: optionsOrConnectionString.agent !== undefined,\n userAgentSuffix: optionsOrConnectionString.userAgentSuffix,\n diagnosticLevel: optionsOrConnectionString.diagnosticLevel,\n pluginsConfigured: optionsOrConnectionString.plugins !== undefined,\n sDKVersion: Constants.SDKVersion,\n };\n }\n\n /**\n * Get information about the current {@link DatabaseAccount} (including which regions are supported, etc.)\n */\n public async getDatabaseAccount(\n options?: RequestOptions,\n ): Promise> {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.getDatabaseAccountInternal(diagnosticNode, options);\n }, this.clientContext);\n }\n\n /**\n * @hidden\n */\n public async getDatabaseAccountInternal(\n diagnosticNode: DiagnosticNodeInternal,\n options?: RequestOptions,\n ): Promise> {\n const response = await this.clientContext.getDatabaseAccount(diagnosticNode, options);\n return new ResourceResponse(\n response.result,\n response.headers,\n response.code,\n getEmptyCosmosDiagnostics(),\n response.substatus,\n );\n }\n\n /**\n * Gets the currently used write endpoint url. Useful for troubleshooting purposes.\n *\n * The url may contain a region suffix (e.g. \"-eastus\") if we're using location specific endpoints.\n */\n public async getWriteEndpoint(): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.clientContext.getWriteEndpoint(diagnosticNode);\n }, this.clientContext);\n }\n\n /**\n * Gets the currently used read endpoint. Useful for troubleshooting purposes.\n *\n * The url may contain a region suffix (e.g. \"-eastus\") if we're using location specific endpoints.\n */\n public async getReadEndpoint(): Promise {\n return withDiagnostics(async (diagnosticNode: DiagnosticNodeInternal) => {\n return this.clientContext.getReadEndpoint(diagnosticNode);\n }, this.clientContext);\n }\n\n /**\n * Gets the known write endpoints. Useful for troubleshooting purposes.\n *\n * The urls may contain a region suffix (e.g. \"-eastus\") if we're using location specific endpoints.\n */\n public getWriteEndpoints(): Promise {\n return this.clientContext.getWriteEndpoints();\n }\n\n /**\n * Gets the currently used read endpoint. Useful for troubleshooting purposes.\n *\n * The url may contain a region suffix (e.g. \"-eastus\") if we're using location specific endpoints.\n */\n public getReadEndpoints(): Promise {\n return this.clientContext.getReadEndpoints();\n }\n\n /**\n * Used for reading, updating, or deleting a existing database by id or accessing containers belonging to that database.\n *\n * This does not make a network call. Use `.read` to get info about the database after getting the {@link Database} object.\n *\n * @param id - The id of the database.\n * @example Create a new container off of an existing database\n * ```typescript\n * const container = client.database(\"\").containers.create(\"\");\n * ```\n *\n * @example Delete an existing database\n * ```typescript\n * await client.database(\"\").delete();\n * ```\n */\n public database(id: string): Database {\n return new Database(this, id, this.clientContext);\n }\n\n /**\n * Used for reading, or updating a existing offer by id.\n * @param id - The id of the offer.\n */\n public offer(id: string): Offer {\n return new Offer(this, id, this.clientContext);\n }\n\n /**\n * Clears background endpoint refresher. Use client.dispose() when destroying the CosmosClient within another process.\n */\n public dispose(): void {\n clearTimeout(this.endpointRefresher);\n }\n\n private async backgroundRefreshEndpointList(\n globalEndpointManager: GlobalEndpointManager,\n refreshRate: number,\n ) {\n this.endpointRefresher = setInterval(() => {\n try {\n return withDiagnostics(\n async (diagnosticNode: DiagnosticNodeInternal) => {\n return globalEndpointManager.refreshEndpointList(diagnosticNode);\n },\n this.clientContext,\n DiagnosticNodeType.BACKGROUND_REFRESH_THREAD,\n );\n } catch (e: any) {\n console.warn(\"Failed to refresh endpoints\", e);\n }\n }, refreshRate);\n if (this.endpointRefresher.unref && typeof this.endpointRefresher.unref === \"function\") {\n this.endpointRefresher.unref();\n }\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nexport enum ConflictResolutionMode {\n Custom = \"Custom\",\n LastWriterWins = \"LastWriterWins\",\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { CosmosContainerChildResourceKind } from \"../../common/constants\";\nimport type { CosmosKeyType } from \"../../common/constants\";\n\nexport class SasTokenProperties {\n user: string;\n userTag: string;\n databaseName: string;\n containerName: string;\n resourceName: string;\n resourcePath: string;\n resourceKind: CosmosContainerChildResourceKind;\n partitionKeyValueRanges: string[];\n startTime: Date;\n expiryTime: Date;\n keyType: CosmosKeyType | number;\n controlPlaneReaderScope: number;\n controlPlaneWriterScope: number;\n dataPlaneReaderScope: number;\n dataPlaneWriterScope: number;\n cosmosContainerChildResourceKind: CosmosContainerChildResourceKind;\n cosmosKeyType: CosmosKeyType;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\nimport type { ChangeFeedRetentionTimeSpan } from \"./ChangeFeedRetentionTimeSpan\";\n/**\n * Represents the change feed policy configuration for a container in the Azure Cosmos DB service.\n */\nexport class ChangeFeedPolicy {\n public retentionDuration: number;\n\n constructor(retentionDuration: ChangeFeedRetentionTimeSpan) {\n this.retentionDuration = retentionDuration.getRetentionInMinutes();\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { ErrorResponse } from \"../../request\";\n\n/*\n * Represents the change feed policy configuration for a container in the Azure Cosmos DB service.\n */\nexport class ChangeFeedRetentionTimeSpan {\n private retentionInMinutes: number;\n /**\n * @internal\n */\n constructor(minutes: number) {\n if (typeof minutes !== \"number\") {\n throw new ErrorResponse(\"ChangeFeedRetentionTimeSpan must be a number.\");\n }\n if (minutes < 0) {\n throw new ErrorResponse(\"ChangeFeedRetentionTimeSpan must be a positive number.\");\n }\n if (minutes % 1 !== 0) {\n throw new ErrorResponse(\"Retention's granularity is minutes.\");\n }\n this.retentionInMinutes = minutes;\n }\n /**\n * Specifies the retention window in minutes for which processing the change feed with allVersionsAndDeletes mode will be available.\n */\n static fromMinutes(minutes: number): ChangeFeedRetentionTimeSpan {\n return new ChangeFeedRetentionTimeSpan(minutes);\n }\n /**\n * @internal\n */\n public getRetentionInMinutes(): number {\n return this.retentionInMinutes;\n }\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom-client.production.js');\n} else {\n module.exports = require('./cjs/react-dom-client.development.js');\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","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Constants } from \"./constants\";\n\n/**\n * @hidden\n */\nexport function getUserAgent(suffix?: string): string {\n const ua = `${userAgentDetails()} ${Constants.SDKName}/${Constants.SDKVersion}`;\n if (suffix) {\n return ua + \" \" + suffix;\n }\n return ua;\n}\n\n// TODO: Standardize across other platforms from @azure/core-util\nfunction userAgentDetails(): string {\n if (globalThis.navigator && globalThis.navigator.userAgent) {\n return globalThis.navigator.userAgent;\n }\n\n if (globalThis.process && globalThis.process.version) {\n return `Node.js/${process.version.slice(1)} (${process.platform}; ${process.arch})`;\n }\n\n return \"\";\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { doubleToByteArrayJSBI, writeNumberForBinaryEncodingJSBI } from \"./encoding/number\";\nimport { writeStringForBinaryEncoding } from \"./encoding/string\";\nimport { BytePrefix } from \"./encoding/prefix\";\nimport MurmurHash from \"./murmurHash\";\nimport type { PrimitivePartitionKeyValue } from \"../../documents\";\n\nconst MAX_STRING_CHARS = 100;\n\nexport function hashV1PartitionKey(partitionKey: PrimitivePartitionKeyValue[]): string {\n const key = partitionKey[0];\n const toHash = prefixKeyByType(key);\n const hash = MurmurHash.x86.hash32(toHash);\n const encodedJSBI = writeNumberForBinaryEncodingJSBI(hash);\n const encodedValue = encodeByType(key);\n const finalHash = Buffer.concat([encodedJSBI, encodedValue]).toString(\"hex\").toUpperCase();\n return finalHash;\n}\n\nfunction prefixKeyByType(key: PrimitivePartitionKeyValue): Buffer {\n let bytes: Buffer;\n switch (typeof key) {\n case \"string\": {\n const truncated = key.substr(0, MAX_STRING_CHARS);\n bytes = Buffer.concat([\n Buffer.from(BytePrefix.String, \"hex\"),\n Buffer.from(truncated),\n Buffer.from(BytePrefix.Undefined, \"hex\"),\n ]);\n return bytes;\n }\n case \"number\": {\n const numberBytes = doubleToByteArrayJSBI(key);\n bytes = Buffer.concat([Buffer.from(BytePrefix.Number, \"hex\"), numberBytes]);\n return bytes;\n }\n case \"boolean\": {\n const prefix = key ? BytePrefix.True : BytePrefix.False;\n return Buffer.from(prefix, \"hex\");\n }\n case \"object\": {\n if (key === null) {\n return Buffer.from(BytePrefix.Null, \"hex\");\n }\n return Buffer.from(BytePrefix.Undefined, \"hex\");\n }\n case \"undefined\": {\n return Buffer.from(BytePrefix.Undefined, \"hex\");\n }\n default:\n throw new Error(`Unexpected type: ${typeof key}`);\n }\n}\n\nfunction encodeByType(key: PrimitivePartitionKeyValue): Buffer {\n switch (typeof key) {\n case \"string\": {\n const truncated = key.substr(0, MAX_STRING_CHARS);\n return writeStringForBinaryEncoding(truncated);\n }\n case \"number\": {\n const encodedJSBI = writeNumberForBinaryEncodingJSBI(key);\n return encodedJSBI;\n }\n case \"boolean\": {\n const prefix = key ? BytePrefix.True : BytePrefix.False;\n return Buffer.from(prefix, \"hex\");\n }\n case \"object\":\n if (key === null) {\n return Buffer.from(BytePrefix.Null, \"hex\");\n }\n return Buffer.from(BytePrefix.Undefined, \"hex\");\n case \"undefined\":\n return Buffer.from(BytePrefix.Undefined, \"hex\");\n default:\n throw new Error(`Unexpected type: ${typeof key}`);\n }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { BytePrefix } from \"./prefix\";\n\nexport function writeStringForBinaryEncoding(payload: string): Buffer {\n let outputStream = Buffer.from(BytePrefix.String, \"hex\");\n const MAX_STRING_BYTES_TO_APPEND = 100;\n const byteArray = [...Buffer.from(payload)];\n\n const isShortString = payload.length <= MAX_STRING_BYTES_TO_APPEND;\n\n for (\n let index = 0;\n index < (isShortString ? byteArray.length : MAX_STRING_BYTES_TO_APPEND + 1);\n index++\n ) {\n let charByte = byteArray[index];\n if (charByte < 0xff) {\n charByte++;\n }\n outputStream = Buffer.concat([outputStream, Buffer.from(charByte.toString(16), \"hex\")]);\n }\n\n if (isShortString) {\n outputStream = Buffer.concat([outputStream, Buffer.from(BytePrefix.Undefined, \"hex\")]);\n }\n return outputStream;\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nexport function log(...args: any[]): void {\n if (args.length > 0) {\n const firstArg = String(args[0]);\n if (firstArg.includes(\":error\")) {\n console.error(...args);\n } else if (firstArg.includes(\":warning\")) {\n console.warn(...args);\n } else if (firstArg.includes(\":info\")) {\n console.info(...args);\n } else if (firstArg.includes(\":verbose\")) {\n console.debug(...args);\n } else {\n console.debug(...args);\n }\n }\n}\n","/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n assign = Object.assign,\n emptyObject = {};\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray,\n ReactSharedInternals = { H: null, A: null, T: null, S: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, self, source, owner, props) {\n self = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== self ? self : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(\n oldElement.type,\n newKey,\n void 0,\n void 0,\n void 0,\n oldElement.props\n );\n}\nfunction isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\nfunction escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n return \"object\" === typeof element && null !== element && null != element.key\n ? escape(\"\" + element.key)\n : index.toString(36);\n}\nfunction noop$1() {}\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop$1, noop$1)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback)\n return (\n (callback = callback(children)),\n (invokeCallback =\n \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != invokeCallback &&\n (escapedPrefix =\n invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (children && children.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n invokeCallback\n )),\n array.push(callback)),\n 1\n );\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n children = i.call(children), i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\nfunction lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n };\nfunction noop() {}\nexports.Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n};\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.act = function () {\n throw Error(\"act(...) is not supported in production builds of React.\");\n};\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key,\n owner = void 0;\n if (null != config)\n for (propName in (void 0 !== config.ref && (owner = void 0),\n void 0 !== config.key && (key = \"\" + config.key),\n config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, void 0, void 0, owner, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, void 0, void 0, null, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n ReactSharedInternals.T = prevTransition;\n }\n};\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.0.0\";\n","/**\n * @license React\n * react-dom-client.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n\"use strict\";\nvar Scheduler = require(\"scheduler\"),\n React = require(\"react\"),\n ReactDOM = require(\"react-dom\");\nfunction formatProdErrorMessage(code) {\n var url = \"https://react.dev/errors/\" + code;\n if (1 < arguments.length) {\n url += \"?args[]=\" + encodeURIComponent(arguments[1]);\n for (var i = 2; i < arguments.length; i++)\n url += \"&args[]=\" + encodeURIComponent(arguments[i]);\n }\n return (\n \"Minified React error #\" +\n code +\n \"; visit \" +\n url +\n \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"\n );\n}\nfunction isValidContainer(node) {\n return !(\n !node ||\n (1 !== node.nodeType && 9 !== node.nodeType && 11 !== node.nodeType)\n );\n}\nvar REACT_LEGACY_ELEMENT_TYPE = Symbol.for(\"react.element\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nSymbol.for(\"react.scope\");\nSymbol.for(\"react.debug_trace_mode\");\nvar REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\");\nSymbol.for(\"react.legacy_hidden\");\nSymbol.for(\"react.tracing_marker\");\nvar REACT_MEMO_CACHE_SENTINEL = Symbol.for(\"react.memo_cache_sentinel\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n }\n if (\"object\" === typeof type)\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n return (type.displayName || \"Context\") + \".Provider\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n}\nvar ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n assign = Object.assign,\n prefix,\n suffix;\nfunction describeBuiltInComponentFrame(name) {\n if (void 0 === prefix)\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = (match && match[1]) || \"\";\n suffix =\n -1 < x.stack.indexOf(\"\\n at\")\n ? \" ()\"\n : -1 < x.stack.indexOf(\"@\")\n ? \"@unknown:0:0\"\n : \"\";\n }\n return \"\\n\" + prefix + name + suffix;\n}\nvar reentry = !1;\nfunction describeNativeComponentFrame(fn, construct) {\n if (!fn || reentry) return \"\";\n reentry = !0;\n var previousPrepareStackTrace = Error.prepareStackTrace;\n Error.prepareStackTrace = void 0;\n try {\n var RunInRootFrame = {\n DetermineComponentFrameRoot: function () {\n try {\n if (construct) {\n var Fake = function () {\n throw Error();\n };\n Object.defineProperty(Fake.prototype, \"props\", {\n set: function () {\n throw Error();\n }\n });\n if (\"object\" === typeof Reflect && Reflect.construct) {\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n var control = x;\n }\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x$0) {\n control = x$0;\n }\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x$1) {\n control = x$1;\n }\n (Fake = fn()) &&\n \"function\" === typeof Fake.catch &&\n Fake.catch(function () {});\n }\n } catch (sample) {\n if (sample && control && \"string\" === typeof sample.stack)\n return [sample.stack, control.stack];\n }\n return [null, null];\n }\n };\n RunInRootFrame.DetermineComponentFrameRoot.displayName =\n \"DetermineComponentFrameRoot\";\n var namePropDescriptor = Object.getOwnPropertyDescriptor(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\"\n );\n namePropDescriptor &&\n namePropDescriptor.configurable &&\n Object.defineProperty(\n RunInRootFrame.DetermineComponentFrameRoot,\n \"name\",\n { value: \"DetermineComponentFrameRoot\" }\n );\n var _RunInRootFrame$Deter = RunInRootFrame.DetermineComponentFrameRoot(),\n sampleStack = _RunInRootFrame$Deter[0],\n controlStack = _RunInRootFrame$Deter[1];\n if (sampleStack && controlStack) {\n var sampleLines = sampleStack.split(\"\\n\"),\n controlLines = controlStack.split(\"\\n\");\n for (\n namePropDescriptor = RunInRootFrame = 0;\n RunInRootFrame < sampleLines.length &&\n !sampleLines[RunInRootFrame].includes(\"DetermineComponentFrameRoot\");\n\n )\n RunInRootFrame++;\n for (\n ;\n namePropDescriptor < controlLines.length &&\n !controlLines[namePropDescriptor].includes(\n \"DetermineComponentFrameRoot\"\n );\n\n )\n namePropDescriptor++;\n if (\n RunInRootFrame === sampleLines.length ||\n namePropDescriptor === controlLines.length\n )\n for (\n RunInRootFrame = sampleLines.length - 1,\n namePropDescriptor = controlLines.length - 1;\n 1 <= RunInRootFrame &&\n 0 <= namePropDescriptor &&\n sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor];\n\n )\n namePropDescriptor--;\n for (\n ;\n 1 <= RunInRootFrame && 0 <= namePropDescriptor;\n RunInRootFrame--, namePropDescriptor--\n )\n if (sampleLines[RunInRootFrame] !== controlLines[namePropDescriptor]) {\n if (1 !== RunInRootFrame || 1 !== namePropDescriptor) {\n do\n if (\n (RunInRootFrame--,\n namePropDescriptor--,\n 0 > namePropDescriptor ||\n sampleLines[RunInRootFrame] !==\n controlLines[namePropDescriptor])\n ) {\n var frame =\n \"\\n\" +\n sampleLines[RunInRootFrame].replace(\" at new \", \" at \");\n fn.displayName &&\n frame.includes(\"\") &&\n (frame = frame.replace(\"\", fn.displayName));\n return frame;\n }\n while (1 <= RunInRootFrame && 0 <= namePropDescriptor);\n }\n break;\n }\n }\n } finally {\n (reentry = !1), (Error.prepareStackTrace = previousPrepareStackTrace);\n }\n return (previousPrepareStackTrace = fn ? fn.displayName || fn.name : \"\")\n ? describeBuiltInComponentFrame(previousPrepareStackTrace)\n : \"\";\n}\nfunction describeFiber(fiber) {\n switch (fiber.tag) {\n case 26:\n case 27:\n case 5:\n return describeBuiltInComponentFrame(fiber.type);\n case 16:\n return describeBuiltInComponentFrame(\"Lazy\");\n case 13:\n return describeBuiltInComponentFrame(\"Suspense\");\n case 19:\n return describeBuiltInComponentFrame(\"SuspenseList\");\n case 0:\n case 15:\n return (fiber = describeNativeComponentFrame(fiber.type, !1)), fiber;\n case 11:\n return (\n (fiber = describeNativeComponentFrame(fiber.type.render, !1)), fiber\n );\n case 1:\n return (fiber = describeNativeComponentFrame(fiber.type, !0)), fiber;\n default:\n return \"\";\n }\n}\nfunction getStackByFiberInDevAndProd(workInProgress) {\n try {\n var info = \"\";\n do\n (info += describeFiber(workInProgress)),\n (workInProgress = workInProgress.return);\n while (workInProgress);\n return info;\n } catch (x) {\n return \"\\nError generating stack: \" + x.message + \"\\n\" + x.stack;\n }\n}\nfunction getNearestMountedFiber(fiber) {\n var node = fiber,\n nearestMounted = fiber;\n if (fiber.alternate) for (; node.return; ) node = node.return;\n else {\n fiber = node;\n do\n (node = fiber),\n 0 !== (node.flags & 4098) && (nearestMounted = node.return),\n (fiber = node.return);\n while (fiber);\n }\n return 3 === node.tag ? nearestMounted : null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n if (13 === fiber.tag) {\n var suspenseState = fiber.memoizedState;\n null === suspenseState &&\n ((fiber = fiber.alternate),\n null !== fiber && (suspenseState = fiber.memoizedState));\n if (null !== suspenseState) return suspenseState.dehydrated;\n }\n return null;\n}\nfunction assertIsMounted(fiber) {\n if (getNearestMountedFiber(fiber) !== fiber)\n throw Error(formatProdErrorMessage(188));\n}\nfunction findCurrentFiberUsingSlowPath(fiber) {\n var alternate = fiber.alternate;\n if (!alternate) {\n alternate = getNearestMountedFiber(fiber);\n if (null === alternate) throw Error(formatProdErrorMessage(188));\n return alternate !== fiber ? null : fiber;\n }\n for (var a = fiber, b = alternate; ; ) {\n var parentA = a.return;\n if (null === parentA) break;\n var parentB = parentA.alternate;\n if (null === parentB) {\n b = parentA.return;\n if (null !== b) {\n a = b;\n continue;\n }\n break;\n }\n if (parentA.child === parentB.child) {\n for (parentB = parentA.child; parentB; ) {\n if (parentB === a) return assertIsMounted(parentA), fiber;\n if (parentB === b) return assertIsMounted(parentA), alternate;\n parentB = parentB.sibling;\n }\n throw Error(formatProdErrorMessage(188));\n }\n if (a.return !== b.return) (a = parentA), (b = parentB);\n else {\n for (var didFindChild = !1, child$2 = parentA.child; child$2; ) {\n if (child$2 === a) {\n didFindChild = !0;\n a = parentA;\n b = parentB;\n break;\n }\n if (child$2 === b) {\n didFindChild = !0;\n b = parentA;\n a = parentB;\n break;\n }\n child$2 = child$2.sibling;\n }\n if (!didFindChild) {\n for (child$2 = parentB.child; child$2; ) {\n if (child$2 === a) {\n didFindChild = !0;\n a = parentB;\n b = parentA;\n break;\n }\n if (child$2 === b) {\n didFindChild = !0;\n b = parentB;\n a = parentA;\n break;\n }\n child$2 = child$2.sibling;\n }\n if (!didFindChild) throw Error(formatProdErrorMessage(189));\n }\n }\n if (a.alternate !== b) throw Error(formatProdErrorMessage(190));\n }\n if (3 !== a.tag) throw Error(formatProdErrorMessage(188));\n return a.stateNode.current === a ? fiber : alternate;\n}\nfunction findCurrentHostFiberImpl(node) {\n var tag = node.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return node;\n for (node = node.child; null !== node; ) {\n tag = findCurrentHostFiberImpl(node);\n if (null !== tag) return tag;\n node = node.sibling;\n }\n return null;\n}\nvar isArrayImpl = Array.isArray,\n ReactDOMSharedInternals =\n ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n sharedNotPendingObject = {\n pending: !1,\n data: null,\n method: null,\n action: null\n },\n valueStack = [],\n index = -1;\nfunction createCursor(defaultValue) {\n return { current: defaultValue };\n}\nfunction pop(cursor) {\n 0 > index ||\n ((cursor.current = valueStack[index]), (valueStack[index] = null), index--);\n}\nfunction push(cursor, value) {\n index++;\n valueStack[index] = cursor.current;\n cursor.current = value;\n}\nvar contextStackCursor = createCursor(null),\n contextFiberStackCursor = createCursor(null),\n rootInstanceStackCursor = createCursor(null),\n hostTransitionProviderCursor = createCursor(null);\nfunction pushHostContainer(fiber, nextRootInstance) {\n push(rootInstanceStackCursor, nextRootInstance);\n push(contextFiberStackCursor, fiber);\n push(contextStackCursor, null);\n fiber = nextRootInstance.nodeType;\n switch (fiber) {\n case 9:\n case 11:\n nextRootInstance = (nextRootInstance = nextRootInstance.documentElement)\n ? (nextRootInstance = nextRootInstance.namespaceURI)\n ? getOwnHostContext(nextRootInstance)\n : 0\n : 0;\n break;\n default:\n if (\n ((fiber = 8 === fiber ? nextRootInstance.parentNode : nextRootInstance),\n (nextRootInstance = fiber.tagName),\n (fiber = fiber.namespaceURI))\n )\n (fiber = getOwnHostContext(fiber)),\n (nextRootInstance = getChildHostContextProd(fiber, nextRootInstance));\n else\n switch (nextRootInstance) {\n case \"svg\":\n nextRootInstance = 1;\n break;\n case \"math\":\n nextRootInstance = 2;\n break;\n default:\n nextRootInstance = 0;\n }\n }\n pop(contextStackCursor);\n push(contextStackCursor, nextRootInstance);\n}\nfunction popHostContainer() {\n pop(contextStackCursor);\n pop(contextFiberStackCursor);\n pop(rootInstanceStackCursor);\n}\nfunction pushHostContext(fiber) {\n null !== fiber.memoizedState && push(hostTransitionProviderCursor, fiber);\n var context = contextStackCursor.current;\n var JSCompiler_inline_result = getChildHostContextProd(context, fiber.type);\n context !== JSCompiler_inline_result &&\n (push(contextFiberStackCursor, fiber),\n push(contextStackCursor, JSCompiler_inline_result));\n}\nfunction popHostContext(fiber) {\n contextFiberStackCursor.current === fiber &&\n (pop(contextStackCursor), pop(contextFiberStackCursor));\n hostTransitionProviderCursor.current === fiber &&\n (pop(hostTransitionProviderCursor),\n (HostTransitionContext._currentValue = sharedNotPendingObject));\n}\nvar hasOwnProperty = Object.prototype.hasOwnProperty,\n scheduleCallback$3 = Scheduler.unstable_scheduleCallback,\n cancelCallback$1 = Scheduler.unstable_cancelCallback,\n shouldYield = Scheduler.unstable_shouldYield,\n requestPaint = Scheduler.unstable_requestPaint,\n now = Scheduler.unstable_now,\n getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,\n ImmediatePriority = Scheduler.unstable_ImmediatePriority,\n UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,\n NormalPriority$1 = Scheduler.unstable_NormalPriority,\n LowPriority = Scheduler.unstable_LowPriority,\n IdlePriority = Scheduler.unstable_IdlePriority,\n log$1 = Scheduler.log,\n unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue,\n rendererID = null,\n injectedHook = null;\nfunction onCommitRoot(root) {\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberRoot)\n try {\n injectedHook.onCommitFiberRoot(\n rendererID,\n root,\n void 0,\n 128 === (root.current.flags & 128)\n );\n } catch (err) {}\n}\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n \"function\" === typeof log$1 && unstable_setDisableYieldValue(newIsStrictMode);\n if (injectedHook && \"function\" === typeof injectedHook.setStrictMode)\n try {\n injectedHook.setStrictMode(rendererID, newIsStrictMode);\n } catch (err) {}\n}\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback,\n log = Math.log,\n LN2 = Math.LN2;\nfunction clz32Fallback(x) {\n x >>>= 0;\n return 0 === x ? 32 : (31 - ((log(x) / LN2) | 0)) | 0;\n}\nvar nextTransitionLane = 128,\n nextRetryLane = 4194304;\nfunction getHighestPriorityLanes(lanes) {\n var pendingSyncLanes = lanes & 42;\n if (0 !== pendingSyncLanes) return pendingSyncLanes;\n switch (lanes & -lanes) {\n case 1:\n return 1;\n case 2:\n return 2;\n case 4:\n return 4;\n case 8:\n return 8;\n case 16:\n return 16;\n case 32:\n return 32;\n case 64:\n return 64;\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return lanes & 4194176;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return lanes & 62914560;\n case 67108864:\n return 67108864;\n case 134217728:\n return 134217728;\n case 268435456:\n return 268435456;\n case 536870912:\n return 536870912;\n case 1073741824:\n return 0;\n default:\n return lanes;\n }\n}\nfunction getNextLanes(root, wipLanes) {\n var pendingLanes = root.pendingLanes;\n if (0 === pendingLanes) return 0;\n var nextLanes = 0,\n suspendedLanes = root.suspendedLanes,\n pingedLanes = root.pingedLanes,\n warmLanes = root.warmLanes;\n root = 0 !== root.finishedLanes;\n var nonIdlePendingLanes = pendingLanes & 134217727;\n 0 !== nonIdlePendingLanes\n ? ((pendingLanes = nonIdlePendingLanes & ~suspendedLanes),\n 0 !== pendingLanes\n ? (nextLanes = getHighestPriorityLanes(pendingLanes))\n : ((pingedLanes &= nonIdlePendingLanes),\n 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : root ||\n ((warmLanes = nonIdlePendingLanes & ~warmLanes),\n 0 !== warmLanes &&\n (nextLanes = getHighestPriorityLanes(warmLanes)))))\n : ((nonIdlePendingLanes = pendingLanes & ~suspendedLanes),\n 0 !== nonIdlePendingLanes\n ? (nextLanes = getHighestPriorityLanes(nonIdlePendingLanes))\n : 0 !== pingedLanes\n ? (nextLanes = getHighestPriorityLanes(pingedLanes))\n : root ||\n ((warmLanes = pendingLanes & ~warmLanes),\n 0 !== warmLanes &&\n (nextLanes = getHighestPriorityLanes(warmLanes))));\n return 0 === nextLanes\n ? 0\n : 0 !== wipLanes &&\n wipLanes !== nextLanes &&\n 0 === (wipLanes & suspendedLanes) &&\n ((suspendedLanes = nextLanes & -nextLanes),\n (warmLanes = wipLanes & -wipLanes),\n suspendedLanes >= warmLanes ||\n (32 === suspendedLanes && 0 !== (warmLanes & 4194176)))\n ? wipLanes\n : nextLanes;\n}\nfunction checkIfRootIsPrerendering(root, renderLanes) {\n return (\n 0 ===\n (root.pendingLanes &\n ~(root.suspendedLanes & ~root.pingedLanes) &\n renderLanes)\n );\n}\nfunction computeExpirationTime(lane, currentTime) {\n switch (lane) {\n case 1:\n case 2:\n case 4:\n case 8:\n return currentTime + 250;\n case 16:\n case 32:\n case 64:\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n return currentTime + 5e3;\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n return -1;\n case 67108864:\n case 134217728:\n case 268435456:\n case 536870912:\n case 1073741824:\n return -1;\n default:\n return -1;\n }\n}\nfunction claimNextTransitionLane() {\n var lane = nextTransitionLane;\n nextTransitionLane <<= 1;\n 0 === (nextTransitionLane & 4194176) && (nextTransitionLane = 128);\n return lane;\n}\nfunction claimNextRetryLane() {\n var lane = nextRetryLane;\n nextRetryLane <<= 1;\n 0 === (nextRetryLane & 62914560) && (nextRetryLane = 4194304);\n return lane;\n}\nfunction createLaneMap(initial) {\n for (var laneMap = [], i = 0; 31 > i; i++) laneMap.push(initial);\n return laneMap;\n}\nfunction markRootUpdated$1(root, updateLane) {\n root.pendingLanes |= updateLane;\n 268435456 !== updateLane &&\n ((root.suspendedLanes = 0), (root.pingedLanes = 0), (root.warmLanes = 0));\n}\nfunction markRootFinished(\n root,\n finishedLanes,\n remainingLanes,\n spawnedLane,\n updatedLanes,\n suspendedRetryLanes\n) {\n var previouslyPendingLanes = root.pendingLanes;\n root.pendingLanes = remainingLanes;\n root.suspendedLanes = 0;\n root.pingedLanes = 0;\n root.warmLanes = 0;\n root.expiredLanes &= remainingLanes;\n root.entangledLanes &= remainingLanes;\n root.errorRecoveryDisabledLanes &= remainingLanes;\n root.shellSuspendCounter = 0;\n var entanglements = root.entanglements,\n expirationTimes = root.expirationTimes,\n hiddenUpdates = root.hiddenUpdates;\n for (\n remainingLanes = previouslyPendingLanes & ~remainingLanes;\n 0 < remainingLanes;\n\n ) {\n var index$7 = 31 - clz32(remainingLanes),\n lane = 1 << index$7;\n entanglements[index$7] = 0;\n expirationTimes[index$7] = -1;\n var hiddenUpdatesForLane = hiddenUpdates[index$7];\n if (null !== hiddenUpdatesForLane)\n for (\n hiddenUpdates[index$7] = null, index$7 = 0;\n index$7 < hiddenUpdatesForLane.length;\n index$7++\n ) {\n var update = hiddenUpdatesForLane[index$7];\n null !== update && (update.lane &= -536870913);\n }\n remainingLanes &= ~lane;\n }\n 0 !== spawnedLane && markSpawnedDeferredLane(root, spawnedLane, 0);\n 0 !== suspendedRetryLanes &&\n 0 === updatedLanes &&\n 0 !== root.tag &&\n (root.suspendedLanes |=\n suspendedRetryLanes & ~(previouslyPendingLanes & ~finishedLanes));\n}\nfunction markSpawnedDeferredLane(root, spawnedLane, entangledLanes) {\n root.pendingLanes |= spawnedLane;\n root.suspendedLanes &= ~spawnedLane;\n var spawnedLaneIndex = 31 - clz32(spawnedLane);\n root.entangledLanes |= spawnedLane;\n root.entanglements[spawnedLaneIndex] =\n root.entanglements[spawnedLaneIndex] |\n 1073741824 |\n (entangledLanes & 4194218);\n}\nfunction markRootEntangled(root, entangledLanes) {\n var rootEntangledLanes = (root.entangledLanes |= entangledLanes);\n for (root = root.entanglements; rootEntangledLanes; ) {\n var index$8 = 31 - clz32(rootEntangledLanes),\n lane = 1 << index$8;\n (lane & entangledLanes) | (root[index$8] & entangledLanes) &&\n (root[index$8] |= entangledLanes);\n rootEntangledLanes &= ~lane;\n }\n}\nfunction lanesToEventPriority(lanes) {\n lanes &= -lanes;\n return 2 < lanes\n ? 8 < lanes\n ? 0 !== (lanes & 134217727)\n ? 32\n : 268435456\n : 8\n : 2;\n}\nfunction resolveUpdatePriority() {\n var updatePriority = ReactDOMSharedInternals.p;\n if (0 !== updatePriority) return updatePriority;\n updatePriority = window.event;\n return void 0 === updatePriority ? 32 : getEventPriority(updatePriority.type);\n}\nfunction runWithPriority(priority, fn) {\n var previousPriority = ReactDOMSharedInternals.p;\n try {\n return (ReactDOMSharedInternals.p = priority), fn();\n } finally {\n ReactDOMSharedInternals.p = previousPriority;\n }\n}\nvar randomKey = Math.random().toString(36).slice(2),\n internalInstanceKey = \"__reactFiber$\" + randomKey,\n internalPropsKey = \"__reactProps$\" + randomKey,\n internalContainerInstanceKey = \"__reactContainer$\" + randomKey,\n internalEventHandlersKey = \"__reactEvents$\" + randomKey,\n internalEventHandlerListenersKey = \"__reactListeners$\" + randomKey,\n internalEventHandlesSetKey = \"__reactHandles$\" + randomKey,\n internalRootNodeResourcesKey = \"__reactResources$\" + randomKey,\n internalHoistableMarker = \"__reactMarker$\" + randomKey;\nfunction detachDeletedInstance(node) {\n delete node[internalInstanceKey];\n delete node[internalPropsKey];\n delete node[internalEventHandlersKey];\n delete node[internalEventHandlerListenersKey];\n delete node[internalEventHandlesSetKey];\n}\nfunction getClosestInstanceFromNode(targetNode) {\n var targetInst = targetNode[internalInstanceKey];\n if (targetInst) return targetInst;\n for (var parentNode = targetNode.parentNode; parentNode; ) {\n if (\n (targetInst =\n parentNode[internalContainerInstanceKey] ||\n parentNode[internalInstanceKey])\n ) {\n parentNode = targetInst.alternate;\n if (\n null !== targetInst.child ||\n (null !== parentNode && null !== parentNode.child)\n )\n for (\n targetNode = getParentSuspenseInstance(targetNode);\n null !== targetNode;\n\n ) {\n if ((parentNode = targetNode[internalInstanceKey])) return parentNode;\n targetNode = getParentSuspenseInstance(targetNode);\n }\n return targetInst;\n }\n targetNode = parentNode;\n parentNode = targetNode.parentNode;\n }\n return null;\n}\nfunction getInstanceFromNode(node) {\n if (\n (node = node[internalInstanceKey] || node[internalContainerInstanceKey])\n ) {\n var tag = node.tag;\n if (\n 5 === tag ||\n 6 === tag ||\n 13 === tag ||\n 26 === tag ||\n 27 === tag ||\n 3 === tag\n )\n return node;\n }\n return null;\n}\nfunction getNodeFromInstance(inst) {\n var tag = inst.tag;\n if (5 === tag || 26 === tag || 27 === tag || 6 === tag) return inst.stateNode;\n throw Error(formatProdErrorMessage(33));\n}\nfunction getResourcesFromRoot(root) {\n var resources = root[internalRootNodeResourcesKey];\n resources ||\n (resources = root[internalRootNodeResourcesKey] =\n { hoistableStyles: new Map(), hoistableScripts: new Map() });\n return resources;\n}\nfunction markNodeAsHoistable(node) {\n node[internalHoistableMarker] = !0;\n}\nvar allNativeEvents = new Set(),\n registrationNameDependencies = {};\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n registerDirectEvent(registrationName, dependencies);\n registerDirectEvent(registrationName + \"Capture\", dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n registrationNameDependencies[registrationName] = dependencies;\n for (\n registrationName = 0;\n registrationName < dependencies.length;\n registrationName++\n )\n allNativeEvents.add(dependencies[registrationName]);\n}\nvar canUseDOM = !(\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ),\n VALID_ATTRIBUTE_NAME_REGEX = RegExp(\n \"^[:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD][:A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]*$\"\n ),\n illegalAttributeNameCache = {},\n validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n if (hasOwnProperty.call(validatedAttributeNameCache, attributeName))\n return !0;\n if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) return !1;\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName))\n return (validatedAttributeNameCache[attributeName] = !0);\n illegalAttributeNameCache[attributeName] = !0;\n return !1;\n}\nfunction setValueForAttribute(node, name, value) {\n if (isAttributeNameSafe(name))\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n node.removeAttribute(name);\n return;\n case \"boolean\":\n var prefix$10 = name.toLowerCase().slice(0, 5);\n if (\"data-\" !== prefix$10 && \"aria-\" !== prefix$10) {\n node.removeAttribute(name);\n return;\n }\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForKnownAttribute(node, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttribute(name, \"\" + value);\n }\n}\nfunction setValueForNamespacedAttribute(node, namespace, name, value) {\n if (null === value) node.removeAttribute(name);\n else {\n switch (typeof value) {\n case \"undefined\":\n case \"function\":\n case \"symbol\":\n case \"boolean\":\n node.removeAttribute(name);\n return;\n }\n node.setAttributeNS(namespace, name, \"\" + value);\n }\n}\nfunction getToStringValue(value) {\n switch (typeof value) {\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n case \"undefined\":\n return value;\n case \"object\":\n return value;\n default:\n return \"\";\n }\n}\nfunction isCheckable(elem) {\n var type = elem.type;\n return (\n (elem = elem.nodeName) &&\n \"input\" === elem.toLowerCase() &&\n (\"checkbox\" === type || \"radio\" === type)\n );\n}\nfunction trackValueOnNode(node) {\n var valueField = isCheckable(node) ? \"checked\" : \"value\",\n descriptor = Object.getOwnPropertyDescriptor(\n node.constructor.prototype,\n valueField\n ),\n currentValue = \"\" + node[valueField];\n if (\n !node.hasOwnProperty(valueField) &&\n \"undefined\" !== typeof descriptor &&\n \"function\" === typeof descriptor.get &&\n \"function\" === typeof descriptor.set\n ) {\n var get = descriptor.get,\n set = descriptor.set;\n Object.defineProperty(node, valueField, {\n configurable: !0,\n get: function () {\n return get.call(this);\n },\n set: function (value) {\n currentValue = \"\" + value;\n set.call(this, value);\n }\n });\n Object.defineProperty(node, valueField, {\n enumerable: descriptor.enumerable\n });\n return {\n getValue: function () {\n return currentValue;\n },\n setValue: function (value) {\n currentValue = \"\" + value;\n },\n stopTracking: function () {\n node._valueTracker = null;\n delete node[valueField];\n }\n };\n }\n}\nfunction track(node) {\n node._valueTracker || (node._valueTracker = trackValueOnNode(node));\n}\nfunction updateValueIfChanged(node) {\n if (!node) return !1;\n var tracker = node._valueTracker;\n if (!tracker) return !0;\n var lastValue = tracker.getValue();\n var value = \"\";\n node &&\n (value = isCheckable(node)\n ? node.checked\n ? \"true\"\n : \"false\"\n : node.value);\n node = value;\n return node !== lastValue ? (tracker.setValue(node), !0) : !1;\n}\nfunction getActiveElement(doc) {\n doc = doc || (\"undefined\" !== typeof document ? document : void 0);\n if (\"undefined\" === typeof doc) return null;\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\nvar escapeSelectorAttributeValueInsideDoubleQuotesRegex = /[\\n\"\\\\]/g;\nfunction escapeSelectorAttributeValueInsideDoubleQuotes(value) {\n return value.replace(\n escapeSelectorAttributeValueInsideDoubleQuotesRegex,\n function (ch) {\n return \"\\\\\" + ch.charCodeAt(0).toString(16) + \" \";\n }\n );\n}\nfunction updateInput(\n element,\n value,\n defaultValue,\n lastDefaultValue,\n checked,\n defaultChecked,\n type,\n name\n) {\n element.name = \"\";\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type\n ? (element.type = type)\n : element.removeAttribute(\"type\");\n if (null != value)\n if (\"number\" === type) {\n if ((0 === value && \"\" === element.value) || element.value != value)\n element.value = \"\" + getToStringValue(value);\n } else\n element.value !== \"\" + getToStringValue(value) &&\n (element.value = \"\" + getToStringValue(value));\n else\n (\"submit\" !== type && \"reset\" !== type) || element.removeAttribute(\"value\");\n null != value\n ? setDefaultValue(element, type, getToStringValue(value))\n : null != defaultValue\n ? setDefaultValue(element, type, getToStringValue(defaultValue))\n : null != lastDefaultValue && element.removeAttribute(\"value\");\n null == checked &&\n null != defaultChecked &&\n (element.defaultChecked = !!defaultChecked);\n null != checked &&\n (element.checked =\n checked && \"function\" !== typeof checked && \"symbol\" !== typeof checked);\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name\n ? (element.name = \"\" + getToStringValue(name))\n : element.removeAttribute(\"name\");\n}\nfunction initInput(\n element,\n value,\n defaultValue,\n checked,\n defaultChecked,\n type,\n name,\n isHydrating\n) {\n null != type &&\n \"function\" !== typeof type &&\n \"symbol\" !== typeof type &&\n \"boolean\" !== typeof type &&\n (element.type = type);\n if (null != value || null != defaultValue) {\n if (\n !(\n (\"submit\" !== type && \"reset\" !== type) ||\n (void 0 !== value && null !== value)\n )\n )\n return;\n defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n value = null != value ? \"\" + getToStringValue(value) : defaultValue;\n isHydrating || value === element.value || (element.value = value);\n element.defaultValue = value;\n }\n checked = null != checked ? checked : defaultChecked;\n checked =\n \"function\" !== typeof checked && \"symbol\" !== typeof checked && !!checked;\n element.checked = isHydrating ? element.checked : !!checked;\n element.defaultChecked = !!checked;\n null != name &&\n \"function\" !== typeof name &&\n \"symbol\" !== typeof name &&\n \"boolean\" !== typeof name &&\n (element.name = name);\n}\nfunction setDefaultValue(node, type, value) {\n (\"number\" === type && getActiveElement(node.ownerDocument) === node) ||\n node.defaultValue === \"\" + value ||\n (node.defaultValue = \"\" + value);\n}\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n node = node.options;\n if (multiple) {\n multiple = {};\n for (var i = 0; i < propValue.length; i++)\n multiple[\"$\" + propValue[i]] = !0;\n for (propValue = 0; propValue < node.length; propValue++)\n (i = multiple.hasOwnProperty(\"$\" + node[propValue].value)),\n node[propValue].selected !== i && (node[propValue].selected = i),\n i && setDefaultSelected && (node[propValue].defaultSelected = !0);\n } else {\n propValue = \"\" + getToStringValue(propValue);\n multiple = null;\n for (i = 0; i < node.length; i++) {\n if (node[i].value === propValue) {\n node[i].selected = !0;\n setDefaultSelected && (node[i].defaultSelected = !0);\n return;\n }\n null !== multiple || node[i].disabled || (multiple = node[i]);\n }\n null !== multiple && (multiple.selected = !0);\n }\n}\nfunction updateTextarea(element, value, defaultValue) {\n if (\n null != value &&\n ((value = \"\" + getToStringValue(value)),\n value !== element.value && (element.value = value),\n null == defaultValue)\n ) {\n element.defaultValue !== value && (element.defaultValue = value);\n return;\n }\n element.defaultValue =\n null != defaultValue ? \"\" + getToStringValue(defaultValue) : \"\";\n}\nfunction initTextarea(element, value, defaultValue, children) {\n if (null == value) {\n if (null != children) {\n if (null != defaultValue) throw Error(formatProdErrorMessage(92));\n if (isArrayImpl(children)) {\n if (1 < children.length) throw Error(formatProdErrorMessage(93));\n children = children[0];\n }\n defaultValue = children;\n }\n null == defaultValue && (defaultValue = \"\");\n value = defaultValue;\n }\n defaultValue = getToStringValue(value);\n element.defaultValue = defaultValue;\n children = element.textContent;\n children === defaultValue &&\n \"\" !== children &&\n null !== children &&\n (element.value = children);\n}\nfunction setTextContent(node, text) {\n if (text) {\n var firstChild = node.firstChild;\n if (\n firstChild &&\n firstChild === node.lastChild &&\n 3 === firstChild.nodeType\n ) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n}\nvar unitlessNumbers = new Set(\n \"animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp\".split(\n \" \"\n )\n);\nfunction setValueForStyle(style, styleName, value) {\n var isCustomProperty = 0 === styleName.indexOf(\"--\");\n null == value || \"boolean\" === typeof value || \"\" === value\n ? isCustomProperty\n ? style.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (style.cssFloat = \"\")\n : (style[styleName] = \"\")\n : isCustomProperty\n ? style.setProperty(styleName, value)\n : \"number\" !== typeof value ||\n 0 === value ||\n unitlessNumbers.has(styleName)\n ? \"float\" === styleName\n ? (style.cssFloat = value)\n : (style[styleName] = (\"\" + value).trim())\n : (style[styleName] = value + \"px\");\n}\nfunction setValueForStyles(node, styles, prevStyles) {\n if (null != styles && \"object\" !== typeof styles)\n throw Error(formatProdErrorMessage(62));\n node = node.style;\n if (null != prevStyles) {\n for (var styleName in prevStyles)\n !prevStyles.hasOwnProperty(styleName) ||\n (null != styles && styles.hasOwnProperty(styleName)) ||\n (0 === styleName.indexOf(\"--\")\n ? node.setProperty(styleName, \"\")\n : \"float\" === styleName\n ? (node.cssFloat = \"\")\n : (node[styleName] = \"\"));\n for (var styleName$16 in styles)\n (styleName = styles[styleName$16]),\n styles.hasOwnProperty(styleName$16) &&\n prevStyles[styleName$16] !== styleName &&\n setValueForStyle(node, styleName$16, styleName);\n } else\n for (var styleName$17 in styles)\n styles.hasOwnProperty(styleName$17) &&\n setValueForStyle(node, styleName$17, styles[styleName$17]);\n}\nfunction isCustomElement(tagName) {\n if (-1 === tagName.indexOf(\"-\")) return !1;\n switch (tagName) {\n case \"annotation-xml\":\n case \"color-profile\":\n case \"font-face\":\n case \"font-face-src\":\n case \"font-face-uri\":\n case \"font-face-format\":\n case \"font-face-name\":\n case \"missing-glyph\":\n return !1;\n default:\n return !0;\n }\n}\nvar aliases = new Map([\n [\"acceptCharset\", \"accept-charset\"],\n [\"htmlFor\", \"for\"],\n [\"httpEquiv\", \"http-equiv\"],\n [\"crossOrigin\", \"crossorigin\"],\n [\"accentHeight\", \"accent-height\"],\n [\"alignmentBaseline\", \"alignment-baseline\"],\n [\"arabicForm\", \"arabic-form\"],\n [\"baselineShift\", \"baseline-shift\"],\n [\"capHeight\", \"cap-height\"],\n [\"clipPath\", \"clip-path\"],\n [\"clipRule\", \"clip-rule\"],\n [\"colorInterpolation\", \"color-interpolation\"],\n [\"colorInterpolationFilters\", \"color-interpolation-filters\"],\n [\"colorProfile\", \"color-profile\"],\n [\"colorRendering\", \"color-rendering\"],\n [\"dominantBaseline\", \"dominant-baseline\"],\n [\"enableBackground\", \"enable-background\"],\n [\"fillOpacity\", \"fill-opacity\"],\n [\"fillRule\", \"fill-rule\"],\n [\"floodColor\", \"flood-color\"],\n [\"floodOpacity\", \"flood-opacity\"],\n [\"fontFamily\", \"font-family\"],\n [\"fontSize\", \"font-size\"],\n [\"fontSizeAdjust\", \"font-size-adjust\"],\n [\"fontStretch\", \"font-stretch\"],\n [\"fontStyle\", \"font-style\"],\n [\"fontVariant\", \"font-variant\"],\n [\"fontWeight\", \"font-weight\"],\n [\"glyphName\", \"glyph-name\"],\n [\"glyphOrientationHorizontal\", \"glyph-orientation-horizontal\"],\n [\"glyphOrientationVertical\", \"glyph-orientation-vertical\"],\n [\"horizAdvX\", \"horiz-adv-x\"],\n [\"horizOriginX\", \"horiz-origin-x\"],\n [\"imageRendering\", \"image-rendering\"],\n [\"letterSpacing\", \"letter-spacing\"],\n [\"lightingColor\", \"lighting-color\"],\n [\"markerEnd\", \"marker-end\"],\n [\"markerMid\", \"marker-mid\"],\n [\"markerStart\", \"marker-start\"],\n [\"overlinePosition\", \"overline-position\"],\n [\"overlineThickness\", \"overline-thickness\"],\n [\"paintOrder\", \"paint-order\"],\n [\"panose-1\", \"panose-1\"],\n [\"pointerEvents\", \"pointer-events\"],\n [\"renderingIntent\", \"rendering-intent\"],\n [\"shapeRendering\", \"shape-rendering\"],\n [\"stopColor\", \"stop-color\"],\n [\"stopOpacity\", \"stop-opacity\"],\n [\"strikethroughPosition\", \"strikethrough-position\"],\n [\"strikethroughThickness\", \"strikethrough-thickness\"],\n [\"strokeDasharray\", \"stroke-dasharray\"],\n [\"strokeDashoffset\", \"stroke-dashoffset\"],\n [\"strokeLinecap\", \"stroke-linecap\"],\n [\"strokeLinejoin\", \"stroke-linejoin\"],\n [\"strokeMiterlimit\", \"stroke-miterlimit\"],\n [\"strokeOpacity\", \"stroke-opacity\"],\n [\"strokeWidth\", \"stroke-width\"],\n [\"textAnchor\", \"text-anchor\"],\n [\"textDecoration\", \"text-decoration\"],\n [\"textRendering\", \"text-rendering\"],\n [\"transformOrigin\", \"transform-origin\"],\n [\"underlinePosition\", \"underline-position\"],\n [\"underlineThickness\", \"underline-thickness\"],\n [\"unicodeBidi\", \"unicode-bidi\"],\n [\"unicodeRange\", \"unicode-range\"],\n [\"unitsPerEm\", \"units-per-em\"],\n [\"vAlphabetic\", \"v-alphabetic\"],\n [\"vHanging\", \"v-hanging\"],\n [\"vIdeographic\", \"v-ideographic\"],\n [\"vMathematical\", \"v-mathematical\"],\n [\"vectorEffect\", \"vector-effect\"],\n [\"vertAdvY\", \"vert-adv-y\"],\n [\"vertOriginX\", \"vert-origin-x\"],\n [\"vertOriginY\", \"vert-origin-y\"],\n [\"wordSpacing\", \"word-spacing\"],\n [\"writingMode\", \"writing-mode\"],\n [\"xmlnsXlink\", \"xmlns:xlink\"],\n [\"xHeight\", \"x-height\"]\n ]),\n isJavaScriptProtocol =\n /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*:/i;\nfunction sanitizeURL(url) {\n return isJavaScriptProtocol.test(\"\" + url)\n ? \"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')\"\n : url;\n}\nvar currentReplayingEvent = null;\nfunction getEventTarget(nativeEvent) {\n nativeEvent = nativeEvent.target || nativeEvent.srcElement || window;\n nativeEvent.correspondingUseElement &&\n (nativeEvent = nativeEvent.correspondingUseElement);\n return 3 === nativeEvent.nodeType ? nativeEvent.parentNode : nativeEvent;\n}\nvar restoreTarget = null,\n restoreQueue = null;\nfunction restoreStateOfTarget(target) {\n var internalInstance = getInstanceFromNode(target);\n if (internalInstance && (target = internalInstance.stateNode)) {\n var props = target[internalPropsKey] || null;\n a: switch (((target = internalInstance.stateNode), internalInstance.type)) {\n case \"input\":\n updateInput(\n target,\n props.value,\n props.defaultValue,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name\n );\n internalInstance = props.name;\n if (\"radio\" === props.type && null != internalInstance) {\n for (props = target; props.parentNode; ) props = props.parentNode;\n props = props.querySelectorAll(\n 'input[name=\"' +\n escapeSelectorAttributeValueInsideDoubleQuotes(\n \"\" + internalInstance\n ) +\n '\"][type=\"radio\"]'\n );\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n ) {\n var otherNode = props[internalInstance];\n if (otherNode !== target && otherNode.form === target.form) {\n var otherProps = otherNode[internalPropsKey] || null;\n if (!otherProps) throw Error(formatProdErrorMessage(90));\n updateInput(\n otherNode,\n otherProps.value,\n otherProps.defaultValue,\n otherProps.defaultValue,\n otherProps.checked,\n otherProps.defaultChecked,\n otherProps.type,\n otherProps.name\n );\n }\n }\n for (\n internalInstance = 0;\n internalInstance < props.length;\n internalInstance++\n )\n (otherNode = props[internalInstance]),\n otherNode.form === target.form && updateValueIfChanged(otherNode);\n }\n break a;\n case \"textarea\":\n updateTextarea(target, props.value, props.defaultValue);\n break a;\n case \"select\":\n (internalInstance = props.value),\n null != internalInstance &&\n updateOptions(target, !!props.multiple, internalInstance, !1);\n }\n }\n}\nvar isInsideEventHandler = !1;\nfunction batchedUpdates$1(fn, a, b) {\n if (isInsideEventHandler) return fn(a, b);\n isInsideEventHandler = !0;\n try {\n var JSCompiler_inline_result = fn(a);\n return JSCompiler_inline_result;\n } finally {\n if (\n ((isInsideEventHandler = !1),\n null !== restoreTarget || null !== restoreQueue)\n )\n if (\n (flushSyncWork$1(),\n restoreTarget &&\n ((a = restoreTarget),\n (fn = restoreQueue),\n (restoreQueue = restoreTarget = null),\n restoreStateOfTarget(a),\n fn))\n )\n for (a = 0; a < fn.length; a++) restoreStateOfTarget(fn[a]);\n }\n}\nfunction getListener(inst, registrationName) {\n var stateNode = inst.stateNode;\n if (null === stateNode) return null;\n var props = stateNode[internalPropsKey] || null;\n if (null === props) return null;\n stateNode = props[registrationName];\n a: switch (registrationName) {\n case \"onClick\":\n case \"onClickCapture\":\n case \"onDoubleClick\":\n case \"onDoubleClickCapture\":\n case \"onMouseDown\":\n case \"onMouseDownCapture\":\n case \"onMouseMove\":\n case \"onMouseMoveCapture\":\n case \"onMouseUp\":\n case \"onMouseUpCapture\":\n case \"onMouseEnter\":\n (props = !props.disabled) ||\n ((inst = inst.type),\n (props = !(\n \"button\" === inst ||\n \"input\" === inst ||\n \"select\" === inst ||\n \"textarea\" === inst\n )));\n inst = !props;\n break a;\n default:\n inst = !1;\n }\n if (inst) return null;\n if (stateNode && \"function\" !== typeof stateNode)\n throw Error(\n formatProdErrorMessage(231, registrationName, typeof stateNode)\n );\n return stateNode;\n}\nvar passiveBrowserEventsSupported = !1;\nif (canUseDOM)\n try {\n var options = {};\n Object.defineProperty(options, \"passive\", {\n get: function () {\n passiveBrowserEventsSupported = !0;\n }\n });\n window.addEventListener(\"test\", options, options);\n window.removeEventListener(\"test\", options, options);\n } catch (e) {\n passiveBrowserEventsSupported = !1;\n }\nvar root = null,\n startText = null,\n fallbackText = null;\nfunction getData() {\n if (fallbackText) return fallbackText;\n var start,\n startValue = startText,\n startLength = startValue.length,\n end,\n endValue = \"value\" in root ? root.value : root.textContent,\n endLength = endValue.length;\n for (\n start = 0;\n start < startLength && startValue[start] === endValue[start];\n start++\n );\n var minEnd = startLength - start;\n for (\n end = 1;\n end <= minEnd &&\n startValue[startLength - end] === endValue[endLength - end];\n end++\n );\n return (fallbackText = endValue.slice(start, 1 < end ? 1 - end : void 0));\n}\nfunction getEventCharCode(nativeEvent) {\n var keyCode = nativeEvent.keyCode;\n \"charCode\" in nativeEvent\n ? ((nativeEvent = nativeEvent.charCode),\n 0 === nativeEvent && 13 === keyCode && (nativeEvent = 13))\n : (nativeEvent = keyCode);\n 10 === nativeEvent && (nativeEvent = 13);\n return 32 <= nativeEvent || 13 === nativeEvent ? nativeEvent : 0;\n}\nfunction functionThatReturnsTrue() {\n return !0;\n}\nfunction functionThatReturnsFalse() {\n return !1;\n}\nfunction createSyntheticEvent(Interface) {\n function SyntheticBaseEvent(\n reactName,\n reactEventType,\n targetInst,\n nativeEvent,\n nativeEventTarget\n ) {\n this._reactName = reactName;\n this._targetInst = targetInst;\n this.type = reactEventType;\n this.nativeEvent = nativeEvent;\n this.target = nativeEventTarget;\n this.currentTarget = null;\n for (var propName in Interface)\n Interface.hasOwnProperty(propName) &&\n ((reactName = Interface[propName]),\n (this[propName] = reactName\n ? reactName(nativeEvent)\n : nativeEvent[propName]));\n this.isDefaultPrevented = (\n null != nativeEvent.defaultPrevented\n ? nativeEvent.defaultPrevented\n : !1 === nativeEvent.returnValue\n )\n ? functionThatReturnsTrue\n : functionThatReturnsFalse;\n this.isPropagationStopped = functionThatReturnsFalse;\n return this;\n }\n assign(SyntheticBaseEvent.prototype, {\n preventDefault: function () {\n this.defaultPrevented = !0;\n var event = this.nativeEvent;\n event &&\n (event.preventDefault\n ? event.preventDefault()\n : \"unknown\" !== typeof event.returnValue && (event.returnValue = !1),\n (this.isDefaultPrevented = functionThatReturnsTrue));\n },\n stopPropagation: function () {\n var event = this.nativeEvent;\n event &&\n (event.stopPropagation\n ? event.stopPropagation()\n : \"unknown\" !== typeof event.cancelBubble &&\n (event.cancelBubble = !0),\n (this.isPropagationStopped = functionThatReturnsTrue));\n },\n persist: function () {},\n isPersistent: functionThatReturnsTrue\n });\n return SyntheticBaseEvent;\n}\nvar EventInterface = {\n eventPhase: 0,\n bubbles: 0,\n cancelable: 0,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: 0,\n isTrusted: 0\n },\n SyntheticEvent = createSyntheticEvent(EventInterface),\n UIEventInterface = assign({}, EventInterface, { view: 0, detail: 0 }),\n SyntheticUIEvent = createSyntheticEvent(UIEventInterface),\n lastMovementX,\n lastMovementY,\n lastMouseEvent,\n MouseEventInterface = assign({}, UIEventInterface, {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n pageX: 0,\n pageY: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n getModifierState: getEventModifierState,\n button: 0,\n buttons: 0,\n relatedTarget: function (event) {\n return void 0 === event.relatedTarget\n ? event.fromElement === event.srcElement\n ? event.toElement\n : event.fromElement\n : event.relatedTarget;\n },\n movementX: function (event) {\n if (\"movementX\" in event) return event.movementX;\n event !== lastMouseEvent &&\n (lastMouseEvent && \"mousemove\" === event.type\n ? ((lastMovementX = event.screenX - lastMouseEvent.screenX),\n (lastMovementY = event.screenY - lastMouseEvent.screenY))\n : (lastMovementY = lastMovementX = 0),\n (lastMouseEvent = event));\n return lastMovementX;\n },\n movementY: function (event) {\n return \"movementY\" in event ? event.movementY : lastMovementY;\n }\n }),\n SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface),\n DragEventInterface = assign({}, MouseEventInterface, { dataTransfer: 0 }),\n SyntheticDragEvent = createSyntheticEvent(DragEventInterface),\n FocusEventInterface = assign({}, UIEventInterface, { relatedTarget: 0 }),\n SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface),\n AnimationEventInterface = assign({}, EventInterface, {\n animationName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface),\n ClipboardEventInterface = assign({}, EventInterface, {\n clipboardData: function (event) {\n return \"clipboardData\" in event\n ? event.clipboardData\n : window.clipboardData;\n }\n }),\n SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface),\n CompositionEventInterface = assign({}, EventInterface, { data: 0 }),\n SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface),\n normalizeKey = {\n Esc: \"Escape\",\n Spacebar: \" \",\n Left: \"ArrowLeft\",\n Up: \"ArrowUp\",\n Right: \"ArrowRight\",\n Down: \"ArrowDown\",\n Del: \"Delete\",\n Win: \"OS\",\n Menu: \"ContextMenu\",\n Apps: \"ContextMenu\",\n Scroll: \"ScrollLock\",\n MozPrintableKey: \"Unidentified\"\n },\n translateToKey = {\n 8: \"Backspace\",\n 9: \"Tab\",\n 12: \"Clear\",\n 13: \"Enter\",\n 16: \"Shift\",\n 17: \"Control\",\n 18: \"Alt\",\n 19: \"Pause\",\n 20: \"CapsLock\",\n 27: \"Escape\",\n 32: \" \",\n 33: \"PageUp\",\n 34: \"PageDown\",\n 35: \"End\",\n 36: \"Home\",\n 37: \"ArrowLeft\",\n 38: \"ArrowUp\",\n 39: \"ArrowRight\",\n 40: \"ArrowDown\",\n 45: \"Insert\",\n 46: \"Delete\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"NumLock\",\n 145: \"ScrollLock\",\n 224: \"Meta\"\n },\n modifierKeyToProp = {\n Alt: \"altKey\",\n Control: \"ctrlKey\",\n Meta: \"metaKey\",\n Shift: \"shiftKey\"\n };\nfunction modifierStateGetter(keyArg) {\n var nativeEvent = this.nativeEvent;\n return nativeEvent.getModifierState\n ? nativeEvent.getModifierState(keyArg)\n : (keyArg = modifierKeyToProp[keyArg])\n ? !!nativeEvent[keyArg]\n : !1;\n}\nfunction getEventModifierState() {\n return modifierStateGetter;\n}\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n key: function (nativeEvent) {\n if (nativeEvent.key) {\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (\"Unidentified\" !== key) return key;\n }\n return \"keypress\" === nativeEvent.type\n ? ((nativeEvent = getEventCharCode(nativeEvent)),\n 13 === nativeEvent ? \"Enter\" : String.fromCharCode(nativeEvent))\n : \"keydown\" === nativeEvent.type || \"keyup\" === nativeEvent.type\n ? translateToKey[nativeEvent.keyCode] || \"Unidentified\"\n : \"\";\n },\n code: 0,\n location: 0,\n ctrlKey: 0,\n shiftKey: 0,\n altKey: 0,\n metaKey: 0,\n repeat: 0,\n locale: 0,\n getModifierState: getEventModifierState,\n charCode: function (event) {\n return \"keypress\" === event.type ? getEventCharCode(event) : 0;\n },\n keyCode: function (event) {\n return \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n },\n which: function (event) {\n return \"keypress\" === event.type\n ? getEventCharCode(event)\n : \"keydown\" === event.type || \"keyup\" === event.type\n ? event.keyCode\n : 0;\n }\n }),\n SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface),\n PointerEventInterface = assign({}, MouseEventInterface, {\n pointerId: 0,\n width: 0,\n height: 0,\n pressure: 0,\n tangentialPressure: 0,\n tiltX: 0,\n tiltY: 0,\n twist: 0,\n pointerType: 0,\n isPrimary: 0\n }),\n SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface),\n TouchEventInterface = assign({}, UIEventInterface, {\n touches: 0,\n targetTouches: 0,\n changedTouches: 0,\n altKey: 0,\n metaKey: 0,\n ctrlKey: 0,\n shiftKey: 0,\n getModifierState: getEventModifierState\n }),\n SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface),\n TransitionEventInterface = assign({}, EventInterface, {\n propertyName: 0,\n elapsedTime: 0,\n pseudoElement: 0\n }),\n SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface),\n WheelEventInterface = assign({}, MouseEventInterface, {\n deltaX: function (event) {\n return \"deltaX\" in event\n ? event.deltaX\n : \"wheelDeltaX\" in event\n ? -event.wheelDeltaX\n : 0;\n },\n deltaY: function (event) {\n return \"deltaY\" in event\n ? event.deltaY\n : \"wheelDeltaY\" in event\n ? -event.wheelDeltaY\n : \"wheelDelta\" in event\n ? -event.wheelDelta\n : 0;\n },\n deltaZ: 0,\n deltaMode: 0\n }),\n SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface),\n ToggleEventInterface = assign({}, EventInterface, {\n newState: 0,\n oldState: 0\n }),\n SyntheticToggleEvent = createSyntheticEvent(ToggleEventInterface),\n END_KEYCODES = [9, 13, 27, 32],\n canUseCompositionEvent = canUseDOM && \"CompositionEvent\" in window,\n documentMode = null;\ncanUseDOM &&\n \"documentMode\" in document &&\n (documentMode = document.documentMode);\nvar canUseTextInputEvent = canUseDOM && \"TextEvent\" in window && !documentMode,\n useFallbackCompositionData =\n canUseDOM &&\n (!canUseCompositionEvent ||\n (documentMode && 8 < documentMode && 11 >= documentMode)),\n SPACEBAR_CHAR = String.fromCharCode(32),\n hasSpaceKeypress = !1;\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"keyup\":\n return -1 !== END_KEYCODES.indexOf(nativeEvent.keyCode);\n case \"keydown\":\n return 229 !== nativeEvent.keyCode;\n case \"keypress\":\n case \"mousedown\":\n case \"focusout\":\n return !0;\n default:\n return !1;\n }\n}\nfunction getDataFromCustomEvent(nativeEvent) {\n nativeEvent = nativeEvent.detail;\n return \"object\" === typeof nativeEvent && \"data\" in nativeEvent\n ? nativeEvent.data\n : null;\n}\nvar isComposing = !1;\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n switch (domEventName) {\n case \"compositionend\":\n return getDataFromCustomEvent(nativeEvent);\n case \"keypress\":\n if (32 !== nativeEvent.which) return null;\n hasSpaceKeypress = !0;\n return SPACEBAR_CHAR;\n case \"textInput\":\n return (\n (domEventName = nativeEvent.data),\n domEventName === SPACEBAR_CHAR && hasSpaceKeypress ? null : domEventName\n );\n default:\n return null;\n }\n}\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n if (isComposing)\n return \"compositionend\" === domEventName ||\n (!canUseCompositionEvent &&\n isFallbackCompositionEnd(domEventName, nativeEvent))\n ? ((domEventName = getData()),\n (fallbackText = startText = root = null),\n (isComposing = !1),\n domEventName)\n : null;\n switch (domEventName) {\n case \"paste\":\n return null;\n case \"keypress\":\n if (\n !(nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) ||\n (nativeEvent.ctrlKey && nativeEvent.altKey)\n ) {\n if (nativeEvent.char && 1 < nativeEvent.char.length)\n return nativeEvent.char;\n if (nativeEvent.which) return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case \"compositionend\":\n return useFallbackCompositionData && \"ko\" !== nativeEvent.locale\n ? null\n : nativeEvent.data;\n default:\n return null;\n }\n}\nvar supportedInputTypes = {\n color: !0,\n date: !0,\n datetime: !0,\n \"datetime-local\": !0,\n email: !0,\n month: !0,\n number: !0,\n password: !0,\n range: !0,\n search: !0,\n tel: !0,\n text: !0,\n time: !0,\n url: !0,\n week: !0\n};\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return \"input\" === nodeName\n ? !!supportedInputTypes[elem.type]\n : \"textarea\" === nodeName\n ? !0\n : !1;\n}\nfunction createAndAccumulateChangeEvent(\n dispatchQueue,\n inst,\n nativeEvent,\n target\n) {\n restoreTarget\n ? restoreQueue\n ? restoreQueue.push(target)\n : (restoreQueue = [target])\n : (restoreTarget = target);\n inst = accumulateTwoPhaseListeners(inst, \"onChange\");\n 0 < inst.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onChange\",\n \"change\",\n null,\n nativeEvent,\n target\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: inst }));\n}\nvar activeElement$1 = null,\n activeElementInst$1 = null;\nfunction runEventInBatch(dispatchQueue) {\n processDispatchQueue(dispatchQueue, 0);\n}\nfunction getInstIfValueChanged(targetInst) {\n var targetNode = getNodeFromInstance(targetInst);\n if (updateValueIfChanged(targetNode)) return targetInst;\n}\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n if (\"change\" === domEventName) return targetInst;\n}\nvar isInputEventSupported = !1;\nif (canUseDOM) {\n var JSCompiler_inline_result$jscomp$283;\n if (canUseDOM) {\n var isSupported$jscomp$inline_418 = \"oninput\" in document;\n if (!isSupported$jscomp$inline_418) {\n var element$jscomp$inline_419 = document.createElement(\"div\");\n element$jscomp$inline_419.setAttribute(\"oninput\", \"return;\");\n isSupported$jscomp$inline_418 =\n \"function\" === typeof element$jscomp$inline_419.oninput;\n }\n JSCompiler_inline_result$jscomp$283 = isSupported$jscomp$inline_418;\n } else JSCompiler_inline_result$jscomp$283 = !1;\n isInputEventSupported =\n JSCompiler_inline_result$jscomp$283 &&\n (!document.documentMode || 9 < document.documentMode);\n}\nfunction stopWatchingForValueChange() {\n activeElement$1 &&\n (activeElement$1.detachEvent(\"onpropertychange\", handlePropertyChange),\n (activeElementInst$1 = activeElement$1 = null));\n}\nfunction handlePropertyChange(nativeEvent) {\n if (\n \"value\" === nativeEvent.propertyName &&\n getInstIfValueChanged(activeElementInst$1)\n ) {\n var dispatchQueue = [];\n createAndAccumulateChangeEvent(\n dispatchQueue,\n activeElementInst$1,\n nativeEvent,\n getEventTarget(nativeEvent)\n );\n batchedUpdates$1(runEventInBatch, dispatchQueue);\n }\n}\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n \"focusin\" === domEventName\n ? (stopWatchingForValueChange(),\n (activeElement$1 = target),\n (activeElementInst$1 = targetInst),\n activeElement$1.attachEvent(\"onpropertychange\", handlePropertyChange))\n : \"focusout\" === domEventName && stopWatchingForValueChange();\n}\nfunction getTargetInstForInputEventPolyfill(domEventName) {\n if (\n \"selectionchange\" === domEventName ||\n \"keyup\" === domEventName ||\n \"keydown\" === domEventName\n )\n return getInstIfValueChanged(activeElementInst$1);\n}\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n if (\"click\" === domEventName) return getInstIfValueChanged(targetInst);\n}\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n if (\"input\" === domEventName || \"change\" === domEventName)\n return getInstIfValueChanged(targetInst);\n}\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is;\nfunction shallowEqual(objA, objB) {\n if (objectIs(objA, objB)) return !0;\n if (\n \"object\" !== typeof objA ||\n null === objA ||\n \"object\" !== typeof objB ||\n null === objB\n )\n return !1;\n var keysA = Object.keys(objA),\n keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return !1;\n for (keysB = 0; keysB < keysA.length; keysB++) {\n var currentKey = keysA[keysB];\n if (\n !hasOwnProperty.call(objB, currentKey) ||\n !objectIs(objA[currentKey], objB[currentKey])\n )\n return !1;\n }\n return !0;\n}\nfunction getLeafNode(node) {\n for (; node && node.firstChild; ) node = node.firstChild;\n return node;\n}\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n root = 0;\n for (var nodeEnd; node; ) {\n if (3 === node.nodeType) {\n nodeEnd = root + node.textContent.length;\n if (root <= offset && nodeEnd >= offset)\n return { node: node, offset: offset - root };\n root = nodeEnd;\n }\n a: {\n for (; node; ) {\n if (node.nextSibling) {\n node = node.nextSibling;\n break a;\n }\n node = node.parentNode;\n }\n node = void 0;\n }\n node = getLeafNode(node);\n }\n}\nfunction containsNode(outerNode, innerNode) {\n return outerNode && innerNode\n ? outerNode === innerNode\n ? !0\n : outerNode && 3 === outerNode.nodeType\n ? !1\n : innerNode && 3 === innerNode.nodeType\n ? containsNode(outerNode, innerNode.parentNode)\n : \"contains\" in outerNode\n ? outerNode.contains(innerNode)\n : outerNode.compareDocumentPosition\n ? !!(outerNode.compareDocumentPosition(innerNode) & 16)\n : !1\n : !1;\n}\nfunction getActiveElementDeep(containerInfo) {\n containerInfo =\n null != containerInfo &&\n null != containerInfo.ownerDocument &&\n null != containerInfo.ownerDocument.defaultView\n ? containerInfo.ownerDocument.defaultView\n : window;\n for (\n var element = getActiveElement(containerInfo.document);\n element instanceof containerInfo.HTMLIFrameElement;\n\n ) {\n try {\n var JSCompiler_inline_result =\n \"string\" === typeof element.contentWindow.location.href;\n } catch (err) {\n JSCompiler_inline_result = !1;\n }\n if (JSCompiler_inline_result) containerInfo = element.contentWindow;\n else break;\n element = getActiveElement(containerInfo.document);\n }\n return element;\n}\nfunction hasSelectionCapabilities(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return (\n nodeName &&\n ((\"input\" === nodeName &&\n (\"text\" === elem.type ||\n \"search\" === elem.type ||\n \"tel\" === elem.type ||\n \"url\" === elem.type ||\n \"password\" === elem.type)) ||\n \"textarea\" === nodeName ||\n \"true\" === elem.contentEditable)\n );\n}\nfunction restoreSelection(priorSelectionInformation, containerInfo) {\n var curFocusedElem = getActiveElementDeep(containerInfo);\n containerInfo = priorSelectionInformation.focusedElem;\n var priorSelectionRange = priorSelectionInformation.selectionRange;\n if (\n curFocusedElem !== containerInfo &&\n containerInfo &&\n containerInfo.ownerDocument &&\n containsNode(containerInfo.ownerDocument.documentElement, containerInfo)\n ) {\n if (null !== priorSelectionRange && hasSelectionCapabilities(containerInfo))\n if (\n ((priorSelectionInformation = priorSelectionRange.start),\n (curFocusedElem = priorSelectionRange.end),\n void 0 === curFocusedElem &&\n (curFocusedElem = priorSelectionInformation),\n \"selectionStart\" in containerInfo)\n )\n (containerInfo.selectionStart = priorSelectionInformation),\n (containerInfo.selectionEnd = Math.min(\n curFocusedElem,\n containerInfo.value.length\n ));\n else if (\n ((curFocusedElem =\n ((priorSelectionInformation =\n containerInfo.ownerDocument || document) &&\n priorSelectionInformation.defaultView) ||\n window),\n curFocusedElem.getSelection)\n ) {\n curFocusedElem = curFocusedElem.getSelection();\n var length = containerInfo.textContent.length,\n start = Math.min(priorSelectionRange.start, length);\n priorSelectionRange =\n void 0 === priorSelectionRange.end\n ? start\n : Math.min(priorSelectionRange.end, length);\n !curFocusedElem.extend &&\n start > priorSelectionRange &&\n ((length = priorSelectionRange),\n (priorSelectionRange = start),\n (start = length));\n length = getNodeForCharacterOffset(containerInfo, start);\n var endMarker = getNodeForCharacterOffset(\n containerInfo,\n priorSelectionRange\n );\n length &&\n endMarker &&\n (1 !== curFocusedElem.rangeCount ||\n curFocusedElem.anchorNode !== length.node ||\n curFocusedElem.anchorOffset !== length.offset ||\n curFocusedElem.focusNode !== endMarker.node ||\n curFocusedElem.focusOffset !== endMarker.offset) &&\n ((priorSelectionInformation =\n priorSelectionInformation.createRange()),\n priorSelectionInformation.setStart(length.node, length.offset),\n curFocusedElem.removeAllRanges(),\n start > priorSelectionRange\n ? (curFocusedElem.addRange(priorSelectionInformation),\n curFocusedElem.extend(endMarker.node, endMarker.offset))\n : (priorSelectionInformation.setEnd(\n endMarker.node,\n endMarker.offset\n ),\n curFocusedElem.addRange(priorSelectionInformation)));\n }\n priorSelectionInformation = [];\n for (\n curFocusedElem = containerInfo;\n (curFocusedElem = curFocusedElem.parentNode);\n\n )\n 1 === curFocusedElem.nodeType &&\n priorSelectionInformation.push({\n element: curFocusedElem,\n left: curFocusedElem.scrollLeft,\n top: curFocusedElem.scrollTop\n });\n \"function\" === typeof containerInfo.focus && containerInfo.focus();\n for (\n containerInfo = 0;\n containerInfo < priorSelectionInformation.length;\n containerInfo++\n )\n (curFocusedElem = priorSelectionInformation[containerInfo]),\n (curFocusedElem.element.scrollLeft = curFocusedElem.left),\n (curFocusedElem.element.scrollTop = curFocusedElem.top);\n }\n}\nvar skipSelectionChangeEvent =\n canUseDOM && \"documentMode\" in document && 11 >= document.documentMode,\n activeElement = null,\n activeElementInst = null,\n lastSelection = null,\n mouseDown = !1;\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n var doc =\n nativeEventTarget.window === nativeEventTarget\n ? nativeEventTarget.document\n : 9 === nativeEventTarget.nodeType\n ? nativeEventTarget\n : nativeEventTarget.ownerDocument;\n mouseDown ||\n null == activeElement ||\n activeElement !== getActiveElement(doc) ||\n ((doc = activeElement),\n \"selectionStart\" in doc && hasSelectionCapabilities(doc)\n ? (doc = { start: doc.selectionStart, end: doc.selectionEnd })\n : ((doc = (\n (doc.ownerDocument && doc.ownerDocument.defaultView) ||\n window\n ).getSelection()),\n (doc = {\n anchorNode: doc.anchorNode,\n anchorOffset: doc.anchorOffset,\n focusNode: doc.focusNode,\n focusOffset: doc.focusOffset\n })),\n (lastSelection && shallowEqual(lastSelection, doc)) ||\n ((lastSelection = doc),\n (doc = accumulateTwoPhaseListeners(activeElementInst, \"onSelect\")),\n 0 < doc.length &&\n ((nativeEvent = new SyntheticEvent(\n \"onSelect\",\n \"select\",\n null,\n nativeEvent,\n nativeEventTarget\n )),\n dispatchQueue.push({ event: nativeEvent, listeners: doc }),\n (nativeEvent.target = activeElement))));\n}\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes[\"Webkit\" + styleProp] = \"webkit\" + eventName;\n prefixes[\"Moz\" + styleProp] = \"moz\" + eventName;\n return prefixes;\n}\nvar vendorPrefixes = {\n animationend: makePrefixMap(\"Animation\", \"AnimationEnd\"),\n animationiteration: makePrefixMap(\"Animation\", \"AnimationIteration\"),\n animationstart: makePrefixMap(\"Animation\", \"AnimationStart\"),\n transitionrun: makePrefixMap(\"Transition\", \"TransitionRun\"),\n transitionstart: makePrefixMap(\"Transition\", \"TransitionStart\"),\n transitioncancel: makePrefixMap(\"Transition\", \"TransitionCancel\"),\n transitionend: makePrefixMap(\"Transition\", \"TransitionEnd\")\n },\n prefixedEventNames = {},\n style = {};\ncanUseDOM &&\n ((style = document.createElement(\"div\").style),\n \"AnimationEvent\" in window ||\n (delete vendorPrefixes.animationend.animation,\n delete vendorPrefixes.animationiteration.animation,\n delete vendorPrefixes.animationstart.animation),\n \"TransitionEvent\" in window ||\n delete vendorPrefixes.transitionend.transition);\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) return prefixedEventNames[eventName];\n if (!vendorPrefixes[eventName]) return eventName;\n var prefixMap = vendorPrefixes[eventName],\n styleProp;\n for (styleProp in prefixMap)\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style)\n return (prefixedEventNames[eventName] = prefixMap[styleProp]);\n return eventName;\n}\nvar ANIMATION_END = getVendorPrefixedEventName(\"animationend\"),\n ANIMATION_ITERATION = getVendorPrefixedEventName(\"animationiteration\"),\n ANIMATION_START = getVendorPrefixedEventName(\"animationstart\"),\n TRANSITION_RUN = getVendorPrefixedEventName(\"transitionrun\"),\n TRANSITION_START = getVendorPrefixedEventName(\"transitionstart\"),\n TRANSITION_CANCEL = getVendorPrefixedEventName(\"transitioncancel\"),\n TRANSITION_END = getVendorPrefixedEventName(\"transitionend\"),\n topLevelEventsToReactNames = new Map(),\n simpleEventPluginEvents =\n \"abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll scrollEnd toggle touchMove waiting wheel\".split(\n \" \"\n );\nfunction registerSimpleEvent(domEventName, reactName) {\n topLevelEventsToReactNames.set(domEventName, reactName);\n registerTwoPhaseEvent(reactName, [domEventName]);\n}\nvar concurrentQueues = [],\n concurrentQueuesIndex = 0,\n concurrentlyUpdatedLanes = 0;\nfunction finishQueueingConcurrentUpdates() {\n for (\n var endIndex = concurrentQueuesIndex,\n i = (concurrentlyUpdatedLanes = concurrentQueuesIndex = 0);\n i < endIndex;\n\n ) {\n var fiber = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var queue = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var update = concurrentQueues[i];\n concurrentQueues[i++] = null;\n var lane = concurrentQueues[i];\n concurrentQueues[i++] = null;\n if (null !== queue && null !== update) {\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n }\n 0 !== lane && markUpdateLaneFromFiberToRoot(fiber, update, lane);\n }\n}\nfunction enqueueUpdate$1(fiber, queue, update, lane) {\n concurrentQueues[concurrentQueuesIndex++] = fiber;\n concurrentQueues[concurrentQueuesIndex++] = queue;\n concurrentQueues[concurrentQueuesIndex++] = update;\n concurrentQueues[concurrentQueuesIndex++] = lane;\n concurrentlyUpdatedLanes |= lane;\n fiber.lanes |= lane;\n fiber = fiber.alternate;\n null !== fiber && (fiber.lanes |= lane);\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n enqueueUpdate$1(fiber, queue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n enqueueUpdate$1(fiber, null, null, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, update, lane) {\n sourceFiber.lanes |= lane;\n var alternate = sourceFiber.alternate;\n null !== alternate && (alternate.lanes |= lane);\n for (var isHidden = !1, parent = sourceFiber.return; null !== parent; )\n (parent.childLanes |= lane),\n (alternate = parent.alternate),\n null !== alternate && (alternate.childLanes |= lane),\n 22 === parent.tag &&\n ((sourceFiber = parent.stateNode),\n null === sourceFiber || sourceFiber._visibility & 1 || (isHidden = !0)),\n (sourceFiber = parent),\n (parent = parent.return);\n isHidden &&\n null !== update &&\n 3 === sourceFiber.tag &&\n ((parent = sourceFiber.stateNode),\n (isHidden = 31 - clz32(lane)),\n (parent = parent.hiddenUpdates),\n (sourceFiber = parent[isHidden]),\n null === sourceFiber\n ? (parent[isHidden] = [update])\n : sourceFiber.push(update),\n (update.lane = lane | 536870912));\n}\nfunction getRootForUpdatedFiber(sourceFiber) {\n if (50 < nestedUpdateCount)\n throw (\n ((nestedUpdateCount = 0),\n (rootWithNestedUpdates = null),\n Error(formatProdErrorMessage(185)))\n );\n for (var parent = sourceFiber.return; null !== parent; )\n (sourceFiber = parent), (parent = sourceFiber.return);\n return 3 === sourceFiber.tag ? sourceFiber.stateNode : null;\n}\nvar emptyContextObject = {},\n CapturedStacks = new WeakMap();\nfunction createCapturedValueAtFiber(value, source) {\n if (\"object\" === typeof value && null !== value) {\n var existing = CapturedStacks.get(value);\n if (void 0 !== existing) return existing;\n source = {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n CapturedStacks.set(value, source);\n return source;\n }\n return {\n value: value,\n source: source,\n stack: getStackByFiberInDevAndProd(source)\n };\n}\nvar forkStack = [],\n forkStackIndex = 0,\n treeForkProvider = null,\n treeForkCount = 0,\n idStack = [],\n idStackIndex = 0,\n treeContextProvider = null,\n treeContextId = 1,\n treeContextOverflow = \"\";\nfunction pushTreeFork(workInProgress, totalChildren) {\n forkStack[forkStackIndex++] = treeForkCount;\n forkStack[forkStackIndex++] = treeForkProvider;\n treeForkProvider = workInProgress;\n treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n idStack[idStackIndex++] = treeContextId;\n idStack[idStackIndex++] = treeContextOverflow;\n idStack[idStackIndex++] = treeContextProvider;\n treeContextProvider = workInProgress;\n var baseIdWithLeadingBit = treeContextId;\n workInProgress = treeContextOverflow;\n var baseLength = 32 - clz32(baseIdWithLeadingBit) - 1;\n baseIdWithLeadingBit &= ~(1 << baseLength);\n index += 1;\n var length = 32 - clz32(totalChildren) + baseLength;\n if (30 < length) {\n var numberOfOverflowBits = baseLength - (baseLength % 5);\n length = (\n baseIdWithLeadingBit &\n ((1 << numberOfOverflowBits) - 1)\n ).toString(32);\n baseIdWithLeadingBit >>= numberOfOverflowBits;\n baseLength -= numberOfOverflowBits;\n treeContextId =\n (1 << (32 - clz32(totalChildren) + baseLength)) |\n (index << baseLength) |\n baseIdWithLeadingBit;\n treeContextOverflow = length + workInProgress;\n } else\n (treeContextId =\n (1 << length) | (index << baseLength) | baseIdWithLeadingBit),\n (treeContextOverflow = workInProgress);\n}\nfunction pushMaterializedTreeId(workInProgress) {\n null !== workInProgress.return &&\n (pushTreeFork(workInProgress, 1), pushTreeId(workInProgress, 1, 0));\n}\nfunction popTreeContext(workInProgress) {\n for (; workInProgress === treeForkProvider; )\n (treeForkProvider = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null),\n (treeForkCount = forkStack[--forkStackIndex]),\n (forkStack[forkStackIndex] = null);\n for (; workInProgress === treeContextProvider; )\n (treeContextProvider = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextOverflow = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null),\n (treeContextId = idStack[--idStackIndex]),\n (idStack[idStackIndex] = null);\n}\nvar hydrationParentFiber = null,\n nextHydratableInstance = null,\n isHydrating = !1,\n hydrationErrors = null,\n rootOrSingletonContext = !1,\n HydrationMismatchException = Error(formatProdErrorMessage(519));\nfunction throwOnHydrationMismatch(fiber) {\n var error = Error(formatProdErrorMessage(418, \"\"));\n queueHydrationError(createCapturedValueAtFiber(error, fiber));\n throw HydrationMismatchException;\n}\nfunction prepareToHydrateHostInstance(fiber) {\n var instance = fiber.stateNode,\n type = fiber.type,\n props = fiber.memoizedProps;\n instance[internalInstanceKey] = fiber;\n instance[internalPropsKey] = props;\n switch (type) {\n case \"dialog\":\n listenToNonDelegatedEvent(\"cancel\", instance);\n listenToNonDelegatedEvent(\"close\", instance);\n break;\n case \"iframe\":\n case \"object\":\n case \"embed\":\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"video\":\n case \"audio\":\n for (type = 0; type < mediaEventTypes.length; type++)\n listenToNonDelegatedEvent(mediaEventTypes[type], instance);\n break;\n case \"source\":\n listenToNonDelegatedEvent(\"error\", instance);\n break;\n case \"img\":\n case \"image\":\n case \"link\":\n listenToNonDelegatedEvent(\"error\", instance);\n listenToNonDelegatedEvent(\"load\", instance);\n break;\n case \"details\":\n listenToNonDelegatedEvent(\"toggle\", instance);\n break;\n case \"input\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n initInput(\n instance,\n props.value,\n props.defaultValue,\n props.checked,\n props.defaultChecked,\n props.type,\n props.name,\n !0\n );\n track(instance);\n break;\n case \"select\":\n listenToNonDelegatedEvent(\"invalid\", instance);\n break;\n case \"textarea\":\n listenToNonDelegatedEvent(\"invalid\", instance),\n initTextarea(instance, props.value, props.defaultValue, props.children),\n track(instance);\n }\n type = props.children;\n (\"string\" !== typeof type &&\n \"number\" !== typeof type &&\n \"bigint\" !== typeof type) ||\n instance.textContent === \"\" + type ||\n !0 === props.suppressHydrationWarning ||\n checkForUnmatchedText(instance.textContent, type)\n ? (null != props.popover &&\n (listenToNonDelegatedEvent(\"beforetoggle\", instance),\n listenToNonDelegatedEvent(\"toggle\", instance)),\n null != props.onScroll && listenToNonDelegatedEvent(\"scroll\", instance),\n null != props.onScrollEnd &&\n listenToNonDelegatedEvent(\"scrollend\", instance),\n null != props.onClick && (instance.onclick = noop$1),\n (instance = !0))\n : (instance = !1);\n instance || throwOnHydrationMismatch(fiber);\n}\nfunction popToNextHostParent(fiber) {\n for (hydrationParentFiber = fiber.return; hydrationParentFiber; )\n switch (hydrationParentFiber.tag) {\n case 3:\n case 27:\n rootOrSingletonContext = !0;\n return;\n case 5:\n case 13:\n rootOrSingletonContext = !1;\n return;\n default:\n hydrationParentFiber = hydrationParentFiber.return;\n }\n}\nfunction popHydrationState(fiber) {\n if (fiber !== hydrationParentFiber) return !1;\n if (!isHydrating) return popToNextHostParent(fiber), (isHydrating = !0), !1;\n var shouldClear = !1,\n JSCompiler_temp;\n if ((JSCompiler_temp = 3 !== fiber.tag && 27 !== fiber.tag)) {\n if ((JSCompiler_temp = 5 === fiber.tag))\n (JSCompiler_temp = fiber.type),\n (JSCompiler_temp =\n !(\"form\" !== JSCompiler_temp && \"button\" !== JSCompiler_temp) ||\n shouldSetTextContent(fiber.type, fiber.memoizedProps));\n JSCompiler_temp = !JSCompiler_temp;\n }\n JSCompiler_temp && (shouldClear = !0);\n shouldClear && nextHydratableInstance && throwOnHydrationMismatch(fiber);\n popToNextHostParent(fiber);\n if (13 === fiber.tag) {\n fiber = fiber.memoizedState;\n fiber = null !== fiber ? fiber.dehydrated : null;\n if (!fiber) throw Error(formatProdErrorMessage(317));\n a: {\n fiber = fiber.nextSibling;\n for (shouldClear = 0; fiber; ) {\n if (8 === fiber.nodeType)\n if (((JSCompiler_temp = fiber.data), \"/$\" === JSCompiler_temp)) {\n if (0 === shouldClear) {\n nextHydratableInstance = getNextHydratable(fiber.nextSibling);\n break a;\n }\n shouldClear--;\n } else\n (\"$\" !== JSCompiler_temp &&\n \"$!\" !== JSCompiler_temp &&\n \"$?\" !== JSCompiler_temp) ||\n shouldClear++;\n fiber = fiber.nextSibling;\n }\n nextHydratableInstance = null;\n }\n } else\n nextHydratableInstance = hydrationParentFiber\n ? getNextHydratable(fiber.stateNode.nextSibling)\n : null;\n return !0;\n}\nfunction resetHydrationState() {\n nextHydratableInstance = hydrationParentFiber = null;\n isHydrating = !1;\n}\nfunction queueHydrationError(error) {\n null === hydrationErrors\n ? (hydrationErrors = [error])\n : hydrationErrors.push(error);\n}\nvar SuspenseException = Error(formatProdErrorMessage(460)),\n SuspenseyCommitException = Error(formatProdErrorMessage(474)),\n noopSuspenseyCommitThenable = { then: function () {} };\nfunction isThenableResolved(thenable) {\n thenable = thenable.status;\n return \"fulfilled\" === thenable || \"rejected\" === thenable;\n}\nfunction noop$3() {}\nfunction trackUsedThenable(thenableState, thenable, index) {\n index = thenableState[index];\n void 0 === index\n ? thenableState.push(thenable)\n : index !== thenable && (thenable.then(noop$3, noop$3), (thenable = index));\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n thenableState = thenable.reason;\n if (thenableState === SuspenseException)\n throw Error(formatProdErrorMessage(483));\n throw thenableState;\n default:\n if (\"string\" === typeof thenable.status) thenable.then(noop$3, noop$3);\n else {\n thenableState = workInProgressRoot;\n if (null !== thenableState && 100 < thenableState.shellSuspendCounter)\n throw Error(formatProdErrorMessage(482));\n thenableState = thenable;\n thenableState.status = \"pending\";\n thenableState.then(\n function (fulfilledValue) {\n if (\"pending\" === thenable.status) {\n var fulfilledThenable = thenable;\n fulfilledThenable.status = \"fulfilled\";\n fulfilledThenable.value = fulfilledValue;\n }\n },\n function (error) {\n if (\"pending\" === thenable.status) {\n var rejectedThenable = thenable;\n rejectedThenable.status = \"rejected\";\n rejectedThenable.reason = error;\n }\n }\n );\n }\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n thenableState = thenable.reason;\n if (thenableState === SuspenseException)\n throw Error(formatProdErrorMessage(483));\n throw thenableState;\n }\n suspendedThenable = thenable;\n throw SuspenseException;\n }\n}\nvar suspendedThenable = null;\nfunction getSuspendedThenable() {\n if (null === suspendedThenable) throw Error(formatProdErrorMessage(459));\n var thenable = suspendedThenable;\n suspendedThenable = null;\n return thenable;\n}\nvar thenableState$1 = null,\n thenableIndexCounter$1 = 0;\nfunction unwrapThenable(thenable) {\n var index = thenableIndexCounter$1;\n thenableIndexCounter$1 += 1;\n null === thenableState$1 && (thenableState$1 = []);\n return trackUsedThenable(thenableState$1, thenable, index);\n}\nfunction coerceRef(workInProgress, element) {\n element = element.props.ref;\n workInProgress.ref = void 0 !== element ? element : null;\n}\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n if (newChild.$$typeof === REACT_LEGACY_ELEMENT_TYPE)\n throw Error(formatProdErrorMessage(525));\n returnFiber = Object.prototype.toString.call(newChild);\n throw Error(\n formatProdErrorMessage(\n 31,\n \"[object Object]\" === returnFiber\n ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\"\n : returnFiber\n )\n );\n}\nfunction resolveLazy(lazyType) {\n var init = lazyType._init;\n return init(lazyType._payload);\n}\nfunction createChildReconciler(shouldTrackSideEffects) {\n function deleteChild(returnFiber, childToDelete) {\n if (shouldTrackSideEffects) {\n var deletions = returnFiber.deletions;\n null === deletions\n ? ((returnFiber.deletions = [childToDelete]), (returnFiber.flags |= 16))\n : deletions.push(childToDelete);\n }\n }\n function deleteRemainingChildren(returnFiber, currentFirstChild) {\n if (!shouldTrackSideEffects) return null;\n for (; null !== currentFirstChild; )\n deleteChild(returnFiber, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return null;\n }\n function mapRemainingChildren(currentFirstChild) {\n for (var existingChildren = new Map(); null !== currentFirstChild; )\n null !== currentFirstChild.key\n ? existingChildren.set(currentFirstChild.key, currentFirstChild)\n : existingChildren.set(currentFirstChild.index, currentFirstChild),\n (currentFirstChild = currentFirstChild.sibling);\n return existingChildren;\n }\n function useFiber(fiber, pendingProps) {\n fiber = createWorkInProgress(fiber, pendingProps);\n fiber.index = 0;\n fiber.sibling = null;\n return fiber;\n }\n function placeChild(newFiber, lastPlacedIndex, newIndex) {\n newFiber.index = newIndex;\n if (!shouldTrackSideEffects)\n return (newFiber.flags |= 1048576), lastPlacedIndex;\n newIndex = newFiber.alternate;\n if (null !== newIndex)\n return (\n (newIndex = newIndex.index),\n newIndex < lastPlacedIndex\n ? ((newFiber.flags |= 33554434), lastPlacedIndex)\n : newIndex\n );\n newFiber.flags |= 33554434;\n return lastPlacedIndex;\n }\n function placeSingleChild(newFiber) {\n shouldTrackSideEffects &&\n null === newFiber.alternate &&\n (newFiber.flags |= 33554434);\n return newFiber;\n }\n function updateTextNode(returnFiber, current, textContent, lanes) {\n if (null === current || 6 !== current.tag)\n return (\n (current = createFiberFromText(textContent, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, textContent);\n current.return = returnFiber;\n return current;\n }\n function updateElement(returnFiber, current, element, lanes) {\n var elementType = element.type;\n if (elementType === REACT_FRAGMENT_TYPE)\n return updateFragment(\n returnFiber,\n current,\n element.props.children,\n lanes,\n element.key\n );\n if (\n null !== current &&\n (current.elementType === elementType ||\n (\"object\" === typeof elementType &&\n null !== elementType &&\n elementType.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(elementType) === current.type))\n )\n return (\n (current = useFiber(current, element.props)),\n coerceRef(current, element),\n (current.return = returnFiber),\n current\n );\n current = createFiberFromTypeAndProps(\n element.type,\n element.key,\n element.props,\n null,\n returnFiber.mode,\n lanes\n );\n coerceRef(current, element);\n current.return = returnFiber;\n return current;\n }\n function updatePortal(returnFiber, current, portal, lanes) {\n if (\n null === current ||\n 4 !== current.tag ||\n current.stateNode.containerInfo !== portal.containerInfo ||\n current.stateNode.implementation !== portal.implementation\n )\n return (\n (current = createFiberFromPortal(portal, returnFiber.mode, lanes)),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, portal.children || []);\n current.return = returnFiber;\n return current;\n }\n function updateFragment(returnFiber, current, fragment, lanes, key) {\n if (null === current || 7 !== current.tag)\n return (\n (current = createFiberFromFragment(\n fragment,\n returnFiber.mode,\n lanes,\n key\n )),\n (current.return = returnFiber),\n current\n );\n current = useFiber(current, fragment);\n current.return = returnFiber;\n return current;\n }\n function createChild(returnFiber, newChild, lanes) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (newChild = createFiberFromText(\n \"\" + newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n lanes\n );\n case REACT_PORTAL_TYPE:\n return (\n (newChild = createFiberFromPortal(\n newChild,\n returnFiber.mode,\n lanes\n )),\n (newChild.return = returnFiber),\n newChild\n );\n case REACT_LAZY_TYPE:\n var init = newChild._init;\n newChild = init(newChild._payload);\n return createChild(returnFiber, newChild, lanes);\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (newChild = createFiberFromFragment(\n newChild,\n returnFiber.mode,\n lanes,\n null\n )),\n (newChild.return = returnFiber),\n newChild\n );\n if (\"function\" === typeof newChild.then)\n return createChild(returnFiber, unwrapThenable(newChild), lanes);\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return createChild(\n returnFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n var key = null !== oldFiber ? oldFiber.key : null;\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return null !== key\n ? null\n : updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return newChild.key === key\n ? updateElement(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_PORTAL_TYPE:\n return newChild.key === key\n ? updatePortal(returnFiber, oldFiber, newChild, lanes)\n : null;\n case REACT_LAZY_TYPE:\n return (\n (key = newChild._init),\n (newChild = key(newChild._payload)),\n updateSlot(returnFiber, oldFiber, newChild, lanes)\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return null !== key\n ? null\n : updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n if (\"function\" === typeof newChild.then)\n return updateSlot(\n returnFiber,\n oldFiber,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateSlot(\n returnFiber,\n oldFiber,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n ) {\n if (\n (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n )\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateTextNode(returnFiber, existingChildren, \"\" + newChild, lanes)\n );\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updateElement(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_PORTAL_TYPE:\n return (\n (existingChildren =\n existingChildren.get(\n null === newChild.key ? newIdx : newChild.key\n ) || null),\n updatePortal(returnFiber, existingChildren, newChild, lanes)\n );\n case REACT_LAZY_TYPE:\n var init = newChild._init;\n newChild = init(newChild._payload);\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n newChild,\n lanes\n );\n }\n if (isArrayImpl(newChild) || getIteratorFn(newChild))\n return (\n (existingChildren = existingChildren.get(newIdx) || null),\n updateFragment(returnFiber, existingChildren, newChild, lanes, null)\n );\n if (\"function\" === typeof newChild.then)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return updateFromMap(\n existingChildren,\n returnFiber,\n newIdx,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return null;\n }\n function reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null;\n null !== oldFiber && newIdx < newChildren.length;\n newIdx++\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(\n returnFiber,\n oldFiber,\n newChildren[newIdx],\n lanes\n );\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (newIdx === newChildren.length)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; newIdx < newChildren.length; newIdx++)\n (oldFiber = createChild(returnFiber, newChildren[newIdx], lanes)),\n null !== oldFiber &&\n ((currentFirstChild = placeChild(\n oldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = oldFiber)\n : (previousNewFiber.sibling = oldFiber),\n (previousNewFiber = oldFiber));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n newIdx < newChildren.length;\n newIdx++\n )\n (nextOldFiber = updateFromMap(\n oldFiber,\n returnFiber,\n newIdx,\n newChildren[newIdx],\n lanes\n )),\n null !== nextOldFiber &&\n (shouldTrackSideEffects &&\n null !== nextOldFiber.alternate &&\n oldFiber.delete(\n null === nextOldFiber.key ? newIdx : nextOldFiber.key\n ),\n (currentFirstChild = placeChild(\n nextOldFiber,\n currentFirstChild,\n newIdx\n )),\n null === previousNewFiber\n ? (resultingFirstChild = nextOldFiber)\n : (previousNewFiber.sibling = nextOldFiber),\n (previousNewFiber = nextOldFiber));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChildren,\n lanes\n ) {\n if (null == newChildren) throw Error(formatProdErrorMessage(151));\n for (\n var resultingFirstChild = null,\n previousNewFiber = null,\n oldFiber = currentFirstChild,\n newIdx = (currentFirstChild = 0),\n nextOldFiber = null,\n step = newChildren.next();\n null !== oldFiber && !step.done;\n newIdx++, step = newChildren.next()\n ) {\n oldFiber.index > newIdx\n ? ((nextOldFiber = oldFiber), (oldFiber = null))\n : (nextOldFiber = oldFiber.sibling);\n var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n if (null === newFiber) {\n null === oldFiber && (oldFiber = nextOldFiber);\n break;\n }\n shouldTrackSideEffects &&\n oldFiber &&\n null === newFiber.alternate &&\n deleteChild(returnFiber, oldFiber);\n currentFirstChild = placeChild(newFiber, currentFirstChild, newIdx);\n null === previousNewFiber\n ? (resultingFirstChild = newFiber)\n : (previousNewFiber.sibling = newFiber);\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n if (step.done)\n return (\n deleteRemainingChildren(returnFiber, oldFiber),\n isHydrating && pushTreeFork(returnFiber, newIdx),\n resultingFirstChild\n );\n if (null === oldFiber) {\n for (; !step.done; newIdx++, step = newChildren.next())\n (step = createChild(returnFiber, step.value, lanes)),\n null !== step &&\n ((currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n for (\n oldFiber = mapRemainingChildren(oldFiber);\n !step.done;\n newIdx++, step = newChildren.next()\n )\n (step = updateFromMap(oldFiber, returnFiber, newIdx, step.value, lanes)),\n null !== step &&\n (shouldTrackSideEffects &&\n null !== step.alternate &&\n oldFiber.delete(null === step.key ? newIdx : step.key),\n (currentFirstChild = placeChild(step, currentFirstChild, newIdx)),\n null === previousNewFiber\n ? (resultingFirstChild = step)\n : (previousNewFiber.sibling = step),\n (previousNewFiber = step));\n shouldTrackSideEffects &&\n oldFiber.forEach(function (child) {\n return deleteChild(returnFiber, child);\n });\n isHydrating && pushTreeFork(returnFiber, newIdx);\n return resultingFirstChild;\n }\n function reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n ) {\n \"object\" === typeof newChild &&\n null !== newChild &&\n newChild.type === REACT_FRAGMENT_TYPE &&\n null === newChild.key &&\n (newChild = newChild.props.children);\n if (\"object\" === typeof newChild && null !== newChild) {\n switch (newChild.$$typeof) {\n case REACT_ELEMENT_TYPE:\n a: {\n for (var key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key) {\n key = newChild.type;\n if (key === REACT_FRAGMENT_TYPE) {\n if (7 === currentFirstChild.tag) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(\n currentFirstChild,\n newChild.props.children\n );\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n } else if (\n currentFirstChild.elementType === key ||\n (\"object\" === typeof key &&\n null !== key &&\n key.$$typeof === REACT_LAZY_TYPE &&\n resolveLazy(key) === currentFirstChild.type)\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.props);\n coerceRef(lanes, newChild);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n }\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n } else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n newChild.type === REACT_FRAGMENT_TYPE\n ? ((lanes = createFiberFromFragment(\n newChild.props.children,\n returnFiber.mode,\n lanes,\n newChild.key\n )),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : ((lanes = createFiberFromTypeAndProps(\n newChild.type,\n newChild.key,\n newChild.props,\n null,\n returnFiber.mode,\n lanes\n )),\n coerceRef(lanes, newChild),\n (lanes.return = returnFiber),\n (returnFiber = lanes));\n }\n return placeSingleChild(returnFiber);\n case REACT_PORTAL_TYPE:\n a: {\n for (key = newChild.key; null !== currentFirstChild; ) {\n if (currentFirstChild.key === key)\n if (\n 4 === currentFirstChild.tag &&\n currentFirstChild.stateNode.containerInfo ===\n newChild.containerInfo &&\n currentFirstChild.stateNode.implementation ===\n newChild.implementation\n ) {\n deleteRemainingChildren(\n returnFiber,\n currentFirstChild.sibling\n );\n lanes = useFiber(currentFirstChild, newChild.children || []);\n lanes.return = returnFiber;\n returnFiber = lanes;\n break a;\n } else {\n deleteRemainingChildren(returnFiber, currentFirstChild);\n break;\n }\n else deleteChild(returnFiber, currentFirstChild);\n currentFirstChild = currentFirstChild.sibling;\n }\n lanes = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n lanes.return = returnFiber;\n returnFiber = lanes;\n }\n return placeSingleChild(returnFiber);\n case REACT_LAZY_TYPE:\n return (\n (key = newChild._init),\n (newChild = key(newChild._payload)),\n reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n )\n );\n }\n if (isArrayImpl(newChild))\n return reconcileChildrenArray(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n if (getIteratorFn(newChild)) {\n key = getIteratorFn(newChild);\n if (\"function\" !== typeof key) throw Error(formatProdErrorMessage(150));\n newChild = key.call(newChild);\n return reconcileChildrenIterator(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n }\n if (\"function\" === typeof newChild.then)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n unwrapThenable(newChild),\n lanes\n );\n if (newChild.$$typeof === REACT_CONTEXT_TYPE)\n return reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n readContextDuringReconciliation(returnFiber, newChild),\n lanes\n );\n throwOnInvalidObjectType(returnFiber, newChild);\n }\n return (\"string\" === typeof newChild && \"\" !== newChild) ||\n \"number\" === typeof newChild ||\n \"bigint\" === typeof newChild\n ? ((newChild = \"\" + newChild),\n null !== currentFirstChild && 6 === currentFirstChild.tag\n ? (deleteRemainingChildren(returnFiber, currentFirstChild.sibling),\n (lanes = useFiber(currentFirstChild, newChild)),\n (lanes.return = returnFiber),\n (returnFiber = lanes))\n : (deleteRemainingChildren(returnFiber, currentFirstChild),\n (lanes = createFiberFromText(newChild, returnFiber.mode, lanes)),\n (lanes.return = returnFiber),\n (returnFiber = lanes)),\n placeSingleChild(returnFiber))\n : deleteRemainingChildren(returnFiber, currentFirstChild);\n }\n return function (returnFiber, currentFirstChild, newChild, lanes) {\n try {\n thenableIndexCounter$1 = 0;\n var firstChildFiber = reconcileChildFibersImpl(\n returnFiber,\n currentFirstChild,\n newChild,\n lanes\n );\n thenableState$1 = null;\n return firstChildFiber;\n } catch (x) {\n if (x === SuspenseException) throw x;\n var fiber = createFiberImplClass(29, x, null, returnFiber.mode);\n fiber.lanes = lanes;\n fiber.return = returnFiber;\n return fiber;\n } finally {\n }\n };\n}\nvar reconcileChildFibers = createChildReconciler(!0),\n mountChildFibers = createChildReconciler(!1),\n currentTreeHiddenStackCursor = createCursor(null),\n prevEntangledRenderLanesCursor = createCursor(0);\nfunction pushHiddenContext(fiber, context) {\n fiber = entangledRenderLanes;\n push(prevEntangledRenderLanesCursor, fiber);\n push(currentTreeHiddenStackCursor, context);\n entangledRenderLanes = fiber | context.baseLanes;\n}\nfunction reuseHiddenContextOnStack() {\n push(prevEntangledRenderLanesCursor, entangledRenderLanes);\n push(currentTreeHiddenStackCursor, currentTreeHiddenStackCursor.current);\n}\nfunction popHiddenContext() {\n entangledRenderLanes = prevEntangledRenderLanesCursor.current;\n pop(currentTreeHiddenStackCursor);\n pop(prevEntangledRenderLanesCursor);\n}\nvar suspenseHandlerStackCursor = createCursor(null),\n shellBoundary = null;\nfunction pushPrimaryTreeSuspenseHandler(handler) {\n var current = handler.alternate;\n push(suspenseStackCursor, suspenseStackCursor.current & 1);\n push(suspenseHandlerStackCursor, handler);\n null === shellBoundary &&\n (null === current || null !== currentTreeHiddenStackCursor.current\n ? (shellBoundary = handler)\n : null !== current.memoizedState && (shellBoundary = handler));\n}\nfunction pushOffscreenSuspenseHandler(fiber) {\n if (22 === fiber.tag) {\n if (\n (push(suspenseStackCursor, suspenseStackCursor.current),\n push(suspenseHandlerStackCursor, fiber),\n null === shellBoundary)\n ) {\n var current = fiber.alternate;\n null !== current &&\n null !== current.memoizedState &&\n (shellBoundary = fiber);\n }\n } else reuseSuspenseHandlerOnStack(fiber);\n}\nfunction reuseSuspenseHandlerOnStack() {\n push(suspenseStackCursor, suspenseStackCursor.current);\n push(suspenseHandlerStackCursor, suspenseHandlerStackCursor.current);\n}\nfunction popSuspenseHandler(fiber) {\n pop(suspenseHandlerStackCursor);\n shellBoundary === fiber && (shellBoundary = null);\n pop(suspenseStackCursor);\n}\nvar suspenseStackCursor = createCursor(0);\nfunction findFirstSuspended(row) {\n for (var node = row; null !== node; ) {\n if (13 === node.tag) {\n var state = node.memoizedState;\n if (\n null !== state &&\n ((state = state.dehydrated),\n null === state || \"$?\" === state.data || \"$!\" === state.data)\n )\n return node;\n } else if (19 === node.tag && void 0 !== node.memoizedProps.revealOrder) {\n if (0 !== (node.flags & 128)) return node;\n } else if (null !== node.child) {\n node.child.return = node;\n node = node.child;\n continue;\n }\n if (node === row) break;\n for (; null === node.sibling; ) {\n if (null === node.return || node.return === row) return null;\n node = node.return;\n }\n node.sibling.return = node.return;\n node = node.sibling;\n }\n return null;\n}\nvar AbortControllerLocal =\n \"undefined\" !== typeof AbortController\n ? AbortController\n : function () {\n var listeners = [],\n signal = (this.signal = {\n aborted: !1,\n addEventListener: function (type, listener) {\n listeners.push(listener);\n }\n });\n this.abort = function () {\n signal.aborted = !0;\n listeners.forEach(function (listener) {\n return listener();\n });\n };\n },\n scheduleCallback$2 = Scheduler.unstable_scheduleCallback,\n NormalPriority = Scheduler.unstable_NormalPriority,\n CacheContext = {\n $$typeof: REACT_CONTEXT_TYPE,\n Consumer: null,\n Provider: null,\n _currentValue: null,\n _currentValue2: null,\n _threadCount: 0\n };\nfunction createCache() {\n return {\n controller: new AbortControllerLocal(),\n data: new Map(),\n refCount: 0\n };\n}\nfunction releaseCache(cache) {\n cache.refCount--;\n 0 === cache.refCount &&\n scheduleCallback$2(NormalPriority, function () {\n cache.controller.abort();\n });\n}\nvar currentEntangledListeners = null,\n currentEntangledPendingCount = 0,\n currentEntangledLane = 0,\n currentEntangledActionThenable = null;\nfunction entangleAsyncAction(transition, thenable) {\n if (null === currentEntangledListeners) {\n var entangledListeners = (currentEntangledListeners = []);\n currentEntangledPendingCount = 0;\n currentEntangledLane = requestTransitionLane();\n currentEntangledActionThenable = {\n status: \"pending\",\n value: void 0,\n then: function (resolve) {\n entangledListeners.push(resolve);\n }\n };\n }\n currentEntangledPendingCount++;\n thenable.then(pingEngtangledActionScope, pingEngtangledActionScope);\n return thenable;\n}\nfunction pingEngtangledActionScope() {\n if (\n 0 === --currentEntangledPendingCount &&\n null !== currentEntangledListeners\n ) {\n null !== currentEntangledActionThenable &&\n (currentEntangledActionThenable.status = \"fulfilled\");\n var listeners = currentEntangledListeners;\n currentEntangledListeners = null;\n currentEntangledLane = 0;\n currentEntangledActionThenable = null;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])();\n }\n}\nfunction chainThenableValue(thenable, result) {\n var listeners = [],\n thenableWithOverride = {\n status: \"pending\",\n value: null,\n reason: null,\n then: function (resolve) {\n listeners.push(resolve);\n }\n };\n thenable.then(\n function () {\n thenableWithOverride.status = \"fulfilled\";\n thenableWithOverride.value = result;\n for (var i = 0; i < listeners.length; i++) (0, listeners[i])(result);\n },\n function (error) {\n thenableWithOverride.status = \"rejected\";\n thenableWithOverride.reason = error;\n for (error = 0; error < listeners.length; error++)\n (0, listeners[error])(void 0);\n }\n );\n return thenableWithOverride;\n}\nvar prevOnStartTransitionFinish = ReactSharedInternals.S;\nReactSharedInternals.S = function (transition, returnValue) {\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n entangleAsyncAction(transition, returnValue);\n null !== prevOnStartTransitionFinish &&\n prevOnStartTransitionFinish(transition, returnValue);\n};\nvar resumedCache = createCursor(null);\nfunction peekCacheFromPool() {\n var cacheResumedFromPreviousRender = resumedCache.current;\n return null !== cacheResumedFromPreviousRender\n ? cacheResumedFromPreviousRender\n : workInProgressRoot.pooledCache;\n}\nfunction pushTransition(offscreenWorkInProgress, prevCachePool) {\n null === prevCachePool\n ? push(resumedCache, resumedCache.current)\n : push(resumedCache, prevCachePool.pool);\n}\nfunction getSuspendedCache() {\n var cacheFromPool = peekCacheFromPool();\n return null === cacheFromPool\n ? null\n : { parent: CacheContext._currentValue, pool: cacheFromPool };\n}\nvar renderLanes = 0,\n currentlyRenderingFiber$1 = null,\n currentHook = null,\n workInProgressHook = null,\n didScheduleRenderPhaseUpdate = !1,\n didScheduleRenderPhaseUpdateDuringThisPass = !1,\n shouldDoubleInvokeUserFnsInHooksDEV = !1,\n localIdCounter = 0,\n thenableIndexCounter = 0,\n thenableState = null,\n globalClientIdCounter = 0;\nfunction throwInvalidHookError() {\n throw Error(formatProdErrorMessage(321));\n}\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n if (null === prevDeps) return !1;\n for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++)\n if (!objectIs(nextDeps[i], prevDeps[i])) return !1;\n return !0;\n}\nfunction renderWithHooks(\n current,\n workInProgress,\n Component,\n props,\n secondArg,\n nextRenderLanes\n) {\n renderLanes = nextRenderLanes;\n currentlyRenderingFiber$1 = workInProgress;\n workInProgress.memoizedState = null;\n workInProgress.updateQueue = null;\n workInProgress.lanes = 0;\n ReactSharedInternals.H =\n null === current || null === current.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate;\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n nextRenderLanes = Component(props, secondArg);\n shouldDoubleInvokeUserFnsInHooksDEV = !1;\n didScheduleRenderPhaseUpdateDuringThisPass &&\n (nextRenderLanes = renderWithHooksAgain(\n workInProgress,\n Component,\n props,\n secondArg\n ));\n finishRenderingHooks(current);\n return nextRenderLanes;\n}\nfunction finishRenderingHooks(current) {\n ReactSharedInternals.H = ContextOnlyDispatcher;\n var didRenderTooFewHooks = null !== currentHook && null !== currentHook.next;\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber$1 = null;\n didScheduleRenderPhaseUpdate = !1;\n thenableIndexCounter = 0;\n thenableState = null;\n if (didRenderTooFewHooks) throw Error(formatProdErrorMessage(300));\n null === current ||\n didReceiveUpdate ||\n ((current = current.dependencies),\n null !== current &&\n checkIfContextChanged(current) &&\n (didReceiveUpdate = !0));\n}\nfunction renderWithHooksAgain(workInProgress, Component, props, secondArg) {\n currentlyRenderingFiber$1 = workInProgress;\n var numberOfReRenders = 0;\n do {\n didScheduleRenderPhaseUpdateDuringThisPass && (thenableState = null);\n thenableIndexCounter = 0;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n if (25 <= numberOfReRenders) throw Error(formatProdErrorMessage(301));\n numberOfReRenders += 1;\n workInProgressHook = currentHook = null;\n if (null != workInProgress.updateQueue) {\n var children = workInProgress.updateQueue;\n children.lastEffect = null;\n children.events = null;\n children.stores = null;\n null != children.memoCache && (children.memoCache.index = 0);\n }\n ReactSharedInternals.H = HooksDispatcherOnRerender;\n children = Component(props, secondArg);\n } while (didScheduleRenderPhaseUpdateDuringThisPass);\n return children;\n}\nfunction TransitionAwareHostComponent() {\n var dispatcher = ReactSharedInternals.H,\n maybeThenable = dispatcher.useState()[0];\n maybeThenable =\n \"function\" === typeof maybeThenable.then\n ? useThenable(maybeThenable)\n : maybeThenable;\n dispatcher = dispatcher.useState()[0];\n (null !== currentHook ? currentHook.memoizedState : null) !== dispatcher &&\n (currentlyRenderingFiber$1.flags |= 1024);\n return maybeThenable;\n}\nfunction checkDidRenderIdHook() {\n var didRenderIdHook = 0 !== localIdCounter;\n localIdCounter = 0;\n return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n workInProgress.updateQueue = current.updateQueue;\n workInProgress.flags &= -2053;\n current.lanes &= ~lanes;\n}\nfunction resetHooksOnUnwind(workInProgress) {\n if (didScheduleRenderPhaseUpdate) {\n for (\n workInProgress = workInProgress.memoizedState;\n null !== workInProgress;\n\n ) {\n var queue = workInProgress.queue;\n null !== queue && (queue.pending = null);\n workInProgress = workInProgress.next;\n }\n didScheduleRenderPhaseUpdate = !1;\n }\n renderLanes = 0;\n workInProgressHook = currentHook = currentlyRenderingFiber$1 = null;\n didScheduleRenderPhaseUpdateDuringThisPass = !1;\n thenableIndexCounter = localIdCounter = 0;\n thenableState = null;\n}\nfunction mountWorkInProgressHook() {\n var hook = {\n memoizedState: null,\n baseState: null,\n baseQueue: null,\n queue: null,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber$1.memoizedState = workInProgressHook = hook)\n : (workInProgressHook = workInProgressHook.next = hook);\n return workInProgressHook;\n}\nfunction updateWorkInProgressHook() {\n if (null === currentHook) {\n var nextCurrentHook = currentlyRenderingFiber$1.alternate;\n nextCurrentHook =\n null !== nextCurrentHook ? nextCurrentHook.memoizedState : null;\n } else nextCurrentHook = currentHook.next;\n var nextWorkInProgressHook =\n null === workInProgressHook\n ? currentlyRenderingFiber$1.memoizedState\n : workInProgressHook.next;\n if (null !== nextWorkInProgressHook)\n (workInProgressHook = nextWorkInProgressHook),\n (currentHook = nextCurrentHook);\n else {\n if (null === nextCurrentHook) {\n if (null === currentlyRenderingFiber$1.alternate)\n throw Error(formatProdErrorMessage(467));\n throw Error(formatProdErrorMessage(310));\n }\n currentHook = nextCurrentHook;\n nextCurrentHook = {\n memoizedState: currentHook.memoizedState,\n baseState: currentHook.baseState,\n baseQueue: currentHook.baseQueue,\n queue: currentHook.queue,\n next: null\n };\n null === workInProgressHook\n ? (currentlyRenderingFiber$1.memoizedState = workInProgressHook =\n nextCurrentHook)\n : (workInProgressHook = workInProgressHook.next = nextCurrentHook);\n }\n return workInProgressHook;\n}\nvar createFunctionComponentUpdateQueue;\ncreateFunctionComponentUpdateQueue = function () {\n return { lastEffect: null, events: null, stores: null, memoCache: null };\n};\nfunction useThenable(thenable) {\n var index = thenableIndexCounter;\n thenableIndexCounter += 1;\n null === thenableState && (thenableState = []);\n thenable = trackUsedThenable(thenableState, thenable, index);\n index = currentlyRenderingFiber$1;\n null ===\n (null === workInProgressHook\n ? index.memoizedState\n : workInProgressHook.next) &&\n ((index = index.alternate),\n (ReactSharedInternals.H =\n null === index || null === index.memoizedState\n ? HooksDispatcherOnMount\n : HooksDispatcherOnUpdate));\n return thenable;\n}\nfunction use(usable) {\n if (null !== usable && \"object\" === typeof usable) {\n if (\"function\" === typeof usable.then) return useThenable(usable);\n if (usable.$$typeof === REACT_CONTEXT_TYPE) return readContext(usable);\n }\n throw Error(formatProdErrorMessage(438, String(usable)));\n}\nfunction useMemoCache(size) {\n var memoCache = null,\n updateQueue = currentlyRenderingFiber$1.updateQueue;\n null !== updateQueue && (memoCache = updateQueue.memoCache);\n if (null == memoCache) {\n var current = currentlyRenderingFiber$1.alternate;\n null !== current &&\n ((current = current.updateQueue),\n null !== current &&\n ((current = current.memoCache),\n null != current &&\n (memoCache = {\n data: current.data.map(function (array) {\n return array.slice();\n }),\n index: 0\n })));\n }\n null == memoCache && (memoCache = { data: [], index: 0 });\n null === updateQueue &&\n ((updateQueue = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber$1.updateQueue = updateQueue));\n updateQueue.memoCache = memoCache;\n updateQueue = memoCache.data[memoCache.index];\n if (void 0 === updateQueue)\n for (\n updateQueue = memoCache.data[memoCache.index] = Array(size), current = 0;\n current < size;\n current++\n )\n updateQueue[current] = REACT_MEMO_CACHE_SENTINEL;\n memoCache.index++;\n return updateQueue;\n}\nfunction basicStateReducer(state, action) {\n return \"function\" === typeof action ? action(state) : action;\n}\nfunction updateReducer(reducer) {\n var hook = updateWorkInProgressHook();\n return updateReducerImpl(hook, currentHook, reducer);\n}\nfunction updateReducerImpl(hook, current, reducer) {\n var queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var baseQueue = hook.baseQueue,\n pendingQueue = queue.pending;\n if (null !== pendingQueue) {\n if (null !== baseQueue) {\n var baseFirst = baseQueue.next;\n baseQueue.next = pendingQueue.next;\n pendingQueue.next = baseFirst;\n }\n current.baseQueue = baseQueue = pendingQueue;\n queue.pending = null;\n }\n pendingQueue = hook.baseState;\n if (null === baseQueue) hook.memoizedState = pendingQueue;\n else {\n current = baseQueue.next;\n var newBaseQueueFirst = (baseFirst = null),\n newBaseQueueLast = null,\n update = current,\n didReadFromEntangledAsyncAction$54 = !1;\n do {\n var updateLane = update.lane & -536870913;\n if (\n updateLane !== update.lane\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n var revertLane = update.revertLane;\n if (0 === revertLane)\n null !== newBaseQueueLast &&\n (newBaseQueueLast = newBaseQueueLast.next =\n {\n lane: 0,\n revertLane: 0,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$54 = !0);\n else if ((renderLanes & revertLane) === revertLane) {\n update = update.next;\n revertLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction$54 = !0);\n continue;\n } else\n (updateLane = {\n lane: 0,\n revertLane: update.revertLane,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = updateLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = updateLane),\n (currentlyRenderingFiber$1.lanes |= revertLane),\n (workInProgressRootSkippedLanes |= revertLane);\n updateLane = update.action;\n shouldDoubleInvokeUserFnsInHooksDEV &&\n reducer(pendingQueue, updateLane);\n pendingQueue = update.hasEagerState\n ? update.eagerState\n : reducer(pendingQueue, updateLane);\n } else\n (revertLane = {\n lane: updateLane,\n revertLane: update.revertLane,\n action: update.action,\n hasEagerState: update.hasEagerState,\n eagerState: update.eagerState,\n next: null\n }),\n null === newBaseQueueLast\n ? ((newBaseQueueFirst = newBaseQueueLast = revertLane),\n (baseFirst = pendingQueue))\n : (newBaseQueueLast = newBaseQueueLast.next = revertLane),\n (currentlyRenderingFiber$1.lanes |= updateLane),\n (workInProgressRootSkippedLanes |= updateLane);\n update = update.next;\n } while (null !== update && update !== current);\n null === newBaseQueueLast\n ? (baseFirst = pendingQueue)\n : (newBaseQueueLast.next = newBaseQueueFirst);\n if (\n !objectIs(pendingQueue, hook.memoizedState) &&\n ((didReceiveUpdate = !0),\n didReadFromEntangledAsyncAction$54 &&\n ((reducer = currentEntangledActionThenable), null !== reducer))\n )\n throw reducer;\n hook.memoizedState = pendingQueue;\n hook.baseState = baseFirst;\n hook.baseQueue = newBaseQueueLast;\n queue.lastRenderedState = pendingQueue;\n }\n null === baseQueue && (queue.lanes = 0);\n return [hook.memoizedState, queue.dispatch];\n}\nfunction rerenderReducer(reducer) {\n var hook = updateWorkInProgressHook(),\n queue = hook.queue;\n if (null === queue) throw Error(formatProdErrorMessage(311));\n queue.lastRenderedReducer = reducer;\n var dispatch = queue.dispatch,\n lastRenderPhaseUpdate = queue.pending,\n newState = hook.memoizedState;\n if (null !== lastRenderPhaseUpdate) {\n queue.pending = null;\n var update = (lastRenderPhaseUpdate = lastRenderPhaseUpdate.next);\n do (newState = reducer(newState, update.action)), (update = update.next);\n while (update !== lastRenderPhaseUpdate);\n objectIs(newState, hook.memoizedState) || (didReceiveUpdate = !0);\n hook.memoizedState = newState;\n null === hook.baseQueue && (hook.baseState = newState);\n queue.lastRenderedState = newState;\n }\n return [newState, dispatch];\n}\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber$1,\n hook = updateWorkInProgressHook(),\n isHydrating$jscomp$0 = isHydrating;\n if (isHydrating$jscomp$0) {\n if (void 0 === getServerSnapshot) throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else getServerSnapshot = getSnapshot();\n var snapshotChanged = !objectIs(\n (currentHook || hook).memoizedState,\n getServerSnapshot\n );\n snapshotChanged &&\n ((hook.memoizedState = getServerSnapshot), (didReceiveUpdate = !0));\n hook = hook.queue;\n updateEffect(subscribeToStore.bind(null, fiber, hook, subscribe), [\n subscribe\n ]);\n if (\n hook.getSnapshot !== getSnapshot ||\n snapshotChanged ||\n (null !== workInProgressHook && workInProgressHook.memoizedState.tag & 1)\n ) {\n fiber.flags |= 2048;\n pushEffect(\n 9,\n updateStoreInstance.bind(\n null,\n fiber,\n hook,\n getServerSnapshot,\n getSnapshot\n ),\n { destroy: void 0 },\n null\n );\n if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n isHydrating$jscomp$0 ||\n 0 !== (renderLanes & 60) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n return getServerSnapshot;\n}\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n fiber.flags |= 16384;\n fiber = { getSnapshot: getSnapshot, value: renderedSnapshot };\n getSnapshot = currentlyRenderingFiber$1.updateQueue;\n null === getSnapshot\n ? ((getSnapshot = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber$1.updateQueue = getSnapshot),\n (getSnapshot.stores = [fiber]))\n : ((renderedSnapshot = getSnapshot.stores),\n null === renderedSnapshot\n ? (getSnapshot.stores = [fiber])\n : renderedSnapshot.push(fiber));\n}\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n inst.value = nextSnapshot;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n}\nfunction subscribeToStore(fiber, inst, subscribe) {\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceStoreRerender(fiber);\n });\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction forceStoreRerender(fiber) {\n var root = enqueueConcurrentRenderForLane(fiber, 2);\n null !== root && scheduleUpdateOnFiber(root, fiber, 2);\n}\nfunction mountStateImpl(initialState) {\n var hook = mountWorkInProgressHook();\n if (\"function\" === typeof initialState) {\n var initialStateInitializer = initialState;\n initialState = initialStateInitializer();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n initialStateInitializer();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n }\n hook.memoizedState = hook.baseState = initialState;\n hook.queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialState\n };\n return hook;\n}\nfunction updateOptimisticImpl(hook, current, passthrough, reducer) {\n hook.baseState = passthrough;\n return updateReducerImpl(\n hook,\n currentHook,\n \"function\" === typeof reducer ? reducer : basicStateReducer\n );\n}\nfunction dispatchActionState(\n fiber,\n actionQueue,\n setPendingState,\n setState,\n payload\n) {\n if (isRenderPhaseUpdate(fiber)) throw Error(formatProdErrorMessage(485));\n fiber = actionQueue.action;\n if (null !== fiber) {\n var actionNode = {\n payload: payload,\n action: fiber,\n next: null,\n isTransition: !0,\n status: \"pending\",\n value: null,\n reason: null,\n listeners: [],\n then: function (listener) {\n actionNode.listeners.push(listener);\n }\n };\n null !== ReactSharedInternals.T\n ? setPendingState(!0)\n : (actionNode.isTransition = !1);\n setState(actionNode);\n setPendingState = actionQueue.pending;\n null === setPendingState\n ? ((actionNode.next = actionQueue.pending = actionNode),\n runActionStateAction(actionQueue, actionNode))\n : ((actionNode.next = setPendingState.next),\n (actionQueue.pending = setPendingState.next = actionNode));\n }\n}\nfunction runActionStateAction(actionQueue, node) {\n var action = node.action,\n payload = node.payload,\n prevState = actionQueue.state;\n if (node.isTransition) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = action(prevState, payload),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n handleActionReturnValue(actionQueue, node, returnValue);\n } catch (error) {\n onActionError(actionQueue, node, error);\n } finally {\n ReactSharedInternals.T = prevTransition;\n }\n } else\n try {\n (prevTransition = action(prevState, payload)),\n handleActionReturnValue(actionQueue, node, prevTransition);\n } catch (error$60) {\n onActionError(actionQueue, node, error$60);\n }\n}\nfunction handleActionReturnValue(actionQueue, node, returnValue) {\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ? returnValue.then(\n function (nextState) {\n onActionSuccess(actionQueue, node, nextState);\n },\n function (error) {\n return onActionError(actionQueue, node, error);\n }\n )\n : onActionSuccess(actionQueue, node, returnValue);\n}\nfunction onActionSuccess(actionQueue, actionNode, nextState) {\n actionNode.status = \"fulfilled\";\n actionNode.value = nextState;\n notifyActionListeners(actionNode);\n actionQueue.state = nextState;\n actionNode = actionQueue.pending;\n null !== actionNode &&\n ((nextState = actionNode.next),\n nextState === actionNode\n ? (actionQueue.pending = null)\n : ((nextState = nextState.next),\n (actionNode.next = nextState),\n runActionStateAction(actionQueue, nextState)));\n}\nfunction onActionError(actionQueue, actionNode, error) {\n var last = actionQueue.pending;\n actionQueue.pending = null;\n if (null !== last) {\n last = last.next;\n do\n (actionNode.status = \"rejected\"),\n (actionNode.reason = error),\n notifyActionListeners(actionNode),\n (actionNode = actionNode.next);\n while (actionNode !== last);\n }\n actionQueue.action = null;\n}\nfunction notifyActionListeners(actionNode) {\n actionNode = actionNode.listeners;\n for (var i = 0; i < actionNode.length; i++) (0, actionNode[i])();\n}\nfunction actionStateReducer(oldState, newState) {\n return newState;\n}\nfunction mountActionState(action, initialStateProp) {\n if (isHydrating) {\n var ssrFormState = workInProgressRoot.formState;\n if (null !== ssrFormState) {\n a: {\n var JSCompiler_inline_result = currentlyRenderingFiber$1;\n if (isHydrating) {\n if (nextHydratableInstance) {\n b: {\n var JSCompiler_inline_result$jscomp$0 = nextHydratableInstance;\n for (\n var inRootOrSingleton = rootOrSingletonContext;\n 8 !== JSCompiler_inline_result$jscomp$0.nodeType;\n\n ) {\n if (!inRootOrSingleton) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n JSCompiler_inline_result$jscomp$0 = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n if (null === JSCompiler_inline_result$jscomp$0) {\n JSCompiler_inline_result$jscomp$0 = null;\n break b;\n }\n }\n inRootOrSingleton = JSCompiler_inline_result$jscomp$0.data;\n JSCompiler_inline_result$jscomp$0 =\n \"F!\" === inRootOrSingleton || \"F\" === inRootOrSingleton\n ? JSCompiler_inline_result$jscomp$0\n : null;\n }\n if (JSCompiler_inline_result$jscomp$0) {\n nextHydratableInstance = getNextHydratable(\n JSCompiler_inline_result$jscomp$0.nextSibling\n );\n JSCompiler_inline_result =\n \"F!\" === JSCompiler_inline_result$jscomp$0.data;\n break a;\n }\n }\n throwOnHydrationMismatch(JSCompiler_inline_result);\n }\n JSCompiler_inline_result = !1;\n }\n JSCompiler_inline_result && (initialStateProp = ssrFormState[0]);\n }\n }\n ssrFormState = mountWorkInProgressHook();\n ssrFormState.memoizedState = ssrFormState.baseState = initialStateProp;\n JSCompiler_inline_result = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: actionStateReducer,\n lastRenderedState: initialStateProp\n };\n ssrFormState.queue = JSCompiler_inline_result;\n ssrFormState = dispatchSetState.bind(\n null,\n currentlyRenderingFiber$1,\n JSCompiler_inline_result\n );\n JSCompiler_inline_result.dispatch = ssrFormState;\n JSCompiler_inline_result = mountStateImpl(!1);\n inRootOrSingleton = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber$1,\n !1,\n JSCompiler_inline_result.queue\n );\n JSCompiler_inline_result = mountWorkInProgressHook();\n JSCompiler_inline_result$jscomp$0 = {\n state: initialStateProp,\n dispatch: null,\n action: action,\n pending: null\n };\n JSCompiler_inline_result.queue = JSCompiler_inline_result$jscomp$0;\n ssrFormState = dispatchActionState.bind(\n null,\n currentlyRenderingFiber$1,\n JSCompiler_inline_result$jscomp$0,\n inRootOrSingleton,\n ssrFormState\n );\n JSCompiler_inline_result$jscomp$0.dispatch = ssrFormState;\n JSCompiler_inline_result.memoizedState = action;\n return [initialStateProp, ssrFormState, !1];\n}\nfunction updateActionState(action) {\n var stateHook = updateWorkInProgressHook();\n return updateActionStateImpl(stateHook, currentHook, action);\n}\nfunction updateActionStateImpl(stateHook, currentStateHook, action) {\n currentStateHook = updateReducerImpl(\n stateHook,\n currentStateHook,\n actionStateReducer\n )[0];\n stateHook = updateReducer(basicStateReducer)[0];\n currentStateHook =\n \"object\" === typeof currentStateHook &&\n null !== currentStateHook &&\n \"function\" === typeof currentStateHook.then\n ? useThenable(currentStateHook)\n : currentStateHook;\n var actionQueueHook = updateWorkInProgressHook(),\n actionQueue = actionQueueHook.queue,\n dispatch = actionQueue.dispatch;\n action !== actionQueueHook.memoizedState &&\n ((currentlyRenderingFiber$1.flags |= 2048),\n pushEffect(\n 9,\n actionStateActionEffect.bind(null, actionQueue, action),\n { destroy: void 0 },\n null\n ));\n return [currentStateHook, dispatch, stateHook];\n}\nfunction actionStateActionEffect(actionQueue, action) {\n actionQueue.action = action;\n}\nfunction rerenderActionState(action) {\n var stateHook = updateWorkInProgressHook(),\n currentStateHook = currentHook;\n if (null !== currentStateHook)\n return updateActionStateImpl(stateHook, currentStateHook, action);\n updateWorkInProgressHook();\n stateHook = stateHook.memoizedState;\n currentStateHook = updateWorkInProgressHook();\n var dispatch = currentStateHook.queue.dispatch;\n currentStateHook.memoizedState = action;\n return [stateHook, dispatch, !1];\n}\nfunction pushEffect(tag, create, inst, deps) {\n tag = { tag: tag, create: create, inst: inst, deps: deps, next: null };\n create = currentlyRenderingFiber$1.updateQueue;\n null === create &&\n ((create = createFunctionComponentUpdateQueue()),\n (currentlyRenderingFiber$1.updateQueue = create));\n inst = create.lastEffect;\n null === inst\n ? (create.lastEffect = tag.next = tag)\n : ((deps = inst.next),\n (inst.next = tag),\n (tag.next = deps),\n (create.lastEffect = tag));\n return tag;\n}\nfunction updateRef() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = mountWorkInProgressHook();\n currentlyRenderingFiber$1.flags |= fiberFlags;\n hook.memoizedState = pushEffect(\n 1 | hookFlags,\n create,\n { destroy: void 0 },\n void 0 === deps ? null : deps\n );\n}\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var inst = hook.memoizedState.inst;\n null !== currentHook &&\n null !== deps &&\n areHookInputsEqual(deps, currentHook.memoizedState.deps)\n ? (hook.memoizedState = pushEffect(hookFlags, create, inst, deps))\n : ((currentlyRenderingFiber$1.flags |= fiberFlags),\n (hook.memoizedState = pushEffect(1 | hookFlags, create, inst, deps)));\n}\nfunction mountEffect(create, deps) {\n mountEffectImpl(8390656, 8, create, deps);\n}\nfunction updateEffect(create, deps) {\n updateEffectImpl(2048, 8, create, deps);\n}\nfunction updateInsertionEffect(create, deps) {\n return updateEffectImpl(4, 2, create, deps);\n}\nfunction updateLayoutEffect(create, deps) {\n return updateEffectImpl(4, 4, create, deps);\n}\nfunction imperativeHandleEffect(create, ref) {\n if (\"function\" === typeof ref) {\n create = create();\n var refCleanup = ref(create);\n return function () {\n \"function\" === typeof refCleanup ? refCleanup() : ref(null);\n };\n }\n if (null !== ref && void 0 !== ref)\n return (\n (create = create()),\n (ref.current = create),\n function () {\n ref.current = null;\n }\n );\n}\nfunction updateImperativeHandle(ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n updateEffectImpl(4, 4, imperativeHandleEffect.bind(null, create, ref), deps);\n}\nfunction mountDebugValue() {}\nfunction updateCallback(callback, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n hook.memoizedState = [callback, deps];\n return callback;\n}\nfunction updateMemo(nextCreate, deps) {\n var hook = updateWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var prevState = hook.memoizedState;\n if (null !== deps && areHookInputsEqual(deps, prevState[1]))\n return prevState[0];\n prevState = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [prevState, deps];\n return prevState;\n}\nfunction mountDeferredValueImpl(hook, value, initialValue) {\n if (void 0 === initialValue || 0 !== (renderLanes & 1073741824))\n return (hook.memoizedState = value);\n hook.memoizedState = initialValue;\n hook = requestDeferredLane();\n currentlyRenderingFiber$1.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return initialValue;\n}\nfunction updateDeferredValueImpl(hook, prevValue, value, initialValue) {\n if (objectIs(value, prevValue)) return value;\n if (null !== currentTreeHiddenStackCursor.current)\n return (\n (hook = mountDeferredValueImpl(hook, value, initialValue)),\n objectIs(hook, prevValue) || (didReceiveUpdate = !0),\n hook\n );\n if (0 === (renderLanes & 42))\n return (didReceiveUpdate = !0), (hook.memoizedState = value);\n hook = requestDeferredLane();\n currentlyRenderingFiber$1.lanes |= hook;\n workInProgressRootSkippedLanes |= hook;\n return prevValue;\n}\nfunction startTransition(fiber, queue, pendingState, finishedState, callback) {\n var previousPriority = ReactDOMSharedInternals.p;\n ReactDOMSharedInternals.p =\n 0 !== previousPriority && 8 > previousPriority ? previousPriority : 8;\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n dispatchOptimisticSetState(fiber, !1, queue, pendingState);\n try {\n var returnValue = callback(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n if (\n null !== returnValue &&\n \"object\" === typeof returnValue &&\n \"function\" === typeof returnValue.then\n ) {\n var thenableForFinishedState = chainThenableValue(\n returnValue,\n finishedState\n );\n dispatchSetStateInternal(\n fiber,\n queue,\n thenableForFinishedState,\n requestUpdateLane(fiber)\n );\n } else\n dispatchSetStateInternal(\n fiber,\n queue,\n finishedState,\n requestUpdateLane(fiber)\n );\n } catch (error) {\n dispatchSetStateInternal(\n fiber,\n queue,\n { then: function () {}, status: \"rejected\", reason: error },\n requestUpdateLane()\n );\n } finally {\n (ReactDOMSharedInternals.p = previousPriority),\n (ReactSharedInternals.T = prevTransition);\n }\n}\nfunction noop$2() {}\nfunction startHostTransition(formFiber, pendingState, action, formData) {\n if (5 !== formFiber.tag) throw Error(formatProdErrorMessage(476));\n var queue = ensureFormComponentIsStateful(formFiber).queue;\n startTransition(\n formFiber,\n queue,\n pendingState,\n sharedNotPendingObject,\n null === action\n ? noop$2\n : function () {\n requestFormReset$1(formFiber);\n return action(formData);\n }\n );\n}\nfunction ensureFormComponentIsStateful(formFiber) {\n var existingStateHook = formFiber.memoizedState;\n if (null !== existingStateHook) return existingStateHook;\n existingStateHook = {\n memoizedState: sharedNotPendingObject,\n baseState: sharedNotPendingObject,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: sharedNotPendingObject\n },\n next: null\n };\n var initialResetState = {};\n existingStateHook.next = {\n memoizedState: initialResetState,\n baseState: initialResetState,\n baseQueue: null,\n queue: {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: basicStateReducer,\n lastRenderedState: initialResetState\n },\n next: null\n };\n formFiber.memoizedState = existingStateHook;\n formFiber = formFiber.alternate;\n null !== formFiber && (formFiber.memoizedState = existingStateHook);\n return existingStateHook;\n}\nfunction requestFormReset$1(formFiber) {\n var resetStateQueue = ensureFormComponentIsStateful(formFiber).next.queue;\n dispatchSetStateInternal(formFiber, resetStateQueue, {}, requestUpdateLane());\n}\nfunction useHostTransitionStatus() {\n return readContext(HostTransitionContext);\n}\nfunction updateId() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction updateRefresh() {\n return updateWorkInProgressHook().memoizedState;\n}\nfunction refreshCache(fiber) {\n for (var provider = fiber.return; null !== provider; ) {\n switch (provider.tag) {\n case 24:\n case 3:\n var lane = requestUpdateLane();\n fiber = createUpdate(lane);\n var root$63 = enqueueUpdate(provider, fiber, lane);\n null !== root$63 &&\n (scheduleUpdateOnFiber(root$63, provider, lane),\n entangleTransitions(root$63, provider, lane));\n provider = { cache: createCache() };\n fiber.payload = provider;\n return;\n }\n provider = provider.return;\n }\n}\nfunction dispatchReducerAction(fiber, queue, action) {\n var lane = requestUpdateLane();\n action = {\n lane: lane,\n revertLane: 0,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n isRenderPhaseUpdate(fiber)\n ? enqueueRenderPhaseUpdate(queue, action)\n : ((action = enqueueConcurrentHookUpdate(fiber, queue, action, lane)),\n null !== action &&\n (scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane)));\n}\nfunction dispatchSetState(fiber, queue, action) {\n var lane = requestUpdateLane();\n dispatchSetStateInternal(fiber, queue, action, lane);\n}\nfunction dispatchSetStateInternal(fiber, queue, action, lane) {\n var update = {\n lane: lane,\n revertLane: 0,\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) enqueueRenderPhaseUpdate(queue, update);\n else {\n var alternate = fiber.alternate;\n if (\n 0 === fiber.lanes &&\n (null === alternate || 0 === alternate.lanes) &&\n ((alternate = queue.lastRenderedReducer), null !== alternate)\n )\n try {\n var currentState = queue.lastRenderedState,\n eagerState = alternate(currentState, action);\n update.hasEagerState = !0;\n update.eagerState = eagerState;\n if (objectIs(eagerState, currentState))\n return (\n enqueueUpdate$1(fiber, queue, update, 0),\n null === workInProgressRoot && finishQueueingConcurrentUpdates(),\n !1\n );\n } catch (error) {\n } finally {\n }\n action = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n if (null !== action)\n return (\n scheduleUpdateOnFiber(action, fiber, lane),\n entangleTransitionUpdate(action, queue, lane),\n !0\n );\n }\n return !1;\n}\nfunction dispatchOptimisticSetState(fiber, throwIfDuringRender, queue, action) {\n action = {\n lane: 2,\n revertLane: requestTransitionLane(),\n action: action,\n hasEagerState: !1,\n eagerState: null,\n next: null\n };\n if (isRenderPhaseUpdate(fiber)) {\n if (throwIfDuringRender) throw Error(formatProdErrorMessage(479));\n } else\n (throwIfDuringRender = enqueueConcurrentHookUpdate(\n fiber,\n queue,\n action,\n 2\n )),\n null !== throwIfDuringRender &&\n scheduleUpdateOnFiber(throwIfDuringRender, fiber, 2);\n}\nfunction isRenderPhaseUpdate(fiber) {\n var alternate = fiber.alternate;\n return (\n fiber === currentlyRenderingFiber$1 ||\n (null !== alternate && alternate === currentlyRenderingFiber$1)\n );\n}\nfunction enqueueRenderPhaseUpdate(queue, update) {\n didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate =\n !0;\n var pending = queue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n queue.pending = update;\n}\nfunction entangleTransitionUpdate(root, queue, lane) {\n if (0 !== (lane & 4194176)) {\n var queueLanes = queue.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n queue.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nvar ContextOnlyDispatcher = {\n readContext: readContext,\n use: use,\n useCallback: throwInvalidHookError,\n useContext: throwInvalidHookError,\n useEffect: throwInvalidHookError,\n useImperativeHandle: throwInvalidHookError,\n useLayoutEffect: throwInvalidHookError,\n useInsertionEffect: throwInvalidHookError,\n useMemo: throwInvalidHookError,\n useReducer: throwInvalidHookError,\n useRef: throwInvalidHookError,\n useState: throwInvalidHookError,\n useDebugValue: throwInvalidHookError,\n useDeferredValue: throwInvalidHookError,\n useTransition: throwInvalidHookError,\n useSyncExternalStore: throwInvalidHookError,\n useId: throwInvalidHookError\n};\nContextOnlyDispatcher.useCacheRefresh = throwInvalidHookError;\nContextOnlyDispatcher.useMemoCache = throwInvalidHookError;\nContextOnlyDispatcher.useHostTransitionStatus = throwInvalidHookError;\nContextOnlyDispatcher.useFormState = throwInvalidHookError;\nContextOnlyDispatcher.useActionState = throwInvalidHookError;\nContextOnlyDispatcher.useOptimistic = throwInvalidHookError;\nvar HooksDispatcherOnMount = {\n readContext: readContext,\n use: use,\n useCallback: function (callback, deps) {\n mountWorkInProgressHook().memoizedState = [\n callback,\n void 0 === deps ? null : deps\n ];\n return callback;\n },\n useContext: readContext,\n useEffect: mountEffect,\n useImperativeHandle: function (ref, create, deps) {\n deps = null !== deps && void 0 !== deps ? deps.concat([ref]) : null;\n mountEffectImpl(\n 4194308,\n 4,\n imperativeHandleEffect.bind(null, create, ref),\n deps\n );\n },\n useLayoutEffect: function (create, deps) {\n return mountEffectImpl(4194308, 4, create, deps);\n },\n useInsertionEffect: function (create, deps) {\n mountEffectImpl(4, 2, create, deps);\n },\n useMemo: function (nextCreate, deps) {\n var hook = mountWorkInProgressHook();\n deps = void 0 === deps ? null : deps;\n var nextValue = nextCreate();\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n nextCreate();\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n hook.memoizedState = [nextValue, deps];\n return nextValue;\n },\n useReducer: function (reducer, initialArg, init) {\n var hook = mountWorkInProgressHook();\n if (void 0 !== init) {\n var initialState = init(initialArg);\n if (shouldDoubleInvokeUserFnsInHooksDEV) {\n setIsStrictModeForDevtools(!0);\n try {\n init(initialArg);\n } finally {\n setIsStrictModeForDevtools(!1);\n }\n }\n } else initialState = initialArg;\n hook.memoizedState = hook.baseState = initialState;\n reducer = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: reducer,\n lastRenderedState: initialState\n };\n hook.queue = reducer;\n reducer = reducer.dispatch = dispatchReducerAction.bind(\n null,\n currentlyRenderingFiber$1,\n reducer\n );\n return [hook.memoizedState, reducer];\n },\n useRef: function (initialValue) {\n var hook = mountWorkInProgressHook();\n initialValue = { current: initialValue };\n return (hook.memoizedState = initialValue);\n },\n useState: function (initialState) {\n initialState = mountStateImpl(initialState);\n var queue = initialState.queue,\n dispatch = dispatchSetState.bind(null, currentlyRenderingFiber$1, queue);\n queue.dispatch = dispatch;\n return [initialState.memoizedState, dispatch];\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = mountWorkInProgressHook();\n return mountDeferredValueImpl(hook, value, initialValue);\n },\n useTransition: function () {\n var stateHook = mountStateImpl(!1);\n stateHook = startTransition.bind(\n null,\n currentlyRenderingFiber$1,\n stateHook.queue,\n !0,\n !1\n );\n mountWorkInProgressHook().memoizedState = stateHook;\n return [!1, stateHook];\n },\n useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n var fiber = currentlyRenderingFiber$1,\n hook = mountWorkInProgressHook();\n if (isHydrating) {\n if (void 0 === getServerSnapshot)\n throw Error(formatProdErrorMessage(407));\n getServerSnapshot = getServerSnapshot();\n } else {\n getServerSnapshot = getSnapshot();\n if (null === workInProgressRoot) throw Error(formatProdErrorMessage(349));\n 0 !== (workInProgressRootRenderLanes & 60) ||\n pushStoreConsistencyCheck(fiber, getSnapshot, getServerSnapshot);\n }\n hook.memoizedState = getServerSnapshot;\n var inst = { value: getServerSnapshot, getSnapshot: getSnapshot };\n hook.queue = inst;\n mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [\n subscribe\n ]);\n fiber.flags |= 2048;\n pushEffect(\n 9,\n updateStoreInstance.bind(\n null,\n fiber,\n inst,\n getServerSnapshot,\n getSnapshot\n ),\n { destroy: void 0 },\n null\n );\n return getServerSnapshot;\n },\n useId: function () {\n var hook = mountWorkInProgressHook(),\n identifierPrefix = workInProgressRoot.identifierPrefix;\n if (isHydrating) {\n var JSCompiler_inline_result = treeContextOverflow;\n var idWithLeadingBit = treeContextId;\n JSCompiler_inline_result =\n (\n idWithLeadingBit & ~(1 << (32 - clz32(idWithLeadingBit) - 1))\n ).toString(32) + JSCompiler_inline_result;\n identifierPrefix =\n \":\" + identifierPrefix + \"R\" + JSCompiler_inline_result;\n JSCompiler_inline_result = localIdCounter++;\n 0 < JSCompiler_inline_result &&\n (identifierPrefix += \"H\" + JSCompiler_inline_result.toString(32));\n identifierPrefix += \":\";\n } else\n (JSCompiler_inline_result = globalClientIdCounter++),\n (identifierPrefix =\n \":\" +\n identifierPrefix +\n \"r\" +\n JSCompiler_inline_result.toString(32) +\n \":\");\n return (hook.memoizedState = identifierPrefix);\n },\n useCacheRefresh: function () {\n return (mountWorkInProgressHook().memoizedState = refreshCache.bind(\n null,\n currentlyRenderingFiber$1\n ));\n }\n};\nHooksDispatcherOnMount.useMemoCache = useMemoCache;\nHooksDispatcherOnMount.useHostTransitionStatus = useHostTransitionStatus;\nHooksDispatcherOnMount.useFormState = mountActionState;\nHooksDispatcherOnMount.useActionState = mountActionState;\nHooksDispatcherOnMount.useOptimistic = function (passthrough) {\n var hook = mountWorkInProgressHook();\n hook.memoizedState = hook.baseState = passthrough;\n var queue = {\n pending: null,\n lanes: 0,\n dispatch: null,\n lastRenderedReducer: null,\n lastRenderedState: null\n };\n hook.queue = queue;\n hook = dispatchOptimisticSetState.bind(\n null,\n currentlyRenderingFiber$1,\n !0,\n queue\n );\n queue.dispatch = hook;\n return [passthrough, hook];\n};\nvar HooksDispatcherOnUpdate = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: updateReducer,\n useRef: updateRef,\n useState: function () {\n return updateReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = updateReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId\n};\nHooksDispatcherOnUpdate.useCacheRefresh = updateRefresh;\nHooksDispatcherOnUpdate.useMemoCache = useMemoCache;\nHooksDispatcherOnUpdate.useHostTransitionStatus = useHostTransitionStatus;\nHooksDispatcherOnUpdate.useFormState = updateActionState;\nHooksDispatcherOnUpdate.useActionState = updateActionState;\nHooksDispatcherOnUpdate.useOptimistic = function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n};\nvar HooksDispatcherOnRerender = {\n readContext: readContext,\n use: use,\n useCallback: updateCallback,\n useContext: readContext,\n useEffect: updateEffect,\n useImperativeHandle: updateImperativeHandle,\n useInsertionEffect: updateInsertionEffect,\n useLayoutEffect: updateLayoutEffect,\n useMemo: updateMemo,\n useReducer: rerenderReducer,\n useRef: updateRef,\n useState: function () {\n return rerenderReducer(basicStateReducer);\n },\n useDebugValue: mountDebugValue,\n useDeferredValue: function (value, initialValue) {\n var hook = updateWorkInProgressHook();\n return null === currentHook\n ? mountDeferredValueImpl(hook, value, initialValue)\n : updateDeferredValueImpl(\n hook,\n currentHook.memoizedState,\n value,\n initialValue\n );\n },\n useTransition: function () {\n var booleanOrThenable = rerenderReducer(basicStateReducer)[0],\n start = updateWorkInProgressHook().memoizedState;\n return [\n \"boolean\" === typeof booleanOrThenable\n ? booleanOrThenable\n : useThenable(booleanOrThenable),\n start\n ];\n },\n useSyncExternalStore: updateSyncExternalStore,\n useId: updateId\n};\nHooksDispatcherOnRerender.useCacheRefresh = updateRefresh;\nHooksDispatcherOnRerender.useMemoCache = useMemoCache;\nHooksDispatcherOnRerender.useHostTransitionStatus = useHostTransitionStatus;\nHooksDispatcherOnRerender.useFormState = rerenderActionState;\nHooksDispatcherOnRerender.useActionState = rerenderActionState;\nHooksDispatcherOnRerender.useOptimistic = function (passthrough, reducer) {\n var hook = updateWorkInProgressHook();\n if (null !== currentHook)\n return updateOptimisticImpl(hook, currentHook, passthrough, reducer);\n hook.baseState = passthrough;\n return [passthrough, hook.queue.dispatch];\n};\nfunction applyDerivedStateFromProps(\n workInProgress,\n ctor,\n getDerivedStateFromProps,\n nextProps\n) {\n ctor = workInProgress.memoizedState;\n getDerivedStateFromProps = getDerivedStateFromProps(nextProps, ctor);\n getDerivedStateFromProps =\n null === getDerivedStateFromProps || void 0 === getDerivedStateFromProps\n ? ctor\n : assign({}, ctor, getDerivedStateFromProps);\n workInProgress.memoizedState = getDerivedStateFromProps;\n 0 === workInProgress.lanes &&\n (workInProgress.updateQueue.baseState = getDerivedStateFromProps);\n}\nvar classComponentUpdater = {\n isMounted: function (component) {\n return (component = component._reactInternals)\n ? getNearestMountedFiber(component) === component\n : !1;\n },\n enqueueSetState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueReplaceState: function (inst, payload, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 1;\n update.payload = payload;\n void 0 !== callback && null !== callback && (update.callback = callback);\n payload = enqueueUpdate(inst, update, lane);\n null !== payload &&\n (scheduleUpdateOnFiber(payload, inst, lane),\n entangleTransitions(payload, inst, lane));\n },\n enqueueForceUpdate: function (inst, callback) {\n inst = inst._reactInternals;\n var lane = requestUpdateLane(),\n update = createUpdate(lane);\n update.tag = 2;\n void 0 !== callback && null !== callback && (update.callback = callback);\n callback = enqueueUpdate(inst, update, lane);\n null !== callback &&\n (scheduleUpdateOnFiber(callback, inst, lane),\n entangleTransitions(callback, inst, lane));\n }\n};\nfunction checkShouldComponentUpdate(\n workInProgress,\n ctor,\n oldProps,\n newProps,\n oldState,\n newState,\n nextContext\n) {\n workInProgress = workInProgress.stateNode;\n return \"function\" === typeof workInProgress.shouldComponentUpdate\n ? workInProgress.shouldComponentUpdate(newProps, newState, nextContext)\n : ctor.prototype && ctor.prototype.isPureReactComponent\n ? !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState)\n : !0;\n}\nfunction callComponentWillReceiveProps(\n workInProgress,\n instance,\n newProps,\n nextContext\n) {\n workInProgress = instance.state;\n \"function\" === typeof instance.componentWillReceiveProps &&\n instance.componentWillReceiveProps(newProps, nextContext);\n \"function\" === typeof instance.UNSAFE_componentWillReceiveProps &&\n instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n instance.state !== workInProgress &&\n classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n}\nfunction resolveClassComponentProps(Component, baseProps) {\n var newProps = baseProps;\n if (\"ref\" in baseProps) {\n newProps = {};\n for (var propName in baseProps)\n \"ref\" !== propName && (newProps[propName] = baseProps[propName]);\n }\n if ((Component = Component.defaultProps)) {\n newProps === baseProps && (newProps = assign({}, newProps));\n for (var propName$67 in Component)\n void 0 === newProps[propName$67] &&\n (newProps[propName$67] = Component[propName$67]);\n }\n return newProps;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n };\nfunction defaultOnUncaughtError(error) {\n reportGlobalError(error);\n}\nfunction defaultOnCaughtError(error) {\n console.error(error);\n}\nfunction defaultOnRecoverableError(error) {\n reportGlobalError(error);\n}\nfunction logUncaughtError(root, errorInfo) {\n try {\n var onUncaughtError = root.onUncaughtError;\n onUncaughtError(errorInfo.value, { componentStack: errorInfo.stack });\n } catch (e$68) {\n setTimeout(function () {\n throw e$68;\n });\n }\n}\nfunction logCaughtError(root, boundary, errorInfo) {\n try {\n var onCaughtError = root.onCaughtError;\n onCaughtError(errorInfo.value, {\n componentStack: errorInfo.stack,\n errorBoundary: 1 === boundary.tag ? boundary.stateNode : null\n });\n } catch (e$69) {\n setTimeout(function () {\n throw e$69;\n });\n }\n}\nfunction createRootErrorUpdate(root, errorInfo, lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n lane.payload = { element: null };\n lane.callback = function () {\n logUncaughtError(root, errorInfo);\n };\n return lane;\n}\nfunction createClassErrorUpdate(lane) {\n lane = createUpdate(lane);\n lane.tag = 3;\n return lane;\n}\nfunction initializeClassErrorUpdate(update, root, fiber, errorInfo) {\n var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n if (\"function\" === typeof getDerivedStateFromError) {\n var error = errorInfo.value;\n update.payload = function () {\n return getDerivedStateFromError(error);\n };\n update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n };\n }\n var inst = fiber.stateNode;\n null !== inst &&\n \"function\" === typeof inst.componentDidCatch &&\n (update.callback = function () {\n logCaughtError(root, fiber, errorInfo);\n \"function\" !== typeof getDerivedStateFromError &&\n (null === legacyErrorBoundariesThatAlreadyFailed\n ? (legacyErrorBoundariesThatAlreadyFailed = new Set([this]))\n : legacyErrorBoundariesThatAlreadyFailed.add(this));\n var stack = errorInfo.stack;\n this.componentDidCatch(errorInfo.value, {\n componentStack: null !== stack ? stack : \"\"\n });\n });\n}\nfunction throwException(\n root,\n returnFiber,\n sourceFiber,\n value,\n rootRenderLanes\n) {\n sourceFiber.flags |= 32768;\n if (\n null !== value &&\n \"object\" === typeof value &&\n \"function\" === typeof value.then\n ) {\n returnFiber = sourceFiber.alternate;\n null !== returnFiber &&\n propagateParentContextChanges(\n returnFiber,\n sourceFiber,\n rootRenderLanes,\n !0\n );\n sourceFiber = suspenseHandlerStackCursor.current;\n if (null !== sourceFiber) {\n switch (sourceFiber.tag) {\n case 13:\n return (\n null === shellBoundary\n ? renderDidSuspendDelayIfPossible()\n : null === sourceFiber.alternate &&\n 0 === workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 3),\n (sourceFiber.flags &= -257),\n (sourceFiber.flags |= 65536),\n (sourceFiber.lanes = rootRenderLanes),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? (sourceFiber.updateQueue = new Set([value]))\n : returnFiber.add(value),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n case 22:\n return (\n (sourceFiber.flags |= 65536),\n value === noopSuspenseyCommitThenable\n ? (sourceFiber.flags |= 16384)\n : ((returnFiber = sourceFiber.updateQueue),\n null === returnFiber\n ? ((returnFiber = {\n transitions: null,\n markerInstances: null,\n retryQueue: new Set([value])\n }),\n (sourceFiber.updateQueue = returnFiber))\n : ((sourceFiber = returnFiber.retryQueue),\n null === sourceFiber\n ? (returnFiber.retryQueue = new Set([value]))\n : sourceFiber.add(value)),\n attachPingListener(root, value, rootRenderLanes)),\n !1\n );\n }\n throw Error(formatProdErrorMessage(435, sourceFiber.tag));\n }\n attachPingListener(root, value, rootRenderLanes);\n renderDidSuspendDelayIfPossible();\n return !1;\n }\n if (isHydrating)\n return (\n (returnFiber = suspenseHandlerStackCursor.current),\n null !== returnFiber\n ? (0 === (returnFiber.flags & 65536) && (returnFiber.flags |= 256),\n (returnFiber.flags |= 65536),\n (returnFiber.lanes = rootRenderLanes),\n value !== HydrationMismatchException &&\n ((root = Error(formatProdErrorMessage(422), { cause: value })),\n queueHydrationError(createCapturedValueAtFiber(root, sourceFiber))))\n : (value !== HydrationMismatchException &&\n ((returnFiber = Error(formatProdErrorMessage(423), {\n cause: value\n })),\n queueHydrationError(\n createCapturedValueAtFiber(returnFiber, sourceFiber)\n )),\n (root = root.current.alternate),\n (root.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (root.lanes |= rootRenderLanes),\n (value = createCapturedValueAtFiber(value, sourceFiber)),\n (rootRenderLanes = createRootErrorUpdate(\n root.stateNode,\n value,\n rootRenderLanes\n )),\n enqueueCapturedUpdate(root, rootRenderLanes),\n 4 !== workInProgressRootExitStatus &&\n (workInProgressRootExitStatus = 2)),\n !1\n );\n var wrapperError = Error(formatProdErrorMessage(520), { cause: value });\n wrapperError = createCapturedValueAtFiber(wrapperError, sourceFiber);\n null === workInProgressRootConcurrentErrors\n ? (workInProgressRootConcurrentErrors = [wrapperError])\n : workInProgressRootConcurrentErrors.push(wrapperError);\n 4 !== workInProgressRootExitStatus && (workInProgressRootExitStatus = 2);\n if (null === returnFiber) return !0;\n value = createCapturedValueAtFiber(value, sourceFiber);\n sourceFiber = returnFiber;\n do {\n switch (sourceFiber.tag) {\n case 3:\n return (\n (sourceFiber.flags |= 65536),\n (root = rootRenderLanes & -rootRenderLanes),\n (sourceFiber.lanes |= root),\n (root = createRootErrorUpdate(sourceFiber.stateNode, value, root)),\n enqueueCapturedUpdate(sourceFiber, root),\n !1\n );\n case 1:\n if (\n ((returnFiber = sourceFiber.type),\n (wrapperError = sourceFiber.stateNode),\n 0 === (sourceFiber.flags & 128) &&\n (\"function\" === typeof returnFiber.getDerivedStateFromError ||\n (null !== wrapperError &&\n \"function\" === typeof wrapperError.componentDidCatch &&\n (null === legacyErrorBoundariesThatAlreadyFailed ||\n !legacyErrorBoundariesThatAlreadyFailed.has(wrapperError)))))\n )\n return (\n (sourceFiber.flags |= 65536),\n (rootRenderLanes &= -rootRenderLanes),\n (sourceFiber.lanes |= rootRenderLanes),\n (rootRenderLanes = createClassErrorUpdate(rootRenderLanes)),\n initializeClassErrorUpdate(\n rootRenderLanes,\n root,\n sourceFiber,\n value\n ),\n enqueueCapturedUpdate(sourceFiber, rootRenderLanes),\n !1\n );\n }\n sourceFiber = sourceFiber.return;\n } while (null !== sourceFiber);\n return !1;\n}\nvar SelectiveHydrationException = Error(formatProdErrorMessage(461)),\n didReceiveUpdate = !1;\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n workInProgress.child =\n null === current\n ? mountChildFibers(workInProgress, null, nextChildren, renderLanes)\n : reconcileChildFibers(\n workInProgress,\n current.child,\n nextChildren,\n renderLanes\n );\n}\nfunction updateForwardRef(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n Component = Component.render;\n var ref = workInProgress.ref;\n if (\"ref\" in nextProps) {\n var propsWithoutRef = {};\n for (var key in nextProps)\n \"ref\" !== key && (propsWithoutRef[key] = nextProps[key]);\n } else propsWithoutRef = nextProps;\n prepareToReadContext(workInProgress);\n nextProps = renderWithHooks(\n current,\n workInProgress,\n Component,\n propsWithoutRef,\n ref,\n renderLanes\n );\n key = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && key && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null === current) {\n var type = Component.type;\n if (\n \"function\" === typeof type &&\n !shouldConstruct(type) &&\n void 0 === type.defaultProps &&\n null === Component.compare\n )\n return (\n (workInProgress.tag = 15),\n (workInProgress.type = type),\n updateSimpleMemoComponent(\n current,\n workInProgress,\n type,\n nextProps,\n renderLanes\n )\n );\n current = createFiberFromTypeAndProps(\n Component.type,\n null,\n nextProps,\n workInProgress,\n workInProgress.mode,\n renderLanes\n );\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n }\n type = current.child;\n if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n var prevProps = type.memoizedProps;\n Component = Component.compare;\n Component = null !== Component ? Component : shallowEqual;\n if (Component(prevProps, nextProps) && current.ref === workInProgress.ref)\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n }\n workInProgress.flags |= 1;\n current = createWorkInProgress(type, nextProps);\n current.ref = workInProgress.ref;\n current.return = workInProgress;\n return (workInProgress.child = current);\n}\nfunction updateSimpleMemoComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n if (null !== current) {\n var prevProps = current.memoizedProps;\n if (\n shallowEqual(prevProps, nextProps) &&\n current.ref === workInProgress.ref\n )\n if (\n ((didReceiveUpdate = !1),\n (workInProgress.pendingProps = nextProps = prevProps),\n checkScheduledUpdateOrContext(current, renderLanes))\n )\n 0 !== (current.flags & 131072) && (didReceiveUpdate = !0);\n else\n return (\n (workInProgress.lanes = current.lanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n }\n return updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n );\n}\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n nextChildren = nextProps.children,\n nextIsDetached = 0 !== (workInProgress.stateNode._pendingVisibility & 2),\n prevState = null !== current ? current.memoizedState : null;\n markRef(current, workInProgress);\n if (\"hidden\" === nextProps.mode || nextIsDetached) {\n if (0 !== (workInProgress.flags & 128)) {\n nextProps =\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes;\n if (null !== current) {\n nextChildren = workInProgress.child = current.child;\n for (nextIsDetached = 0; null !== nextChildren; )\n (nextIsDetached =\n nextIsDetached | nextChildren.lanes | nextChildren.childLanes),\n (nextChildren = nextChildren.sibling);\n workInProgress.childLanes = nextIsDetached & ~nextProps;\n } else (workInProgress.childLanes = 0), (workInProgress.child = null);\n return deferHiddenOffscreenComponent(\n current,\n workInProgress,\n nextProps,\n renderLanes\n );\n }\n if (0 !== (renderLanes & 536870912))\n (workInProgress.memoizedState = { baseLanes: 0, cachePool: null }),\n null !== current &&\n pushTransition(\n workInProgress,\n null !== prevState ? prevState.cachePool : null\n ),\n null !== prevState\n ? pushHiddenContext(workInProgress, prevState)\n : reuseHiddenContextOnStack(),\n pushOffscreenSuspenseHandler(workInProgress);\n else\n return (\n (workInProgress.lanes = workInProgress.childLanes = 536870912),\n deferHiddenOffscreenComponent(\n current,\n workInProgress,\n null !== prevState ? prevState.baseLanes | renderLanes : renderLanes,\n renderLanes\n )\n );\n } else\n null !== prevState\n ? (pushTransition(workInProgress, prevState.cachePool),\n pushHiddenContext(workInProgress, prevState),\n reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.memoizedState = null))\n : (null !== current && pushTransition(workInProgress, null),\n reuseHiddenContextOnStack(),\n reuseSuspenseHandlerOnStack(workInProgress));\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nfunction deferHiddenOffscreenComponent(\n current,\n workInProgress,\n nextBaseLanes,\n renderLanes\n) {\n var JSCompiler_inline_result = peekCacheFromPool();\n JSCompiler_inline_result =\n null === JSCompiler_inline_result\n ? null\n : { parent: CacheContext._currentValue, pool: JSCompiler_inline_result };\n workInProgress.memoizedState = {\n baseLanes: nextBaseLanes,\n cachePool: JSCompiler_inline_result\n };\n null !== current && pushTransition(workInProgress, null);\n reuseHiddenContextOnStack();\n pushOffscreenSuspenseHandler(workInProgress);\n null !== current &&\n propagateParentContextChanges(current, workInProgress, renderLanes, !0);\n return null;\n}\nfunction markRef(current, workInProgress) {\n var ref = workInProgress.ref;\n if (null === ref)\n null !== current &&\n null !== current.ref &&\n (workInProgress.flags |= 2097664);\n else {\n if (\"function\" !== typeof ref && \"object\" !== typeof ref)\n throw Error(formatProdErrorMessage(284));\n if (null === current || current.ref !== ref)\n workInProgress.flags |= 2097664;\n }\n}\nfunction updateFunctionComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n Component = renderWithHooks(\n current,\n workInProgress,\n Component,\n nextProps,\n void 0,\n renderLanes\n );\n nextProps = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && nextProps && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, Component, renderLanes);\n return workInProgress.child;\n}\nfunction replayFunctionComponent(\n current,\n workInProgress,\n nextProps,\n Component,\n secondArg,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n workInProgress.updateQueue = null;\n nextProps = renderWithHooksAgain(\n workInProgress,\n Component,\n nextProps,\n secondArg\n );\n finishRenderingHooks(current);\n Component = checkDidRenderIdHook();\n if (null !== current && !didReceiveUpdate)\n return (\n bailoutHooks(current, workInProgress, renderLanes),\n bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes)\n );\n isHydrating && Component && pushMaterializedTreeId(workInProgress);\n workInProgress.flags |= 1;\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n return workInProgress.child;\n}\nfunction updateClassComponent(\n current,\n workInProgress,\n Component,\n nextProps,\n renderLanes\n) {\n prepareToReadContext(workInProgress);\n if (null === workInProgress.stateNode) {\n var context = emptyContextObject,\n contextType = Component.contextType;\n \"object\" === typeof contextType &&\n null !== contextType &&\n (context = readContext(contextType));\n context = new Component(nextProps, context);\n workInProgress.memoizedState =\n null !== context.state && void 0 !== context.state ? context.state : null;\n context.updater = classComponentUpdater;\n workInProgress.stateNode = context;\n context._reactInternals = workInProgress;\n context = workInProgress.stateNode;\n context.props = nextProps;\n context.state = workInProgress.memoizedState;\n context.refs = {};\n initializeUpdateQueue(workInProgress);\n contextType = Component.contextType;\n context.context =\n \"object\" === typeof contextType && null !== contextType\n ? readContext(contextType)\n : emptyContextObject;\n context.state = workInProgress.memoizedState;\n contextType = Component.getDerivedStateFromProps;\n \"function\" === typeof contextType &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n contextType,\n nextProps\n ),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof Component.getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n ((contextType = context.state),\n \"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount(),\n contextType !== context.state &&\n classComponentUpdater.enqueueReplaceState(context, context.state, null),\n processUpdateQueue(workInProgress, nextProps, context, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction(),\n (context.state = workInProgress.memoizedState));\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308);\n nextProps = !0;\n } else if (null === current) {\n context = workInProgress.stateNode;\n var unresolvedOldProps = workInProgress.memoizedProps,\n oldProps = resolveClassComponentProps(Component, unresolvedOldProps);\n context.props = oldProps;\n var oldContext = context.context,\n contextType$jscomp$0 = Component.contextType;\n contextType = emptyContextObject;\n \"object\" === typeof contextType$jscomp$0 &&\n null !== contextType$jscomp$0 &&\n (contextType = readContext(contextType$jscomp$0));\n var getDerivedStateFromProps = Component.getDerivedStateFromProps;\n contextType$jscomp$0 =\n \"function\" === typeof getDerivedStateFromProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate;\n unresolvedOldProps = workInProgress.pendingProps !== unresolvedOldProps;\n contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((unresolvedOldProps || oldContext !== contextType) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n contextType\n ));\n hasForceUpdate = !1;\n var oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n oldContext = workInProgress.memoizedState;\n unresolvedOldProps || oldState !== oldContext || hasForceUpdate\n ? (\"function\" === typeof getDerivedStateFromProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n getDerivedStateFromProps,\n nextProps\n ),\n (oldContext = workInProgress.memoizedState)),\n (oldProps =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n oldProps,\n nextProps,\n oldState,\n oldContext,\n contextType\n ))\n ? (contextType$jscomp$0 ||\n (\"function\" !== typeof context.UNSAFE_componentWillMount &&\n \"function\" !== typeof context.componentWillMount) ||\n (\"function\" === typeof context.componentWillMount &&\n context.componentWillMount(),\n \"function\" === typeof context.UNSAFE_componentWillMount &&\n context.UNSAFE_componentWillMount()),\n \"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = oldContext)),\n (context.props = nextProps),\n (context.state = oldContext),\n (context.context = contextType),\n (nextProps = oldProps))\n : (\"function\" === typeof context.componentDidMount &&\n (workInProgress.flags |= 4194308),\n (nextProps = !1));\n } else {\n context = workInProgress.stateNode;\n cloneUpdateQueue(current, workInProgress);\n contextType = workInProgress.memoizedProps;\n contextType$jscomp$0 = resolveClassComponentProps(Component, contextType);\n context.props = contextType$jscomp$0;\n getDerivedStateFromProps = workInProgress.pendingProps;\n oldState = context.context;\n oldContext = Component.contextType;\n oldProps = emptyContextObject;\n \"object\" === typeof oldContext &&\n null !== oldContext &&\n (oldProps = readContext(oldContext));\n unresolvedOldProps = Component.getDerivedStateFromProps;\n (oldContext =\n \"function\" === typeof unresolvedOldProps ||\n \"function\" === typeof context.getSnapshotBeforeUpdate) ||\n (\"function\" !== typeof context.UNSAFE_componentWillReceiveProps &&\n \"function\" !== typeof context.componentWillReceiveProps) ||\n ((contextType !== getDerivedStateFromProps || oldState !== oldProps) &&\n callComponentWillReceiveProps(\n workInProgress,\n context,\n nextProps,\n oldProps\n ));\n hasForceUpdate = !1;\n oldState = workInProgress.memoizedState;\n context.state = oldState;\n processUpdateQueue(workInProgress, nextProps, context, renderLanes);\n suspendIfUpdateReadFromEntangledAsyncAction();\n var newState = workInProgress.memoizedState;\n contextType !== getDerivedStateFromProps ||\n oldState !== newState ||\n hasForceUpdate ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies))\n ? (\"function\" === typeof unresolvedOldProps &&\n (applyDerivedStateFromProps(\n workInProgress,\n Component,\n unresolvedOldProps,\n nextProps\n ),\n (newState = workInProgress.memoizedState)),\n (contextType$jscomp$0 =\n hasForceUpdate ||\n checkShouldComponentUpdate(\n workInProgress,\n Component,\n contextType$jscomp$0,\n nextProps,\n oldState,\n newState,\n oldProps\n ) ||\n (null !== current &&\n null !== current.dependencies &&\n checkIfContextChanged(current.dependencies)))\n ? (oldContext ||\n (\"function\" !== typeof context.UNSAFE_componentWillUpdate &&\n \"function\" !== typeof context.componentWillUpdate) ||\n (\"function\" === typeof context.componentWillUpdate &&\n context.componentWillUpdate(nextProps, newState, oldProps),\n \"function\" === typeof context.UNSAFE_componentWillUpdate &&\n context.UNSAFE_componentWillUpdate(\n nextProps,\n newState,\n oldProps\n )),\n \"function\" === typeof context.componentDidUpdate &&\n (workInProgress.flags |= 4),\n \"function\" === typeof context.getSnapshotBeforeUpdate &&\n (workInProgress.flags |= 1024))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (workInProgress.memoizedProps = nextProps),\n (workInProgress.memoizedState = newState)),\n (context.props = nextProps),\n (context.state = newState),\n (context.context = oldProps),\n (nextProps = contextType$jscomp$0))\n : (\"function\" !== typeof context.componentDidUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 4),\n \"function\" !== typeof context.getSnapshotBeforeUpdate ||\n (contextType === current.memoizedProps &&\n oldState === current.memoizedState) ||\n (workInProgress.flags |= 1024),\n (nextProps = !1));\n }\n context = nextProps;\n markRef(current, workInProgress);\n nextProps = 0 !== (workInProgress.flags & 128);\n context || nextProps\n ? ((context = workInProgress.stateNode),\n (Component =\n nextProps && \"function\" !== typeof Component.getDerivedStateFromError\n ? null\n : context.render()),\n (workInProgress.flags |= 1),\n null !== current && nextProps\n ? ((workInProgress.child = reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n )),\n (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n Component,\n renderLanes\n )))\n : reconcileChildren(current, workInProgress, Component, renderLanes),\n (workInProgress.memoizedState = context.state),\n (current = workInProgress.child))\n : (current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n ));\n return current;\n}\nfunction mountHostRootWithoutHydrating(\n current,\n workInProgress,\n nextChildren,\n renderLanes\n) {\n resetHydrationState();\n workInProgress.flags |= 256;\n reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n return workInProgress.child;\n}\nvar SUSPENDED_MARKER = { dehydrated: null, treeContext: null, retryLane: 0 };\nfunction mountSuspenseOffscreenState(renderLanes) {\n return { baseLanes: renderLanes, cachePool: getSuspendedCache() };\n}\nfunction getRemainingWorkInPrimaryTree(\n current,\n primaryTreeDidDefer,\n renderLanes\n) {\n current = null !== current ? current.childLanes & ~renderLanes : 0;\n primaryTreeDidDefer && (current |= workInProgressDeferredLane);\n return current;\n}\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n showFallback = !1,\n didSuspend = 0 !== (workInProgress.flags & 128),\n JSCompiler_temp;\n (JSCompiler_temp = didSuspend) ||\n (JSCompiler_temp =\n null !== current && null === current.memoizedState\n ? !1\n : 0 !== (suspenseStackCursor.current & 2));\n JSCompiler_temp && ((showFallback = !0), (workInProgress.flags &= -129));\n JSCompiler_temp = 0 !== (workInProgress.flags & 32);\n workInProgress.flags &= -33;\n if (null === current) {\n if (isHydrating) {\n showFallback\n ? pushPrimaryTreeSuspenseHandler(workInProgress)\n : reuseSuspenseHandlerOnStack(workInProgress);\n if (isHydrating) {\n var nextInstance = nextHydratableInstance,\n JSCompiler_temp$jscomp$0;\n if ((JSCompiler_temp$jscomp$0 = nextInstance)) {\n c: {\n JSCompiler_temp$jscomp$0 = nextInstance;\n for (\n nextInstance = rootOrSingletonContext;\n 8 !== JSCompiler_temp$jscomp$0.nodeType;\n\n ) {\n if (!nextInstance) {\n nextInstance = null;\n break c;\n }\n JSCompiler_temp$jscomp$0 = getNextHydratable(\n JSCompiler_temp$jscomp$0.nextSibling\n );\n if (null === JSCompiler_temp$jscomp$0) {\n nextInstance = null;\n break c;\n }\n }\n nextInstance = JSCompiler_temp$jscomp$0;\n }\n null !== nextInstance\n ? ((workInProgress.memoizedState = {\n dehydrated: nextInstance,\n treeContext:\n null !== treeContextProvider\n ? { id: treeContextId, overflow: treeContextOverflow }\n : null,\n retryLane: 536870912\n }),\n (JSCompiler_temp$jscomp$0 = createFiberImplClass(\n 18,\n null,\n null,\n 0\n )),\n (JSCompiler_temp$jscomp$0.stateNode = nextInstance),\n (JSCompiler_temp$jscomp$0.return = workInProgress),\n (workInProgress.child = JSCompiler_temp$jscomp$0),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null),\n (JSCompiler_temp$jscomp$0 = !0))\n : (JSCompiler_temp$jscomp$0 = !1);\n }\n JSCompiler_temp$jscomp$0 || throwOnHydrationMismatch(workInProgress);\n }\n nextInstance = workInProgress.memoizedState;\n if (\n null !== nextInstance &&\n ((nextInstance = nextInstance.dehydrated), null !== nextInstance)\n )\n return (\n \"$!\" === nextInstance.data\n ? (workInProgress.lanes = 16)\n : (workInProgress.lanes = 536870912),\n null\n );\n popSuspenseHandler(workInProgress);\n }\n nextInstance = nextProps.children;\n nextProps = nextProps.fallback;\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = workInProgress.mode),\n (nextInstance = mountWorkInProgressOffscreenFiber(\n { mode: \"hidden\", children: nextInstance },\n showFallback\n )),\n (nextProps = createFiberFromFragment(\n nextProps,\n showFallback,\n renderLanes,\n null\n )),\n (nextInstance.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextInstance.sibling = nextProps),\n (workInProgress.child = nextInstance),\n (showFallback = workInProgress.child),\n (showFallback.memoizedState = mountSuspenseOffscreenState(renderLanes)),\n (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n nextProps\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n return mountSuspensePrimaryChildren(workInProgress, nextInstance);\n }\n JSCompiler_temp$jscomp$0 = current.memoizedState;\n if (\n null !== JSCompiler_temp$jscomp$0 &&\n ((nextInstance = JSCompiler_temp$jscomp$0.dehydrated),\n null !== nextInstance)\n ) {\n if (didSuspend)\n workInProgress.flags & 256\n ? (pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags &= -257),\n (workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n )))\n : null !== workInProgress.memoizedState\n ? (reuseSuspenseHandlerOnStack(workInProgress),\n (workInProgress.child = current.child),\n (workInProgress.flags |= 128),\n (workInProgress = null))\n : (reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = nextProps.fallback),\n (nextInstance = workInProgress.mode),\n (nextProps = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: nextProps.children },\n nextInstance\n )),\n (showFallback = createFiberFromFragment(\n showFallback,\n nextInstance,\n renderLanes,\n null\n )),\n (showFallback.flags |= 2),\n (nextProps.return = workInProgress),\n (showFallback.return = workInProgress),\n (nextProps.sibling = showFallback),\n (workInProgress.child = nextProps),\n reconcileChildFibers(\n workInProgress,\n current.child,\n null,\n renderLanes\n ),\n (nextProps = workInProgress.child),\n (nextProps.memoizedState =\n mountSuspenseOffscreenState(renderLanes)),\n (nextProps.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n (workInProgress = showFallback));\n else if (\n (pushPrimaryTreeSuspenseHandler(workInProgress),\n \"$!\" === nextInstance.data)\n ) {\n JSCompiler_temp =\n nextInstance.nextSibling && nextInstance.nextSibling.dataset;\n if (JSCompiler_temp) var digest = JSCompiler_temp.dgst;\n JSCompiler_temp = digest;\n nextProps = Error(formatProdErrorMessage(419));\n nextProps.stack = \"\";\n nextProps.digest = JSCompiler_temp;\n queueHydrationError({ value: nextProps, source: null, stack: null });\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else if (\n (didReceiveUpdate ||\n propagateParentContextChanges(current, workInProgress, renderLanes, !1),\n (JSCompiler_temp = 0 !== (renderLanes & current.childLanes)),\n didReceiveUpdate || JSCompiler_temp)\n ) {\n JSCompiler_temp = workInProgressRoot;\n if (null !== JSCompiler_temp) {\n nextProps = renderLanes & -renderLanes;\n if (0 !== (nextProps & 42)) nextProps = 1;\n else\n switch (nextProps) {\n case 2:\n nextProps = 1;\n break;\n case 8:\n nextProps = 4;\n break;\n case 32:\n nextProps = 16;\n break;\n case 128:\n case 256:\n case 512:\n case 1024:\n case 2048:\n case 4096:\n case 8192:\n case 16384:\n case 32768:\n case 65536:\n case 131072:\n case 262144:\n case 524288:\n case 1048576:\n case 2097152:\n case 4194304:\n case 8388608:\n case 16777216:\n case 33554432:\n nextProps = 64;\n break;\n case 268435456:\n nextProps = 134217728;\n break;\n default:\n nextProps = 0;\n }\n nextProps =\n 0 !== (nextProps & (JSCompiler_temp.suspendedLanes | renderLanes))\n ? 0\n : nextProps;\n if (0 !== nextProps && nextProps !== JSCompiler_temp$jscomp$0.retryLane)\n throw (\n ((JSCompiler_temp$jscomp$0.retryLane = nextProps),\n enqueueConcurrentRenderForLane(current, nextProps),\n scheduleUpdateOnFiber(JSCompiler_temp, current, nextProps),\n SelectiveHydrationException)\n );\n }\n \"$?\" === nextInstance.data || renderDidSuspendDelayIfPossible();\n workInProgress = retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n );\n } else\n \"$?\" === nextInstance.data\n ? ((workInProgress.flags |= 128),\n (workInProgress.child = current.child),\n (workInProgress = retryDehydratedSuspenseBoundary.bind(\n null,\n current\n )),\n (nextInstance._reactRetry = workInProgress),\n (workInProgress = null))\n : ((current = JSCompiler_temp$jscomp$0.treeContext),\n (nextHydratableInstance = getNextHydratable(\n nextInstance.nextSibling\n )),\n (hydrationParentFiber = workInProgress),\n (isHydrating = !0),\n (hydrationErrors = null),\n (rootOrSingletonContext = !1),\n null !== current &&\n ((idStack[idStackIndex++] = treeContextId),\n (idStack[idStackIndex++] = treeContextOverflow),\n (idStack[idStackIndex++] = treeContextProvider),\n (treeContextId = current.id),\n (treeContextOverflow = current.overflow),\n (treeContextProvider = workInProgress)),\n (workInProgress = mountSuspensePrimaryChildren(\n workInProgress,\n nextProps.children\n )),\n (workInProgress.flags |= 4096));\n return workInProgress;\n }\n if (showFallback)\n return (\n reuseSuspenseHandlerOnStack(workInProgress),\n (showFallback = nextProps.fallback),\n (nextInstance = workInProgress.mode),\n (JSCompiler_temp$jscomp$0 = current.child),\n (digest = JSCompiler_temp$jscomp$0.sibling),\n (nextProps = createWorkInProgress(JSCompiler_temp$jscomp$0, {\n mode: \"hidden\",\n children: nextProps.children\n })),\n (nextProps.subtreeFlags =\n JSCompiler_temp$jscomp$0.subtreeFlags & 31457280),\n null !== digest\n ? (showFallback = createWorkInProgress(digest, showFallback))\n : ((showFallback = createFiberFromFragment(\n showFallback,\n nextInstance,\n renderLanes,\n null\n )),\n (showFallback.flags |= 2)),\n (showFallback.return = workInProgress),\n (nextProps.return = workInProgress),\n (nextProps.sibling = showFallback),\n (workInProgress.child = nextProps),\n (nextProps = showFallback),\n (showFallback = workInProgress.child),\n (nextInstance = current.child.memoizedState),\n null === nextInstance\n ? (nextInstance = mountSuspenseOffscreenState(renderLanes))\n : ((JSCompiler_temp$jscomp$0 = nextInstance.cachePool),\n null !== JSCompiler_temp$jscomp$0\n ? ((digest = CacheContext._currentValue),\n (JSCompiler_temp$jscomp$0 =\n JSCompiler_temp$jscomp$0.parent !== digest\n ? { parent: digest, pool: digest }\n : JSCompiler_temp$jscomp$0))\n : (JSCompiler_temp$jscomp$0 = getSuspendedCache()),\n (nextInstance = {\n baseLanes: nextInstance.baseLanes | renderLanes,\n cachePool: JSCompiler_temp$jscomp$0\n })),\n (showFallback.memoizedState = nextInstance),\n (showFallback.childLanes = getRemainingWorkInPrimaryTree(\n current,\n JSCompiler_temp,\n renderLanes\n )),\n (workInProgress.memoizedState = SUSPENDED_MARKER),\n nextProps\n );\n pushPrimaryTreeSuspenseHandler(workInProgress);\n renderLanes = current.child;\n current = renderLanes.sibling;\n renderLanes = createWorkInProgress(renderLanes, {\n mode: \"visible\",\n children: nextProps.children\n });\n renderLanes.return = workInProgress;\n renderLanes.sibling = null;\n null !== current &&\n ((JSCompiler_temp = workInProgress.deletions),\n null === JSCompiler_temp\n ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16))\n : JSCompiler_temp.push(current));\n workInProgress.child = renderLanes;\n workInProgress.memoizedState = null;\n return renderLanes;\n}\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren) {\n primaryChildren = mountWorkInProgressOffscreenFiber(\n { mode: \"visible\", children: primaryChildren },\n workInProgress.mode\n );\n primaryChildren.return = workInProgress;\n return (workInProgress.child = primaryChildren);\n}\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode) {\n return createFiberFromOffscreen(offscreenProps, mode, 0, null);\n}\nfunction retrySuspenseComponentWithoutHydrating(\n current,\n workInProgress,\n renderLanes\n) {\n reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n current = mountSuspensePrimaryChildren(\n workInProgress,\n workInProgress.pendingProps.children\n );\n current.flags |= 2;\n workInProgress.memoizedState = null;\n return current;\n}\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n fiber.lanes |= renderLanes;\n var alternate = fiber.alternate;\n null !== alternate && (alternate.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\nfunction initSuspenseListRenderState(\n workInProgress,\n isBackwards,\n tail,\n lastContentRow,\n tailMode\n) {\n var renderState = workInProgress.memoizedState;\n null === renderState\n ? (workInProgress.memoizedState = {\n isBackwards: isBackwards,\n rendering: null,\n renderingStartTime: 0,\n last: lastContentRow,\n tail: tail,\n tailMode: tailMode\n })\n : ((renderState.isBackwards = isBackwards),\n (renderState.rendering = null),\n (renderState.renderingStartTime = 0),\n (renderState.last = lastContentRow),\n (renderState.tail = tail),\n (renderState.tailMode = tailMode));\n}\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n var nextProps = workInProgress.pendingProps,\n revealOrder = nextProps.revealOrder,\n tailMode = nextProps.tail;\n reconcileChildren(current, workInProgress, nextProps.children, renderLanes);\n nextProps = suspenseStackCursor.current;\n if (0 !== (nextProps & 2))\n (nextProps = (nextProps & 1) | 2), (workInProgress.flags |= 128);\n else {\n if (null !== current && 0 !== (current.flags & 128))\n a: for (current = workInProgress.child; null !== current; ) {\n if (13 === current.tag)\n null !== current.memoizedState &&\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (19 === current.tag)\n scheduleSuspenseWorkOnFiber(current, renderLanes, workInProgress);\n else if (null !== current.child) {\n current.child.return = current;\n current = current.child;\n continue;\n }\n if (current === workInProgress) break a;\n for (; null === current.sibling; ) {\n if (null === current.return || current.return === workInProgress)\n break a;\n current = current.return;\n }\n current.sibling.return = current.return;\n current = current.sibling;\n }\n nextProps &= 1;\n }\n push(suspenseStackCursor, nextProps);\n switch (revealOrder) {\n case \"forwards\":\n renderLanes = workInProgress.child;\n for (revealOrder = null; null !== renderLanes; )\n (current = renderLanes.alternate),\n null !== current &&\n null === findFirstSuspended(current) &&\n (revealOrder = renderLanes),\n (renderLanes = renderLanes.sibling);\n renderLanes = revealOrder;\n null === renderLanes\n ? ((revealOrder = workInProgress.child), (workInProgress.child = null))\n : ((revealOrder = renderLanes.sibling), (renderLanes.sibling = null));\n initSuspenseListRenderState(\n workInProgress,\n !1,\n revealOrder,\n renderLanes,\n tailMode\n );\n break;\n case \"backwards\":\n renderLanes = null;\n revealOrder = workInProgress.child;\n for (workInProgress.child = null; null !== revealOrder; ) {\n current = revealOrder.alternate;\n if (null !== current && null === findFirstSuspended(current)) {\n workInProgress.child = revealOrder;\n break;\n }\n current = revealOrder.sibling;\n revealOrder.sibling = renderLanes;\n renderLanes = revealOrder;\n revealOrder = current;\n }\n initSuspenseListRenderState(\n workInProgress,\n !0,\n renderLanes,\n null,\n tailMode\n );\n break;\n case \"together\":\n initSuspenseListRenderState(workInProgress, !1, null, null, void 0);\n break;\n default:\n workInProgress.memoizedState = null;\n }\n return workInProgress.child;\n}\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n null !== current && (workInProgress.dependencies = current.dependencies);\n workInProgressRootSkippedLanes |= workInProgress.lanes;\n if (0 === (renderLanes & workInProgress.childLanes))\n if (null !== current) {\n if (\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n 0 === (renderLanes & workInProgress.childLanes))\n )\n return null;\n } else return null;\n if (null !== current && workInProgress.child !== current.child)\n throw Error(formatProdErrorMessage(153));\n if (null !== workInProgress.child) {\n current = workInProgress.child;\n renderLanes = createWorkInProgress(current, current.pendingProps);\n workInProgress.child = renderLanes;\n for (renderLanes.return = workInProgress; null !== current.sibling; )\n (current = current.sibling),\n (renderLanes = renderLanes.sibling =\n createWorkInProgress(current, current.pendingProps)),\n (renderLanes.return = workInProgress);\n renderLanes.sibling = null;\n }\n return workInProgress.child;\n}\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n if (0 !== (current.lanes & renderLanes)) return !0;\n current = current.dependencies;\n return null !== current && checkIfContextChanged(current) ? !0 : !1;\n}\nfunction attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n) {\n switch (workInProgress.tag) {\n case 3:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n resetHydrationState();\n break;\n case 27:\n case 5:\n pushHostContext(workInProgress);\n break;\n case 4:\n pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n break;\n case 10:\n pushProvider(\n workInProgress,\n workInProgress.type,\n workInProgress.memoizedProps.value\n );\n break;\n case 13:\n var state = workInProgress.memoizedState;\n if (null !== state) {\n if (null !== state.dehydrated)\n return (\n pushPrimaryTreeSuspenseHandler(workInProgress),\n (workInProgress.flags |= 128),\n null\n );\n if (0 !== (renderLanes & workInProgress.child.childLanes))\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n pushPrimaryTreeSuspenseHandler(workInProgress);\n current = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n return null !== current ? current.sibling : null;\n }\n pushPrimaryTreeSuspenseHandler(workInProgress);\n break;\n case 19:\n var didSuspendBefore = 0 !== (current.flags & 128);\n state = 0 !== (renderLanes & workInProgress.childLanes);\n state ||\n (propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n !1\n ),\n (state = 0 !== (renderLanes & workInProgress.childLanes)));\n if (didSuspendBefore) {\n if (state)\n return updateSuspenseListComponent(\n current,\n workInProgress,\n renderLanes\n );\n workInProgress.flags |= 128;\n }\n didSuspendBefore = workInProgress.memoizedState;\n null !== didSuspendBefore &&\n ((didSuspendBefore.rendering = null),\n (didSuspendBefore.tail = null),\n (didSuspendBefore.lastEffect = null));\n push(suspenseStackCursor, suspenseStackCursor.current);\n if (state) break;\n else return null;\n case 22:\n case 23:\n return (\n (workInProgress.lanes = 0),\n updateOffscreenComponent(current, workInProgress, renderLanes)\n );\n case 24:\n pushProvider(workInProgress, CacheContext, current.memoizedState.cache);\n }\n return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\nfunction beginWork(current, workInProgress, renderLanes) {\n if (null !== current)\n if (current.memoizedProps !== workInProgress.pendingProps)\n didReceiveUpdate = !0;\n else {\n if (\n !checkScheduledUpdateOrContext(current, renderLanes) &&\n 0 === (workInProgress.flags & 128)\n )\n return (\n (didReceiveUpdate = !1),\n attemptEarlyBailoutIfNoScheduledUpdate(\n current,\n workInProgress,\n renderLanes\n )\n );\n didReceiveUpdate = 0 !== (current.flags & 131072) ? !0 : !1;\n }\n else\n (didReceiveUpdate = !1),\n isHydrating &&\n 0 !== (workInProgress.flags & 1048576) &&\n pushTreeId(workInProgress, treeForkCount, workInProgress.index);\n workInProgress.lanes = 0;\n switch (workInProgress.tag) {\n case 16:\n a: {\n current = workInProgress.pendingProps;\n var lazyComponent = workInProgress.elementType,\n init = lazyComponent._init;\n lazyComponent = init(lazyComponent._payload);\n workInProgress.type = lazyComponent;\n if (\"function\" === typeof lazyComponent)\n shouldConstruct(lazyComponent)\n ? ((current = resolveClassComponentProps(lazyComponent, current)),\n (workInProgress.tag = 1),\n (workInProgress = updateClassComponent(\n null,\n workInProgress,\n lazyComponent,\n current,\n renderLanes\n )))\n : ((workInProgress.tag = 0),\n (workInProgress = updateFunctionComponent(\n null,\n workInProgress,\n lazyComponent,\n current,\n renderLanes\n )));\n else {\n if (void 0 !== lazyComponent && null !== lazyComponent)\n if (\n ((init = lazyComponent.$$typeof), init === REACT_FORWARD_REF_TYPE)\n ) {\n workInProgress.tag = 11;\n workInProgress = updateForwardRef(\n null,\n workInProgress,\n lazyComponent,\n current,\n renderLanes\n );\n break a;\n } else if (init === REACT_MEMO_TYPE) {\n workInProgress.tag = 14;\n workInProgress = updateMemoComponent(\n null,\n workInProgress,\n lazyComponent,\n current,\n renderLanes\n );\n break a;\n }\n workInProgress =\n getComponentNameFromType(lazyComponent) || lazyComponent;\n throw Error(formatProdErrorMessage(306, workInProgress, \"\"));\n }\n }\n return workInProgress;\n case 0:\n return updateFunctionComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 1:\n return (\n (lazyComponent = workInProgress.type),\n (init = resolveClassComponentProps(\n lazyComponent,\n workInProgress.pendingProps\n )),\n updateClassComponent(\n current,\n workInProgress,\n lazyComponent,\n init,\n renderLanes\n )\n );\n case 3:\n a: {\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n );\n if (null === current) throw Error(formatProdErrorMessage(387));\n var nextProps = workInProgress.pendingProps;\n init = workInProgress.memoizedState;\n lazyComponent = init.element;\n cloneUpdateQueue(current, workInProgress);\n processUpdateQueue(workInProgress, nextProps, null, renderLanes);\n var nextState = workInProgress.memoizedState;\n nextProps = nextState.cache;\n pushProvider(workInProgress, CacheContext, nextProps);\n nextProps !== init.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n );\n suspendIfUpdateReadFromEntangledAsyncAction();\n nextProps = nextState.element;\n if (init.isDehydrated)\n if (\n ((init = {\n element: nextProps,\n isDehydrated: !1,\n cache: nextState.cache\n }),\n (workInProgress.updateQueue.baseState = init),\n (workInProgress.memoizedState = init),\n workInProgress.flags & 256)\n ) {\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n nextProps,\n renderLanes\n );\n break a;\n } else if (nextProps !== lazyComponent) {\n lazyComponent = createCapturedValueAtFiber(\n Error(formatProdErrorMessage(424)),\n workInProgress\n );\n queueHydrationError(lazyComponent);\n workInProgress = mountHostRootWithoutHydrating(\n current,\n workInProgress,\n nextProps,\n renderLanes\n );\n break a;\n } else\n for (\n nextHydratableInstance = getNextHydratable(\n workInProgress.stateNode.containerInfo.firstChild\n ),\n hydrationParentFiber = workInProgress,\n isHydrating = !0,\n hydrationErrors = null,\n rootOrSingletonContext = !0,\n renderLanes = mountChildFibers(\n workInProgress,\n null,\n nextProps,\n renderLanes\n ),\n workInProgress.child = renderLanes;\n renderLanes;\n\n )\n (renderLanes.flags = (renderLanes.flags & -3) | 4096),\n (renderLanes = renderLanes.sibling);\n else {\n resetHydrationState();\n if (nextProps === lazyComponent) {\n workInProgress = bailoutOnAlreadyFinishedWork(\n current,\n workInProgress,\n renderLanes\n );\n break a;\n }\n reconcileChildren(current, workInProgress, nextProps, renderLanes);\n }\n workInProgress = workInProgress.child;\n }\n return workInProgress;\n case 26:\n return (\n markRef(current, workInProgress),\n null === current\n ? (renderLanes = getResource(\n workInProgress.type,\n null,\n workInProgress.pendingProps,\n null\n ))\n ? (workInProgress.memoizedState = renderLanes)\n : isHydrating ||\n ((renderLanes = workInProgress.type),\n (current = workInProgress.pendingProps),\n (lazyComponent = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n ).createElement(renderLanes)),\n (lazyComponent[internalInstanceKey] = workInProgress),\n (lazyComponent[internalPropsKey] = current),\n setInitialProperties(lazyComponent, renderLanes, current),\n markNodeAsHoistable(lazyComponent),\n (workInProgress.stateNode = lazyComponent))\n : (workInProgress.memoizedState = getResource(\n workInProgress.type,\n current.memoizedProps,\n workInProgress.pendingProps,\n current.memoizedState\n )),\n null\n );\n case 27:\n return (\n pushHostContext(workInProgress),\n null === current &&\n isHydrating &&\n ((lazyComponent = workInProgress.stateNode =\n resolveSingletonInstance(\n workInProgress.type,\n workInProgress.pendingProps,\n rootInstanceStackCursor.current\n )),\n (hydrationParentFiber = workInProgress),\n (rootOrSingletonContext = !0),\n (nextHydratableInstance = getNextHydratable(\n lazyComponent.firstChild\n ))),\n (lazyComponent = workInProgress.pendingProps.children),\n null !== current || isHydrating\n ? reconcileChildren(\n current,\n workInProgress,\n lazyComponent,\n renderLanes\n )\n : (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n lazyComponent,\n renderLanes\n )),\n markRef(current, workInProgress),\n workInProgress.child\n );\n case 5:\n if (null === current && isHydrating) {\n if ((init = lazyComponent = nextHydratableInstance))\n (lazyComponent = canHydrateInstance(\n lazyComponent,\n workInProgress.type,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== lazyComponent\n ? ((workInProgress.stateNode = lazyComponent),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = getNextHydratable(\n lazyComponent.firstChild\n )),\n (rootOrSingletonContext = !1),\n (init = !0))\n : (init = !1);\n init || throwOnHydrationMismatch(workInProgress);\n }\n pushHostContext(workInProgress);\n init = workInProgress.type;\n nextProps = workInProgress.pendingProps;\n nextState = null !== current ? current.memoizedProps : null;\n lazyComponent = nextProps.children;\n shouldSetTextContent(init, nextProps)\n ? (lazyComponent = null)\n : null !== nextState &&\n shouldSetTextContent(init, nextState) &&\n (workInProgress.flags |= 32);\n null !== workInProgress.memoizedState &&\n ((init = renderWithHooks(\n current,\n workInProgress,\n TransitionAwareHostComponent,\n null,\n null,\n renderLanes\n )),\n (HostTransitionContext._currentValue = init));\n markRef(current, workInProgress);\n reconcileChildren(current, workInProgress, lazyComponent, renderLanes);\n return workInProgress.child;\n case 6:\n if (null === current && isHydrating) {\n if ((current = renderLanes = nextHydratableInstance))\n (renderLanes = canHydrateTextInstance(\n renderLanes,\n workInProgress.pendingProps,\n rootOrSingletonContext\n )),\n null !== renderLanes\n ? ((workInProgress.stateNode = renderLanes),\n (hydrationParentFiber = workInProgress),\n (nextHydratableInstance = null),\n (current = !0))\n : (current = !1);\n current || throwOnHydrationMismatch(workInProgress);\n }\n return null;\n case 13:\n return updateSuspenseComponent(current, workInProgress, renderLanes);\n case 4:\n return (\n pushHostContainer(\n workInProgress,\n workInProgress.stateNode.containerInfo\n ),\n (lazyComponent = workInProgress.pendingProps),\n null === current\n ? (workInProgress.child = reconcileChildFibers(\n workInProgress,\n null,\n lazyComponent,\n renderLanes\n ))\n : reconcileChildren(\n current,\n workInProgress,\n lazyComponent,\n renderLanes\n ),\n workInProgress.child\n );\n case 11:\n return updateForwardRef(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 7:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps,\n renderLanes\n ),\n workInProgress.child\n );\n case 8:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 12:\n return (\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 10:\n return (\n (lazyComponent = workInProgress.pendingProps),\n pushProvider(workInProgress, workInProgress.type, lazyComponent.value),\n reconcileChildren(\n current,\n workInProgress,\n lazyComponent.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 9:\n return (\n (init = workInProgress.type._context),\n (lazyComponent = workInProgress.pendingProps.children),\n prepareToReadContext(workInProgress),\n (init = readContext(init)),\n (lazyComponent = lazyComponent(init)),\n (workInProgress.flags |= 1),\n reconcileChildren(current, workInProgress, lazyComponent, renderLanes),\n workInProgress.child\n );\n case 14:\n return updateMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 15:\n return updateSimpleMemoComponent(\n current,\n workInProgress,\n workInProgress.type,\n workInProgress.pendingProps,\n renderLanes\n );\n case 19:\n return updateSuspenseListComponent(current, workInProgress, renderLanes);\n case 22:\n return updateOffscreenComponent(current, workInProgress, renderLanes);\n case 24:\n return (\n prepareToReadContext(workInProgress),\n (lazyComponent = readContext(CacheContext)),\n null === current\n ? ((init = peekCacheFromPool()),\n null === init &&\n ((init = workInProgressRoot),\n (nextProps = createCache()),\n (init.pooledCache = nextProps),\n nextProps.refCount++,\n null !== nextProps && (init.pooledCacheLanes |= renderLanes),\n (init = nextProps)),\n (workInProgress.memoizedState = {\n parent: lazyComponent,\n cache: init\n }),\n initializeUpdateQueue(workInProgress),\n pushProvider(workInProgress, CacheContext, init))\n : (0 !== (current.lanes & renderLanes) &&\n (cloneUpdateQueue(current, workInProgress),\n processUpdateQueue(workInProgress, null, null, renderLanes),\n suspendIfUpdateReadFromEntangledAsyncAction()),\n (init = current.memoizedState),\n (nextProps = workInProgress.memoizedState),\n init.parent !== lazyComponent\n ? ((init = { parent: lazyComponent, cache: lazyComponent }),\n (workInProgress.memoizedState = init),\n 0 === workInProgress.lanes &&\n (workInProgress.memoizedState =\n workInProgress.updateQueue.baseState =\n init),\n pushProvider(workInProgress, CacheContext, lazyComponent))\n : ((lazyComponent = nextProps.cache),\n pushProvider(workInProgress, CacheContext, lazyComponent),\n lazyComponent !== init.cache &&\n propagateContextChanges(\n workInProgress,\n [CacheContext],\n renderLanes,\n !0\n ))),\n reconcileChildren(\n current,\n workInProgress,\n workInProgress.pendingProps.children,\n renderLanes\n ),\n workInProgress.child\n );\n case 29:\n throw workInProgress.pendingProps;\n }\n throw Error(formatProdErrorMessage(156, workInProgress.tag));\n}\nvar valueCursor = createCursor(null),\n currentlyRenderingFiber = null,\n lastContextDependency = null;\nfunction pushProvider(providerFiber, context, nextValue) {\n push(valueCursor, context._currentValue);\n context._currentValue = nextValue;\n}\nfunction popProvider(context) {\n context._currentValue = valueCursor.current;\n pop(valueCursor);\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n for (; null !== parent; ) {\n var alternate = parent.alternate;\n (parent.childLanes & renderLanes) !== renderLanes\n ? ((parent.childLanes |= renderLanes),\n null !== alternate && (alternate.childLanes |= renderLanes))\n : null !== alternate &&\n (alternate.childLanes & renderLanes) !== renderLanes &&\n (alternate.childLanes |= renderLanes);\n if (parent === propagationRoot) break;\n parent = parent.return;\n }\n}\nfunction propagateContextChanges(\n workInProgress,\n contexts,\n renderLanes,\n forcePropagateEntireTree\n) {\n var fiber = workInProgress.child;\n null !== fiber && (fiber.return = workInProgress);\n for (; null !== fiber; ) {\n var list = fiber.dependencies;\n if (null !== list) {\n var nextFiber = fiber.child;\n list = list.firstContext;\n a: for (; null !== list; ) {\n var dependency = list;\n list = fiber;\n for (var i = 0; i < contexts.length; i++)\n if (dependency.context === contexts[i]) {\n list.lanes |= renderLanes;\n dependency = list.alternate;\n null !== dependency && (dependency.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(\n list.return,\n renderLanes,\n workInProgress\n );\n forcePropagateEntireTree || (nextFiber = null);\n break a;\n }\n list = dependency.next;\n }\n } else if (18 === fiber.tag) {\n nextFiber = fiber.return;\n if (null === nextFiber) throw Error(formatProdErrorMessage(341));\n nextFiber.lanes |= renderLanes;\n list = nextFiber.alternate;\n null !== list && (list.lanes |= renderLanes);\n scheduleContextWorkOnParentPath(nextFiber, renderLanes, workInProgress);\n nextFiber = null;\n } else nextFiber = fiber.child;\n if (null !== nextFiber) nextFiber.return = fiber;\n else\n for (nextFiber = fiber; null !== nextFiber; ) {\n if (nextFiber === workInProgress) {\n nextFiber = null;\n break;\n }\n fiber = nextFiber.sibling;\n if (null !== fiber) {\n fiber.return = nextFiber.return;\n nextFiber = fiber;\n break;\n }\n nextFiber = nextFiber.return;\n }\n fiber = nextFiber;\n }\n}\nfunction propagateParentContextChanges(\n current,\n workInProgress,\n renderLanes,\n forcePropagateEntireTree\n) {\n current = null;\n for (\n var parent = workInProgress, isInsidePropagationBailout = !1;\n null !== parent;\n\n ) {\n if (!isInsidePropagationBailout)\n if (0 !== (parent.flags & 524288)) isInsidePropagationBailout = !0;\n else if (0 !== (parent.flags & 262144)) break;\n if (10 === parent.tag) {\n var currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent = currentParent.memoizedProps;\n if (null !== currentParent) {\n var context = parent.type;\n objectIs(parent.pendingProps.value, currentParent.value) ||\n (null !== current ? current.push(context) : (current = [context]));\n }\n } else if (parent === hostTransitionProviderCursor.current) {\n currentParent = parent.alternate;\n if (null === currentParent) throw Error(formatProdErrorMessage(387));\n currentParent.memoizedState.memoizedState !==\n parent.memoizedState.memoizedState &&\n (null !== current\n ? current.push(HostTransitionContext)\n : (current = [HostTransitionContext]));\n }\n parent = parent.return;\n }\n null !== current &&\n propagateContextChanges(\n workInProgress,\n current,\n renderLanes,\n forcePropagateEntireTree\n );\n workInProgress.flags |= 262144;\n}\nfunction checkIfContextChanged(currentDependencies) {\n for (\n currentDependencies = currentDependencies.firstContext;\n null !== currentDependencies;\n\n ) {\n if (\n !objectIs(\n currentDependencies.context._currentValue,\n currentDependencies.memoizedValue\n )\n )\n return !0;\n currentDependencies = currentDependencies.next;\n }\n return !1;\n}\nfunction prepareToReadContext(workInProgress) {\n currentlyRenderingFiber = workInProgress;\n lastContextDependency = null;\n workInProgress = workInProgress.dependencies;\n null !== workInProgress && (workInProgress.firstContext = null);\n}\nfunction readContext(context) {\n return readContextForConsumer(currentlyRenderingFiber, context);\n}\nfunction readContextDuringReconciliation(consumer, context) {\n null === currentlyRenderingFiber && prepareToReadContext(consumer);\n return readContextForConsumer(consumer, context);\n}\nfunction readContextForConsumer(consumer, context) {\n var value = context._currentValue;\n context = { context: context, memoizedValue: value, next: null };\n if (null === lastContextDependency) {\n if (null === consumer) throw Error(formatProdErrorMessage(308));\n lastContextDependency = context;\n consumer.dependencies = { lanes: 0, firstContext: context };\n consumer.flags |= 524288;\n } else lastContextDependency = lastContextDependency.next = context;\n return value;\n}\nvar hasForceUpdate = !1;\nfunction initializeUpdateQueue(fiber) {\n fiber.updateQueue = {\n baseState: fiber.memoizedState,\n firstBaseUpdate: null,\n lastBaseUpdate: null,\n shared: { pending: null, lanes: 0, hiddenCallbacks: null },\n callbacks: null\n };\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n current = current.updateQueue;\n workInProgress.updateQueue === current &&\n (workInProgress.updateQueue = {\n baseState: current.baseState,\n firstBaseUpdate: current.firstBaseUpdate,\n lastBaseUpdate: current.lastBaseUpdate,\n shared: current.shared,\n callbacks: null\n });\n}\nfunction createUpdate(lane) {\n return { lane: lane, tag: 0, payload: null, callback: null, next: null };\n}\nfunction enqueueUpdate(fiber, update, lane) {\n var updateQueue = fiber.updateQueue;\n if (null === updateQueue) return null;\n updateQueue = updateQueue.shared;\n if (0 !== (executionContext & 2)) {\n var pending = updateQueue.pending;\n null === pending\n ? (update.next = update)\n : ((update.next = pending.next), (pending.next = update));\n updateQueue.pending = update;\n update = getRootForUpdatedFiber(fiber);\n markUpdateLaneFromFiberToRoot(fiber, null, lane);\n return update;\n }\n enqueueUpdate$1(fiber, updateQueue, update, lane);\n return getRootForUpdatedFiber(fiber);\n}\nfunction entangleTransitions(root, fiber, lane) {\n fiber = fiber.updateQueue;\n if (null !== fiber && ((fiber = fiber.shared), 0 !== (lane & 4194176))) {\n var queueLanes = fiber.lanes;\n queueLanes &= root.pendingLanes;\n lane |= queueLanes;\n fiber.lanes = lane;\n markRootEntangled(root, lane);\n }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n var queue = workInProgress.updateQueue,\n current = workInProgress.alternate;\n if (\n null !== current &&\n ((current = current.updateQueue), queue === current)\n ) {\n var newFirst = null,\n newLast = null;\n queue = queue.firstBaseUpdate;\n if (null !== queue) {\n do {\n var clone = {\n lane: queue.lane,\n tag: queue.tag,\n payload: queue.payload,\n callback: null,\n next: null\n };\n null === newLast\n ? (newFirst = newLast = clone)\n : (newLast = newLast.next = clone);\n queue = queue.next;\n } while (null !== queue);\n null === newLast\n ? (newFirst = newLast = capturedUpdate)\n : (newLast = newLast.next = capturedUpdate);\n } else newFirst = newLast = capturedUpdate;\n queue = {\n baseState: current.baseState,\n firstBaseUpdate: newFirst,\n lastBaseUpdate: newLast,\n shared: current.shared,\n callbacks: current.callbacks\n };\n workInProgress.updateQueue = queue;\n return;\n }\n workInProgress = queue.lastBaseUpdate;\n null === workInProgress\n ? (queue.firstBaseUpdate = capturedUpdate)\n : (workInProgress.next = capturedUpdate);\n queue.lastBaseUpdate = capturedUpdate;\n}\nvar didReadFromEntangledAsyncAction = !1;\nfunction suspendIfUpdateReadFromEntangledAsyncAction() {\n if (didReadFromEntangledAsyncAction) {\n var entangledActionThenable = currentEntangledActionThenable;\n if (null !== entangledActionThenable) throw entangledActionThenable;\n }\n}\nfunction processUpdateQueue(\n workInProgress$jscomp$0,\n props,\n instance$jscomp$0,\n renderLanes\n) {\n didReadFromEntangledAsyncAction = !1;\n var queue = workInProgress$jscomp$0.updateQueue;\n hasForceUpdate = !1;\n var firstBaseUpdate = queue.firstBaseUpdate,\n lastBaseUpdate = queue.lastBaseUpdate,\n pendingQueue = queue.shared.pending;\n if (null !== pendingQueue) {\n queue.shared.pending = null;\n var lastPendingUpdate = pendingQueue,\n firstPendingUpdate = lastPendingUpdate.next;\n lastPendingUpdate.next = null;\n null === lastBaseUpdate\n ? (firstBaseUpdate = firstPendingUpdate)\n : (lastBaseUpdate.next = firstPendingUpdate);\n lastBaseUpdate = lastPendingUpdate;\n var current = workInProgress$jscomp$0.alternate;\n null !== current &&\n ((current = current.updateQueue),\n (pendingQueue = current.lastBaseUpdate),\n pendingQueue !== lastBaseUpdate &&\n (null === pendingQueue\n ? (current.firstBaseUpdate = firstPendingUpdate)\n : (pendingQueue.next = firstPendingUpdate),\n (current.lastBaseUpdate = lastPendingUpdate)));\n }\n if (null !== firstBaseUpdate) {\n var newState = queue.baseState;\n lastBaseUpdate = 0;\n current = firstPendingUpdate = lastPendingUpdate = null;\n pendingQueue = firstBaseUpdate;\n do {\n var updateLane = pendingQueue.lane & -536870913,\n isHiddenUpdate = updateLane !== pendingQueue.lane;\n if (\n isHiddenUpdate\n ? (workInProgressRootRenderLanes & updateLane) === updateLane\n : (renderLanes & updateLane) === updateLane\n ) {\n 0 !== updateLane &&\n updateLane === currentEntangledLane &&\n (didReadFromEntangledAsyncAction = !0);\n null !== current &&\n (current = current.next =\n {\n lane: 0,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: null,\n next: null\n });\n a: {\n var workInProgress = workInProgress$jscomp$0,\n update = pendingQueue;\n updateLane = props;\n var instance = instance$jscomp$0;\n switch (update.tag) {\n case 1:\n workInProgress = update.payload;\n if (\"function\" === typeof workInProgress) {\n newState = workInProgress.call(instance, newState, updateLane);\n break a;\n }\n newState = workInProgress;\n break a;\n case 3:\n workInProgress.flags = (workInProgress.flags & -65537) | 128;\n case 0:\n workInProgress = update.payload;\n updateLane =\n \"function\" === typeof workInProgress\n ? workInProgress.call(instance, newState, updateLane)\n : workInProgress;\n if (null === updateLane || void 0 === updateLane) break a;\n newState = assign({}, newState, updateLane);\n break a;\n case 2:\n hasForceUpdate = !0;\n }\n }\n updateLane = pendingQueue.callback;\n null !== updateLane &&\n ((workInProgress$jscomp$0.flags |= 64),\n isHiddenUpdate && (workInProgress$jscomp$0.flags |= 8192),\n (isHiddenUpdate = queue.callbacks),\n null === isHiddenUpdate\n ? (queue.callbacks = [updateLane])\n : isHiddenUpdate.push(updateLane));\n } else\n (isHiddenUpdate = {\n lane: updateLane,\n tag: pendingQueue.tag,\n payload: pendingQueue.payload,\n callback: pendingQueue.callback,\n next: null\n }),\n null === current\n ? ((firstPendingUpdate = current = isHiddenUpdate),\n (lastPendingUpdate = newState))\n : (current = current.next = isHiddenUpdate),\n (lastBaseUpdate |= updateLane);\n pendingQueue = pendingQueue.next;\n if (null === pendingQueue)\n if (((pendingQueue = queue.shared.pending), null === pendingQueue))\n break;\n else\n (isHiddenUpdate = pendingQueue),\n (pendingQueue = isHiddenUpdate.next),\n (isHiddenUpdate.next = null),\n (queue.lastBaseUpdate = isHiddenUpdate),\n (queue.shared.pending = null);\n } while (1);\n null === current && (lastPendingUpdate = newState);\n queue.baseState = lastPendingUpdate;\n queue.firstBaseUpdate = firstPendingUpdate;\n queue.lastBaseUpdate = current;\n null === firstBaseUpdate && (queue.shared.lanes = 0);\n workInProgressRootSkippedLanes |= lastBaseUpdate;\n workInProgress$jscomp$0.lanes = lastBaseUpdate;\n workInProgress$jscomp$0.memoizedState = newState;\n }\n}\nfunction callCallback(callback, context) {\n if (\"function\" !== typeof callback)\n throw Error(formatProdErrorMessage(191, callback));\n callback.call(context);\n}\nfunction commitCallbacks(updateQueue, context) {\n var callbacks = updateQueue.callbacks;\n if (null !== callbacks)\n for (\n updateQueue.callbacks = null, updateQueue = 0;\n updateQueue < callbacks.length;\n updateQueue++\n )\n callCallback(callbacks[updateQueue], context);\n}\nfunction commitHookEffectListMount(flags, finishedWork) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n lastEffect = void 0;\n var create = updateQueue.create,\n inst = updateQueue.inst;\n lastEffect = create();\n inst.destroy = lastEffect;\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHookEffectListUnmount(\n flags,\n finishedWork,\n nearestMountedAncestor$jscomp$0\n) {\n try {\n var updateQueue = finishedWork.updateQueue,\n lastEffect = null !== updateQueue ? updateQueue.lastEffect : null;\n if (null !== lastEffect) {\n var firstEffect = lastEffect.next;\n updateQueue = firstEffect;\n do {\n if ((updateQueue.tag & flags) === flags) {\n var inst = updateQueue.inst,\n destroy = inst.destroy;\n if (void 0 !== destroy) {\n inst.destroy = void 0;\n lastEffect = finishedWork;\n var nearestMountedAncestor = nearestMountedAncestor$jscomp$0;\n try {\n destroy();\n } catch (error) {\n captureCommitPhaseError(\n lastEffect,\n nearestMountedAncestor,\n error\n );\n }\n }\n }\n updateQueue = updateQueue.next;\n } while (updateQueue !== firstEffect);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitClassCallbacks(finishedWork) {\n var updateQueue = finishedWork.updateQueue;\n if (null !== updateQueue) {\n var instance = finishedWork.stateNode;\n try {\n commitCallbacks(updateQueue, instance);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n}\nfunction safelyCallComponentWillUnmount(\n current,\n nearestMountedAncestor,\n instance\n) {\n instance.props = resolveClassComponentProps(\n current.type,\n current.memoizedProps\n );\n instance.state = current.memoizedState;\n try {\n instance.componentWillUnmount();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n try {\n var ref = current.ref;\n if (null !== ref) {\n var instance = current.stateNode;\n switch (current.tag) {\n case 26:\n case 27:\n case 5:\n var instanceToUse = instance;\n break;\n default:\n instanceToUse = instance;\n }\n \"function\" === typeof ref\n ? (current.refCleanup = ref(instanceToUse))\n : (ref.current = instanceToUse);\n }\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n }\n}\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n var ref = current.ref,\n refCleanup = current.refCleanup;\n if (null !== ref)\n if (\"function\" === typeof refCleanup)\n try {\n refCleanup();\n } catch (error) {\n captureCommitPhaseError(current, nearestMountedAncestor, error);\n } finally {\n (current.refCleanup = null),\n (current = current.alternate),\n null != current && (current.refCleanup = null);\n }\n else if (\"function\" === typeof ref)\n try {\n ref(null);\n } catch (error$112) {\n captureCommitPhaseError(current, nearestMountedAncestor, error$112);\n }\n else ref.current = null;\n}\nfunction commitHostMount(finishedWork) {\n var type = finishedWork.type,\n props = finishedWork.memoizedProps,\n instance = finishedWork.stateNode;\n try {\n a: switch (type) {\n case \"button\":\n case \"input\":\n case \"select\":\n case \"textarea\":\n props.autoFocus && instance.focus();\n break a;\n case \"img\":\n props.src\n ? (instance.src = props.src)\n : props.srcSet && (instance.srcset = props.srcSet);\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction commitHostUpdate(finishedWork, newProps, oldProps) {\n try {\n var domElement = finishedWork.stateNode;\n updateProperties(domElement, finishedWork.type, oldProps, newProps);\n domElement[internalPropsKey] = newProps;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction isHostParent(fiber) {\n return (\n 5 === fiber.tag ||\n 3 === fiber.tag ||\n 26 === fiber.tag ||\n 27 === fiber.tag ||\n 4 === fiber.tag\n );\n}\nfunction getHostSibling(fiber) {\n a: for (;;) {\n for (; null === fiber.sibling; ) {\n if (null === fiber.return || isHostParent(fiber.return)) return null;\n fiber = fiber.return;\n }\n fiber.sibling.return = fiber.return;\n for (\n fiber = fiber.sibling;\n 5 !== fiber.tag &&\n 6 !== fiber.tag &&\n 27 !== fiber.tag &&\n 18 !== fiber.tag;\n\n ) {\n if (fiber.flags & 2) continue a;\n if (null === fiber.child || 4 === fiber.tag) continue a;\n else (fiber.child.return = fiber), (fiber = fiber.child);\n }\n if (!(fiber.flags & 2)) return fiber.stateNode;\n }\n}\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before\n ? 8 === parent.nodeType\n ? parent.parentNode.insertBefore(node, before)\n : parent.insertBefore(node, before)\n : (8 === parent.nodeType\n ? ((before = parent.parentNode), before.insertBefore(node, parent))\n : ((before = parent), before.appendChild(node)),\n (parent = parent._reactRootContainer),\n (null !== parent && void 0 !== parent) ||\n null !== before.onclick ||\n (before.onclick = noop$1));\n else if (4 !== tag && 27 !== tag && ((node = node.child), null !== node))\n for (\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNodeIntoContainer(node, before, parent),\n (node = node.sibling);\n}\nfunction insertOrAppendPlacementNode(node, before, parent) {\n var tag = node.tag;\n if (5 === tag || 6 === tag)\n (node = node.stateNode),\n before ? parent.insertBefore(node, before) : parent.appendChild(node);\n else if (4 !== tag && 27 !== tag && ((node = node.child), null !== node))\n for (\n insertOrAppendPlacementNode(node, before, parent), node = node.sibling;\n null !== node;\n\n )\n insertOrAppendPlacementNode(node, before, parent), (node = node.sibling);\n}\nvar offscreenSubtreeIsHidden = !1,\n offscreenSubtreeWasHidden = !1,\n needsFormReset = !1,\n PossiblyWeakSet = \"function\" === typeof WeakSet ? WeakSet : Set,\n nextEffect = null,\n shouldFireAfterActiveInstanceBlur = !1;\nfunction commitBeforeMutationEffects(root, firstChild) {\n root = root.containerInfo;\n eventsEnabled = _enabled;\n root = getActiveElementDeep(root);\n if (hasSelectionCapabilities(root)) {\n if (\"selectionStart\" in root)\n var JSCompiler_temp = {\n start: root.selectionStart,\n end: root.selectionEnd\n };\n else\n a: {\n JSCompiler_temp =\n ((JSCompiler_temp = root.ownerDocument) &&\n JSCompiler_temp.defaultView) ||\n window;\n var selection =\n JSCompiler_temp.getSelection && JSCompiler_temp.getSelection();\n if (selection && 0 !== selection.rangeCount) {\n JSCompiler_temp = selection.anchorNode;\n var anchorOffset = selection.anchorOffset,\n focusNode = selection.focusNode;\n selection = selection.focusOffset;\n try {\n JSCompiler_temp.nodeType, focusNode.nodeType;\n } catch (e$20) {\n JSCompiler_temp = null;\n break a;\n }\n var length = 0,\n start = -1,\n end = -1,\n indexWithinAnchor = 0,\n indexWithinFocus = 0,\n node = root,\n parentNode = null;\n b: for (;;) {\n for (var next; ; ) {\n node !== JSCompiler_temp ||\n (0 !== anchorOffset && 3 !== node.nodeType) ||\n (start = length + anchorOffset);\n node !== focusNode ||\n (0 !== selection && 3 !== node.nodeType) ||\n (end = length + selection);\n 3 === node.nodeType && (length += node.nodeValue.length);\n if (null === (next = node.firstChild)) break;\n parentNode = node;\n node = next;\n }\n for (;;) {\n if (node === root) break b;\n parentNode === JSCompiler_temp &&\n ++indexWithinAnchor === anchorOffset &&\n (start = length);\n parentNode === focusNode &&\n ++indexWithinFocus === selection &&\n (end = length);\n if (null !== (next = node.nextSibling)) break;\n node = parentNode;\n parentNode = node.parentNode;\n }\n node = next;\n }\n JSCompiler_temp =\n -1 === start || -1 === end ? null : { start: start, end: end };\n } else JSCompiler_temp = null;\n }\n JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 };\n } else JSCompiler_temp = null;\n selectionInformation = { focusedElem: root, selectionRange: JSCompiler_temp };\n _enabled = !1;\n for (nextEffect = firstChild; null !== nextEffect; )\n if (\n ((firstChild = nextEffect),\n (root = firstChild.child),\n 0 !== (firstChild.subtreeFlags & 1028) && null !== root)\n )\n (root.return = firstChild), (nextEffect = root);\n else\n for (; null !== nextEffect; ) {\n firstChild = nextEffect;\n focusNode = firstChild.alternate;\n root = firstChild.flags;\n switch (firstChild.tag) {\n case 0:\n break;\n case 11:\n case 15:\n break;\n case 1:\n if (0 !== (root & 1024) && null !== focusNode) {\n root = void 0;\n JSCompiler_temp = firstChild;\n anchorOffset = focusNode.memoizedProps;\n focusNode = focusNode.memoizedState;\n selection = JSCompiler_temp.stateNode;\n try {\n var resolvedPrevProps = resolveClassComponentProps(\n JSCompiler_temp.type,\n anchorOffset,\n JSCompiler_temp.elementType === JSCompiler_temp.type\n );\n root = selection.getSnapshotBeforeUpdate(\n resolvedPrevProps,\n focusNode\n );\n selection.__reactInternalSnapshotBeforeUpdate = root;\n } catch (error) {\n captureCommitPhaseError(\n JSCompiler_temp,\n JSCompiler_temp.return,\n error\n );\n }\n }\n break;\n case 3:\n if (0 !== (root & 1024))\n if (\n ((root = firstChild.stateNode.containerInfo),\n (JSCompiler_temp = root.nodeType),\n 9 === JSCompiler_temp)\n )\n clearContainerSparingly(root);\n else if (1 === JSCompiler_temp)\n switch (root.nodeName) {\n case \"HEAD\":\n case \"HTML\":\n case \"BODY\":\n clearContainerSparingly(root);\n break;\n default:\n root.textContent = \"\";\n }\n break;\n case 5:\n case 26:\n case 27:\n case 6:\n case 4:\n case 17:\n break;\n default:\n if (0 !== (root & 1024)) throw Error(formatProdErrorMessage(163));\n }\n root = firstChild.sibling;\n if (null !== root) {\n root.return = firstChild.return;\n nextEffect = root;\n break;\n }\n nextEffect = firstChild.return;\n }\n resolvedPrevProps = shouldFireAfterActiveInstanceBlur;\n shouldFireAfterActiveInstanceBlur = !1;\n return resolvedPrevProps;\n}\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitHookEffectListMount(5, finishedWork);\n break;\n case 1:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (flags & 4)\n if (((finishedRoot = finishedWork.stateNode), null === current))\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n else {\n var prevProps = resolveClassComponentProps(\n finishedWork.type,\n current.memoizedProps\n );\n current = current.memoizedState;\n try {\n finishedRoot.componentDidUpdate(\n prevProps,\n current,\n finishedRoot.__reactInternalSnapshotBeforeUpdate\n );\n } catch (error$111) {\n captureCommitPhaseError(\n finishedWork,\n finishedWork.return,\n error$111\n );\n }\n }\n flags & 64 && commitClassCallbacks(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n if (flags & 64 && ((flags = finishedWork.updateQueue), null !== flags)) {\n finishedRoot = null;\n if (null !== finishedWork.child)\n switch (finishedWork.child.tag) {\n case 27:\n case 5:\n finishedRoot = finishedWork.child.stateNode;\n break;\n case 1:\n finishedRoot = finishedWork.child.stateNode;\n }\n try {\n commitCallbacks(flags, finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 26:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 27:\n case 5:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n null === current && flags & 4 && commitHostMount(finishedWork);\n flags & 512 && safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n break;\n case 13:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 22:\n prevProps =\n null !== finishedWork.memoizedState || offscreenSubtreeIsHidden;\n if (!prevProps) {\n current =\n (null !== current && null !== current.memoizedState) ||\n offscreenSubtreeWasHidden;\n var prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden,\n prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = prevProps;\n (offscreenSubtreeWasHidden = current) && !prevOffscreenSubtreeWasHidden\n ? recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n 0 !== (finishedWork.subtreeFlags & 8772)\n )\n : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n }\n flags & 512 &&\n (\"manual\" === finishedWork.memoizedProps.mode\n ? safelyAttachRef(finishedWork, finishedWork.return)\n : safelyDetachRef(finishedWork, finishedWork.return));\n break;\n default:\n recursivelyTraverseLayoutEffects(finishedRoot, finishedWork);\n }\n}\nfunction detachFiberAfterEffects(fiber) {\n var alternate = fiber.alternate;\n null !== alternate &&\n ((fiber.alternate = null), detachFiberAfterEffects(alternate));\n fiber.child = null;\n fiber.deletions = null;\n fiber.sibling = null;\n 5 === fiber.tag &&\n ((alternate = fiber.stateNode),\n null !== alternate && detachDeletedInstance(alternate));\n fiber.stateNode = null;\n fiber.return = null;\n fiber.dependencies = null;\n fiber.memoizedProps = null;\n fiber.memoizedState = null;\n fiber.pendingProps = null;\n fiber.stateNode = null;\n fiber.updateQueue = null;\n}\nvar hostParent = null,\n hostParentIsContainer = !1;\nfunction recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n parent\n) {\n for (parent = parent.child; null !== parent; )\n commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, parent),\n (parent = parent.sibling);\n}\nfunction commitDeletionEffectsOnFiber(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n) {\n if (injectedHook && \"function\" === typeof injectedHook.onCommitFiberUnmount)\n try {\n injectedHook.onCommitFiberUnmount(rendererID, deletedFiber);\n } catch (err) {}\n switch (deletedFiber.tag) {\n case 26:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n deletedFiber.memoizedState\n ? deletedFiber.memoizedState.count--\n : deletedFiber.stateNode &&\n ((deletedFiber = deletedFiber.stateNode),\n deletedFiber.parentNode.removeChild(deletedFiber));\n break;\n case 27:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n var prevHostParent = hostParent,\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = deletedFiber.stateNode;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n deletedFiber = deletedFiber.stateNode;\n for (\n nearestMountedAncestor = deletedFiber.attributes;\n nearestMountedAncestor.length;\n\n )\n deletedFiber.removeAttributeNode(nearestMountedAncestor[0]);\n detachDeletedInstance(deletedFiber);\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 5:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n case 6:\n prevHostParentIsContainer = hostParent;\n var prevHostParentIsContainer$119 = hostParentIsContainer;\n hostParent = null;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParentIsContainer;\n hostParentIsContainer = prevHostParentIsContainer$119;\n if (null !== hostParent)\n if (hostParentIsContainer)\n try {\n (finishedRoot = hostParent),\n (prevHostParent = deletedFiber.stateNode),\n 8 === finishedRoot.nodeType\n ? finishedRoot.parentNode.removeChild(prevHostParent)\n : finishedRoot.removeChild(prevHostParent);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n else\n try {\n hostParent.removeChild(deletedFiber.stateNode);\n } catch (error) {\n captureCommitPhaseError(\n deletedFiber,\n nearestMountedAncestor,\n error\n );\n }\n break;\n case 18:\n null !== hostParent &&\n (hostParentIsContainer\n ? ((nearestMountedAncestor = hostParent),\n (deletedFiber = deletedFiber.stateNode),\n 8 === nearestMountedAncestor.nodeType\n ? clearSuspenseBoundary(\n nearestMountedAncestor.parentNode,\n deletedFiber\n )\n : 1 === nearestMountedAncestor.nodeType &&\n clearSuspenseBoundary(nearestMountedAncestor, deletedFiber),\n retryIfBlockedOn(nearestMountedAncestor))\n : clearSuspenseBoundary(hostParent, deletedFiber.stateNode));\n break;\n case 4:\n prevHostParent = hostParent;\n prevHostParentIsContainer = hostParentIsContainer;\n hostParent = deletedFiber.stateNode.containerInfo;\n hostParentIsContainer = !0;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n hostParent = prevHostParent;\n hostParentIsContainer = prevHostParentIsContainer;\n break;\n case 0:\n case 11:\n case 14:\n case 15:\n offscreenSubtreeWasHidden ||\n commitHookEffectListUnmount(2, deletedFiber, nearestMountedAncestor);\n offscreenSubtreeWasHidden ||\n commitHookEffectListUnmount(4, deletedFiber, nearestMountedAncestor);\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 1:\n offscreenSubtreeWasHidden ||\n (safelyDetachRef(deletedFiber, nearestMountedAncestor),\n (prevHostParent = deletedFiber.stateNode),\n \"function\" === typeof prevHostParent.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n deletedFiber,\n nearestMountedAncestor,\n prevHostParent\n ));\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 21:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n break;\n case 22:\n offscreenSubtreeWasHidden ||\n safelyDetachRef(deletedFiber, nearestMountedAncestor);\n offscreenSubtreeWasHidden =\n (prevHostParent = offscreenSubtreeWasHidden) ||\n null !== deletedFiber.memoizedState;\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n offscreenSubtreeWasHidden = prevHostParent;\n break;\n default:\n recursivelyTraverseDeletionEffects(\n finishedRoot,\n nearestMountedAncestor,\n deletedFiber\n );\n }\n}\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n if (\n null === finishedWork.memoizedState &&\n ((finishedRoot = finishedWork.alternate),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.memoizedState),\n null !== finishedRoot &&\n ((finishedRoot = finishedRoot.dehydrated), null !== finishedRoot)))\n )\n try {\n retryIfBlockedOn(finishedRoot);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n}\nfunction getRetryCache(finishedWork) {\n switch (finishedWork.tag) {\n case 13:\n case 19:\n var retryCache = finishedWork.stateNode;\n null === retryCache &&\n (retryCache = finishedWork.stateNode = new PossiblyWeakSet());\n return retryCache;\n case 22:\n return (\n (finishedWork = finishedWork.stateNode),\n (retryCache = finishedWork._retryCache),\n null === retryCache &&\n (retryCache = finishedWork._retryCache = new PossiblyWeakSet()),\n retryCache\n );\n default:\n throw Error(formatProdErrorMessage(435, finishedWork.tag));\n }\n}\nfunction attachSuspenseRetryListeners(finishedWork, wakeables) {\n var retryCache = getRetryCache(finishedWork);\n wakeables.forEach(function (wakeable) {\n var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n retryCache.has(wakeable) ||\n (retryCache.add(wakeable), wakeable.then(retry, retry));\n });\n}\nfunction recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) {\n var deletions = parentFiber.deletions;\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i],\n root = root$jscomp$0,\n returnFiber = parentFiber,\n parent = returnFiber;\n a: for (; null !== parent; ) {\n switch (parent.tag) {\n case 27:\n case 5:\n hostParent = parent.stateNode;\n hostParentIsContainer = !1;\n break a;\n case 3:\n hostParent = parent.stateNode.containerInfo;\n hostParentIsContainer = !0;\n break a;\n case 4:\n hostParent = parent.stateNode.containerInfo;\n hostParentIsContainer = !0;\n break a;\n }\n parent = parent.return;\n }\n if (null === hostParent) throw Error(formatProdErrorMessage(160));\n commitDeletionEffectsOnFiber(root, returnFiber, childToDelete);\n hostParent = null;\n hostParentIsContainer = !1;\n root = childToDelete.alternate;\n null !== root && (root.return = null);\n childToDelete.return = null;\n }\n if (parentFiber.subtreeFlags & 13878)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitMutationEffectsOnFiber(parentFiber, root$jscomp$0),\n (parentFiber = parentFiber.sibling);\n}\nvar currentHoistableRoot = null;\nfunction commitMutationEffectsOnFiber(finishedWork, root) {\n var current = finishedWork.alternate,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n (commitHookEffectListUnmount(3, finishedWork, finishedWork.return),\n commitHookEffectListMount(3, finishedWork),\n commitHookEffectListUnmount(5, finishedWork, finishedWork.return));\n break;\n case 1:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n flags & 64 &&\n offscreenSubtreeIsHidden &&\n ((finishedWork = finishedWork.updateQueue),\n null !== finishedWork &&\n ((flags = finishedWork.callbacks),\n null !== flags &&\n ((current = finishedWork.shared.hiddenCallbacks),\n (finishedWork.shared.hiddenCallbacks =\n null === current ? flags : current.concat(flags)))));\n break;\n case 26:\n var hoistableRoot = currentHoistableRoot;\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (flags & 4) {\n var currentResource = null !== current ? current.memoizedState : null;\n flags = finishedWork.memoizedState;\n if (null === current)\n if (null === flags)\n if (null === finishedWork.stateNode) {\n a: {\n flags = finishedWork.type;\n current = finishedWork.memoizedProps;\n hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot;\n b: switch (flags) {\n case \"title\":\n currentResource =\n hoistableRoot.getElementsByTagName(\"title\")[0];\n if (\n !currentResource ||\n currentResource[internalHoistableMarker] ||\n currentResource[internalInstanceKey] ||\n \"http://www.w3.org/2000/svg\" ===\n currentResource.namespaceURI ||\n currentResource.hasAttribute(\"itemprop\")\n )\n (currentResource = hoistableRoot.createElement(flags)),\n hoistableRoot.head.insertBefore(\n currentResource,\n hoistableRoot.querySelector(\"head > title\")\n );\n setInitialProperties(currentResource, flags, current);\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n break a;\n case \"link\":\n var maybeNodes = getHydratableHoistableCache(\n \"link\",\n \"href\",\n hoistableRoot\n ).get(flags + (current.href || \"\"));\n if (maybeNodes)\n for (var i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"href\") ===\n (null == current.href ? null : current.href) &&\n currentResource.getAttribute(\"rel\") ===\n (null == current.rel ? null : current.rel) &&\n currentResource.getAttribute(\"title\") ===\n (null == current.title ? null : current.title) &&\n currentResource.getAttribute(\"crossorigin\") ===\n (null == current.crossOrigin\n ? null\n : current.crossOrigin))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n case \"meta\":\n if (\n (maybeNodes = getHydratableHoistableCache(\n \"meta\",\n \"content\",\n hoistableRoot\n ).get(flags + (current.content || \"\")))\n )\n for (i = 0; i < maybeNodes.length; i++)\n if (\n ((currentResource = maybeNodes[i]),\n currentResource.getAttribute(\"content\") ===\n (null == current.content\n ? null\n : \"\" + current.content) &&\n currentResource.getAttribute(\"name\") ===\n (null == current.name ? null : current.name) &&\n currentResource.getAttribute(\"property\") ===\n (null == current.property\n ? null\n : current.property) &&\n currentResource.getAttribute(\"http-equiv\") ===\n (null == current.httpEquiv\n ? null\n : current.httpEquiv) &&\n currentResource.getAttribute(\"charset\") ===\n (null == current.charSet\n ? null\n : current.charSet))\n ) {\n maybeNodes.splice(i, 1);\n break b;\n }\n currentResource = hoistableRoot.createElement(flags);\n setInitialProperties(currentResource, flags, current);\n hoistableRoot.head.appendChild(currentResource);\n break;\n default:\n throw Error(formatProdErrorMessage(468, flags));\n }\n currentResource[internalInstanceKey] = finishedWork;\n markNodeAsHoistable(currentResource);\n flags = currentResource;\n }\n finishedWork.stateNode = flags;\n } else\n mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n );\n else\n finishedWork.stateNode = acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n );\n else\n currentResource !== flags\n ? (null === currentResource\n ? null !== current.stateNode &&\n ((current = current.stateNode),\n current.parentNode.removeChild(current))\n : currentResource.count--,\n null === flags\n ? mountHoistable(\n hoistableRoot,\n finishedWork.type,\n finishedWork.stateNode\n )\n : acquireResource(\n hoistableRoot,\n flags,\n finishedWork.memoizedProps\n ))\n : null === flags &&\n null !== finishedWork.stateNode &&\n commitHostUpdate(\n finishedWork,\n finishedWork.memoizedProps,\n current.memoizedProps\n );\n }\n break;\n case 27:\n if (flags & 4 && null === finishedWork.alternate) {\n hoistableRoot = finishedWork.stateNode;\n currentResource = finishedWork.memoizedProps;\n try {\n for (var node = hoistableRoot.firstChild; node; ) {\n var nextNode = node.nextSibling,\n nodeName = node.nodeName;\n node[internalHoistableMarker] ||\n \"HEAD\" === nodeName ||\n \"BODY\" === nodeName ||\n \"SCRIPT\" === nodeName ||\n \"STYLE\" === nodeName ||\n (\"LINK\" === nodeName &&\n \"stylesheet\" === node.rel.toLowerCase()) ||\n hoistableRoot.removeChild(node);\n node = nextNode;\n }\n for (\n var type = finishedWork.type, attributes = hoistableRoot.attributes;\n attributes.length;\n\n )\n hoistableRoot.removeAttributeNode(attributes[0]);\n setInitialProperties(hoistableRoot, type, currentResource);\n hoistableRoot[internalInstanceKey] = finishedWork;\n hoistableRoot[internalPropsKey] = currentResource;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n case 5:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n if (finishedWork.flags & 32) {\n hoistableRoot = finishedWork.stateNode;\n try {\n setTextContent(hoistableRoot, \"\");\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n flags & 4 &&\n null != finishedWork.stateNode &&\n ((hoistableRoot = finishedWork.memoizedProps),\n commitHostUpdate(\n finishedWork,\n hoistableRoot,\n null !== current ? current.memoizedProps : hoistableRoot\n ));\n flags & 1024 && (needsFormReset = !0);\n break;\n case 6:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n if (flags & 4) {\n if (null === finishedWork.stateNode)\n throw Error(formatProdErrorMessage(162));\n flags = finishedWork.memoizedProps;\n current = finishedWork.stateNode;\n try {\n current.nodeValue = flags;\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n }\n break;\n case 3:\n tagCaches = null;\n hoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(root.containerInfo);\n recursivelyTraverseMutationEffects(root, finishedWork);\n currentHoistableRoot = hoistableRoot;\n commitReconciliationEffects(finishedWork);\n if (flags & 4 && null !== current && current.memoizedState.isDehydrated)\n try {\n retryIfBlockedOn(root.containerInfo);\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n needsFormReset &&\n ((needsFormReset = !1), recursivelyResetForms(finishedWork));\n break;\n case 4:\n flags = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(\n finishedWork.stateNode.containerInfo\n );\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n currentHoistableRoot = flags;\n break;\n case 12:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n break;\n case 13:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n finishedWork.child.flags & 8192 &&\n (null !== finishedWork.memoizedState) !==\n (null !== current && null !== current.memoizedState) &&\n (globalMostRecentFallbackTime = now());\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 22:\n flags & 512 &&\n (offscreenSubtreeWasHidden ||\n null === current ||\n safelyDetachRef(current, current.return));\n node = null !== finishedWork.memoizedState;\n nextNode = null !== current && null !== current.memoizedState;\n nodeName = offscreenSubtreeIsHidden;\n type = offscreenSubtreeWasHidden;\n offscreenSubtreeIsHidden = nodeName || node;\n offscreenSubtreeWasHidden = type || nextNode;\n recursivelyTraverseMutationEffects(root, finishedWork);\n offscreenSubtreeWasHidden = type;\n offscreenSubtreeIsHidden = nodeName;\n commitReconciliationEffects(finishedWork);\n root = finishedWork.stateNode;\n root._current = finishedWork;\n root._visibility &= -3;\n root._visibility |= root._pendingVisibility & 2;\n if (\n flags & 8192 &&\n ((root._visibility = node\n ? root._visibility & -2\n : root._visibility | 1),\n node &&\n ((root = offscreenSubtreeIsHidden || offscreenSubtreeWasHidden),\n null === current ||\n nextNode ||\n root ||\n recursivelyTraverseDisappearLayoutEffects(finishedWork)),\n null === finishedWork.memoizedProps ||\n \"manual\" !== finishedWork.memoizedProps.mode)\n )\n a: for (current = null, root = finishedWork; ; ) {\n if (5 === root.tag || 26 === root.tag || 27 === root.tag) {\n if (null === current) {\n nextNode = current = root;\n try {\n if (((hoistableRoot = nextNode.stateNode), node))\n (currentResource = hoistableRoot.style),\n \"function\" === typeof currentResource.setProperty\n ? currentResource.setProperty(\n \"display\",\n \"none\",\n \"important\"\n )\n : (currentResource.display = \"none\");\n else {\n maybeNodes = nextNode.stateNode;\n i = nextNode.memoizedProps.style;\n var display =\n void 0 !== i && null !== i && i.hasOwnProperty(\"display\")\n ? i.display\n : null;\n maybeNodes.style.display =\n null == display || \"boolean\" === typeof display\n ? \"\"\n : (\"\" + display).trim();\n }\n } catch (error) {\n captureCommitPhaseError(nextNode, nextNode.return, error);\n }\n }\n } else if (6 === root.tag) {\n if (null === current) {\n nextNode = root;\n try {\n nextNode.stateNode.nodeValue = node\n ? \"\"\n : nextNode.memoizedProps;\n } catch (error) {\n captureCommitPhaseError(nextNode, nextNode.return, error);\n }\n }\n } else if (\n ((22 !== root.tag && 23 !== root.tag) ||\n null === root.memoizedState ||\n root === finishedWork) &&\n null !== root.child\n ) {\n root.child.return = root;\n root = root.child;\n continue;\n }\n if (root === finishedWork) break a;\n for (; null === root.sibling; ) {\n if (null === root.return || root.return === finishedWork) break a;\n current === root && (current = null);\n root = root.return;\n }\n current === root && (current = null);\n root.sibling.return = root.return;\n root = root.sibling;\n }\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((current = flags.retryQueue),\n null !== current &&\n ((flags.retryQueue = null),\n attachSuspenseRetryListeners(finishedWork, current))));\n break;\n case 19:\n recursivelyTraverseMutationEffects(root, finishedWork);\n commitReconciliationEffects(finishedWork);\n flags & 4 &&\n ((flags = finishedWork.updateQueue),\n null !== flags &&\n ((finishedWork.updateQueue = null),\n attachSuspenseRetryListeners(finishedWork, flags)));\n break;\n case 21:\n break;\n default:\n recursivelyTraverseMutationEffects(root, finishedWork),\n commitReconciliationEffects(finishedWork);\n }\n}\nfunction commitReconciliationEffects(finishedWork) {\n var flags = finishedWork.flags;\n if (flags & 2) {\n try {\n if (27 !== finishedWork.tag) {\n a: {\n for (var parent = finishedWork.return; null !== parent; ) {\n if (isHostParent(parent)) {\n var JSCompiler_inline_result = parent;\n break a;\n }\n parent = parent.return;\n }\n throw Error(formatProdErrorMessage(160));\n }\n switch (JSCompiler_inline_result.tag) {\n case 27:\n var parent$jscomp$0 = JSCompiler_inline_result.stateNode,\n before = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before, parent$jscomp$0);\n break;\n case 5:\n var parent$113 = JSCompiler_inline_result.stateNode;\n JSCompiler_inline_result.flags & 32 &&\n (setTextContent(parent$113, \"\"),\n (JSCompiler_inline_result.flags &= -33));\n var before$114 = getHostSibling(finishedWork);\n insertOrAppendPlacementNode(finishedWork, before$114, parent$113);\n break;\n case 3:\n case 4:\n var parent$115 = JSCompiler_inline_result.stateNode.containerInfo,\n before$116 = getHostSibling(finishedWork);\n insertOrAppendPlacementNodeIntoContainer(\n finishedWork,\n before$116,\n parent$115\n );\n break;\n default:\n throw Error(formatProdErrorMessage(161));\n }\n }\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n finishedWork.flags &= -3;\n }\n flags & 4096 && (finishedWork.flags &= -4097);\n}\nfunction recursivelyResetForms(parentFiber) {\n if (parentFiber.subtreeFlags & 1024)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var fiber = parentFiber;\n recursivelyResetForms(fiber);\n 5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset();\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseLayoutEffects(root, parentFiber) {\n if (parentFiber.subtreeFlags & 8772)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitLayoutEffectOnFiber(root, parentFiber.alternate, parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction recursivelyTraverseDisappearLayoutEffects(parentFiber) {\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedWork = parentFiber;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 14:\n case 15:\n commitHookEffectListUnmount(4, finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 1:\n safelyDetachRef(finishedWork, finishedWork.return);\n var instance = finishedWork.stateNode;\n \"function\" === typeof instance.componentWillUnmount &&\n safelyCallComponentWillUnmount(\n finishedWork,\n finishedWork.return,\n instance\n );\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 26:\n case 27:\n case 5:\n safelyDetachRef(finishedWork, finishedWork.return);\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n case 22:\n safelyDetachRef(finishedWork, finishedWork.return);\n null === finishedWork.memoizedState &&\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n break;\n default:\n recursivelyTraverseDisappearLayoutEffects(finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseReappearLayoutEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var current = parentFiber.alternate,\n finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(4, finishedWork);\n break;\n case 1:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n current = finishedWork;\n finishedRoot = current.stateNode;\n if (\"function\" === typeof finishedRoot.componentDidMount)\n try {\n finishedRoot.componentDidMount();\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n current = finishedWork;\n finishedRoot = current.updateQueue;\n if (null !== finishedRoot) {\n var instance = current.stateNode;\n try {\n var hiddenCallbacks = finishedRoot.shared.hiddenCallbacks;\n if (null !== hiddenCallbacks)\n for (\n finishedRoot.shared.hiddenCallbacks = null, finishedRoot = 0;\n finishedRoot < hiddenCallbacks.length;\n finishedRoot++\n )\n callCallback(hiddenCallbacks[finishedRoot], instance);\n } catch (error) {\n captureCommitPhaseError(current, current.return, error);\n }\n }\n includeWorkInProgressEffects &&\n flags & 64 &&\n commitClassCallbacks(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 26:\n case 27:\n case 5:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n null === current &&\n flags & 4 &&\n commitHostMount(finishedWork);\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n case 12:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n break;\n case 13:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 4 &&\n commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n break;\n case 22:\n null === finishedWork.memoizedState &&\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n safelyAttachRef(finishedWork, finishedWork.return);\n break;\n default:\n recursivelyTraverseReappearLayoutEffects(\n finishedRoot,\n finishedWork,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitOffscreenPassiveMountEffects(current, finishedWork) {\n var previousCache = null;\n null !== current &&\n null !== current.memoizedState &&\n null !== current.memoizedState.cachePool &&\n (previousCache = current.memoizedState.cachePool.pool);\n current = null;\n null !== finishedWork.memoizedState &&\n null !== finishedWork.memoizedState.cachePool &&\n (current = finishedWork.memoizedState.cachePool.pool);\n current !== previousCache &&\n (null != current && current.refCount++,\n null != previousCache && releaseCache(previousCache));\n}\nfunction commitCachePassiveMountEffect(current, finishedWork) {\n current = null;\n null !== finishedWork.alternate &&\n (current = finishedWork.alternate.memoizedState.cache);\n finishedWork = finishedWork.memoizedState.cache;\n finishedWork !== current &&\n (finishedWork.refCount++, null != current && releaseCache(current));\n}\nfunction recursivelyTraversePassiveMountEffects(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveMountOnFiber(\n root,\n parentFiber,\n committedLanes,\n committedTransitions\n ),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveMountOnFiber(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n) {\n var flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 && commitHookEffectListMount(9, finishedWork);\n break;\n case 3:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n ((finishedRoot = null),\n null !== finishedWork.alternate &&\n (finishedRoot = finishedWork.alternate.memoizedState.cache),\n (finishedWork = finishedWork.memoizedState.cache),\n finishedWork !== finishedRoot &&\n (finishedWork.refCount++,\n null != finishedRoot && releaseCache(finishedRoot)));\n break;\n case 12:\n if (flags & 2048) {\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n finishedRoot = finishedWork.stateNode;\n try {\n var _finishedWork$memoize2 = finishedWork.memoizedProps,\n id = _finishedWork$memoize2.id,\n onPostCommit = _finishedWork$memoize2.onPostCommit;\n \"function\" === typeof onPostCommit &&\n onPostCommit(\n id,\n null === finishedWork.alternate ? \"mount\" : \"update\",\n finishedRoot.passiveEffectDuration,\n -0\n );\n } catch (error) {\n captureCommitPhaseError(finishedWork, finishedWork.return, error);\n }\n } else\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n break;\n case 23:\n break;\n case 22:\n _finishedWork$memoize2 = finishedWork.stateNode;\n null !== finishedWork.memoizedState\n ? _finishedWork$memoize2._visibility & 4\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork)\n : _finishedWork$memoize2._visibility & 4\n ? recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n )\n : ((_finishedWork$memoize2._visibility |= 4),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n 0 !== (finishedWork.subtreeFlags & 10256)\n ));\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraversePassiveMountEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions\n );\n }\n}\nfunction recursivelyTraverseReconnectPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber,\n committedLanes$jscomp$0,\n committedTransitions$jscomp$0,\n includeWorkInProgressEffects\n) {\n includeWorkInProgressEffects =\n includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 10256);\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n committedLanes = committedLanes$jscomp$0,\n committedTransitions = committedTransitions$jscomp$0,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n commitHookEffectListMount(8, finishedWork);\n break;\n case 23:\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState\n ? instance._visibility & 4\n ? recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n )\n : recursivelyTraverseAtomicPassiveEffects(\n finishedRoot,\n finishedWork\n )\n : ((instance._visibility |= 4),\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n ));\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n includeWorkInProgressEffects &&\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseReconnectPassiveEffects(\n finishedRoot,\n finishedWork,\n committedLanes,\n committedTransitions,\n includeWorkInProgressEffects\n );\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction recursivelyTraverseAtomicPassiveEffects(\n finishedRoot$jscomp$0,\n parentFiber\n) {\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n var finishedRoot = finishedRoot$jscomp$0,\n finishedWork = parentFiber,\n flags = finishedWork.flags;\n switch (finishedWork.tag) {\n case 22:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitOffscreenPassiveMountEffects(\n finishedWork.alternate,\n finishedWork\n );\n break;\n case 24:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n flags & 2048 &&\n commitCachePassiveMountEffect(finishedWork.alternate, finishedWork);\n break;\n default:\n recursivelyTraverseAtomicPassiveEffects(finishedRoot, finishedWork);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nvar suspenseyCommitFlag = 8192;\nfunction recursivelyAccumulateSuspenseyCommit(parentFiber) {\n if (parentFiber.subtreeFlags & suspenseyCommitFlag)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n accumulateSuspenseyCommitOnFiber(parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction accumulateSuspenseyCommitOnFiber(fiber) {\n switch (fiber.tag) {\n case 26:\n recursivelyAccumulateSuspenseyCommit(fiber);\n fiber.flags & suspenseyCommitFlag &&\n null !== fiber.memoizedState &&\n suspendResource(\n currentHoistableRoot,\n fiber.memoizedState,\n fiber.memoizedProps\n );\n break;\n case 5:\n recursivelyAccumulateSuspenseyCommit(fiber);\n break;\n case 3:\n case 4:\n var previousHoistableRoot = currentHoistableRoot;\n currentHoistableRoot = getHoistableRoot(fiber.stateNode.containerInfo);\n recursivelyAccumulateSuspenseyCommit(fiber);\n currentHoistableRoot = previousHoistableRoot;\n break;\n case 22:\n null === fiber.memoizedState &&\n ((previousHoistableRoot = fiber.alternate),\n null !== previousHoistableRoot &&\n null !== previousHoistableRoot.memoizedState\n ? ((previousHoistableRoot = suspenseyCommitFlag),\n (suspenseyCommitFlag = 16777216),\n recursivelyAccumulateSuspenseyCommit(fiber),\n (suspenseyCommitFlag = previousHoistableRoot))\n : recursivelyAccumulateSuspenseyCommit(fiber));\n break;\n default:\n recursivelyAccumulateSuspenseyCommit(fiber);\n }\n}\nfunction detachAlternateSiblings(parentFiber) {\n var previousFiber = parentFiber.alternate;\n if (\n null !== previousFiber &&\n ((parentFiber = previousFiber.child), null !== parentFiber)\n ) {\n previousFiber.child = null;\n do\n (previousFiber = parentFiber.sibling),\n (parentFiber.sibling = null),\n (parentFiber = previousFiber);\n while (null !== parentFiber);\n }\n}\nfunction recursivelyTraversePassiveUnmountEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n if (parentFiber.subtreeFlags & 10256)\n for (parentFiber = parentFiber.child; null !== parentFiber; )\n commitPassiveUnmountOnFiber(parentFiber),\n (parentFiber = parentFiber.sibling);\n}\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n switch (finishedWork.tag) {\n case 0:\n case 11:\n case 15:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n finishedWork.flags & 2048 &&\n commitHookEffectListUnmount(9, finishedWork, finishedWork.return);\n break;\n case 3:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 12:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n case 22:\n var instance = finishedWork.stateNode;\n null !== finishedWork.memoizedState &&\n instance._visibility & 4 &&\n (null === finishedWork.return || 13 !== finishedWork.return.tag)\n ? ((instance._visibility &= -5),\n recursivelyTraverseDisconnectPassiveEffects(finishedWork))\n : recursivelyTraversePassiveUnmountEffects(finishedWork);\n break;\n default:\n recursivelyTraversePassiveUnmountEffects(finishedWork);\n }\n}\nfunction recursivelyTraverseDisconnectPassiveEffects(parentFiber) {\n var deletions = parentFiber.deletions;\n if (0 !== (parentFiber.flags & 16)) {\n if (null !== deletions)\n for (var i = 0; i < deletions.length; i++) {\n var childToDelete = deletions[i];\n nextEffect = childToDelete;\n commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n childToDelete,\n parentFiber\n );\n }\n detachAlternateSiblings(parentFiber);\n }\n for (parentFiber = parentFiber.child; null !== parentFiber; ) {\n deletions = parentFiber;\n switch (deletions.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, deletions, deletions.return);\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n break;\n case 22:\n i = deletions.stateNode;\n i._visibility & 4 &&\n ((i._visibility &= -5),\n recursivelyTraverseDisconnectPassiveEffects(deletions));\n break;\n default:\n recursivelyTraverseDisconnectPassiveEffects(deletions);\n }\n parentFiber = parentFiber.sibling;\n }\n}\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(\n deletedSubtreeRoot,\n nearestMountedAncestor\n) {\n for (; null !== nextEffect; ) {\n var fiber = nextEffect;\n switch (fiber.tag) {\n case 0:\n case 11:\n case 15:\n commitHookEffectListUnmount(8, fiber, nearestMountedAncestor);\n break;\n case 23:\n case 22:\n if (\n null !== fiber.memoizedState &&\n null !== fiber.memoizedState.cachePool\n ) {\n var cache = fiber.memoizedState.cachePool.pool;\n null != cache && cache.refCount++;\n }\n break;\n case 24:\n releaseCache(fiber.memoizedState.cache);\n }\n cache = fiber.child;\n if (null !== cache) (cache.return = fiber), (nextEffect = cache);\n else\n a: for (fiber = deletedSubtreeRoot; null !== nextEffect; ) {\n cache = nextEffect;\n var sibling = cache.sibling,\n returnFiber = cache.return;\n detachFiberAfterEffects(cache);\n if (cache === fiber) {\n nextEffect = null;\n break a;\n }\n if (null !== sibling) {\n sibling.return = returnFiber;\n nextEffect = sibling;\n break a;\n }\n nextEffect = returnFiber;\n }\n }\n}\nfunction FiberNode(tag, pendingProps, key, mode) {\n this.tag = tag;\n this.key = key;\n this.sibling =\n this.child =\n this.return =\n this.stateNode =\n this.type =\n this.elementType =\n null;\n this.index = 0;\n this.refCleanup = this.ref = null;\n this.pendingProps = pendingProps;\n this.dependencies =\n this.memoizedState =\n this.updateQueue =\n this.memoizedProps =\n null;\n this.mode = mode;\n this.subtreeFlags = this.flags = 0;\n this.deletions = null;\n this.childLanes = this.lanes = 0;\n this.alternate = null;\n}\nfunction createFiberImplClass(tag, pendingProps, key, mode) {\n return new FiberNode(tag, pendingProps, key, mode);\n}\nfunction shouldConstruct(Component) {\n Component = Component.prototype;\n return !(!Component || !Component.isReactComponent);\n}\nfunction createWorkInProgress(current, pendingProps) {\n var workInProgress = current.alternate;\n null === workInProgress\n ? ((workInProgress = createFiberImplClass(\n current.tag,\n pendingProps,\n current.key,\n current.mode\n )),\n (workInProgress.elementType = current.elementType),\n (workInProgress.type = current.type),\n (workInProgress.stateNode = current.stateNode),\n (workInProgress.alternate = current),\n (current.alternate = workInProgress))\n : ((workInProgress.pendingProps = pendingProps),\n (workInProgress.type = current.type),\n (workInProgress.flags = 0),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null));\n workInProgress.flags = current.flags & 31457280;\n workInProgress.childLanes = current.childLanes;\n workInProgress.lanes = current.lanes;\n workInProgress.child = current.child;\n workInProgress.memoizedProps = current.memoizedProps;\n workInProgress.memoizedState = current.memoizedState;\n workInProgress.updateQueue = current.updateQueue;\n pendingProps = current.dependencies;\n workInProgress.dependencies =\n null === pendingProps\n ? null\n : { lanes: pendingProps.lanes, firstContext: pendingProps.firstContext };\n workInProgress.sibling = current.sibling;\n workInProgress.index = current.index;\n workInProgress.ref = current.ref;\n workInProgress.refCleanup = current.refCleanup;\n return workInProgress;\n}\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n workInProgress.flags &= 31457282;\n var current = workInProgress.alternate;\n null === current\n ? ((workInProgress.childLanes = 0),\n (workInProgress.lanes = renderLanes),\n (workInProgress.child = null),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.memoizedProps = null),\n (workInProgress.memoizedState = null),\n (workInProgress.updateQueue = null),\n (workInProgress.dependencies = null),\n (workInProgress.stateNode = null))\n : ((workInProgress.childLanes = current.childLanes),\n (workInProgress.lanes = current.lanes),\n (workInProgress.child = current.child),\n (workInProgress.subtreeFlags = 0),\n (workInProgress.deletions = null),\n (workInProgress.memoizedProps = current.memoizedProps),\n (workInProgress.memoizedState = current.memoizedState),\n (workInProgress.updateQueue = current.updateQueue),\n (workInProgress.type = current.type),\n (renderLanes = current.dependencies),\n (workInProgress.dependencies =\n null === renderLanes\n ? null\n : {\n lanes: renderLanes.lanes,\n firstContext: renderLanes.firstContext\n }));\n return workInProgress;\n}\nfunction createFiberFromTypeAndProps(\n type,\n key,\n pendingProps,\n owner,\n mode,\n lanes\n) {\n var fiberTag = 0;\n owner = type;\n if (\"function\" === typeof type) shouldConstruct(type) && (fiberTag = 1);\n else if (\"string\" === typeof type)\n fiberTag = isHostHoistableType(\n type,\n pendingProps,\n contextStackCursor.current\n )\n ? 26\n : \"html\" === type || \"head\" === type || \"body\" === type\n ? 27\n : 5;\n else\n a: switch (type) {\n case REACT_FRAGMENT_TYPE:\n return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n case REACT_STRICT_MODE_TYPE:\n fiberTag = 8;\n mode |= 24;\n break;\n case REACT_PROFILER_TYPE:\n return (\n (type = createFiberImplClass(12, pendingProps, key, mode | 2)),\n (type.elementType = REACT_PROFILER_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_TYPE:\n return (\n (type = createFiberImplClass(13, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_SUSPENSE_LIST_TYPE:\n return (\n (type = createFiberImplClass(19, pendingProps, key, mode)),\n (type.elementType = REACT_SUSPENSE_LIST_TYPE),\n (type.lanes = lanes),\n type\n );\n case REACT_OFFSCREEN_TYPE:\n return createFiberFromOffscreen(pendingProps, mode, lanes, key);\n default:\n if (\"object\" === typeof type && null !== type)\n switch (type.$$typeof) {\n case REACT_PROVIDER_TYPE:\n case REACT_CONTEXT_TYPE:\n fiberTag = 10;\n break a;\n case REACT_CONSUMER_TYPE:\n fiberTag = 9;\n break a;\n case REACT_FORWARD_REF_TYPE:\n fiberTag = 11;\n break a;\n case REACT_MEMO_TYPE:\n fiberTag = 14;\n break a;\n case REACT_LAZY_TYPE:\n fiberTag = 16;\n owner = null;\n break a;\n }\n fiberTag = 29;\n pendingProps = Error(\n formatProdErrorMessage(130, null === type ? \"null\" : typeof type, \"\")\n );\n owner = null;\n }\n key = createFiberImplClass(fiberTag, pendingProps, key, mode);\n key.elementType = type;\n key.type = owner;\n key.lanes = lanes;\n return key;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n elements = createFiberImplClass(7, elements, key, mode);\n elements.lanes = lanes;\n return elements;\n}\nfunction createFiberFromOffscreen(pendingProps, mode, lanes, key) {\n pendingProps = createFiberImplClass(22, pendingProps, key, mode);\n pendingProps.elementType = REACT_OFFSCREEN_TYPE;\n pendingProps.lanes = lanes;\n var primaryChildInstance = {\n _visibility: 1,\n _pendingVisibility: 1,\n _pendingMarkers: null,\n _retryCache: null,\n _transitions: null,\n _current: null,\n detach: function () {\n var fiber = primaryChildInstance._current;\n if (null === fiber) throw Error(formatProdErrorMessage(456));\n if (0 === (primaryChildInstance._pendingVisibility & 2)) {\n var root = enqueueConcurrentRenderForLane(fiber, 2);\n null !== root &&\n ((primaryChildInstance._pendingVisibility |= 2),\n scheduleUpdateOnFiber(root, fiber, 2));\n }\n },\n attach: function () {\n var fiber = primaryChildInstance._current;\n if (null === fiber) throw Error(formatProdErrorMessage(456));\n if (0 !== (primaryChildInstance._pendingVisibility & 2)) {\n var root = enqueueConcurrentRenderForLane(fiber, 2);\n null !== root &&\n ((primaryChildInstance._pendingVisibility &= -3),\n scheduleUpdateOnFiber(root, fiber, 2));\n }\n }\n };\n pendingProps.stateNode = primaryChildInstance;\n return pendingProps;\n}\nfunction createFiberFromText(content, mode, lanes) {\n content = createFiberImplClass(6, content, null, mode);\n content.lanes = lanes;\n return content;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n mode = createFiberImplClass(\n 4,\n null !== portal.children ? portal.children : [],\n portal.key,\n mode\n );\n mode.lanes = lanes;\n mode.stateNode = {\n containerInfo: portal.containerInfo,\n pendingChildren: null,\n implementation: portal.implementation\n };\n return mode;\n}\nfunction markUpdate(workInProgress) {\n workInProgress.flags |= 4;\n}\nfunction preloadResourceAndSuspendIfNeeded(workInProgress, resource) {\n if (\"stylesheet\" !== resource.type || 0 !== (resource.state.loading & 4))\n workInProgress.flags &= -16777217;\n else if (((workInProgress.flags |= 16777216), !preloadResource(resource))) {\n resource = suspenseHandlerStackCursor.current;\n if (\n null !== resource &&\n ((workInProgressRootRenderLanes & 4194176) ===\n workInProgressRootRenderLanes\n ? null !== shellBoundary\n : ((workInProgressRootRenderLanes & 62914560) !==\n workInProgressRootRenderLanes &&\n 0 === (workInProgressRootRenderLanes & 536870912)) ||\n resource !== shellBoundary)\n )\n throw (\n ((suspendedThenable = noopSuspenseyCommitThenable),\n SuspenseyCommitException)\n );\n workInProgress.flags |= 8192;\n }\n}\nfunction scheduleRetryEffect(workInProgress, retryQueue) {\n null !== retryQueue && (workInProgress.flags |= 4);\n workInProgress.flags & 16384 &&\n ((retryQueue =\n 22 !== workInProgress.tag ? claimNextRetryLane() : 536870912),\n (workInProgress.lanes |= retryQueue),\n (workInProgressSuspendedRetryLanes |= retryQueue));\n}\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n if (!isHydrating)\n switch (renderState.tailMode) {\n case \"hidden\":\n hasRenderedATailFallback = renderState.tail;\n for (var lastTailNode = null; null !== hasRenderedATailFallback; )\n null !== hasRenderedATailFallback.alternate &&\n (lastTailNode = hasRenderedATailFallback),\n (hasRenderedATailFallback = hasRenderedATailFallback.sibling);\n null === lastTailNode\n ? (renderState.tail = null)\n : (lastTailNode.sibling = null);\n break;\n case \"collapsed\":\n lastTailNode = renderState.tail;\n for (var lastTailNode$131 = null; null !== lastTailNode; )\n null !== lastTailNode.alternate && (lastTailNode$131 = lastTailNode),\n (lastTailNode = lastTailNode.sibling);\n null === lastTailNode$131\n ? hasRenderedATailFallback || null === renderState.tail\n ? (renderState.tail = null)\n : (renderState.tail.sibling = null)\n : (lastTailNode$131.sibling = null);\n }\n}\nfunction bubbleProperties(completedWork) {\n var didBailout =\n null !== completedWork.alternate &&\n completedWork.alternate.child === completedWork.child,\n newChildLanes = 0,\n subtreeFlags = 0;\n if (didBailout)\n for (var child$132 = completedWork.child; null !== child$132; )\n (newChildLanes |= child$132.lanes | child$132.childLanes),\n (subtreeFlags |= child$132.subtreeFlags & 31457280),\n (subtreeFlags |= child$132.flags & 31457280),\n (child$132.return = completedWork),\n (child$132 = child$132.sibling);\n else\n for (child$132 = completedWork.child; null !== child$132; )\n (newChildLanes |= child$132.lanes | child$132.childLanes),\n (subtreeFlags |= child$132.subtreeFlags),\n (subtreeFlags |= child$132.flags),\n (child$132.return = completedWork),\n (child$132 = child$132.sibling);\n completedWork.subtreeFlags |= subtreeFlags;\n completedWork.childLanes = newChildLanes;\n return didBailout;\n}\nfunction completeWork(current, workInProgress, renderLanes) {\n var newProps = workInProgress.pendingProps;\n popTreeContext(workInProgress);\n switch (workInProgress.tag) {\n case 16:\n case 15:\n case 0:\n case 11:\n case 7:\n case 8:\n case 12:\n case 9:\n case 14:\n return bubbleProperties(workInProgress), null;\n case 1:\n return bubbleProperties(workInProgress), null;\n case 3:\n renderLanes = workInProgress.stateNode;\n newProps = null;\n null !== current && (newProps = current.memoizedState.cache);\n workInProgress.memoizedState.cache !== newProps &&\n (workInProgress.flags |= 2048);\n popProvider(CacheContext);\n popHostContainer();\n renderLanes.pendingContext &&\n ((renderLanes.context = renderLanes.pendingContext),\n (renderLanes.pendingContext = null));\n if (null === current || null === current.child)\n popHydrationState(workInProgress)\n ? markUpdate(workInProgress)\n : null === current ||\n (current.memoizedState.isDehydrated &&\n 0 === (workInProgress.flags & 256)) ||\n ((workInProgress.flags |= 1024),\n null !== hydrationErrors &&\n (queueRecoverableErrors(hydrationErrors),\n (hydrationErrors = null)));\n bubbleProperties(workInProgress);\n return null;\n case 26:\n return (\n (renderLanes = workInProgress.memoizedState),\n null === current\n ? (markUpdate(workInProgress),\n null !== renderLanes\n ? (bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n : (bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217)))\n : renderLanes\n ? renderLanes !== current.memoizedState\n ? (markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n preloadResourceAndSuspendIfNeeded(workInProgress, renderLanes))\n : (bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217))\n : (current.memoizedProps !== newProps && markUpdate(workInProgress),\n bubbleProperties(workInProgress),\n (workInProgress.flags &= -16777217)),\n null\n );\n case 27:\n popHostContext(workInProgress);\n renderLanes = rootInstanceStackCursor.current;\n var type = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n current = contextStackCursor.current;\n popHydrationState(workInProgress)\n ? prepareToHydrateHostInstance(workInProgress, current)\n : ((current = resolveSingletonInstance(type, newProps, renderLanes)),\n (workInProgress.stateNode = current),\n markUpdate(workInProgress));\n }\n bubbleProperties(workInProgress);\n return null;\n case 5:\n popHostContext(workInProgress);\n renderLanes = workInProgress.type;\n if (null !== current && null != workInProgress.stateNode)\n current.memoizedProps !== newProps && markUpdate(workInProgress);\n else {\n if (!newProps) {\n if (null === workInProgress.stateNode)\n throw Error(formatProdErrorMessage(166));\n bubbleProperties(workInProgress);\n return null;\n }\n current = contextStackCursor.current;\n if (popHydrationState(workInProgress))\n prepareToHydrateHostInstance(workInProgress, current);\n else {\n type = getOwnerDocumentFromRootContainer(\n rootInstanceStackCursor.current\n );\n switch (current) {\n case 1:\n current = type.createElementNS(\n \"http://www.w3.org/2000/svg\",\n renderLanes\n );\n break;\n case 2:\n current = type.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n renderLanes\n );\n break;\n default:\n switch (renderLanes) {\n case \"svg\":\n current = type.createElementNS(\n \"http://www.w3.org/2000/svg\",\n renderLanes\n );\n break;\n case \"math\":\n current = type.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\",\n renderLanes\n );\n break;\n case \"script\":\n current = type.createElement(\"div\");\n current.innerHTML = \"